1 /****************************************************************************** 2 * 3 * Name: actables.h - ACPI table management 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2019, 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 ACPI_STATUS 49 AcpiAllocateRootTable ( 50 UINT32 InitialTableCount); 51 52 /* 53 * tbxfroot - Root pointer utilities 54 */ 55 UINT32 56 AcpiTbGetRsdpLength ( 57 ACPI_TABLE_RSDP *Rsdp); 58 59 ACPI_STATUS 60 AcpiTbValidateRsdp ( 61 ACPI_TABLE_RSDP *Rsdp); 62 63 UINT8 * 64 AcpiTbScanMemoryForRsdp ( 65 UINT8 *StartAddress, 66 UINT32 Length); 67 68 69 /* 70 * tbdata - table data structure management 71 */ 72 ACPI_STATUS 73 AcpiTbGetNextTableDescriptor ( 74 UINT32 *TableIndex, 75 ACPI_TABLE_DESC **TableDesc); 76 77 void 78 AcpiTbInitTableDescriptor ( 79 ACPI_TABLE_DESC *TableDesc, 80 ACPI_PHYSICAL_ADDRESS Address, 81 UINT8 Flags, 82 ACPI_TABLE_HEADER *Table); 83 84 ACPI_STATUS 85 AcpiTbAcquireTempTable ( 86 ACPI_TABLE_DESC *TableDesc, 87 ACPI_PHYSICAL_ADDRESS Address, 88 UINT8 Flags); 89 90 void 91 AcpiTbReleaseTempTable ( 92 ACPI_TABLE_DESC *TableDesc); 93 94 ACPI_STATUS 95 AcpiTbValidateTempTable ( 96 ACPI_TABLE_DESC *TableDesc); 97 98 ACPI_STATUS 99 AcpiTbVerifyTempTable ( 100 ACPI_TABLE_DESC *TableDesc, 101 char *Signature, 102 UINT32 *TableIndex); 103 104 BOOLEAN 105 AcpiTbIsTableLoaded ( 106 UINT32 TableIndex); 107 108 void 109 AcpiTbSetTableLoadedFlag ( 110 UINT32 TableIndex, 111 BOOLEAN IsLoaded); 112 113 114 /* 115 * tbfadt - FADT parse/convert/validate 116 */ 117 void 118 AcpiTbParseFadt ( 119 void); 120 121 void 122 AcpiTbCreateLocalFadt ( 123 ACPI_TABLE_HEADER *Table, 124 UINT32 Length); 125 126 127 /* 128 * tbfind - find ACPI table 129 */ 130 ACPI_STATUS 131 AcpiTbFindTable ( 132 char *Signature, 133 char *OemId, 134 char *OemTableId, 135 UINT32 *TableIndex); 136 137 138 /* 139 * tbinstal - Table removal and deletion 140 */ 141 ACPI_STATUS 142 AcpiTbResizeRootTableList ( 143 void); 144 145 ACPI_STATUS 146 AcpiTbValidateTable ( 147 ACPI_TABLE_DESC *TableDesc); 148 149 void 150 AcpiTbInvalidateTable ( 151 ACPI_TABLE_DESC *TableDesc); 152 153 void 154 AcpiTbOverrideTable ( 155 ACPI_TABLE_DESC *OldTableDesc); 156 157 ACPI_STATUS 158 AcpiTbAcquireTable ( 159 ACPI_TABLE_DESC *TableDesc, 160 ACPI_TABLE_HEADER **TablePtr, 161 UINT32 *TableLength, 162 UINT8 *TableFlags); 163 164 void 165 AcpiTbReleaseTable ( 166 ACPI_TABLE_HEADER *Table, 167 UINT32 TableLength, 168 UINT8 TableFlags); 169 170 ACPI_STATUS 171 AcpiTbInstallStandardTable ( 172 ACPI_PHYSICAL_ADDRESS Address, 173 UINT8 Flags, 174 BOOLEAN Reload, 175 BOOLEAN Override, 176 UINT32 *TableIndex); 177 178 void 179 AcpiTbUninstallTable ( 180 ACPI_TABLE_DESC *TableDesc); 181 182 ACPI_STATUS 183 AcpiTbLoadTable ( 184 UINT32 TableIndex, 185 ACPI_NAMESPACE_NODE *ParentNode); 186 187 ACPI_STATUS 188 AcpiTbInstallAndLoadTable ( 189 ACPI_PHYSICAL_ADDRESS Address, 190 UINT8 Flags, 191 BOOLEAN Override, 192 UINT32 *TableIndex); 193 194 ACPI_STATUS 195 AcpiTbUnloadTable ( 196 UINT32 TableIndex); 197 198 void 199 AcpiTbNotifyTable ( 200 UINT32 Event, 201 void *Table); 202 203 void 204 AcpiTbTerminate ( 205 void); 206 207 ACPI_STATUS 208 AcpiTbDeleteNamespaceByOwner ( 209 UINT32 TableIndex); 210 211 ACPI_STATUS 212 AcpiTbAllocateOwnerId ( 213 UINT32 TableIndex); 214 215 ACPI_STATUS 216 AcpiTbReleaseOwnerId ( 217 UINT32 TableIndex); 218 219 ACPI_STATUS 220 AcpiTbGetOwnerId ( 221 UINT32 TableIndex, 222 ACPI_OWNER_ID *OwnerId); 223 224 225 /* 226 * tbutils - table manager utilities 227 */ 228 ACPI_STATUS 229 AcpiTbInitializeFacs ( 230 void); 231 232 void 233 AcpiTbPrintTableHeader( 234 ACPI_PHYSICAL_ADDRESS Address, 235 ACPI_TABLE_HEADER *Header); 236 237 UINT8 238 AcpiTbChecksum ( 239 UINT8 *Buffer, 240 UINT32 Length); 241 242 ACPI_STATUS 243 AcpiTbVerifyChecksum ( 244 ACPI_TABLE_HEADER *Table, 245 UINT32 Length); 246 247 void 248 AcpiTbCheckDsdtHeader ( 249 void); 250 251 ACPI_TABLE_HEADER * 252 AcpiTbCopyDsdt ( 253 UINT32 TableIndex); 254 255 void 256 AcpiTbInstallTableWithOverride ( 257 ACPI_TABLE_DESC *NewTableDesc, 258 BOOLEAN Override, 259 UINT32 *TableIndex); 260 261 ACPI_STATUS 262 AcpiTbParseRootTable ( 263 ACPI_PHYSICAL_ADDRESS RsdpAddress); 264 265 ACPI_STATUS 266 AcpiTbGetTable ( 267 ACPI_TABLE_DESC *TableDesc, 268 ACPI_TABLE_HEADER **OutTable); 269 270 void 271 AcpiTbPutTable ( 272 ACPI_TABLE_DESC *TableDesc); 273 274 275 /* 276 * tbxfload 277 */ 278 ACPI_STATUS 279 AcpiTbLoadNamespace ( 280 void); 281 282 #endif /* __ACTABLES_H__ */ 283