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