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