actables.h revision 281075
1228753Smm/******************************************************************************
2228753Smm *
3228753Smm * Name: actables.h - ACPI table management
4228753Smm *
5228753Smm *****************************************************************************/
6228753Smm
7228753Smm/*
8228753Smm * Copyright (C) 2000 - 2015, Intel Corp.
9228753Smm * All rights reserved.
10228753Smm *
11228753Smm * Redistribution and use in source and binary forms, with or without
12228753Smm * modification, are permitted provided that the following conditions
13228753Smm * are met:
14228753Smm * 1. Redistributions of source code must retain the above copyright
15228753Smm *    notice, this list of conditions, and the following disclaimer,
16228753Smm *    without modification.
17228753Smm * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18228753Smm *    substantially similar to the "NO WARRANTY" disclaimer below
19228753Smm *    ("Disclaimer") and any redistribution must be conditioned upon
20228753Smm *    including a substantially similar Disclaimer requirement for further
21228753Smm *    binary redistribution.
22228753Smm * 3. Neither the names of the above-listed copyright holders nor the names
23228753Smm *    of any contributors may be used to endorse or promote products derived
24228753Smm *    from this software without specific prior written permission.
25228763Smm *
26228753Smm * Alternatively, this software may be distributed under the terms of the
27228753Smm * GNU General Public License ("GPL") version 2 as published by the Free
28228753Smm * Software Foundation.
29228753Smm *
30228753Smm * NO WARRANTY
31228753Smm * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32228753Smm * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33228753Smm * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34228753Smm * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35228753Smm * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36228753Smm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37228753Smm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38228753Smm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39228753Smm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40228753Smm * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41228753Smm * POSSIBILITY OF SUCH DAMAGES.
42228753Smm */
43228753Smm
44228753Smm#ifndef __ACTABLES_H__
45302001Smm#define __ACTABLES_H__
46302001Smm
47302001Smm
48302001SmmACPI_STATUS
49228753SmmAcpiAllocateRootTable (
50228753Smm    UINT32                  InitialTableCount);
51228753Smm
52228753Smm/*
53228753Smm * tbxfroot - Root pointer utilities
54228753Smm */
55228753SmmUINT32
56228753SmmAcpiTbGetRsdpLength (
57228753Smm    ACPI_TABLE_RSDP         *Rsdp);
58228753Smm
59228753SmmACPI_STATUS
60228753SmmAcpiTbValidateRsdp (
61228753Smm    ACPI_TABLE_RSDP         *Rsdp);
62228753Smm
63228753SmmUINT8 *
64228753SmmAcpiTbScanMemoryForRsdp (
65228753Smm    UINT8                   *StartAddress,
66228753Smm    UINT32                  Length);
67228753Smm
68228753Smm
69228753Smm/*
70228753Smm * tbdata - table data structure management
71228753Smm */
72228753SmmACPI_STATUS
73228753SmmAcpiTbGetNextRootIndex (
74228753Smm    UINT32                  *TableIndex);
75228753Smm
76228753Smmvoid
77228753SmmAcpiTbInitTableDescriptor (
78    ACPI_TABLE_DESC         *TableDesc,
79    ACPI_PHYSICAL_ADDRESS   Address,
80    UINT8                   Flags,
81    ACPI_TABLE_HEADER       *Table);
82
83ACPI_STATUS
84AcpiTbAcquireTempTable (
85    ACPI_TABLE_DESC         *TableDesc,
86    ACPI_PHYSICAL_ADDRESS   Address,
87    UINT8                   Flags);
88
89void
90AcpiTbReleaseTempTable (
91    ACPI_TABLE_DESC         *TableDesc);
92
93ACPI_STATUS
94AcpiTbValidateTempTable (
95    ACPI_TABLE_DESC         *TableDesc);
96
97ACPI_STATUS
98AcpiTbVerifyTempTable (
99    ACPI_TABLE_DESC         *TableDesc,
100    char                    *Signature);
101
102BOOLEAN
103AcpiTbIsTableLoaded (
104    UINT32                  TableIndex);
105
106void
107AcpiTbSetTableLoadedFlag (
108    UINT32                  TableIndex,
109    BOOLEAN                 IsLoaded);
110
111
112/*
113 * tbfadt - FADT parse/convert/validate
114 */
115void
116AcpiTbParseFadt (
117    UINT32                  TableIndex);
118
119void
120AcpiTbCreateLocalFadt (
121    ACPI_TABLE_HEADER       *Table,
122    UINT32                  Length);
123
124
125/*
126 * tbfind - find ACPI table
127 */
128ACPI_STATUS
129AcpiTbFindTable (
130    char                    *Signature,
131    char                    *OemId,
132    char                    *OemTableId,
133    UINT32                  *TableIndex);
134
135
136/*
137 * tbinstal - Table removal and deletion
138 */
139ACPI_STATUS
140AcpiTbResizeRootTableList (
141    void);
142
143ACPI_STATUS
144AcpiTbValidateTable (
145    ACPI_TABLE_DESC         *TableDesc);
146
147void
148AcpiTbInvalidateTable (
149    ACPI_TABLE_DESC         *TableDesc);
150
151void
152AcpiTbOverrideTable (
153    ACPI_TABLE_DESC         *OldTableDesc);
154
155ACPI_STATUS
156AcpiTbAcquireTable (
157    ACPI_TABLE_DESC         *TableDesc,
158    ACPI_TABLE_HEADER       **TablePtr,
159    UINT32                  *TableLength,
160    UINT8                   *TableFlags);
161
162void
163AcpiTbReleaseTable (
164    ACPI_TABLE_HEADER       *Table,
165    UINT32                  TableLength,
166    UINT8                   TableFlags);
167
168ACPI_STATUS
169AcpiTbInstallStandardTable (
170    ACPI_PHYSICAL_ADDRESS   Address,
171    UINT8                   Flags,
172    BOOLEAN                 Reload,
173    BOOLEAN                 Override,
174    UINT32                  *TableIndex);
175
176ACPI_STATUS
177AcpiTbStoreTable (
178    ACPI_PHYSICAL_ADDRESS   Address,
179    ACPI_TABLE_HEADER       *Table,
180    UINT32                  Length,
181    UINT8                   Flags,
182    UINT32                  *TableIndex);
183
184void
185AcpiTbUninstallTable (
186    ACPI_TABLE_DESC        *TableDesc);
187
188void
189AcpiTbTerminate (
190    void);
191
192ACPI_STATUS
193AcpiTbDeleteNamespaceByOwner (
194    UINT32                  TableIndex);
195
196ACPI_STATUS
197AcpiTbAllocateOwnerId (
198    UINT32                  TableIndex);
199
200ACPI_STATUS
201AcpiTbReleaseOwnerId (
202    UINT32                  TableIndex);
203
204ACPI_STATUS
205AcpiTbGetOwnerId (
206    UINT32                  TableIndex,
207    ACPI_OWNER_ID           *OwnerId);
208
209
210/*
211 * tbutils - table manager utilities
212 */
213ACPI_STATUS
214AcpiTbInitializeFacs (
215    void);
216
217BOOLEAN
218AcpiTbTablesLoaded (
219    void);
220
221void
222AcpiTbPrintTableHeader(
223    ACPI_PHYSICAL_ADDRESS   Address,
224    ACPI_TABLE_HEADER       *Header);
225
226UINT8
227AcpiTbChecksum (
228    UINT8                   *Buffer,
229    UINT32                  Length);
230
231ACPI_STATUS
232AcpiTbVerifyChecksum (
233    ACPI_TABLE_HEADER       *Table,
234    UINT32                  Length);
235
236void
237AcpiTbCheckDsdtHeader (
238    void);
239
240ACPI_TABLE_HEADER *
241AcpiTbCopyDsdt (
242    UINT32                  TableIndex);
243
244void
245AcpiTbInstallTableWithOverride (
246    UINT32                  TableIndex,
247    ACPI_TABLE_DESC         *NewTableDesc,
248    BOOLEAN                 Override);
249
250ACPI_STATUS
251AcpiTbInstallFixedTable (
252    ACPI_PHYSICAL_ADDRESS   Address,
253    char                    *Signature,
254    UINT32                  TableIndex);
255
256ACPI_STATUS
257AcpiTbParseRootTable (
258    ACPI_PHYSICAL_ADDRESS   RsdpAddress);
259
260#endif /* __ACTABLES_H__ */
261