1 /******************************************************************************
2  *
3  * Name: actables.h - ACPI table management
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2014, 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 MERCHANTIBILITY 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 
48 #pragma pack(push) /* Set default struct packing */
49 
50 ACPI_STATUS
51 AcpiAllocateRootTable (
52     UINT32                  InitialTableCount);
53 
54 /*
55  * tbxfroot - Root pointer utilities
56  */
57 ACPI_STATUS
58 AcpiTbValidateRsdp (
59     ACPI_TABLE_RSDP         *Rsdp);
60 
61 UINT8 *
62 AcpiTbScanMemoryForRsdp (
63     UINT8                   *StartAddress,
64     UINT32                  Length);
65 
66 
67 /*
68  * tbfadt - FADT parse/convert/validate
69  */
70 void
71 AcpiTbParseFadt (
72     UINT32                  TableIndex);
73 
74 void
75 AcpiTbCreateLocalFadt (
76     ACPI_TABLE_HEADER       *Table,
77     UINT32                  Length);
78 
79 
80 /*
81  * tbfind - find ACPI table
82  */
83 ACPI_STATUS
84 AcpiTbFindTable (
85     char                    *Signature,
86     char                    *OemId,
87     char                    *OemTableId,
88     UINT32                  *TableIndex);
89 
90 
91 /*
92  * tbinstal - Table removal and deletion
93  */
94 ACPI_STATUS
95 AcpiTbResizeRootTableList (
96     void);
97 
98 ACPI_STATUS
99 AcpiTbVerifyTable (
100     ACPI_TABLE_DESC         *TableDesc);
101 
102 ACPI_TABLE_HEADER *
103 AcpiTbTableOverride (
104     ACPI_TABLE_HEADER       *TableHeader,
105     ACPI_TABLE_DESC         *TableDesc);
106 
107 ACPI_STATUS
108 AcpiTbAddTable (
109     ACPI_TABLE_DESC         *TableDesc,
110     UINT32                  *TableIndex);
111 
112 ACPI_STATUS
113 AcpiTbStoreTable (
114     ACPI_PHYSICAL_ADDRESS   Address,
115     ACPI_TABLE_HEADER       *Table,
116     UINT32                  Length,
117     UINT8                   Flags,
118     UINT32                  *TableIndex);
119 
120 void
121 AcpiTbDeleteTable (
122     ACPI_TABLE_DESC        *TableDesc);
123 
124 void
125 AcpiTbTerminate (
126     void);
127 
128 ACPI_STATUS
129 AcpiTbDeleteNamespaceByOwner (
130     UINT32                  TableIndex);
131 
132 ACPI_STATUS
133 AcpiTbAllocateOwnerId (
134     UINT32                  TableIndex);
135 
136 ACPI_STATUS
137 AcpiTbReleaseOwnerId (
138     UINT32                  TableIndex);
139 
140 ACPI_STATUS
141 AcpiTbGetOwnerId (
142     UINT32                  TableIndex,
143     ACPI_OWNER_ID           *OwnerId);
144 
145 BOOLEAN
146 AcpiTbIsTableLoaded (
147     UINT32                  TableIndex);
148 
149 void
150 AcpiTbSetTableLoadedFlag (
151     UINT32                  TableIndex,
152     BOOLEAN                 IsLoaded);
153 
154 
155 /*
156  * tbutils - table manager utilities
157  */
158 ACPI_STATUS
159 AcpiTbInitializeFacs (
160     void);
161 
162 BOOLEAN
163 AcpiTbTablesLoaded (
164     void);
165 
166 void
167 AcpiTbPrintTableHeader(
168     ACPI_PHYSICAL_ADDRESS   Address,
169     ACPI_TABLE_HEADER       *Header);
170 
171 UINT8
172 AcpiTbChecksum (
173     UINT8                   *Buffer,
174     UINT32                  Length);
175 
176 ACPI_STATUS
177 AcpiTbVerifyChecksum (
178     ACPI_TABLE_HEADER       *Table,
179     UINT32                  Length);
180 
181 void
182 AcpiTbCheckDsdtHeader (
183     void);
184 
185 ACPI_TABLE_HEADER *
186 AcpiTbCopyDsdt (
187     UINT32                  TableIndex);
188 
189 void
190 AcpiTbInstallTable (
191     ACPI_PHYSICAL_ADDRESS   Address,
192     char                    *Signature,
193     UINT32                  TableIndex);
194 
195 ACPI_STATUS
196 AcpiTbParseRootTable (
197     ACPI_PHYSICAL_ADDRESS   RsdpAddress);
198 
199 #pragma pack(pop) /* Restore original struct packing */
200 
201 #endif /* __ACTABLES_H__ */
202