1433d6423SLionel Sambuc /****************************************************************************** 2433d6423SLionel Sambuc * 3433d6423SLionel Sambuc * Name: actables.h - ACPI table management 4433d6423SLionel Sambuc * 5433d6423SLionel Sambuc *****************************************************************************/ 6433d6423SLionel Sambuc 7*29492bb7SDavid van Moolenbroek /* 8*29492bb7SDavid van Moolenbroek * Copyright (C) 2000 - 2014, Intel Corp. 9433d6423SLionel Sambuc * All rights reserved. 10433d6423SLionel Sambuc * 11*29492bb7SDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 12*29492bb7SDavid van Moolenbroek * modification, are permitted provided that the following conditions 13*29492bb7SDavid van Moolenbroek * are met: 14*29492bb7SDavid van Moolenbroek * 1. Redistributions of source code must retain the above copyright 15*29492bb7SDavid van Moolenbroek * notice, this list of conditions, and the following disclaimer, 16*29492bb7SDavid van Moolenbroek * without modification. 17*29492bb7SDavid van Moolenbroek * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*29492bb7SDavid van Moolenbroek * substantially similar to the "NO WARRANTY" disclaimer below 19*29492bb7SDavid van Moolenbroek * ("Disclaimer") and any redistribution must be conditioned upon 20*29492bb7SDavid van Moolenbroek * including a substantially similar Disclaimer requirement for further 21*29492bb7SDavid van Moolenbroek * binary redistribution. 22*29492bb7SDavid van Moolenbroek * 3. Neither the names of the above-listed copyright holders nor the names 23*29492bb7SDavid van Moolenbroek * of any contributors may be used to endorse or promote products derived 24*29492bb7SDavid van Moolenbroek * from this software without specific prior written permission. 25433d6423SLionel Sambuc * 26*29492bb7SDavid van Moolenbroek * Alternatively, this software may be distributed under the terms of the 27*29492bb7SDavid van Moolenbroek * GNU General Public License ("GPL") version 2 as published by the Free 28*29492bb7SDavid van Moolenbroek * Software Foundation. 29433d6423SLionel Sambuc * 30*29492bb7SDavid van Moolenbroek * NO WARRANTY 31*29492bb7SDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*29492bb7SDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*29492bb7SDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*29492bb7SDavid van Moolenbroek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*29492bb7SDavid van Moolenbroek * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*29492bb7SDavid van Moolenbroek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*29492bb7SDavid van Moolenbroek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*29492bb7SDavid van Moolenbroek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*29492bb7SDavid van Moolenbroek * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*29492bb7SDavid van Moolenbroek * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*29492bb7SDavid van Moolenbroek * POSSIBILITY OF SUCH DAMAGES. 42*29492bb7SDavid van Moolenbroek */ 43433d6423SLionel Sambuc 44433d6423SLionel Sambuc #ifndef __ACTABLES_H__ 45433d6423SLionel Sambuc #define __ACTABLES_H__ 46433d6423SLionel Sambuc 47433d6423SLionel Sambuc 48433d6423SLionel Sambuc ACPI_STATUS 49433d6423SLionel Sambuc AcpiAllocateRootTable ( 50433d6423SLionel Sambuc UINT32 InitialTableCount); 51433d6423SLionel Sambuc 52433d6423SLionel Sambuc /* 53*29492bb7SDavid van Moolenbroek * tbxfroot - Root pointer utilities 54*29492bb7SDavid van Moolenbroek */ 55*29492bb7SDavid van Moolenbroek UINT32 56*29492bb7SDavid van Moolenbroek AcpiTbGetRsdpLength ( 57*29492bb7SDavid van Moolenbroek ACPI_TABLE_RSDP *Rsdp); 58*29492bb7SDavid van Moolenbroek 59*29492bb7SDavid van Moolenbroek ACPI_STATUS 60*29492bb7SDavid van Moolenbroek AcpiTbValidateRsdp ( 61*29492bb7SDavid van Moolenbroek ACPI_TABLE_RSDP *Rsdp); 62*29492bb7SDavid van Moolenbroek 63*29492bb7SDavid van Moolenbroek UINT8 * 64*29492bb7SDavid van Moolenbroek AcpiTbScanMemoryForRsdp ( 65*29492bb7SDavid van Moolenbroek UINT8 *StartAddress, 66*29492bb7SDavid van Moolenbroek UINT32 Length); 67*29492bb7SDavid van Moolenbroek 68*29492bb7SDavid van Moolenbroek 69*29492bb7SDavid van Moolenbroek /* 70*29492bb7SDavid van Moolenbroek * tbdata - table data structure management 71*29492bb7SDavid van Moolenbroek */ 72*29492bb7SDavid van Moolenbroek ACPI_STATUS 73*29492bb7SDavid van Moolenbroek AcpiTbGetNextRootIndex ( 74*29492bb7SDavid van Moolenbroek UINT32 *TableIndex); 75*29492bb7SDavid van Moolenbroek 76*29492bb7SDavid van Moolenbroek void 77*29492bb7SDavid van Moolenbroek AcpiTbInitTableDescriptor ( 78*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc, 79*29492bb7SDavid van Moolenbroek ACPI_PHYSICAL_ADDRESS Address, 80*29492bb7SDavid van Moolenbroek UINT8 Flags, 81*29492bb7SDavid van Moolenbroek ACPI_TABLE_HEADER *Table); 82*29492bb7SDavid van Moolenbroek 83*29492bb7SDavid van Moolenbroek ACPI_STATUS 84*29492bb7SDavid van Moolenbroek AcpiTbAcquireTempTable ( 85*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc, 86*29492bb7SDavid van Moolenbroek ACPI_PHYSICAL_ADDRESS Address, 87*29492bb7SDavid van Moolenbroek UINT8 Flags); 88*29492bb7SDavid van Moolenbroek 89*29492bb7SDavid van Moolenbroek void 90*29492bb7SDavid van Moolenbroek AcpiTbReleaseTempTable ( 91*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc); 92*29492bb7SDavid van Moolenbroek 93*29492bb7SDavid van Moolenbroek ACPI_STATUS 94*29492bb7SDavid van Moolenbroek AcpiTbValidateTempTable ( 95*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc); 96*29492bb7SDavid van Moolenbroek 97*29492bb7SDavid van Moolenbroek ACPI_STATUS 98*29492bb7SDavid van Moolenbroek AcpiTbVerifyTempTable ( 99*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc, 100*29492bb7SDavid van Moolenbroek char *Signature); 101*29492bb7SDavid van Moolenbroek 102*29492bb7SDavid van Moolenbroek BOOLEAN 103*29492bb7SDavid van Moolenbroek AcpiTbIsTableLoaded ( 104*29492bb7SDavid van Moolenbroek UINT32 TableIndex); 105*29492bb7SDavid van Moolenbroek 106*29492bb7SDavid van Moolenbroek void 107*29492bb7SDavid van Moolenbroek AcpiTbSetTableLoadedFlag ( 108*29492bb7SDavid van Moolenbroek UINT32 TableIndex, 109*29492bb7SDavid van Moolenbroek BOOLEAN IsLoaded); 110*29492bb7SDavid van Moolenbroek 111*29492bb7SDavid van Moolenbroek 112*29492bb7SDavid van Moolenbroek /* 113433d6423SLionel Sambuc * tbfadt - FADT parse/convert/validate 114433d6423SLionel Sambuc */ 115433d6423SLionel Sambuc void 116433d6423SLionel Sambuc AcpiTbParseFadt ( 117433d6423SLionel Sambuc UINT32 TableIndex); 118433d6423SLionel Sambuc 119433d6423SLionel Sambuc void 120433d6423SLionel Sambuc AcpiTbCreateLocalFadt ( 121433d6423SLionel Sambuc ACPI_TABLE_HEADER *Table, 122433d6423SLionel Sambuc UINT32 Length); 123433d6423SLionel Sambuc 124433d6423SLionel Sambuc 125433d6423SLionel Sambuc /* 126433d6423SLionel Sambuc * tbfind - find ACPI table 127433d6423SLionel Sambuc */ 128433d6423SLionel Sambuc ACPI_STATUS 129433d6423SLionel Sambuc AcpiTbFindTable ( 130433d6423SLionel Sambuc char *Signature, 131433d6423SLionel Sambuc char *OemId, 132433d6423SLionel Sambuc char *OemTableId, 133433d6423SLionel Sambuc UINT32 *TableIndex); 134433d6423SLionel Sambuc 135433d6423SLionel Sambuc 136433d6423SLionel Sambuc /* 137433d6423SLionel Sambuc * tbinstal - Table removal and deletion 138433d6423SLionel Sambuc */ 139433d6423SLionel Sambuc ACPI_STATUS 140433d6423SLionel Sambuc AcpiTbResizeRootTableList ( 141433d6423SLionel Sambuc void); 142433d6423SLionel Sambuc 143433d6423SLionel Sambuc ACPI_STATUS 144*29492bb7SDavid van Moolenbroek AcpiTbValidateTable ( 145433d6423SLionel Sambuc ACPI_TABLE_DESC *TableDesc); 146433d6423SLionel Sambuc 147*29492bb7SDavid van Moolenbroek void 148*29492bb7SDavid van Moolenbroek AcpiTbInvalidateTable ( 149*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *TableDesc); 150*29492bb7SDavid van Moolenbroek 151*29492bb7SDavid van Moolenbroek void 152*29492bb7SDavid van Moolenbroek AcpiTbOverrideTable ( 153*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *OldTableDesc); 154*29492bb7SDavid van Moolenbroek 155433d6423SLionel Sambuc ACPI_STATUS 156*29492bb7SDavid van Moolenbroek AcpiTbAcquireTable ( 157433d6423SLionel Sambuc ACPI_TABLE_DESC *TableDesc, 158*29492bb7SDavid van Moolenbroek ACPI_TABLE_HEADER **TablePtr, 159*29492bb7SDavid van Moolenbroek UINT32 *TableLength, 160*29492bb7SDavid van Moolenbroek UINT8 *TableFlags); 161*29492bb7SDavid van Moolenbroek 162*29492bb7SDavid van Moolenbroek void 163*29492bb7SDavid van Moolenbroek AcpiTbReleaseTable ( 164*29492bb7SDavid van Moolenbroek ACPI_TABLE_HEADER *Table, 165*29492bb7SDavid van Moolenbroek UINT32 TableLength, 166*29492bb7SDavid van Moolenbroek UINT8 TableFlags); 167*29492bb7SDavid van Moolenbroek 168*29492bb7SDavid van Moolenbroek ACPI_STATUS 169*29492bb7SDavid van Moolenbroek AcpiTbInstallStandardTable ( 170*29492bb7SDavid van Moolenbroek ACPI_PHYSICAL_ADDRESS Address, 171*29492bb7SDavid van Moolenbroek UINT8 Flags, 172*29492bb7SDavid van Moolenbroek BOOLEAN Reload, 173*29492bb7SDavid van Moolenbroek BOOLEAN Override, 174433d6423SLionel Sambuc UINT32 *TableIndex); 175433d6423SLionel Sambuc 176433d6423SLionel Sambuc ACPI_STATUS 177433d6423SLionel Sambuc AcpiTbStoreTable ( 178433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 179433d6423SLionel Sambuc ACPI_TABLE_HEADER *Table, 180433d6423SLionel Sambuc UINT32 Length, 181433d6423SLionel Sambuc UINT8 Flags, 182433d6423SLionel Sambuc UINT32 *TableIndex); 183433d6423SLionel Sambuc 184433d6423SLionel Sambuc void 185*29492bb7SDavid van Moolenbroek AcpiTbUninstallTable ( 186433d6423SLionel Sambuc ACPI_TABLE_DESC *TableDesc); 187433d6423SLionel Sambuc 188433d6423SLionel Sambuc void 189433d6423SLionel Sambuc AcpiTbTerminate ( 190433d6423SLionel Sambuc void); 191433d6423SLionel Sambuc 192433d6423SLionel Sambuc ACPI_STATUS 193433d6423SLionel Sambuc AcpiTbDeleteNamespaceByOwner ( 194433d6423SLionel Sambuc UINT32 TableIndex); 195433d6423SLionel Sambuc 196433d6423SLionel Sambuc ACPI_STATUS 197433d6423SLionel Sambuc AcpiTbAllocateOwnerId ( 198433d6423SLionel Sambuc UINT32 TableIndex); 199433d6423SLionel Sambuc 200433d6423SLionel Sambuc ACPI_STATUS 201433d6423SLionel Sambuc AcpiTbReleaseOwnerId ( 202433d6423SLionel Sambuc UINT32 TableIndex); 203433d6423SLionel Sambuc 204433d6423SLionel Sambuc ACPI_STATUS 205433d6423SLionel Sambuc AcpiTbGetOwnerId ( 206433d6423SLionel Sambuc UINT32 TableIndex, 207433d6423SLionel Sambuc ACPI_OWNER_ID *OwnerId); 208433d6423SLionel Sambuc 209433d6423SLionel Sambuc 210433d6423SLionel Sambuc /* 211433d6423SLionel Sambuc * tbutils - table manager utilities 212433d6423SLionel Sambuc */ 213433d6423SLionel Sambuc ACPI_STATUS 214433d6423SLionel Sambuc AcpiTbInitializeFacs ( 215433d6423SLionel Sambuc void); 216433d6423SLionel Sambuc 217433d6423SLionel Sambuc BOOLEAN 218433d6423SLionel Sambuc AcpiTbTablesLoaded ( 219433d6423SLionel Sambuc void); 220433d6423SLionel Sambuc 221433d6423SLionel Sambuc void 222433d6423SLionel Sambuc AcpiTbPrintTableHeader( 223433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 224433d6423SLionel Sambuc ACPI_TABLE_HEADER *Header); 225433d6423SLionel Sambuc 226433d6423SLionel Sambuc UINT8 227433d6423SLionel Sambuc AcpiTbChecksum ( 228433d6423SLionel Sambuc UINT8 *Buffer, 229433d6423SLionel Sambuc UINT32 Length); 230433d6423SLionel Sambuc 231433d6423SLionel Sambuc ACPI_STATUS 232433d6423SLionel Sambuc AcpiTbVerifyChecksum ( 233433d6423SLionel Sambuc ACPI_TABLE_HEADER *Table, 234433d6423SLionel Sambuc UINT32 Length); 235433d6423SLionel Sambuc 236433d6423SLionel Sambuc void 237433d6423SLionel Sambuc AcpiTbCheckDsdtHeader ( 238433d6423SLionel Sambuc void); 239433d6423SLionel Sambuc 240433d6423SLionel Sambuc ACPI_TABLE_HEADER * 241433d6423SLionel Sambuc AcpiTbCopyDsdt ( 242433d6423SLionel Sambuc UINT32 TableIndex); 243433d6423SLionel Sambuc 244433d6423SLionel Sambuc void 245*29492bb7SDavid van Moolenbroek AcpiTbInstallTableWithOverride ( 246*29492bb7SDavid van Moolenbroek UINT32 TableIndex, 247*29492bb7SDavid van Moolenbroek ACPI_TABLE_DESC *NewTableDesc, 248*29492bb7SDavid van Moolenbroek BOOLEAN Override); 249*29492bb7SDavid van Moolenbroek 250*29492bb7SDavid van Moolenbroek ACPI_STATUS 251*29492bb7SDavid van Moolenbroek AcpiTbInstallFixedTable ( 252433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS Address, 253433d6423SLionel Sambuc char *Signature, 254433d6423SLionel Sambuc UINT32 TableIndex); 255433d6423SLionel Sambuc 256433d6423SLionel Sambuc ACPI_STATUS 257433d6423SLionel Sambuc AcpiTbParseRootTable ( 258433d6423SLionel Sambuc ACPI_PHYSICAL_ADDRESS RsdpAddress); 259433d6423SLionel Sambuc 260433d6423SLionel Sambuc #endif /* __ACTABLES_H__ */ 261