1/******************************************************************************
2 *
3 * Name: actables.h - ACPI table management
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2023, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 *    notice, this list of conditions, and the following disclaimer,
16 *    without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 *    substantially similar to the "NO WARRANTY" disclaimer below
19 *    ("Disclaimer") and any redistribution must be conditioned upon
20 *    including a substantially similar Disclaimer requirement for further
21 *    binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 *    of any contributors may be used to endorse or promote products derived
24 *    from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#ifndef __ACTABLES_H__
45#define __ACTABLES_H__
46
47
48ACPI_STATUS
49AcpiAllocateRootTable (
50    UINT32                  InitialTableCount);
51
52/*
53 * tbxfroot - Root pointer utilities
54 */
55UINT32
56AcpiTbGetRsdpLength (
57    ACPI_TABLE_RSDP         *Rsdp);
58
59ACPI_STATUS
60AcpiTbValidateRsdp (
61    ACPI_TABLE_RSDP         *Rsdp);
62
63UINT8 *
64AcpiTbScanMemoryForRsdp (
65    UINT8                   *StartAddress,
66    UINT32                  Length);
67
68
69/*
70 * tbdata - table data structure management
71 */
72ACPI_STATUS
73AcpiTbGetNextTableDescriptor (
74    UINT32                  *TableIndex,
75    ACPI_TABLE_DESC         **TableDesc);
76
77void
78AcpiTbInitTableDescriptor (
79    ACPI_TABLE_DESC         *TableDesc,
80    ACPI_PHYSICAL_ADDRESS   Address,
81    UINT8                   Flags,
82    ACPI_TABLE_HEADER       *Table);
83
84ACPI_STATUS
85AcpiTbAcquireTempTable (
86    ACPI_TABLE_DESC         *TableDesc,
87    ACPI_PHYSICAL_ADDRESS   Address,
88    UINT8                   Flags,
89    ACPI_TABLE_HEADER       *Table);
90
91void
92AcpiTbReleaseTempTable (
93    ACPI_TABLE_DESC         *TableDesc);
94
95ACPI_STATUS
96AcpiTbValidateTempTable (
97    ACPI_TABLE_DESC         *TableDesc);
98
99ACPI_STATUS
100AcpiTbVerifyTempTable (
101    ACPI_TABLE_DESC         *TableDesc,
102    const char              *Signature,
103    UINT32                  *TableIndex);
104
105BOOLEAN
106AcpiTbIsTableLoaded (
107    UINT32                  TableIndex);
108
109void
110AcpiTbSetTableLoadedFlag (
111    UINT32                  TableIndex,
112    BOOLEAN                 IsLoaded);
113
114
115/*
116 * tbfadt - FADT parse/convert/validate
117 */
118void
119AcpiTbParseFadt (
120    void);
121
122void
123AcpiTbCreateLocalFadt (
124    ACPI_TABLE_HEADER       *Table,
125    UINT32                  Length);
126
127
128/*
129 * tbfind - find ACPI table
130 */
131ACPI_STATUS
132AcpiTbFindTable (
133    char                    *Signature,
134    char                    *OemId,
135    char                    *OemTableId,
136    UINT32                  *TableIndex);
137
138
139/*
140 * tbinstal - Table removal and deletion
141 */
142ACPI_STATUS
143AcpiTbResizeRootTableList (
144    void);
145
146ACPI_STATUS
147AcpiTbValidateTable (
148    ACPI_TABLE_DESC         *TableDesc);
149
150void
151AcpiTbInvalidateTable (
152    ACPI_TABLE_DESC         *TableDesc);
153
154void
155AcpiTbOverrideTable (
156    ACPI_TABLE_DESC         *OldTableDesc);
157
158ACPI_STATUS
159AcpiTbAcquireTable (
160    ACPI_TABLE_DESC         *TableDesc,
161    ACPI_TABLE_HEADER       **TablePtr,
162    UINT32                  *TableLength,
163    UINT8                   *TableFlags);
164
165void
166AcpiTbReleaseTable (
167    ACPI_TABLE_HEADER       *Table,
168    UINT32                  TableLength,
169    UINT8                   TableFlags);
170
171ACPI_STATUS
172AcpiTbInstallStandardTable (
173    ACPI_PHYSICAL_ADDRESS   Address,
174    UINT8                   Flags,
175    ACPI_TABLE_HEADER       *Table,
176    BOOLEAN                 Reload,
177    BOOLEAN                 Override,
178    UINT32                  *TableIndex);
179
180void
181AcpiTbUninstallTable (
182    ACPI_TABLE_DESC        *TableDesc);
183
184ACPI_STATUS
185AcpiTbLoadTable (
186    UINT32                  TableIndex,
187    ACPI_NAMESPACE_NODE     *ParentNode);
188
189ACPI_STATUS
190AcpiTbInstallAndLoadTable (
191    ACPI_PHYSICAL_ADDRESS   Address,
192    UINT8                   Flags,
193    ACPI_TABLE_HEADER       *Table,
194    BOOLEAN                 Override,
195    UINT32                  *TableIndex);
196
197ACPI_STATUS
198AcpiTbUnloadTable (
199    UINT32                  TableIndex);
200
201void
202AcpiTbNotifyTable (
203    UINT32                          Event,
204    void                            *Table);
205
206void
207AcpiTbTerminate (
208    void);
209
210ACPI_STATUS
211AcpiTbDeleteNamespaceByOwner (
212    UINT32                  TableIndex);
213
214ACPI_STATUS
215AcpiTbAllocateOwnerId (
216    UINT32                  TableIndex);
217
218ACPI_STATUS
219AcpiTbReleaseOwnerId (
220    UINT32                  TableIndex);
221
222ACPI_STATUS
223AcpiTbGetOwnerId (
224    UINT32                  TableIndex,
225    ACPI_OWNER_ID           *OwnerId);
226
227
228/*
229 * tbutils - table manager utilities
230 */
231ACPI_STATUS
232AcpiTbInitializeFacs (
233    void);
234
235void
236AcpiTbPrintTableHeader(
237    ACPI_PHYSICAL_ADDRESS   Address,
238    ACPI_TABLE_HEADER       *Header);
239
240void
241AcpiTbCheckDsdtHeader (
242    void);
243
244ACPI_TABLE_HEADER *
245AcpiTbCopyDsdt (
246    UINT32                  TableIndex);
247
248void
249AcpiTbInstallTableWithOverride (
250    ACPI_TABLE_DESC         *NewTableDesc,
251    BOOLEAN                 Override,
252    UINT32                  *TableIndex);
253
254ACPI_STATUS
255AcpiTbParseRootTable (
256    ACPI_PHYSICAL_ADDRESS   RsdpAddress);
257
258ACPI_STATUS
259AcpiTbGetTable (
260    ACPI_TABLE_DESC        *TableDesc,
261    ACPI_TABLE_HEADER      **OutTable);
262
263void
264AcpiTbPutTable (
265    ACPI_TABLE_DESC        *TableDesc);
266
267
268/*
269 * tbxfload
270 */
271ACPI_STATUS
272AcpiTbLoadNamespace (
273    void);
274
275#endif /* __ACTABLES_H__ */
276