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