actables.h revision 281687
1/****************************************************************************** 2 * 3 * Name: actables.h - ACPI table management 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2015, 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 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 90void 91AcpiTbReleaseTempTable ( 92 ACPI_TABLE_DESC *TableDesc); 93 94ACPI_STATUS 95AcpiTbValidateTempTable ( 96 ACPI_TABLE_DESC *TableDesc); 97 98ACPI_STATUS 99AcpiTbVerifyTempTable ( 100 ACPI_TABLE_DESC *TableDesc, 101 char *Signature); 102 103BOOLEAN 104AcpiTbIsTableLoaded ( 105 UINT32 TableIndex); 106 107void 108AcpiTbSetTableLoadedFlag ( 109 UINT32 TableIndex, 110 BOOLEAN IsLoaded); 111 112 113/* 114 * tbfadt - FADT parse/convert/validate 115 */ 116void 117AcpiTbParseFadt ( 118 UINT32 TableIndex); 119 120void 121AcpiTbCreateLocalFadt ( 122 ACPI_TABLE_HEADER *Table, 123 UINT32 Length); 124 125 126/* 127 * tbfind - find ACPI table 128 */ 129ACPI_STATUS 130AcpiTbFindTable ( 131 char *Signature, 132 char *OemId, 133 char *OemTableId, 134 UINT32 *TableIndex); 135 136 137/* 138 * tbinstal - Table removal and deletion 139 */ 140ACPI_STATUS 141AcpiTbResizeRootTableList ( 142 void); 143 144ACPI_STATUS 145AcpiTbValidateTable ( 146 ACPI_TABLE_DESC *TableDesc); 147 148void 149AcpiTbInvalidateTable ( 150 ACPI_TABLE_DESC *TableDesc); 151 152void 153AcpiTbOverrideTable ( 154 ACPI_TABLE_DESC *OldTableDesc); 155 156ACPI_STATUS 157AcpiTbAcquireTable ( 158 ACPI_TABLE_DESC *TableDesc, 159 ACPI_TABLE_HEADER **TablePtr, 160 UINT32 *TableLength, 161 UINT8 *TableFlags); 162 163void 164AcpiTbReleaseTable ( 165 ACPI_TABLE_HEADER *Table, 166 UINT32 TableLength, 167 UINT8 TableFlags); 168 169ACPI_STATUS 170AcpiTbInstallStandardTable ( 171 ACPI_PHYSICAL_ADDRESS Address, 172 UINT8 Flags, 173 BOOLEAN Reload, 174 BOOLEAN Override, 175 UINT32 *TableIndex); 176 177void 178AcpiTbUninstallTable ( 179 ACPI_TABLE_DESC *TableDesc); 180 181void 182AcpiTbTerminate ( 183 void); 184 185ACPI_STATUS 186AcpiTbDeleteNamespaceByOwner ( 187 UINT32 TableIndex); 188 189ACPI_STATUS 190AcpiTbAllocateOwnerId ( 191 UINT32 TableIndex); 192 193ACPI_STATUS 194AcpiTbReleaseOwnerId ( 195 UINT32 TableIndex); 196 197ACPI_STATUS 198AcpiTbGetOwnerId ( 199 UINT32 TableIndex, 200 ACPI_OWNER_ID *OwnerId); 201 202 203/* 204 * tbutils - table manager utilities 205 */ 206ACPI_STATUS 207AcpiTbInitializeFacs ( 208 void); 209 210BOOLEAN 211AcpiTbTablesLoaded ( 212 void); 213 214void 215AcpiTbPrintTableHeader( 216 ACPI_PHYSICAL_ADDRESS Address, 217 ACPI_TABLE_HEADER *Header); 218 219UINT8 220AcpiTbChecksum ( 221 UINT8 *Buffer, 222 UINT32 Length); 223 224ACPI_STATUS 225AcpiTbVerifyChecksum ( 226 ACPI_TABLE_HEADER *Table, 227 UINT32 Length); 228 229void 230AcpiTbCheckDsdtHeader ( 231 void); 232 233ACPI_TABLE_HEADER * 234AcpiTbCopyDsdt ( 235 UINT32 TableIndex); 236 237void 238AcpiTbInstallTableWithOverride ( 239 UINT32 TableIndex, 240 ACPI_TABLE_DESC *NewTableDesc, 241 BOOLEAN Override); 242 243ACPI_STATUS 244AcpiTbInstallFixedTable ( 245 ACPI_PHYSICAL_ADDRESS Address, 246 char *Signature, 247 UINT32 TableIndex); 248 249ACPI_STATUS 250AcpiTbParseRootTable ( 251 ACPI_PHYSICAL_ADDRESS RsdpAddress); 252 253#endif /* __ACTABLES_H__ */ 254