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 ACPI_STATUS 182 AcpiTbLoadTable ( 183 UINT32 TableIndex, 184 ACPI_NAMESPACE_NODE *ParentNode); 185 186 ACPI_STATUS 187 AcpiTbInstallAndLoadTable ( 188 ACPI_PHYSICAL_ADDRESS Address, 189 UINT8 Flags, 190 BOOLEAN Override, 191 UINT32 *TableIndex); 192 193 ACPI_STATUS 194 AcpiTbUnloadTable ( 195 UINT32 TableIndex); 196 197 void 198 AcpiTbTerminate ( 199 void); 200 201 ACPI_STATUS 202 AcpiTbDeleteNamespaceByOwner ( 203 UINT32 TableIndex); 204 205 ACPI_STATUS 206 AcpiTbAllocateOwnerId ( 207 UINT32 TableIndex); 208 209 ACPI_STATUS 210 AcpiTbReleaseOwnerId ( 211 UINT32 TableIndex); 212 213 ACPI_STATUS 214 AcpiTbGetOwnerId ( 215 UINT32 TableIndex, 216 ACPI_OWNER_ID *OwnerId); 217 218 219 /* 220 * tbutils - table manager utilities 221 */ 222 ACPI_STATUS 223 AcpiTbInitializeFacs ( 224 void); 225 226 void 227 AcpiTbPrintTableHeader( 228 ACPI_PHYSICAL_ADDRESS Address, 229 ACPI_TABLE_HEADER *Header); 230 231 UINT8 232 AcpiTbChecksum ( 233 UINT8 *Buffer, 234 UINT32 Length); 235 236 ACPI_STATUS 237 AcpiTbVerifyChecksum ( 238 ACPI_TABLE_HEADER *Table, 239 UINT32 Length); 240 241 void 242 AcpiTbCheckDsdtHeader ( 243 void); 244 245 ACPI_TABLE_HEADER * 246 AcpiTbCopyDsdt ( 247 UINT32 TableIndex); 248 249 void 250 AcpiTbInstallTableWithOverride ( 251 ACPI_TABLE_DESC *NewTableDesc, 252 BOOLEAN Override, 253 UINT32 *TableIndex); 254 255 ACPI_STATUS 256 AcpiTbParseRootTable ( 257 ACPI_PHYSICAL_ADDRESS RsdpAddress); 258 259 ACPI_STATUS 260 AcpiTbGetTable ( 261 ACPI_TABLE_DESC *TableDesc, 262 ACPI_TABLE_HEADER **OutTable); 263 264 void 265 AcpiTbPutTable ( 266 ACPI_TABLE_DESC *TableDesc); 267 268 269 /* 270 * tbxfload 271 */ 272 ACPI_STATUS 273 AcpiTbLoadNamespace ( 274 void); 275 276 #endif /* __ACTABLES_H__ */ 277