10d02842fSSascha Wildner /****************************************************************************** 20d02842fSSascha Wildner * 30d02842fSSascha Wildner * Name: actbl1.h - Additional ACPI table definitions 40d02842fSSascha Wildner * 50d02842fSSascha Wildner *****************************************************************************/ 60d02842fSSascha Wildner 7b4315fc7SSascha Wildner /****************************************************************************** 8b4315fc7SSascha Wildner * 9b4315fc7SSascha Wildner * 1. Copyright Notice 10b4315fc7SSascha Wildner * 11383048acSSascha Wildner * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp. 120d02842fSSascha Wildner * All rights reserved. 130d02842fSSascha Wildner * 14b4315fc7SSascha Wildner * 2. License 15b4315fc7SSascha Wildner * 16b4315fc7SSascha Wildner * 2.1. This is your license from Intel Corp. under its intellectual property 17b4315fc7SSascha Wildner * rights. You may have additional license terms from the party that provided 18b4315fc7SSascha Wildner * you this software, covering your right to use that party's intellectual 19b4315fc7SSascha Wildner * property rights. 20b4315fc7SSascha Wildner * 21b4315fc7SSascha Wildner * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22b4315fc7SSascha Wildner * copy of the source code appearing in this file ("Covered Code") an 23b4315fc7SSascha Wildner * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24b4315fc7SSascha Wildner * base code distributed originally by Intel ("Original Intel Code") to copy, 25b4315fc7SSascha Wildner * make derivatives, distribute, use and display any portion of the Covered 26b4315fc7SSascha Wildner * Code in any form, with the right to sublicense such rights; and 27b4315fc7SSascha Wildner * 28b4315fc7SSascha Wildner * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29b4315fc7SSascha Wildner * license (with the right to sublicense), under only those claims of Intel 30b4315fc7SSascha Wildner * patents that are infringed by the Original Intel Code, to make, use, sell, 31b4315fc7SSascha Wildner * offer to sell, and import the Covered Code and derivative works thereof 32b4315fc7SSascha Wildner * solely to the minimum extent necessary to exercise the above copyright 33b4315fc7SSascha Wildner * license, and in no event shall the patent license extend to any additions 34b4315fc7SSascha Wildner * to or modifications of the Original Intel Code. No other license or right 35b4315fc7SSascha Wildner * is granted directly or by implication, estoppel or otherwise; 36b4315fc7SSascha Wildner * 37b4315fc7SSascha Wildner * The above copyright and patent license is granted only if the following 38b4315fc7SSascha Wildner * conditions are met: 39b4315fc7SSascha Wildner * 40b4315fc7SSascha Wildner * 3. Conditions 41b4315fc7SSascha Wildner * 42b4315fc7SSascha Wildner * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered 44b4315fc7SSascha Wildner * Code or modification with rights to further distribute source must include 45b4315fc7SSascha Wildner * the above Copyright Notice, the above License, this list of Conditions, 46b4315fc7SSascha Wildner * and the following Disclaimer and Export Compliance provision. In addition, 47b4315fc7SSascha Wildner * Licensee must cause all Covered Code to which Licensee contributes to 48b4315fc7SSascha Wildner * contain a file documenting the changes Licensee made to create that Covered 49b4315fc7SSascha Wildner * Code and the date of any change. Licensee must include in that file the 50b4315fc7SSascha Wildner * documentation of any changes made by any predecessor Licensee. Licensee 51b4315fc7SSascha Wildner * must include a prominent statement that the modification is derived, 52b4315fc7SSascha Wildner * directly or indirectly, from Original Intel Code. 53b4315fc7SSascha Wildner * 54b4315fc7SSascha Wildner * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered 56b4315fc7SSascha Wildner * Code or modification without rights to further distribute source must 57b4315fc7SSascha Wildner * include the following Disclaimer and Export Compliance provision in the 58b4315fc7SSascha Wildner * documentation and/or other materials provided with distribution. In 59b4315fc7SSascha Wildner * addition, Licensee may not authorize further sublicense of source of any 60b4315fc7SSascha Wildner * portion of the Covered Code, and must include terms to the effect that the 61b4315fc7SSascha Wildner * license from Licensee to its licensee is limited to the intellectual 62b4315fc7SSascha Wildner * property embodied in the software Licensee provides to its licensee, and 63b4315fc7SSascha Wildner * not to intellectual property embodied in modifications its licensee may 64b4315fc7SSascha Wildner * make. 65b4315fc7SSascha Wildner * 66b4315fc7SSascha Wildner * 3.3. Redistribution of Executable. Redistribution in executable form of any 67b4315fc7SSascha Wildner * substantial portion of the Covered Code or modification must reproduce the 68b4315fc7SSascha Wildner * above Copyright Notice, and the following Disclaimer and Export Compliance 69b4315fc7SSascha Wildner * provision in the documentation and/or other materials provided with the 70b4315fc7SSascha Wildner * distribution. 71b4315fc7SSascha Wildner * 72b4315fc7SSascha Wildner * 3.4. Intel retains all right, title, and interest in and to the Original 73b4315fc7SSascha Wildner * Intel Code. 74b4315fc7SSascha Wildner * 75b4315fc7SSascha Wildner * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76b4315fc7SSascha Wildner * Intel shall be used in advertising or otherwise to promote the sale, use or 77b4315fc7SSascha Wildner * other dealings in products derived from or relating to the Covered Code 78b4315fc7SSascha Wildner * without prior written authorization from Intel. 79b4315fc7SSascha Wildner * 80b4315fc7SSascha Wildner * 4. Disclaimer and Export Compliance 81b4315fc7SSascha Wildner * 82b4315fc7SSascha Wildner * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83b4315fc7SSascha Wildner * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84b4315fc7SSascha Wildner * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85b4315fc7SSascha Wildner * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86b4315fc7SSascha Wildner * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87b4315fc7SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88b4315fc7SSascha Wildner * PARTICULAR PURPOSE. 89b4315fc7SSascha Wildner * 90b4315fc7SSascha Wildner * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91b4315fc7SSascha Wildner * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92b4315fc7SSascha Wildner * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93b4315fc7SSascha Wildner * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94b4315fc7SSascha Wildner * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95b4315fc7SSascha Wildner * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96b4315fc7SSascha Wildner * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97b4315fc7SSascha Wildner * LIMITED REMEDY. 98b4315fc7SSascha Wildner * 99b4315fc7SSascha Wildner * 4.3. Licensee shall not export, either directly or indirectly, any of this 100b4315fc7SSascha Wildner * software or system incorporating such software without first obtaining any 101b4315fc7SSascha Wildner * required license or other approval from the U. S. Department of Commerce or 102b4315fc7SSascha Wildner * any other agency or department of the United States Government. In the 103b4315fc7SSascha Wildner * event Licensee exports any such software from the United States or 104b4315fc7SSascha Wildner * re-exports any such software from a foreign destination, Licensee shall 105b4315fc7SSascha Wildner * ensure that the distribution and export/re-export of the software is in 106b4315fc7SSascha Wildner * compliance with all laws, regulations, orders, or other restrictions of the 107b4315fc7SSascha Wildner * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108b4315fc7SSascha Wildner * any of its subsidiaries will export/re-export any technical data, process, 109b4315fc7SSascha Wildner * software, or service, directly or indirectly, to any country for which the 110b4315fc7SSascha Wildner * United States government or any agency thereof requires an export license, 111b4315fc7SSascha Wildner * other governmental approval, or letter of assurance, without first obtaining 112b4315fc7SSascha Wildner * such license, approval or letter. 113b4315fc7SSascha Wildner * 114b4315fc7SSascha Wildner ***************************************************************************** 115b4315fc7SSascha Wildner * 116b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the 117b4315fc7SSascha Wildner * following license: 118b4315fc7SSascha Wildner * 1190d02842fSSascha Wildner * Redistribution and use in source and binary forms, with or without 1200d02842fSSascha Wildner * modification, are permitted provided that the following conditions 1210d02842fSSascha Wildner * are met: 1220d02842fSSascha Wildner * 1. Redistributions of source code must retain the above copyright 1230d02842fSSascha Wildner * notice, this list of conditions, and the following disclaimer, 1240d02842fSSascha Wildner * without modification. 1250d02842fSSascha Wildner * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1260d02842fSSascha Wildner * substantially similar to the "NO WARRANTY" disclaimer below 1270d02842fSSascha Wildner * ("Disclaimer") and any redistribution must be conditioned upon 1280d02842fSSascha Wildner * including a substantially similar Disclaimer requirement for further 1290d02842fSSascha Wildner * binary redistribution. 1300d02842fSSascha Wildner * 3. Neither the names of the above-listed copyright holders nor the names 1310d02842fSSascha Wildner * of any contributors may be used to endorse or promote products derived 1320d02842fSSascha Wildner * from this software without specific prior written permission. 1330d02842fSSascha Wildner * 134b4315fc7SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135b4315fc7SSascha Wildner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136b4315fc7SSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137b4315fc7SSascha Wildner * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138b4315fc7SSascha Wildner * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139b4315fc7SSascha Wildner * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140b4315fc7SSascha Wildner * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141b4315fc7SSascha Wildner * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142b4315fc7SSascha Wildner * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143b4315fc7SSascha Wildner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144b4315fc7SSascha Wildner * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145b4315fc7SSascha Wildner * 146b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the 1470d02842fSSascha Wildner * GNU General Public License ("GPL") version 2 as published by the Free 1480d02842fSSascha Wildner * Software Foundation. 1490d02842fSSascha Wildner * 150b4315fc7SSascha Wildner *****************************************************************************/ 1510d02842fSSascha Wildner 1520d02842fSSascha Wildner #ifndef __ACTBL1_H__ 1530d02842fSSascha Wildner #define __ACTBL1_H__ 1540d02842fSSascha Wildner 1550d02842fSSascha Wildner 1560d02842fSSascha Wildner /******************************************************************************* 1570d02842fSSascha Wildner * 1587bcb6cafSSascha Wildner * Additional ACPI Tables 1590d02842fSSascha Wildner * 1600d02842fSSascha Wildner * These tables are not consumed directly by the ACPICA subsystem, but are 1610d02842fSSascha Wildner * included here to support device drivers and the AML disassembler. 1620d02842fSSascha Wildner * 1630d02842fSSascha Wildner ******************************************************************************/ 1640d02842fSSascha Wildner 1650d02842fSSascha Wildner 1660d02842fSSascha Wildner /* 1670d02842fSSascha Wildner * Values for description table header signatures for tables defined in this 1680d02842fSSascha Wildner * file. Useful because they make it more difficult to inadvertently type in 1690d02842fSSascha Wildner * the wrong signature. 1700d02842fSSascha Wildner */ 171*0672a19bSSascha Wildner #define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */ 1727bcb6cafSSascha Wildner #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 1730d02842fSSascha Wildner #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 1747bcb6cafSSascha Wildner #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 1757bcb6cafSSascha Wildner #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 17601d5d5dfSSascha Wildner #define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */ 1770d02842fSSascha Wildner #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 1787bcb6cafSSascha Wildner #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 1797bcb6cafSSascha Wildner #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 1807bcb6cafSSascha Wildner #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 1817bcb6cafSSascha Wildner #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 1827bcb6cafSSascha Wildner #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 1830d02842fSSascha Wildner #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 1840d02842fSSascha Wildner #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 1850d02842fSSascha Wildner #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 1867bcb6cafSSascha Wildner #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 1877bcb6cafSSascha Wildner #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 1880d02842fSSascha Wildner #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 1897bcb6cafSSascha Wildner #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */ 1907bcb6cafSSascha Wildner #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 1917bcb6cafSSascha Wildner #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 1920d02842fSSascha Wildner 1937bcb6cafSSascha Wildner #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 1947bcb6cafSSascha Wildner #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 1957bcb6cafSSascha Wildner 1967bcb6cafSSascha Wildner 1977bcb6cafSSascha Wildner /* Reserved table signatures */ 1987bcb6cafSSascha Wildner 1997bcb6cafSSascha Wildner #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 2007bcb6cafSSascha Wildner #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 2017bcb6cafSSascha Wildner 2027bcb6cafSSascha Wildner /* 2037bcb6cafSSascha Wildner * These tables have been seen in the field, but no definition has been found 2047bcb6cafSSascha Wildner */ 2057bcb6cafSSascha Wildner #ifdef ACPI_UNDEFINED_TABLES 2067bcb6cafSSascha Wildner #define ACPI_SIG_ATKG "ATKG" 2077bcb6cafSSascha Wildner #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 2087bcb6cafSSascha Wildner #define ACPI_SIG_IEIT "IEIT" 2097bcb6cafSSascha Wildner #endif 2100d02842fSSascha Wildner 2110d02842fSSascha Wildner /* 2120d02842fSSascha Wildner * All tables must be byte-packed to match the ACPI specification, since 2130d02842fSSascha Wildner * the tables are provided by the system BIOS. 2140d02842fSSascha Wildner */ 2150d02842fSSascha Wildner #pragma pack(1) 2160d02842fSSascha Wildner 2170d02842fSSascha Wildner /* 2180d02842fSSascha Wildner * Note: C bitfields are not used for this reason: 2190d02842fSSascha Wildner * 2200d02842fSSascha Wildner * "Bitfields are great and easy to read, but unfortunately the C language 2210d02842fSSascha Wildner * does not specify the layout of bitfields in memory, which means they are 2220d02842fSSascha Wildner * essentially useless for dealing with packed data in on-disk formats or 2230d02842fSSascha Wildner * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 2240d02842fSSascha Wildner * this decision was a design error in C. Ritchie could have picked an order 2250d02842fSSascha Wildner * and stuck with it." Norman Ramsey. 2260d02842fSSascha Wildner * See http://stackoverflow.com/a/1053662/41661 2270d02842fSSascha Wildner */ 2280d02842fSSascha Wildner 2290d02842fSSascha Wildner 2300d02842fSSascha Wildner /******************************************************************************* 2310d02842fSSascha Wildner * 2320d02842fSSascha Wildner * Common subtable headers 2330d02842fSSascha Wildner * 2340d02842fSSascha Wildner ******************************************************************************/ 2350d02842fSSascha Wildner 2360d02842fSSascha Wildner /* Generic subtable header (used in MADT, SRAT, etc.) */ 2370d02842fSSascha Wildner 2380d02842fSSascha Wildner typedef struct acpi_subtable_header 2390d02842fSSascha Wildner { 2400d02842fSSascha Wildner UINT8 Type; 2410d02842fSSascha Wildner UINT8 Length; 2420d02842fSSascha Wildner 2430d02842fSSascha Wildner } ACPI_SUBTABLE_HEADER; 2440d02842fSSascha Wildner 2450d02842fSSascha Wildner 2460d02842fSSascha Wildner /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 2470d02842fSSascha Wildner 2480d02842fSSascha Wildner typedef struct acpi_whea_header 2490d02842fSSascha Wildner { 2500d02842fSSascha Wildner UINT8 Action; 2510d02842fSSascha Wildner UINT8 Instruction; 2520d02842fSSascha Wildner UINT8 Flags; 2530d02842fSSascha Wildner UINT8 Reserved; 2540d02842fSSascha Wildner ACPI_GENERIC_ADDRESS RegisterRegion; 2550d02842fSSascha Wildner UINT64 Value; /* Value used with Read/Write register */ 2560d02842fSSascha Wildner UINT64 Mask; /* Bitmask required for this register instruction */ 2570d02842fSSascha Wildner 2580d02842fSSascha Wildner } ACPI_WHEA_HEADER; 2590d02842fSSascha Wildner 2600d02842fSSascha Wildner 2610d02842fSSascha Wildner /******************************************************************************* 2620d02842fSSascha Wildner * 2637bcb6cafSSascha Wildner * ASF - Alert Standard Format table (Signature "ASF!") 2647bcb6cafSSascha Wildner * Revision 0x10 2657bcb6cafSSascha Wildner * 2667bcb6cafSSascha Wildner * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 2677bcb6cafSSascha Wildner * 2687bcb6cafSSascha Wildner ******************************************************************************/ 2697bcb6cafSSascha Wildner 2707bcb6cafSSascha Wildner typedef struct acpi_table_asf 2717bcb6cafSSascha Wildner { 2727bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2737bcb6cafSSascha Wildner 2747bcb6cafSSascha Wildner } ACPI_TABLE_ASF; 2757bcb6cafSSascha Wildner 2767bcb6cafSSascha Wildner 2777bcb6cafSSascha Wildner /* ASF subtable header */ 2787bcb6cafSSascha Wildner 2797bcb6cafSSascha Wildner typedef struct acpi_asf_header 2807bcb6cafSSascha Wildner { 2817bcb6cafSSascha Wildner UINT8 Type; 2827bcb6cafSSascha Wildner UINT8 Reserved; 2837bcb6cafSSascha Wildner UINT16 Length; 2847bcb6cafSSascha Wildner 2857bcb6cafSSascha Wildner } ACPI_ASF_HEADER; 2867bcb6cafSSascha Wildner 2877bcb6cafSSascha Wildner 2887bcb6cafSSascha Wildner /* Values for Type field above */ 2897bcb6cafSSascha Wildner 2907bcb6cafSSascha Wildner enum AcpiAsfType 2917bcb6cafSSascha Wildner { 2927bcb6cafSSascha Wildner ACPI_ASF_TYPE_INFO = 0, 2937bcb6cafSSascha Wildner ACPI_ASF_TYPE_ALERT = 1, 2947bcb6cafSSascha Wildner ACPI_ASF_TYPE_CONTROL = 2, 2957bcb6cafSSascha Wildner ACPI_ASF_TYPE_BOOT = 3, 2967bcb6cafSSascha Wildner ACPI_ASF_TYPE_ADDRESS = 4, 2977bcb6cafSSascha Wildner ACPI_ASF_TYPE_RESERVED = 5 2987bcb6cafSSascha Wildner }; 2997bcb6cafSSascha Wildner 3007bcb6cafSSascha Wildner /* 3017bcb6cafSSascha Wildner * ASF subtables 3027bcb6cafSSascha Wildner */ 3037bcb6cafSSascha Wildner 3047bcb6cafSSascha Wildner /* 0: ASF Information */ 3057bcb6cafSSascha Wildner 3067bcb6cafSSascha Wildner typedef struct acpi_asf_info 3077bcb6cafSSascha Wildner { 3087bcb6cafSSascha Wildner ACPI_ASF_HEADER Header; 3097bcb6cafSSascha Wildner UINT8 MinResetValue; 3107bcb6cafSSascha Wildner UINT8 MinPollInterval; 3117bcb6cafSSascha Wildner UINT16 SystemId; 3127bcb6cafSSascha Wildner UINT32 MfgId; 3137bcb6cafSSascha Wildner UINT8 Flags; 3147bcb6cafSSascha Wildner UINT8 Reserved2[3]; 3157bcb6cafSSascha Wildner 3167bcb6cafSSascha Wildner } ACPI_ASF_INFO; 3177bcb6cafSSascha Wildner 3187bcb6cafSSascha Wildner /* Masks for Flags field above */ 3197bcb6cafSSascha Wildner 3207bcb6cafSSascha Wildner #define ACPI_ASF_SMBUS_PROTOCOLS (1) 3217bcb6cafSSascha Wildner 3227bcb6cafSSascha Wildner 3237bcb6cafSSascha Wildner /* 1: ASF Alerts */ 3247bcb6cafSSascha Wildner 3257bcb6cafSSascha Wildner typedef struct acpi_asf_alert 3267bcb6cafSSascha Wildner { 3277bcb6cafSSascha Wildner ACPI_ASF_HEADER Header; 3287bcb6cafSSascha Wildner UINT8 AssertMask; 3297bcb6cafSSascha Wildner UINT8 DeassertMask; 3307bcb6cafSSascha Wildner UINT8 Alerts; 3317bcb6cafSSascha Wildner UINT8 DataLength; 3327bcb6cafSSascha Wildner 3337bcb6cafSSascha Wildner } ACPI_ASF_ALERT; 3347bcb6cafSSascha Wildner 3357bcb6cafSSascha Wildner typedef struct acpi_asf_alert_data 3367bcb6cafSSascha Wildner { 3377bcb6cafSSascha Wildner UINT8 Address; 3387bcb6cafSSascha Wildner UINT8 Command; 3397bcb6cafSSascha Wildner UINT8 Mask; 3407bcb6cafSSascha Wildner UINT8 Value; 3417bcb6cafSSascha Wildner UINT8 SensorType; 3427bcb6cafSSascha Wildner UINT8 Type; 3437bcb6cafSSascha Wildner UINT8 Offset; 3447bcb6cafSSascha Wildner UINT8 SourceType; 3457bcb6cafSSascha Wildner UINT8 Severity; 3467bcb6cafSSascha Wildner UINT8 SensorNumber; 3477bcb6cafSSascha Wildner UINT8 Entity; 3487bcb6cafSSascha Wildner UINT8 Instance; 3497bcb6cafSSascha Wildner 3507bcb6cafSSascha Wildner } ACPI_ASF_ALERT_DATA; 3517bcb6cafSSascha Wildner 3527bcb6cafSSascha Wildner 3537bcb6cafSSascha Wildner /* 2: ASF Remote Control */ 3547bcb6cafSSascha Wildner 3557bcb6cafSSascha Wildner typedef struct acpi_asf_remote 3567bcb6cafSSascha Wildner { 3577bcb6cafSSascha Wildner ACPI_ASF_HEADER Header; 3587bcb6cafSSascha Wildner UINT8 Controls; 3597bcb6cafSSascha Wildner UINT8 DataLength; 3607bcb6cafSSascha Wildner UINT16 Reserved2; 3617bcb6cafSSascha Wildner 3627bcb6cafSSascha Wildner } ACPI_ASF_REMOTE; 3637bcb6cafSSascha Wildner 3647bcb6cafSSascha Wildner typedef struct acpi_asf_control_data 3657bcb6cafSSascha Wildner { 3667bcb6cafSSascha Wildner UINT8 Function; 3677bcb6cafSSascha Wildner UINT8 Address; 3687bcb6cafSSascha Wildner UINT8 Command; 3697bcb6cafSSascha Wildner UINT8 Value; 3707bcb6cafSSascha Wildner 3717bcb6cafSSascha Wildner } ACPI_ASF_CONTROL_DATA; 3727bcb6cafSSascha Wildner 3737bcb6cafSSascha Wildner 3747bcb6cafSSascha Wildner /* 3: ASF RMCP Boot Options */ 3757bcb6cafSSascha Wildner 3767bcb6cafSSascha Wildner typedef struct acpi_asf_rmcp 3777bcb6cafSSascha Wildner { 3787bcb6cafSSascha Wildner ACPI_ASF_HEADER Header; 3797bcb6cafSSascha Wildner UINT8 Capabilities[7]; 3807bcb6cafSSascha Wildner UINT8 CompletionCode; 3817bcb6cafSSascha Wildner UINT32 EnterpriseId; 3827bcb6cafSSascha Wildner UINT8 Command; 3837bcb6cafSSascha Wildner UINT16 Parameter; 3847bcb6cafSSascha Wildner UINT16 BootOptions; 3857bcb6cafSSascha Wildner UINT16 OemParameters; 3867bcb6cafSSascha Wildner 3877bcb6cafSSascha Wildner } ACPI_ASF_RMCP; 3887bcb6cafSSascha Wildner 3897bcb6cafSSascha Wildner 3907bcb6cafSSascha Wildner /* 4: ASF Address */ 3917bcb6cafSSascha Wildner 3927bcb6cafSSascha Wildner typedef struct acpi_asf_address 3937bcb6cafSSascha Wildner { 3947bcb6cafSSascha Wildner ACPI_ASF_HEADER Header; 3957bcb6cafSSascha Wildner UINT8 EpromAddress; 3967bcb6cafSSascha Wildner UINT8 Devices; 3977bcb6cafSSascha Wildner 3987bcb6cafSSascha Wildner } ACPI_ASF_ADDRESS; 3997bcb6cafSSascha Wildner 4007bcb6cafSSascha Wildner 4017bcb6cafSSascha Wildner /******************************************************************************* 4027bcb6cafSSascha Wildner * 4030d02842fSSascha Wildner * BERT - Boot Error Record Table (ACPI 4.0) 4040d02842fSSascha Wildner * Version 1 4050d02842fSSascha Wildner * 4060d02842fSSascha Wildner ******************************************************************************/ 4070d02842fSSascha Wildner 4080d02842fSSascha Wildner typedef struct acpi_table_bert 4090d02842fSSascha Wildner { 4100d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4110d02842fSSascha Wildner UINT32 RegionLength; /* Length of the boot error region */ 4120d02842fSSascha Wildner UINT64 Address; /* Physical address of the error region */ 4130d02842fSSascha Wildner 4140d02842fSSascha Wildner } ACPI_TABLE_BERT; 4150d02842fSSascha Wildner 4160d02842fSSascha Wildner 4170d02842fSSascha Wildner /* Boot Error Region (not a subtable, pointed to by Address field above) */ 4180d02842fSSascha Wildner 4190d02842fSSascha Wildner typedef struct acpi_bert_region 4200d02842fSSascha Wildner { 4210d02842fSSascha Wildner UINT32 BlockStatus; /* Type of error information */ 4220d02842fSSascha Wildner UINT32 RawDataOffset; /* Offset to raw error data */ 4230d02842fSSascha Wildner UINT32 RawDataLength; /* Length of raw error data */ 4240d02842fSSascha Wildner UINT32 DataLength; /* Length of generic error data */ 4250d02842fSSascha Wildner UINT32 ErrorSeverity; /* Severity code */ 4260d02842fSSascha Wildner 4270d02842fSSascha Wildner } ACPI_BERT_REGION; 4280d02842fSSascha Wildner 4290d02842fSSascha Wildner /* Values for BlockStatus flags above */ 4300d02842fSSascha Wildner 4310d02842fSSascha Wildner #define ACPI_BERT_UNCORRECTABLE (1) 4320d02842fSSascha Wildner #define ACPI_BERT_CORRECTABLE (1<<1) 4330d02842fSSascha Wildner #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 4340d02842fSSascha Wildner #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 4350d02842fSSascha Wildner #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 4360d02842fSSascha Wildner 4370d02842fSSascha Wildner /* Values for ErrorSeverity above */ 4380d02842fSSascha Wildner 4390d02842fSSascha Wildner enum AcpiBertErrorSeverity 4400d02842fSSascha Wildner { 4410d02842fSSascha Wildner ACPI_BERT_ERROR_CORRECTABLE = 0, 4420d02842fSSascha Wildner ACPI_BERT_ERROR_FATAL = 1, 4430d02842fSSascha Wildner ACPI_BERT_ERROR_CORRECTED = 2, 4440d02842fSSascha Wildner ACPI_BERT_ERROR_NONE = 3, 4450d02842fSSascha Wildner ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 4460d02842fSSascha Wildner }; 4470d02842fSSascha Wildner 4480d02842fSSascha Wildner /* 4490d02842fSSascha Wildner * Note: The generic error data that follows the ErrorSeverity field above 4500d02842fSSascha Wildner * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below 4510d02842fSSascha Wildner */ 4520d02842fSSascha Wildner 4530d02842fSSascha Wildner 4540d02842fSSascha Wildner /******************************************************************************* 4550d02842fSSascha Wildner * 4567bcb6cafSSascha Wildner * BGRT - Boot Graphics Resource Table (ACPI 5.0) 4577bcb6cafSSascha Wildner * Version 1 4587bcb6cafSSascha Wildner * 4597bcb6cafSSascha Wildner ******************************************************************************/ 4607bcb6cafSSascha Wildner 4617bcb6cafSSascha Wildner typedef struct acpi_table_bgrt 4627bcb6cafSSascha Wildner { 4637bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4647bcb6cafSSascha Wildner UINT16 Version; 4657bcb6cafSSascha Wildner UINT8 Status; 4667bcb6cafSSascha Wildner UINT8 ImageType; 4677bcb6cafSSascha Wildner UINT64 ImageAddress; 4687bcb6cafSSascha Wildner UINT32 ImageOffsetX; 4697bcb6cafSSascha Wildner UINT32 ImageOffsetY; 4707bcb6cafSSascha Wildner 4717bcb6cafSSascha Wildner } ACPI_TABLE_BGRT; 4727bcb6cafSSascha Wildner 4737bcb6cafSSascha Wildner /* Flags for Status field above */ 4747bcb6cafSSascha Wildner 4757bcb6cafSSascha Wildner #define ACPI_BGRT_DISPLAYED (1) 4767bcb6cafSSascha Wildner #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1) 4777bcb6cafSSascha Wildner 4787bcb6cafSSascha Wildner 4797bcb6cafSSascha Wildner /******************************************************************************* 4807bcb6cafSSascha Wildner * 4817bcb6cafSSascha Wildner * BOOT - Simple Boot Flag Table 4827bcb6cafSSascha Wildner * Version 1 4837bcb6cafSSascha Wildner * 4847bcb6cafSSascha Wildner * Conforms to the "Simple Boot Flag Specification", Version 2.1 4857bcb6cafSSascha Wildner * 4867bcb6cafSSascha Wildner ******************************************************************************/ 4877bcb6cafSSascha Wildner 4887bcb6cafSSascha Wildner typedef struct acpi_table_boot 4897bcb6cafSSascha Wildner { 4907bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4917bcb6cafSSascha Wildner UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 4927bcb6cafSSascha Wildner UINT8 Reserved[3]; 4937bcb6cafSSascha Wildner 4947bcb6cafSSascha Wildner } ACPI_TABLE_BOOT; 4957bcb6cafSSascha Wildner 4967bcb6cafSSascha Wildner 4977bcb6cafSSascha Wildner /******************************************************************************* 4987bcb6cafSSascha Wildner * 49901d5d5dfSSascha Wildner * CEDT - CXL Early Discovery Table 50001d5d5dfSSascha Wildner * Version 1 50101d5d5dfSSascha Wildner * 50201d5d5dfSSascha Wildner * Conforms to the "CXL Early Discovery Table" (CXL 2.0) 50301d5d5dfSSascha Wildner * 50401d5d5dfSSascha Wildner ******************************************************************************/ 50501d5d5dfSSascha Wildner 50601d5d5dfSSascha Wildner typedef struct acpi_table_cedt 50701d5d5dfSSascha Wildner { 50801d5d5dfSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 50901d5d5dfSSascha Wildner 51001d5d5dfSSascha Wildner } ACPI_TABLE_CEDT; 51101d5d5dfSSascha Wildner 51201d5d5dfSSascha Wildner /* CEDT subtable header (Performance Record Structure) */ 51301d5d5dfSSascha Wildner 51401d5d5dfSSascha Wildner typedef struct acpi_cedt_header 51501d5d5dfSSascha Wildner { 51601d5d5dfSSascha Wildner UINT8 Type; 51701d5d5dfSSascha Wildner UINT8 Reserved; 51801d5d5dfSSascha Wildner UINT16 Length; 51901d5d5dfSSascha Wildner 52001d5d5dfSSascha Wildner } ACPI_CEDT_HEADER; 52101d5d5dfSSascha Wildner 52201d5d5dfSSascha Wildner /* Values for Type field above */ 52301d5d5dfSSascha Wildner 52401d5d5dfSSascha Wildner enum AcpiCedtType 52501d5d5dfSSascha Wildner { 52601d5d5dfSSascha Wildner ACPI_CEDT_TYPE_CHBS = 0, 5274898bea4SSascha Wildner ACPI_CEDT_TYPE_CFMWS = 1, 5284898bea4SSascha Wildner ACPI_CEDT_TYPE_RESERVED = 2, 52901d5d5dfSSascha Wildner }; 53001d5d5dfSSascha Wildner 5314898bea4SSascha Wildner /* Values for version field above */ 5324898bea4SSascha Wildner 5334898bea4SSascha Wildner #define ACPI_CEDT_CHBS_VERSION_CXL11 (0) 5344898bea4SSascha Wildner #define ACPI_CEDT_CHBS_VERSION_CXL20 (1) 5354898bea4SSascha Wildner 5364898bea4SSascha Wildner /* Values for length field above */ 5374898bea4SSascha Wildner 5384898bea4SSascha Wildner #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000) 5394898bea4SSascha Wildner #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000) 54001d5d5dfSSascha Wildner 54101d5d5dfSSascha Wildner /* 54201d5d5dfSSascha Wildner * CEDT subtables 54301d5d5dfSSascha Wildner */ 54401d5d5dfSSascha Wildner 54501d5d5dfSSascha Wildner /* 0: CXL Host Bridge Structure */ 54601d5d5dfSSascha Wildner 54701d5d5dfSSascha Wildner typedef struct acpi_cedt_chbs 54801d5d5dfSSascha Wildner { 54901d5d5dfSSascha Wildner ACPI_CEDT_HEADER Header; 55001d5d5dfSSascha Wildner UINT32 Uid; 55101d5d5dfSSascha Wildner UINT32 CxlVersion; 55201d5d5dfSSascha Wildner UINT32 Reserved; 55301d5d5dfSSascha Wildner UINT64 Base; 55401d5d5dfSSascha Wildner UINT64 Length; 55501d5d5dfSSascha Wildner 55601d5d5dfSSascha Wildner } ACPI_CEDT_CHBS; 55701d5d5dfSSascha Wildner 55801d5d5dfSSascha Wildner 5594898bea4SSascha Wildner /* 1: CXL Fixed Memory Window Structure */ 5604898bea4SSascha Wildner 5614898bea4SSascha Wildner typedef struct acpi_cedt_cfmws 5624898bea4SSascha Wildner { 5634898bea4SSascha Wildner ACPI_CEDT_HEADER Header; 5644898bea4SSascha Wildner UINT32 Reserved1; 5654898bea4SSascha Wildner UINT64 BaseHpa; 5664898bea4SSascha Wildner UINT64 WindowSize; 5674898bea4SSascha Wildner UINT8 InterleaveWays; 5684898bea4SSascha Wildner UINT8 InterleaveArithmetic; 5694898bea4SSascha Wildner UINT16 Reserved2; 5704898bea4SSascha Wildner UINT32 Granularity; 5714898bea4SSascha Wildner UINT16 Restrictions; 5724898bea4SSascha Wildner UINT16 QtgId; 5734898bea4SSascha Wildner UINT32 InterleaveTargets[]; 5744898bea4SSascha Wildner 5754898bea4SSascha Wildner } ACPI_CEDT_CFMWS; 5764898bea4SSascha Wildner 5774898bea4SSascha Wildner /* Values for Interleave Arithmetic field above */ 5784898bea4SSascha Wildner 5794898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0) 5804898bea4SSascha Wildner 5814898bea4SSascha Wildner /* Values for Restrictions field above */ 5824898bea4SSascha Wildner 5834898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1) 5844898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1) 5854898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2) 5864898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3) 5874898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4) 5884898bea4SSascha Wildner 5894898bea4SSascha Wildner 59001d5d5dfSSascha Wildner /******************************************************************************* 59101d5d5dfSSascha Wildner * 5920d02842fSSascha Wildner * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 5930d02842fSSascha Wildner * Version 1 5940d02842fSSascha Wildner * 5950d02842fSSascha Wildner ******************************************************************************/ 5960d02842fSSascha Wildner 5970d02842fSSascha Wildner typedef struct acpi_table_cpep 5980d02842fSSascha Wildner { 5990d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 6000d02842fSSascha Wildner UINT64 Reserved; 6010d02842fSSascha Wildner 6020d02842fSSascha Wildner } ACPI_TABLE_CPEP; 6030d02842fSSascha Wildner 6040d02842fSSascha Wildner 6050d02842fSSascha Wildner /* Subtable */ 6060d02842fSSascha Wildner 6070d02842fSSascha Wildner typedef struct acpi_cpep_polling 6080d02842fSSascha Wildner { 6090d02842fSSascha Wildner ACPI_SUBTABLE_HEADER Header; 6100d02842fSSascha Wildner UINT8 Id; /* Processor ID */ 6110d02842fSSascha Wildner UINT8 Eid; /* Processor EID */ 6120d02842fSSascha Wildner UINT32 Interval; /* Polling interval (msec) */ 6130d02842fSSascha Wildner 6140d02842fSSascha Wildner } ACPI_CPEP_POLLING; 6150d02842fSSascha Wildner 6160d02842fSSascha Wildner 6170d02842fSSascha Wildner /******************************************************************************* 6180d02842fSSascha Wildner * 6197bcb6cafSSascha Wildner * CSRT - Core System Resource Table 6207bcb6cafSSascha Wildner * Version 0 6217bcb6cafSSascha Wildner * 6227bcb6cafSSascha Wildner * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 6237bcb6cafSSascha Wildner * 6247bcb6cafSSascha Wildner ******************************************************************************/ 6257bcb6cafSSascha Wildner 6267bcb6cafSSascha Wildner typedef struct acpi_table_csrt 6277bcb6cafSSascha Wildner { 6287bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 6297bcb6cafSSascha Wildner 6307bcb6cafSSascha Wildner } ACPI_TABLE_CSRT; 6317bcb6cafSSascha Wildner 6327bcb6cafSSascha Wildner 6337bcb6cafSSascha Wildner /* Resource Group subtable */ 6347bcb6cafSSascha Wildner 6357bcb6cafSSascha Wildner typedef struct acpi_csrt_group 6367bcb6cafSSascha Wildner { 6377bcb6cafSSascha Wildner UINT32 Length; 6387bcb6cafSSascha Wildner UINT32 VendorId; 6397bcb6cafSSascha Wildner UINT32 SubvendorId; 6407bcb6cafSSascha Wildner UINT16 DeviceId; 6417bcb6cafSSascha Wildner UINT16 SubdeviceId; 6427bcb6cafSSascha Wildner UINT16 Revision; 6437bcb6cafSSascha Wildner UINT16 Reserved; 6447bcb6cafSSascha Wildner UINT32 SharedInfoLength; 6457bcb6cafSSascha Wildner 6467bcb6cafSSascha Wildner /* Shared data immediately follows (Length = SharedInfoLength) */ 6477bcb6cafSSascha Wildner 6487bcb6cafSSascha Wildner } ACPI_CSRT_GROUP; 6497bcb6cafSSascha Wildner 6507bcb6cafSSascha Wildner /* Shared Info subtable */ 6517bcb6cafSSascha Wildner 6527bcb6cafSSascha Wildner typedef struct acpi_csrt_shared_info 6537bcb6cafSSascha Wildner { 6547bcb6cafSSascha Wildner UINT16 MajorVersion; 6557bcb6cafSSascha Wildner UINT16 MinorVersion; 6567bcb6cafSSascha Wildner UINT32 MmioBaseLow; 6577bcb6cafSSascha Wildner UINT32 MmioBaseHigh; 6587bcb6cafSSascha Wildner UINT32 GsiInterrupt; 6597bcb6cafSSascha Wildner UINT8 InterruptPolarity; 6607bcb6cafSSascha Wildner UINT8 InterruptMode; 6617bcb6cafSSascha Wildner UINT8 NumChannels; 6627bcb6cafSSascha Wildner UINT8 DmaAddressWidth; 6637bcb6cafSSascha Wildner UINT16 BaseRequestLine; 6647bcb6cafSSascha Wildner UINT16 NumHandshakeSignals; 6657bcb6cafSSascha Wildner UINT32 MaxBlockSize; 6667bcb6cafSSascha Wildner 6677bcb6cafSSascha Wildner /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 6687bcb6cafSSascha Wildner 6697bcb6cafSSascha Wildner } ACPI_CSRT_SHARED_INFO; 6707bcb6cafSSascha Wildner 6717bcb6cafSSascha Wildner /* Resource Descriptor subtable */ 6727bcb6cafSSascha Wildner 6737bcb6cafSSascha Wildner typedef struct acpi_csrt_descriptor 6747bcb6cafSSascha Wildner { 6757bcb6cafSSascha Wildner UINT32 Length; 6767bcb6cafSSascha Wildner UINT16 Type; 6777bcb6cafSSascha Wildner UINT16 Subtype; 6787bcb6cafSSascha Wildner UINT32 Uid; 6797bcb6cafSSascha Wildner 6807bcb6cafSSascha Wildner /* Resource-specific information immediately follows */ 6817bcb6cafSSascha Wildner 6827bcb6cafSSascha Wildner } ACPI_CSRT_DESCRIPTOR; 6837bcb6cafSSascha Wildner 6847bcb6cafSSascha Wildner 6857bcb6cafSSascha Wildner /* Resource Types */ 6867bcb6cafSSascha Wildner 6877bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 6887bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_TIMER 0x0002 6897bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_DMA 0x0003 6907bcb6cafSSascha Wildner 6917bcb6cafSSascha Wildner /* Resource Subtypes */ 6927bcb6cafSSascha Wildner 6937bcb6cafSSascha Wildner #define ACPI_CSRT_XRUPT_LINE 0x0000 6947bcb6cafSSascha Wildner #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 6957bcb6cafSSascha Wildner #define ACPI_CSRT_TIMER 0x0000 6967bcb6cafSSascha Wildner #define ACPI_CSRT_DMA_CHANNEL 0x0000 6977bcb6cafSSascha Wildner #define ACPI_CSRT_DMA_CONTROLLER 0x0001 6987bcb6cafSSascha Wildner 6997bcb6cafSSascha Wildner 7007bcb6cafSSascha Wildner /******************************************************************************* 7017bcb6cafSSascha Wildner * 7027bcb6cafSSascha Wildner * DBG2 - Debug Port Table 2 7037bcb6cafSSascha Wildner * Version 0 (Both main table and subtables) 7047bcb6cafSSascha Wildner * 705*0672a19bSSascha Wildner * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020 7067bcb6cafSSascha Wildner * 7077bcb6cafSSascha Wildner ******************************************************************************/ 7087bcb6cafSSascha Wildner 7097bcb6cafSSascha Wildner typedef struct acpi_table_dbg2 7107bcb6cafSSascha Wildner { 7117bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 7127bcb6cafSSascha Wildner UINT32 InfoOffset; 7137bcb6cafSSascha Wildner UINT32 InfoCount; 7147bcb6cafSSascha Wildner 7157bcb6cafSSascha Wildner } ACPI_TABLE_DBG2; 7167bcb6cafSSascha Wildner 7177bcb6cafSSascha Wildner 7187bcb6cafSSascha Wildner typedef struct acpi_dbg2_header 7197bcb6cafSSascha Wildner { 7207bcb6cafSSascha Wildner UINT32 InfoOffset; 7217bcb6cafSSascha Wildner UINT32 InfoCount; 7227bcb6cafSSascha Wildner 7237bcb6cafSSascha Wildner } ACPI_DBG2_HEADER; 7247bcb6cafSSascha Wildner 7257bcb6cafSSascha Wildner 7267bcb6cafSSascha Wildner /* Debug Device Information Subtable */ 7277bcb6cafSSascha Wildner 7287bcb6cafSSascha Wildner typedef struct acpi_dbg2_device 7297bcb6cafSSascha Wildner { 7307bcb6cafSSascha Wildner UINT8 Revision; 7317bcb6cafSSascha Wildner UINT16 Length; 7327bcb6cafSSascha Wildner UINT8 RegisterCount; /* Number of BaseAddress registers */ 7337bcb6cafSSascha Wildner UINT16 NamepathLength; 7347bcb6cafSSascha Wildner UINT16 NamepathOffset; 7357bcb6cafSSascha Wildner UINT16 OemDataLength; 7367bcb6cafSSascha Wildner UINT16 OemDataOffset; 7377bcb6cafSSascha Wildner UINT16 PortType; 7387bcb6cafSSascha Wildner UINT16 PortSubtype; 7397bcb6cafSSascha Wildner UINT16 Reserved; 7407bcb6cafSSascha Wildner UINT16 BaseAddressOffset; 7417bcb6cafSSascha Wildner UINT16 AddressSizeOffset; 7427bcb6cafSSascha Wildner /* 7437bcb6cafSSascha Wildner * Data that follows: 7447bcb6cafSSascha Wildner * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 7457bcb6cafSSascha Wildner * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 7467bcb6cafSSascha Wildner * Namepath (required) - Null terminated string. Single dot if not supported. 7477bcb6cafSSascha Wildner * OemData (optional) - Length is OemDataLength. 7487bcb6cafSSascha Wildner */ 7497bcb6cafSSascha Wildner } ACPI_DBG2_DEVICE; 7507bcb6cafSSascha Wildner 7517bcb6cafSSascha Wildner /* Types for PortType field above */ 7527bcb6cafSSascha Wildner 7537bcb6cafSSascha Wildner #define ACPI_DBG2_SERIAL_PORT 0x8000 7547bcb6cafSSascha Wildner #define ACPI_DBG2_1394_PORT 0x8001 7557bcb6cafSSascha Wildner #define ACPI_DBG2_USB_PORT 0x8002 7567bcb6cafSSascha Wildner #define ACPI_DBG2_NET_PORT 0x8003 7577bcb6cafSSascha Wildner 7587bcb6cafSSascha Wildner /* Subtypes for PortSubtype field above */ 7597bcb6cafSSascha Wildner 7607bcb6cafSSascha Wildner #define ACPI_DBG2_16550_COMPATIBLE 0x0000 7617bcb6cafSSascha Wildner #define ACPI_DBG2_16550_SUBSET 0x0001 762*0672a19bSSascha Wildner #define ACPI_DBG2_MAX311XE_SPI 0x0002 7637bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_PL011 0x0003 764*0672a19bSSascha Wildner #define ACPI_DBG2_MSM8X60 0x0004 765*0672a19bSSascha Wildner #define ACPI_DBG2_16550_NVIDIA 0x0005 766*0672a19bSSascha Wildner #define ACPI_DBG2_TI_OMAP 0x0006 767*0672a19bSSascha Wildner #define ACPI_DBG2_APM88XXXX 0x0008 768*0672a19bSSascha Wildner #define ACPI_DBG2_MSM8974 0x0009 769*0672a19bSSascha Wildner #define ACPI_DBG2_SAM5250 0x000A 770*0672a19bSSascha Wildner #define ACPI_DBG2_INTEL_USIF 0x000B 771*0672a19bSSascha Wildner #define ACPI_DBG2_IMX6 0x000C 7727bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 7737bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 7747bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_DCC 0x000F 7757bcb6cafSSascha Wildner #define ACPI_DBG2_BCM2835 0x0010 776*0672a19bSSascha Wildner #define ACPI_DBG2_SDM845_1_8432MHZ 0x0011 777*0672a19bSSascha Wildner #define ACPI_DBG2_16550_WITH_GAS 0x0012 778*0672a19bSSascha Wildner #define ACPI_DBG2_SDM845_7_372MHZ 0x0013 779*0672a19bSSascha Wildner #define ACPI_DBG2_INTEL_LPSS 0x0014 7807bcb6cafSSascha Wildner 7817bcb6cafSSascha Wildner #define ACPI_DBG2_1394_STANDARD 0x0000 7827bcb6cafSSascha Wildner 7837bcb6cafSSascha Wildner #define ACPI_DBG2_USB_XHCI 0x0000 7847bcb6cafSSascha Wildner #define ACPI_DBG2_USB_EHCI 0x0001 7857bcb6cafSSascha Wildner 7867bcb6cafSSascha Wildner 7877bcb6cafSSascha Wildner /******************************************************************************* 7887bcb6cafSSascha Wildner * 7897bcb6cafSSascha Wildner * DBGP - Debug Port table 7907bcb6cafSSascha Wildner * Version 1 7917bcb6cafSSascha Wildner * 7927bcb6cafSSascha Wildner * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 7937bcb6cafSSascha Wildner * 7947bcb6cafSSascha Wildner ******************************************************************************/ 7957bcb6cafSSascha Wildner 7967bcb6cafSSascha Wildner typedef struct acpi_table_dbgp 7977bcb6cafSSascha Wildner { 7987bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 7997bcb6cafSSascha Wildner UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 8007bcb6cafSSascha Wildner UINT8 Reserved[3]; 8017bcb6cafSSascha Wildner ACPI_GENERIC_ADDRESS DebugPort; 8027bcb6cafSSascha Wildner 8037bcb6cafSSascha Wildner } ACPI_TABLE_DBGP; 8047bcb6cafSSascha Wildner 8057bcb6cafSSascha Wildner 8067bcb6cafSSascha Wildner /******************************************************************************* 8077bcb6cafSSascha Wildner * 8087bcb6cafSSascha Wildner * DMAR - DMA Remapping table 8097bcb6cafSSascha Wildner * Version 1 8107bcb6cafSSascha Wildner * 8117bcb6cafSSascha Wildner * Conforms to "Intel Virtualization Technology for Directed I/O", 8127bcb6cafSSascha Wildner * Version 2.3, October 2014 8137bcb6cafSSascha Wildner * 8147bcb6cafSSascha Wildner ******************************************************************************/ 8157bcb6cafSSascha Wildner 8167bcb6cafSSascha Wildner typedef struct acpi_table_dmar 8177bcb6cafSSascha Wildner { 8187bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 8197bcb6cafSSascha Wildner UINT8 Width; /* Host Address Width */ 8207bcb6cafSSascha Wildner UINT8 Flags; 8217bcb6cafSSascha Wildner UINT8 Reserved[10]; 8227bcb6cafSSascha Wildner 8237bcb6cafSSascha Wildner } ACPI_TABLE_DMAR; 8247bcb6cafSSascha Wildner 8257bcb6cafSSascha Wildner /* Masks for Flags field above */ 8267bcb6cafSSascha Wildner 8277bcb6cafSSascha Wildner #define ACPI_DMAR_INTR_REMAP (1) 8287bcb6cafSSascha Wildner #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 8297bcb6cafSSascha Wildner #define ACPI_DMAR_X2APIC_MODE (1<<2) 8307bcb6cafSSascha Wildner 8317bcb6cafSSascha Wildner 8327bcb6cafSSascha Wildner /* DMAR subtable header */ 8337bcb6cafSSascha Wildner 8347bcb6cafSSascha Wildner typedef struct acpi_dmar_header 8357bcb6cafSSascha Wildner { 8367bcb6cafSSascha Wildner UINT16 Type; 8377bcb6cafSSascha Wildner UINT16 Length; 8387bcb6cafSSascha Wildner 8397bcb6cafSSascha Wildner } ACPI_DMAR_HEADER; 8407bcb6cafSSascha Wildner 8417bcb6cafSSascha Wildner /* Values for subtable type in ACPI_DMAR_HEADER */ 8427bcb6cafSSascha Wildner 8437bcb6cafSSascha Wildner enum AcpiDmarType 8447bcb6cafSSascha Wildner { 8457bcb6cafSSascha Wildner ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 8467bcb6cafSSascha Wildner ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 8477bcb6cafSSascha Wildner ACPI_DMAR_TYPE_ROOT_ATS = 2, 8487bcb6cafSSascha Wildner ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 8497bcb6cafSSascha Wildner ACPI_DMAR_TYPE_NAMESPACE = 4, 8507bcb6cafSSascha Wildner ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 8517bcb6cafSSascha Wildner }; 8527bcb6cafSSascha Wildner 8537bcb6cafSSascha Wildner 8547bcb6cafSSascha Wildner /* DMAR Device Scope structure */ 8557bcb6cafSSascha Wildner 8567bcb6cafSSascha Wildner typedef struct acpi_dmar_device_scope 8577bcb6cafSSascha Wildner { 8587bcb6cafSSascha Wildner UINT8 EntryType; 8597bcb6cafSSascha Wildner UINT8 Length; 8607bcb6cafSSascha Wildner UINT16 Reserved; 8617bcb6cafSSascha Wildner UINT8 EnumerationId; 8627bcb6cafSSascha Wildner UINT8 Bus; 8637bcb6cafSSascha Wildner 8647bcb6cafSSascha Wildner } ACPI_DMAR_DEVICE_SCOPE; 8657bcb6cafSSascha Wildner 8667bcb6cafSSascha Wildner /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 8677bcb6cafSSascha Wildner 8687bcb6cafSSascha Wildner enum AcpiDmarScopeType 8697bcb6cafSSascha Wildner { 8707bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 8717bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 8727bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 8737bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 8747bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_HPET = 4, 8757bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 8767bcb6cafSSascha Wildner ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 8777bcb6cafSSascha Wildner }; 8787bcb6cafSSascha Wildner 8797bcb6cafSSascha Wildner typedef struct acpi_dmar_pci_path 8807bcb6cafSSascha Wildner { 8817bcb6cafSSascha Wildner UINT8 Device; 8827bcb6cafSSascha Wildner UINT8 Function; 8837bcb6cafSSascha Wildner 8847bcb6cafSSascha Wildner } ACPI_DMAR_PCI_PATH; 8857bcb6cafSSascha Wildner 8867bcb6cafSSascha Wildner 8877bcb6cafSSascha Wildner /* 8887bcb6cafSSascha Wildner * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 8897bcb6cafSSascha Wildner */ 8907bcb6cafSSascha Wildner 8917bcb6cafSSascha Wildner /* 0: Hardware Unit Definition */ 8927bcb6cafSSascha Wildner 8937bcb6cafSSascha Wildner typedef struct acpi_dmar_hardware_unit 8947bcb6cafSSascha Wildner { 8957bcb6cafSSascha Wildner ACPI_DMAR_HEADER Header; 8967bcb6cafSSascha Wildner UINT8 Flags; 8977bcb6cafSSascha Wildner UINT8 Reserved; 8987bcb6cafSSascha Wildner UINT16 Segment; 8997bcb6cafSSascha Wildner UINT64 Address; /* Register Base Address */ 9007bcb6cafSSascha Wildner 9017bcb6cafSSascha Wildner } ACPI_DMAR_HARDWARE_UNIT; 9027bcb6cafSSascha Wildner 9037bcb6cafSSascha Wildner /* Masks for Flags field above */ 9047bcb6cafSSascha Wildner 9057bcb6cafSSascha Wildner #define ACPI_DMAR_INCLUDE_ALL (1) 9067bcb6cafSSascha Wildner 9077bcb6cafSSascha Wildner 90800ffa116SSascha Wildner /* 1: Reserved Memory Definition */ 9097bcb6cafSSascha Wildner 9107bcb6cafSSascha Wildner typedef struct acpi_dmar_reserved_memory 9117bcb6cafSSascha Wildner { 9127bcb6cafSSascha Wildner ACPI_DMAR_HEADER Header; 9137bcb6cafSSascha Wildner UINT16 Reserved; 9147bcb6cafSSascha Wildner UINT16 Segment; 9157bcb6cafSSascha Wildner UINT64 BaseAddress; /* 4K aligned base address */ 9167bcb6cafSSascha Wildner UINT64 EndAddress; /* 4K aligned limit address */ 9177bcb6cafSSascha Wildner 9187bcb6cafSSascha Wildner } ACPI_DMAR_RESERVED_MEMORY; 9197bcb6cafSSascha Wildner 9207bcb6cafSSascha Wildner /* Masks for Flags field above */ 9217bcb6cafSSascha Wildner 9227bcb6cafSSascha Wildner #define ACPI_DMAR_ALLOW_ALL (1) 9237bcb6cafSSascha Wildner 9247bcb6cafSSascha Wildner 9257bcb6cafSSascha Wildner /* 2: Root Port ATS Capability Reporting Structure */ 9267bcb6cafSSascha Wildner 9277bcb6cafSSascha Wildner typedef struct acpi_dmar_atsr 9287bcb6cafSSascha Wildner { 9297bcb6cafSSascha Wildner ACPI_DMAR_HEADER Header; 9307bcb6cafSSascha Wildner UINT8 Flags; 9317bcb6cafSSascha Wildner UINT8 Reserved; 9327bcb6cafSSascha Wildner UINT16 Segment; 9337bcb6cafSSascha Wildner 9347bcb6cafSSascha Wildner } ACPI_DMAR_ATSR; 9357bcb6cafSSascha Wildner 9367bcb6cafSSascha Wildner /* Masks for Flags field above */ 9377bcb6cafSSascha Wildner 9387bcb6cafSSascha Wildner #define ACPI_DMAR_ALL_PORTS (1) 9397bcb6cafSSascha Wildner 9407bcb6cafSSascha Wildner 9417bcb6cafSSascha Wildner /* 3: Remapping Hardware Static Affinity Structure */ 9427bcb6cafSSascha Wildner 9437bcb6cafSSascha Wildner typedef struct acpi_dmar_rhsa 9447bcb6cafSSascha Wildner { 9457bcb6cafSSascha Wildner ACPI_DMAR_HEADER Header; 9467bcb6cafSSascha Wildner UINT32 Reserved; 9477bcb6cafSSascha Wildner UINT64 BaseAddress; 9487bcb6cafSSascha Wildner UINT32 ProximityDomain; 9497bcb6cafSSascha Wildner 9507bcb6cafSSascha Wildner } ACPI_DMAR_RHSA; 9517bcb6cafSSascha Wildner 9527bcb6cafSSascha Wildner 9537bcb6cafSSascha Wildner /* 4: ACPI Namespace Device Declaration Structure */ 9547bcb6cafSSascha Wildner 9557bcb6cafSSascha Wildner typedef struct acpi_dmar_andd 9567bcb6cafSSascha Wildner { 9577bcb6cafSSascha Wildner ACPI_DMAR_HEADER Header; 9587bcb6cafSSascha Wildner UINT8 Reserved[3]; 9597bcb6cafSSascha Wildner UINT8 DeviceNumber; 9607bcb6cafSSascha Wildner char DeviceName[1]; 9617bcb6cafSSascha Wildner 9627bcb6cafSSascha Wildner } ACPI_DMAR_ANDD; 9637bcb6cafSSascha Wildner 9647bcb6cafSSascha Wildner 9657bcb6cafSSascha Wildner /******************************************************************************* 9667bcb6cafSSascha Wildner * 9677bcb6cafSSascha Wildner * DRTM - Dynamic Root of Trust for Measurement table 9687bcb6cafSSascha Wildner * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 9697bcb6cafSSascha Wildner * Table version 1 9707bcb6cafSSascha Wildner * 9717bcb6cafSSascha Wildner ******************************************************************************/ 9727bcb6cafSSascha Wildner 9737bcb6cafSSascha Wildner typedef struct acpi_table_drtm 9747bcb6cafSSascha Wildner { 9757bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 9767bcb6cafSSascha Wildner UINT64 EntryBaseAddress; 9777bcb6cafSSascha Wildner UINT64 EntryLength; 9787bcb6cafSSascha Wildner UINT32 EntryAddress32; 9797bcb6cafSSascha Wildner UINT64 EntryAddress64; 9807bcb6cafSSascha Wildner UINT64 ExitAddress; 9817bcb6cafSSascha Wildner UINT64 LogAreaAddress; 9827bcb6cafSSascha Wildner UINT32 LogAreaLength; 9837bcb6cafSSascha Wildner UINT64 ArchDependentAddress; 9847bcb6cafSSascha Wildner UINT32 Flags; 9857bcb6cafSSascha Wildner 9867bcb6cafSSascha Wildner } ACPI_TABLE_DRTM; 9877bcb6cafSSascha Wildner 9887bcb6cafSSascha Wildner /* Flag Definitions for above */ 9897bcb6cafSSascha Wildner 9907bcb6cafSSascha Wildner #define ACPI_DRTM_ACCESS_ALLOWED (1) 9917bcb6cafSSascha Wildner #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 9927bcb6cafSSascha Wildner #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 9937bcb6cafSSascha Wildner #define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 9947bcb6cafSSascha Wildner 9957bcb6cafSSascha Wildner 9967bcb6cafSSascha Wildner /* 1) Validated Tables List (64-bit addresses) */ 9977bcb6cafSSascha Wildner 9987bcb6cafSSascha Wildner typedef struct acpi_drtm_vtable_list 9997bcb6cafSSascha Wildner { 10007bcb6cafSSascha Wildner UINT32 ValidatedTableCount; 10017bcb6cafSSascha Wildner UINT64 ValidatedTables[1]; 10027bcb6cafSSascha Wildner 10037bcb6cafSSascha Wildner } ACPI_DRTM_VTABLE_LIST; 10047bcb6cafSSascha Wildner 10057bcb6cafSSascha Wildner /* 2) Resources List (of Resource Descriptors) */ 10067bcb6cafSSascha Wildner 10077bcb6cafSSascha Wildner /* Resource Descriptor */ 10087bcb6cafSSascha Wildner 10097bcb6cafSSascha Wildner typedef struct acpi_drtm_resource 10107bcb6cafSSascha Wildner { 10117bcb6cafSSascha Wildner UINT8 Size[7]; 10127bcb6cafSSascha Wildner UINT8 Type; 10137bcb6cafSSascha Wildner UINT64 Address; 10147bcb6cafSSascha Wildner 10157bcb6cafSSascha Wildner } ACPI_DRTM_RESOURCE; 10167bcb6cafSSascha Wildner 10177bcb6cafSSascha Wildner typedef struct acpi_drtm_resource_list 10187bcb6cafSSascha Wildner { 10197bcb6cafSSascha Wildner UINT32 ResourceCount; 10207bcb6cafSSascha Wildner ACPI_DRTM_RESOURCE Resources[1]; 10217bcb6cafSSascha Wildner 10227bcb6cafSSascha Wildner } ACPI_DRTM_RESOURCE_LIST; 10237bcb6cafSSascha Wildner 10247bcb6cafSSascha Wildner /* 3) Platform-specific Identifiers List */ 10257bcb6cafSSascha Wildner 10267bcb6cafSSascha Wildner typedef struct acpi_drtm_dps_id 10277bcb6cafSSascha Wildner { 10287bcb6cafSSascha Wildner UINT32 DpsIdLength; 10297bcb6cafSSascha Wildner UINT8 DpsId[16]; 10307bcb6cafSSascha Wildner 10317bcb6cafSSascha Wildner } ACPI_DRTM_DPS_ID; 10327bcb6cafSSascha Wildner 10337bcb6cafSSascha Wildner 10347bcb6cafSSascha Wildner /******************************************************************************* 10357bcb6cafSSascha Wildner * 10360d02842fSSascha Wildner * ECDT - Embedded Controller Boot Resources Table 10370d02842fSSascha Wildner * Version 1 10380d02842fSSascha Wildner * 10390d02842fSSascha Wildner ******************************************************************************/ 10400d02842fSSascha Wildner 10410d02842fSSascha Wildner typedef struct acpi_table_ecdt 10420d02842fSSascha Wildner { 10430d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 10440d02842fSSascha Wildner ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 10450d02842fSSascha Wildner ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 10460d02842fSSascha Wildner UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 10470d02842fSSascha Wildner UINT8 Gpe; /* The GPE for the EC */ 10480d02842fSSascha Wildner UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 10490d02842fSSascha Wildner 10500d02842fSSascha Wildner } ACPI_TABLE_ECDT; 10510d02842fSSascha Wildner 10520d02842fSSascha Wildner 10530d02842fSSascha Wildner /******************************************************************************* 10540d02842fSSascha Wildner * 10550d02842fSSascha Wildner * EINJ - Error Injection Table (ACPI 4.0) 10560d02842fSSascha Wildner * Version 1 10570d02842fSSascha Wildner * 10580d02842fSSascha Wildner ******************************************************************************/ 10590d02842fSSascha Wildner 10600d02842fSSascha Wildner typedef struct acpi_table_einj 10610d02842fSSascha Wildner { 10620d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 10630d02842fSSascha Wildner UINT32 HeaderLength; 10640d02842fSSascha Wildner UINT8 Flags; 10650d02842fSSascha Wildner UINT8 Reserved[3]; 10660d02842fSSascha Wildner UINT32 Entries; 10670d02842fSSascha Wildner 10680d02842fSSascha Wildner } ACPI_TABLE_EINJ; 10690d02842fSSascha Wildner 10700d02842fSSascha Wildner 10710d02842fSSascha Wildner /* EINJ Injection Instruction Entries (actions) */ 10720d02842fSSascha Wildner 10730d02842fSSascha Wildner typedef struct acpi_einj_entry 10740d02842fSSascha Wildner { 10750d02842fSSascha Wildner ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 10760d02842fSSascha Wildner 10770d02842fSSascha Wildner } ACPI_EINJ_ENTRY; 10780d02842fSSascha Wildner 10790d02842fSSascha Wildner /* Masks for Flags field above */ 10800d02842fSSascha Wildner 10810d02842fSSascha Wildner #define ACPI_EINJ_PRESERVE (1) 10820d02842fSSascha Wildner 10830d02842fSSascha Wildner /* Values for Action field above */ 10840d02842fSSascha Wildner 10850d02842fSSascha Wildner enum AcpiEinjActions 10860d02842fSSascha Wildner { 10870d02842fSSascha Wildner ACPI_EINJ_BEGIN_OPERATION = 0, 10880d02842fSSascha Wildner ACPI_EINJ_GET_TRIGGER_TABLE = 1, 10890d02842fSSascha Wildner ACPI_EINJ_SET_ERROR_TYPE = 2, 10900d02842fSSascha Wildner ACPI_EINJ_GET_ERROR_TYPE = 3, 10910d02842fSSascha Wildner ACPI_EINJ_END_OPERATION = 4, 10920d02842fSSascha Wildner ACPI_EINJ_EXECUTE_OPERATION = 5, 10930d02842fSSascha Wildner ACPI_EINJ_CHECK_BUSY_STATUS = 6, 10940d02842fSSascha Wildner ACPI_EINJ_GET_COMMAND_STATUS = 7, 10950d02842fSSascha Wildner ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, 10967c9678bcSSascha Wildner ACPI_EINJ_GET_EXECUTE_TIMINGS = 9, 10977c9678bcSSascha Wildner ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */ 10980d02842fSSascha Wildner ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 10990d02842fSSascha Wildner }; 11000d02842fSSascha Wildner 11010d02842fSSascha Wildner /* Values for Instruction field above */ 11020d02842fSSascha Wildner 11030d02842fSSascha Wildner enum AcpiEinjInstructions 11040d02842fSSascha Wildner { 11050d02842fSSascha Wildner ACPI_EINJ_READ_REGISTER = 0, 11060d02842fSSascha Wildner ACPI_EINJ_READ_REGISTER_VALUE = 1, 11070d02842fSSascha Wildner ACPI_EINJ_WRITE_REGISTER = 2, 11080d02842fSSascha Wildner ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 11090d02842fSSascha Wildner ACPI_EINJ_NOOP = 4, 11100d02842fSSascha Wildner ACPI_EINJ_FLUSH_CACHELINE = 5, 11110d02842fSSascha Wildner ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ 11120d02842fSSascha Wildner }; 11130d02842fSSascha Wildner 11140d02842fSSascha Wildner typedef struct acpi_einj_error_type_with_addr 11150d02842fSSascha Wildner { 11160d02842fSSascha Wildner UINT32 ErrorType; 11170d02842fSSascha Wildner UINT32 VendorStructOffset; 11180d02842fSSascha Wildner UINT32 Flags; 11190d02842fSSascha Wildner UINT32 ApicId; 11200d02842fSSascha Wildner UINT64 Address; 11210d02842fSSascha Wildner UINT64 Range; 11220d02842fSSascha Wildner UINT32 PcieId; 11230d02842fSSascha Wildner 11240d02842fSSascha Wildner } ACPI_EINJ_ERROR_TYPE_WITH_ADDR; 11250d02842fSSascha Wildner 11260d02842fSSascha Wildner typedef struct acpi_einj_vendor 11270d02842fSSascha Wildner { 11280d02842fSSascha Wildner UINT32 Length; 11290d02842fSSascha Wildner UINT32 PcieId; 11300d02842fSSascha Wildner UINT16 VendorId; 11310d02842fSSascha Wildner UINT16 DeviceId; 11320d02842fSSascha Wildner UINT8 RevisionId; 11330d02842fSSascha Wildner UINT8 Reserved[3]; 11340d02842fSSascha Wildner 11350d02842fSSascha Wildner } ACPI_EINJ_VENDOR; 11360d02842fSSascha Wildner 11370d02842fSSascha Wildner 11380d02842fSSascha Wildner /* EINJ Trigger Error Action Table */ 11390d02842fSSascha Wildner 11400d02842fSSascha Wildner typedef struct acpi_einj_trigger 11410d02842fSSascha Wildner { 11420d02842fSSascha Wildner UINT32 HeaderSize; 11430d02842fSSascha Wildner UINT32 Revision; 11440d02842fSSascha Wildner UINT32 TableSize; 11450d02842fSSascha Wildner UINT32 EntryCount; 11460d02842fSSascha Wildner 11470d02842fSSascha Wildner } ACPI_EINJ_TRIGGER; 11480d02842fSSascha Wildner 11490d02842fSSascha Wildner /* Command status return values */ 11500d02842fSSascha Wildner 11510d02842fSSascha Wildner enum AcpiEinjCommandStatus 11520d02842fSSascha Wildner { 11530d02842fSSascha Wildner ACPI_EINJ_SUCCESS = 0, 11540d02842fSSascha Wildner ACPI_EINJ_FAILURE = 1, 11550d02842fSSascha Wildner ACPI_EINJ_INVALID_ACCESS = 2, 11560d02842fSSascha Wildner ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 11570d02842fSSascha Wildner }; 11580d02842fSSascha Wildner 11590d02842fSSascha Wildner 11600d02842fSSascha Wildner /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 11610d02842fSSascha Wildner 11620d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 11630d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 11640d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 11650d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 11660d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 11670d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_FATAL (1<<5) 11680d02842fSSascha Wildner #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 11690d02842fSSascha Wildner #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 11700d02842fSSascha Wildner #define ACPI_EINJ_PCIX_FATAL (1<<8) 11710d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 11720d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 11730d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_FATAL (1<<11) 11740d02842fSSascha Wildner #define ACPI_EINJ_VENDOR_DEFINED (1<<31) 11750d02842fSSascha Wildner 11760d02842fSSascha Wildner 11770d02842fSSascha Wildner /******************************************************************************* 11780d02842fSSascha Wildner * 11790d02842fSSascha Wildner * ERST - Error Record Serialization Table (ACPI 4.0) 11800d02842fSSascha Wildner * Version 1 11810d02842fSSascha Wildner * 11820d02842fSSascha Wildner ******************************************************************************/ 11830d02842fSSascha Wildner 11840d02842fSSascha Wildner typedef struct acpi_table_erst 11850d02842fSSascha Wildner { 11860d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 11870d02842fSSascha Wildner UINT32 HeaderLength; 11880d02842fSSascha Wildner UINT32 Reserved; 11890d02842fSSascha Wildner UINT32 Entries; 11900d02842fSSascha Wildner 11910d02842fSSascha Wildner } ACPI_TABLE_ERST; 11920d02842fSSascha Wildner 11930d02842fSSascha Wildner 11940d02842fSSascha Wildner /* ERST Serialization Entries (actions) */ 11950d02842fSSascha Wildner 11960d02842fSSascha Wildner typedef struct acpi_erst_entry 11970d02842fSSascha Wildner { 11980d02842fSSascha Wildner ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 11990d02842fSSascha Wildner 12000d02842fSSascha Wildner } ACPI_ERST_ENTRY; 12010d02842fSSascha Wildner 12020d02842fSSascha Wildner /* Masks for Flags field above */ 12030d02842fSSascha Wildner 12040d02842fSSascha Wildner #define ACPI_ERST_PRESERVE (1) 12050d02842fSSascha Wildner 12060d02842fSSascha Wildner /* Values for Action field above */ 12070d02842fSSascha Wildner 12080d02842fSSascha Wildner enum AcpiErstActions 12090d02842fSSascha Wildner { 12100d02842fSSascha Wildner ACPI_ERST_BEGIN_WRITE = 0, 12110d02842fSSascha Wildner ACPI_ERST_BEGIN_READ = 1, 12120d02842fSSascha Wildner ACPI_ERST_BEGIN_CLEAR = 2, 12130d02842fSSascha Wildner ACPI_ERST_END = 3, 12140d02842fSSascha Wildner ACPI_ERST_SET_RECORD_OFFSET = 4, 12150d02842fSSascha Wildner ACPI_ERST_EXECUTE_OPERATION = 5, 12160d02842fSSascha Wildner ACPI_ERST_CHECK_BUSY_STATUS = 6, 12170d02842fSSascha Wildner ACPI_ERST_GET_COMMAND_STATUS = 7, 12180d02842fSSascha Wildner ACPI_ERST_GET_RECORD_ID = 8, 12190d02842fSSascha Wildner ACPI_ERST_SET_RECORD_ID = 9, 12200d02842fSSascha Wildner ACPI_ERST_GET_RECORD_COUNT = 10, 12210d02842fSSascha Wildner ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 12220d02842fSSascha Wildner ACPI_ERST_NOT_USED = 12, 12230d02842fSSascha Wildner ACPI_ERST_GET_ERROR_RANGE = 13, 12240d02842fSSascha Wildner ACPI_ERST_GET_ERROR_LENGTH = 14, 12250d02842fSSascha Wildner ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 12267c9678bcSSascha Wildner ACPI_ERST_EXECUTE_TIMINGS = 16, 12277c9678bcSSascha Wildner ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */ 12280d02842fSSascha Wildner }; 12290d02842fSSascha Wildner 12300d02842fSSascha Wildner /* Values for Instruction field above */ 12310d02842fSSascha Wildner 12320d02842fSSascha Wildner enum AcpiErstInstructions 12330d02842fSSascha Wildner { 12340d02842fSSascha Wildner ACPI_ERST_READ_REGISTER = 0, 12350d02842fSSascha Wildner ACPI_ERST_READ_REGISTER_VALUE = 1, 12360d02842fSSascha Wildner ACPI_ERST_WRITE_REGISTER = 2, 12370d02842fSSascha Wildner ACPI_ERST_WRITE_REGISTER_VALUE = 3, 12380d02842fSSascha Wildner ACPI_ERST_NOOP = 4, 12390d02842fSSascha Wildner ACPI_ERST_LOAD_VAR1 = 5, 12400d02842fSSascha Wildner ACPI_ERST_LOAD_VAR2 = 6, 12410d02842fSSascha Wildner ACPI_ERST_STORE_VAR1 = 7, 12420d02842fSSascha Wildner ACPI_ERST_ADD = 8, 12430d02842fSSascha Wildner ACPI_ERST_SUBTRACT = 9, 12440d02842fSSascha Wildner ACPI_ERST_ADD_VALUE = 10, 12450d02842fSSascha Wildner ACPI_ERST_SUBTRACT_VALUE = 11, 12460d02842fSSascha Wildner ACPI_ERST_STALL = 12, 12470d02842fSSascha Wildner ACPI_ERST_STALL_WHILE_TRUE = 13, 12480d02842fSSascha Wildner ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 12490d02842fSSascha Wildner ACPI_ERST_GOTO = 15, 12500d02842fSSascha Wildner ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 12510d02842fSSascha Wildner ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 12520d02842fSSascha Wildner ACPI_ERST_MOVE_DATA = 18, 12530d02842fSSascha Wildner ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 12540d02842fSSascha Wildner }; 12550d02842fSSascha Wildner 12560d02842fSSascha Wildner /* Command status return values */ 12570d02842fSSascha Wildner 12580d02842fSSascha Wildner enum AcpiErstCommandStatus 12590d02842fSSascha Wildner { 1260ff3cb46dSSascha Wildner ACPI_ERST_SUCCESS = 0, 12610d02842fSSascha Wildner ACPI_ERST_NO_SPACE = 1, 12620d02842fSSascha Wildner ACPI_ERST_NOT_AVAILABLE = 2, 12630d02842fSSascha Wildner ACPI_ERST_FAILURE = 3, 12640d02842fSSascha Wildner ACPI_ERST_RECORD_EMPTY = 4, 12650d02842fSSascha Wildner ACPI_ERST_NOT_FOUND = 5, 12660d02842fSSascha Wildner ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 12670d02842fSSascha Wildner }; 12680d02842fSSascha Wildner 12690d02842fSSascha Wildner 12700d02842fSSascha Wildner /* Error Record Serialization Information */ 12710d02842fSSascha Wildner 12720d02842fSSascha Wildner typedef struct acpi_erst_info 12730d02842fSSascha Wildner { 12740d02842fSSascha Wildner UINT16 Signature; /* Should be "ER" */ 12750d02842fSSascha Wildner UINT8 Data[48]; 12760d02842fSSascha Wildner 12770d02842fSSascha Wildner } ACPI_ERST_INFO; 12780d02842fSSascha Wildner 12790d02842fSSascha Wildner 12800d02842fSSascha Wildner /******************************************************************************* 12810d02842fSSascha Wildner * 12827bcb6cafSSascha Wildner * FPDT - Firmware Performance Data Table (ACPI 5.0) 12837bcb6cafSSascha Wildner * Version 1 12847bcb6cafSSascha Wildner * 12857bcb6cafSSascha Wildner ******************************************************************************/ 12867bcb6cafSSascha Wildner 12877bcb6cafSSascha Wildner typedef struct acpi_table_fpdt 12887bcb6cafSSascha Wildner { 12897bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 12907bcb6cafSSascha Wildner 12917bcb6cafSSascha Wildner } ACPI_TABLE_FPDT; 12927bcb6cafSSascha Wildner 12937bcb6cafSSascha Wildner 12947bcb6cafSSascha Wildner /* FPDT subtable header (Performance Record Structure) */ 12957bcb6cafSSascha Wildner 12967bcb6cafSSascha Wildner typedef struct acpi_fpdt_header 12977bcb6cafSSascha Wildner { 12987bcb6cafSSascha Wildner UINT16 Type; 12997bcb6cafSSascha Wildner UINT8 Length; 13007bcb6cafSSascha Wildner UINT8 Revision; 13017bcb6cafSSascha Wildner 13027bcb6cafSSascha Wildner } ACPI_FPDT_HEADER; 13037bcb6cafSSascha Wildner 13047bcb6cafSSascha Wildner /* Values for Type field above */ 13057bcb6cafSSascha Wildner 13067bcb6cafSSascha Wildner enum AcpiFpdtType 13077bcb6cafSSascha Wildner { 13087bcb6cafSSascha Wildner ACPI_FPDT_TYPE_BOOT = 0, 13097bcb6cafSSascha Wildner ACPI_FPDT_TYPE_S3PERF = 1 13107bcb6cafSSascha Wildner }; 13117bcb6cafSSascha Wildner 13127bcb6cafSSascha Wildner 13137bcb6cafSSascha Wildner /* 13147bcb6cafSSascha Wildner * FPDT subtables 13157bcb6cafSSascha Wildner */ 13167bcb6cafSSascha Wildner 13177bcb6cafSSascha Wildner /* 0: Firmware Basic Boot Performance Record */ 13187bcb6cafSSascha Wildner 13197bcb6cafSSascha Wildner typedef struct acpi_fpdt_boot_pointer 13207bcb6cafSSascha Wildner { 13217bcb6cafSSascha Wildner ACPI_FPDT_HEADER Header; 13227bcb6cafSSascha Wildner UINT8 Reserved[4]; 13237bcb6cafSSascha Wildner UINT64 Address; 13247bcb6cafSSascha Wildner 13257bcb6cafSSascha Wildner } ACPI_FPDT_BOOT_POINTER; 13267bcb6cafSSascha Wildner 13277bcb6cafSSascha Wildner 13287bcb6cafSSascha Wildner /* 1: S3 Performance Table Pointer Record */ 13297bcb6cafSSascha Wildner 13307bcb6cafSSascha Wildner typedef struct acpi_fpdt_s3pt_pointer 13317bcb6cafSSascha Wildner { 13327bcb6cafSSascha Wildner ACPI_FPDT_HEADER Header; 13337bcb6cafSSascha Wildner UINT8 Reserved[4]; 13347bcb6cafSSascha Wildner UINT64 Address; 13357bcb6cafSSascha Wildner 13367bcb6cafSSascha Wildner } ACPI_FPDT_S3PT_POINTER; 13377bcb6cafSSascha Wildner 13387bcb6cafSSascha Wildner 13397bcb6cafSSascha Wildner /* 13407bcb6cafSSascha Wildner * S3PT - S3 Performance Table. This table is pointed to by the 13417bcb6cafSSascha Wildner * S3 Pointer Record above. 13427bcb6cafSSascha Wildner */ 13437bcb6cafSSascha Wildner typedef struct acpi_table_s3pt 13447bcb6cafSSascha Wildner { 13457bcb6cafSSascha Wildner UINT8 Signature[4]; /* "S3PT" */ 13467bcb6cafSSascha Wildner UINT32 Length; 13477bcb6cafSSascha Wildner 13487bcb6cafSSascha Wildner } ACPI_TABLE_S3PT; 13497bcb6cafSSascha Wildner 13507bcb6cafSSascha Wildner 13517bcb6cafSSascha Wildner /* 13527bcb6cafSSascha Wildner * S3PT Subtables (Not part of the actual FPDT) 13537bcb6cafSSascha Wildner */ 13547bcb6cafSSascha Wildner 13557bcb6cafSSascha Wildner /* Values for Type field in S3PT header */ 13567bcb6cafSSascha Wildner 13577bcb6cafSSascha Wildner enum AcpiS3ptType 13587bcb6cafSSascha Wildner { 13597bcb6cafSSascha Wildner ACPI_S3PT_TYPE_RESUME = 0, 13607bcb6cafSSascha Wildner ACPI_S3PT_TYPE_SUSPEND = 1, 13617bcb6cafSSascha Wildner ACPI_FPDT_BOOT_PERFORMANCE = 2 13627bcb6cafSSascha Wildner }; 13637bcb6cafSSascha Wildner 13647bcb6cafSSascha Wildner typedef struct acpi_s3pt_resume 13657bcb6cafSSascha Wildner { 13667bcb6cafSSascha Wildner ACPI_FPDT_HEADER Header; 13677bcb6cafSSascha Wildner UINT32 ResumeCount; 13687bcb6cafSSascha Wildner UINT64 FullResume; 13697bcb6cafSSascha Wildner UINT64 AverageResume; 13707bcb6cafSSascha Wildner 13717bcb6cafSSascha Wildner } ACPI_S3PT_RESUME; 13727bcb6cafSSascha Wildner 13737bcb6cafSSascha Wildner typedef struct acpi_s3pt_suspend 13747bcb6cafSSascha Wildner { 13757bcb6cafSSascha Wildner ACPI_FPDT_HEADER Header; 13767bcb6cafSSascha Wildner UINT64 SuspendStart; 13777bcb6cafSSascha Wildner UINT64 SuspendEnd; 13787bcb6cafSSascha Wildner 13797bcb6cafSSascha Wildner } ACPI_S3PT_SUSPEND; 13807bcb6cafSSascha Wildner 13817bcb6cafSSascha Wildner 13827bcb6cafSSascha Wildner /* 13837bcb6cafSSascha Wildner * FPDT Boot Performance Record (Not part of the actual FPDT) 13847bcb6cafSSascha Wildner */ 13857bcb6cafSSascha Wildner typedef struct acpi_fpdt_boot 13867bcb6cafSSascha Wildner { 13877bcb6cafSSascha Wildner ACPI_FPDT_HEADER Header; 13887bcb6cafSSascha Wildner UINT8 Reserved[4]; 13897bcb6cafSSascha Wildner UINT64 ResetEnd; 13907bcb6cafSSascha Wildner UINT64 LoadStart; 13917bcb6cafSSascha Wildner UINT64 StartupStart; 13927bcb6cafSSascha Wildner UINT64 ExitServicesEntry; 13937bcb6cafSSascha Wildner UINT64 ExitServicesExit; 13947bcb6cafSSascha Wildner 13957bcb6cafSSascha Wildner } ACPI_FPDT_BOOT; 13967bcb6cafSSascha Wildner 13977bcb6cafSSascha Wildner 13987bcb6cafSSascha Wildner /******************************************************************************* 13997bcb6cafSSascha Wildner * 14007bcb6cafSSascha Wildner * GTDT - Generic Timer Description Table (ACPI 5.1) 14017bcb6cafSSascha Wildner * Version 2 14027bcb6cafSSascha Wildner * 14037bcb6cafSSascha Wildner ******************************************************************************/ 14047bcb6cafSSascha Wildner 14057bcb6cafSSascha Wildner typedef struct acpi_table_gtdt 14067bcb6cafSSascha Wildner { 14077bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14087bcb6cafSSascha Wildner UINT64 CounterBlockAddresss; 14097bcb6cafSSascha Wildner UINT32 Reserved; 14107bcb6cafSSascha Wildner UINT32 SecureEl1Interrupt; 14117bcb6cafSSascha Wildner UINT32 SecureEl1Flags; 14127bcb6cafSSascha Wildner UINT32 NonSecureEl1Interrupt; 14137bcb6cafSSascha Wildner UINT32 NonSecureEl1Flags; 14147bcb6cafSSascha Wildner UINT32 VirtualTimerInterrupt; 14157bcb6cafSSascha Wildner UINT32 VirtualTimerFlags; 14167bcb6cafSSascha Wildner UINT32 NonSecureEl2Interrupt; 14177bcb6cafSSascha Wildner UINT32 NonSecureEl2Flags; 14187bcb6cafSSascha Wildner UINT64 CounterReadBlockAddress; 14197bcb6cafSSascha Wildner UINT32 PlatformTimerCount; 14207bcb6cafSSascha Wildner UINT32 PlatformTimerOffset; 14217bcb6cafSSascha Wildner 14227bcb6cafSSascha Wildner } ACPI_TABLE_GTDT; 14237bcb6cafSSascha Wildner 14247bcb6cafSSascha Wildner /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 14257bcb6cafSSascha Wildner 14267bcb6cafSSascha Wildner #define ACPI_GTDT_INTERRUPT_MODE (1) 14277bcb6cafSSascha Wildner #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 14287bcb6cafSSascha Wildner #define ACPI_GTDT_ALWAYS_ON (1<<2) 14297bcb6cafSSascha Wildner 143000ffa116SSascha Wildner typedef struct acpi_gtdt_el2 143100ffa116SSascha Wildner { 143200ffa116SSascha Wildner UINT32 VirtualEL2TimerGsiv; 143300ffa116SSascha Wildner UINT32 VirtualEL2TimerFlags; 143400ffa116SSascha Wildner } ACPI_GTDT_EL2; 143500ffa116SSascha Wildner 14367bcb6cafSSascha Wildner 14377bcb6cafSSascha Wildner /* Common GTDT subtable header */ 14387bcb6cafSSascha Wildner 14397bcb6cafSSascha Wildner typedef struct acpi_gtdt_header 14407bcb6cafSSascha Wildner { 14417bcb6cafSSascha Wildner UINT8 Type; 14427bcb6cafSSascha Wildner UINT16 Length; 14437bcb6cafSSascha Wildner 14447bcb6cafSSascha Wildner } ACPI_GTDT_HEADER; 14457bcb6cafSSascha Wildner 14467bcb6cafSSascha Wildner /* Values for GTDT subtable type above */ 14477bcb6cafSSascha Wildner 14487bcb6cafSSascha Wildner enum AcpiGtdtType 14497bcb6cafSSascha Wildner { 14507bcb6cafSSascha Wildner ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 14517bcb6cafSSascha Wildner ACPI_GTDT_TYPE_WATCHDOG = 1, 14527bcb6cafSSascha Wildner ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 14537bcb6cafSSascha Wildner }; 14547bcb6cafSSascha Wildner 14557bcb6cafSSascha Wildner 14567bcb6cafSSascha Wildner /* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 14577bcb6cafSSascha Wildner 14587bcb6cafSSascha Wildner /* 0: Generic Timer Block */ 14597bcb6cafSSascha Wildner 14607bcb6cafSSascha Wildner typedef struct acpi_gtdt_timer_block 14617bcb6cafSSascha Wildner { 14627bcb6cafSSascha Wildner ACPI_GTDT_HEADER Header; 14637bcb6cafSSascha Wildner UINT8 Reserved; 14647bcb6cafSSascha Wildner UINT64 BlockAddress; 14657bcb6cafSSascha Wildner UINT32 TimerCount; 14667bcb6cafSSascha Wildner UINT32 TimerOffset; 14677bcb6cafSSascha Wildner 14687bcb6cafSSascha Wildner } ACPI_GTDT_TIMER_BLOCK; 14697bcb6cafSSascha Wildner 14707bcb6cafSSascha Wildner /* Timer Sub-Structure, one per timer */ 14717bcb6cafSSascha Wildner 14727bcb6cafSSascha Wildner typedef struct acpi_gtdt_timer_entry 14737bcb6cafSSascha Wildner { 14747bcb6cafSSascha Wildner UINT8 FrameNumber; 14757bcb6cafSSascha Wildner UINT8 Reserved[3]; 14767bcb6cafSSascha Wildner UINT64 BaseAddress; 14777bcb6cafSSascha Wildner UINT64 El0BaseAddress; 14787bcb6cafSSascha Wildner UINT32 TimerInterrupt; 14797bcb6cafSSascha Wildner UINT32 TimerFlags; 14807bcb6cafSSascha Wildner UINT32 VirtualTimerInterrupt; 14817bcb6cafSSascha Wildner UINT32 VirtualTimerFlags; 14827bcb6cafSSascha Wildner UINT32 CommonFlags; 14837bcb6cafSSascha Wildner 14847bcb6cafSSascha Wildner } ACPI_GTDT_TIMER_ENTRY; 14857bcb6cafSSascha Wildner 14867bcb6cafSSascha Wildner /* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 14877bcb6cafSSascha Wildner 14887bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IRQ_MODE (1) 14897bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 14907bcb6cafSSascha Wildner 14917bcb6cafSSascha Wildner /* Flag Definitions: CommonFlags above */ 14927bcb6cafSSascha Wildner 14937bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 14947bcb6cafSSascha Wildner #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 14957bcb6cafSSascha Wildner 14967bcb6cafSSascha Wildner 14977bcb6cafSSascha Wildner /* 1: SBSA Generic Watchdog Structure */ 14987bcb6cafSSascha Wildner 14997bcb6cafSSascha Wildner typedef struct acpi_gtdt_watchdog 15007bcb6cafSSascha Wildner { 15017bcb6cafSSascha Wildner ACPI_GTDT_HEADER Header; 15027bcb6cafSSascha Wildner UINT8 Reserved; 15037bcb6cafSSascha Wildner UINT64 RefreshFrameAddress; 15047bcb6cafSSascha Wildner UINT64 ControlFrameAddress; 15057bcb6cafSSascha Wildner UINT32 TimerInterrupt; 15067bcb6cafSSascha Wildner UINT32 TimerFlags; 15077bcb6cafSSascha Wildner 15087bcb6cafSSascha Wildner } ACPI_GTDT_WATCHDOG; 15097bcb6cafSSascha Wildner 15107bcb6cafSSascha Wildner /* Flag Definitions: TimerFlags above */ 15117bcb6cafSSascha Wildner 15127bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 15137bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 15147bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 15157bcb6cafSSascha Wildner 15167bcb6cafSSascha Wildner 15177bcb6cafSSascha Wildner /******************************************************************************* 15187bcb6cafSSascha Wildner * 15190d02842fSSascha Wildner * HEST - Hardware Error Source Table (ACPI 4.0) 15200d02842fSSascha Wildner * Version 1 15210d02842fSSascha Wildner * 15220d02842fSSascha Wildner ******************************************************************************/ 15230d02842fSSascha Wildner 15240d02842fSSascha Wildner typedef struct acpi_table_hest 15250d02842fSSascha Wildner { 15260d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 15270d02842fSSascha Wildner UINT32 ErrorSourceCount; 15280d02842fSSascha Wildner 15290d02842fSSascha Wildner } ACPI_TABLE_HEST; 15300d02842fSSascha Wildner 15310d02842fSSascha Wildner 15320d02842fSSascha Wildner /* HEST subtable header */ 15330d02842fSSascha Wildner 15340d02842fSSascha Wildner typedef struct acpi_hest_header 15350d02842fSSascha Wildner { 15360d02842fSSascha Wildner UINT16 Type; 15370d02842fSSascha Wildner UINT16 SourceId; 15380d02842fSSascha Wildner 15390d02842fSSascha Wildner } ACPI_HEST_HEADER; 15400d02842fSSascha Wildner 15410d02842fSSascha Wildner 15420d02842fSSascha Wildner /* Values for Type field above for subtables */ 15430d02842fSSascha Wildner 15440d02842fSSascha Wildner enum AcpiHestTypes 15450d02842fSSascha Wildner { 15460d02842fSSascha Wildner ACPI_HEST_TYPE_IA32_CHECK = 0, 15470d02842fSSascha Wildner ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 15480d02842fSSascha Wildner ACPI_HEST_TYPE_IA32_NMI = 2, 15490d02842fSSascha Wildner ACPI_HEST_TYPE_NOT_USED3 = 3, 15500d02842fSSascha Wildner ACPI_HEST_TYPE_NOT_USED4 = 4, 15510d02842fSSascha Wildner ACPI_HEST_TYPE_NOT_USED5 = 5, 15520d02842fSSascha Wildner ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 15530d02842fSSascha Wildner ACPI_HEST_TYPE_AER_ENDPOINT = 7, 15540d02842fSSascha Wildner ACPI_HEST_TYPE_AER_BRIDGE = 8, 15550d02842fSSascha Wildner ACPI_HEST_TYPE_GENERIC_ERROR = 9, 15567c9678bcSSascha Wildner ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10, 15571093ca81SSascha Wildner ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11, 15581093ca81SSascha Wildner ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */ 15590d02842fSSascha Wildner }; 15600d02842fSSascha Wildner 15610d02842fSSascha Wildner 15620d02842fSSascha Wildner /* 15630d02842fSSascha Wildner * HEST substructures contained in subtables 15640d02842fSSascha Wildner */ 15650d02842fSSascha Wildner 15660d02842fSSascha Wildner /* 15670d02842fSSascha Wildner * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and 15680d02842fSSascha Wildner * ACPI_HEST_IA_CORRECTED structures. 15690d02842fSSascha Wildner */ 15700d02842fSSascha Wildner typedef struct acpi_hest_ia_error_bank 15710d02842fSSascha Wildner { 15720d02842fSSascha Wildner UINT8 BankNumber; 15730d02842fSSascha Wildner UINT8 ClearStatusOnInit; 15740d02842fSSascha Wildner UINT8 StatusFormat; 15750d02842fSSascha Wildner UINT8 Reserved; 15760d02842fSSascha Wildner UINT32 ControlRegister; 15770d02842fSSascha Wildner UINT64 ControlData; 15780d02842fSSascha Wildner UINT32 StatusRegister; 15790d02842fSSascha Wildner UINT32 AddressRegister; 15800d02842fSSascha Wildner UINT32 MiscRegister; 15810d02842fSSascha Wildner 15820d02842fSSascha Wildner } ACPI_HEST_IA_ERROR_BANK; 15830d02842fSSascha Wildner 15840d02842fSSascha Wildner 15850d02842fSSascha Wildner /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 15860d02842fSSascha Wildner 15870d02842fSSascha Wildner typedef struct acpi_hest_aer_common 15880d02842fSSascha Wildner { 15890d02842fSSascha Wildner UINT16 Reserved1; 15900d02842fSSascha Wildner UINT8 Flags; 15910d02842fSSascha Wildner UINT8 Enabled; 15920d02842fSSascha Wildner UINT32 RecordsToPreallocate; 15930d02842fSSascha Wildner UINT32 MaxSectionsPerRecord; 15940d02842fSSascha Wildner UINT32 Bus; /* Bus and Segment numbers */ 15950d02842fSSascha Wildner UINT16 Device; 15960d02842fSSascha Wildner UINT16 Function; 15970d02842fSSascha Wildner UINT16 DeviceControl; 15980d02842fSSascha Wildner UINT16 Reserved2; 15990d02842fSSascha Wildner UINT32 UncorrectableMask; 16000d02842fSSascha Wildner UINT32 UncorrectableSeverity; 16010d02842fSSascha Wildner UINT32 CorrectableMask; 16020d02842fSSascha Wildner UINT32 AdvancedCapabilities; 16030d02842fSSascha Wildner 16040d02842fSSascha Wildner } ACPI_HEST_AER_COMMON; 16050d02842fSSascha Wildner 16060d02842fSSascha Wildner /* Masks for HEST Flags fields */ 16070d02842fSSascha Wildner 16080d02842fSSascha Wildner #define ACPI_HEST_FIRMWARE_FIRST (1) 16090d02842fSSascha Wildner #define ACPI_HEST_GLOBAL (1<<1) 16101093ca81SSascha Wildner #define ACPI_HEST_GHES_ASSIST (1<<2) 16110d02842fSSascha Wildner 16120d02842fSSascha Wildner /* 16130d02842fSSascha Wildner * Macros to access the bus/segment numbers in Bus field above: 16140d02842fSSascha Wildner * Bus number is encoded in bits 7:0 16150d02842fSSascha Wildner * Segment number is encoded in bits 23:8 16160d02842fSSascha Wildner */ 16170d02842fSSascha Wildner #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF) 16180d02842fSSascha Wildner #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF) 16190d02842fSSascha Wildner 16200d02842fSSascha Wildner 16210d02842fSSascha Wildner /* Hardware Error Notification */ 16220d02842fSSascha Wildner 16230d02842fSSascha Wildner typedef struct acpi_hest_notify 16240d02842fSSascha Wildner { 16250d02842fSSascha Wildner UINT8 Type; 16260d02842fSSascha Wildner UINT8 Length; 16270d02842fSSascha Wildner UINT16 ConfigWriteEnable; 16280d02842fSSascha Wildner UINT32 PollInterval; 16290d02842fSSascha Wildner UINT32 Vector; 16300d02842fSSascha Wildner UINT32 PollingThresholdValue; 16310d02842fSSascha Wildner UINT32 PollingThresholdWindow; 16320d02842fSSascha Wildner UINT32 ErrorThresholdValue; 16330d02842fSSascha Wildner UINT32 ErrorThresholdWindow; 16340d02842fSSascha Wildner 16350d02842fSSascha Wildner } ACPI_HEST_NOTIFY; 16360d02842fSSascha Wildner 16370d02842fSSascha Wildner /* Values for Notify Type field above */ 16380d02842fSSascha Wildner 16390d02842fSSascha Wildner enum AcpiHestNotifyTypes 16400d02842fSSascha Wildner { 16410d02842fSSascha Wildner ACPI_HEST_NOTIFY_POLLED = 0, 16420d02842fSSascha Wildner ACPI_HEST_NOTIFY_EXTERNAL = 1, 16430d02842fSSascha Wildner ACPI_HEST_NOTIFY_LOCAL = 2, 16440d02842fSSascha Wildner ACPI_HEST_NOTIFY_SCI = 3, 16450d02842fSSascha Wildner ACPI_HEST_NOTIFY_NMI = 4, 16460d02842fSSascha Wildner ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ 16470d02842fSSascha Wildner ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ 16482ffe9f16SSascha Wildner ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */ 16492ffe9f16SSascha Wildner ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */ 16502ffe9f16SSascha Wildner ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */ 16512ffe9f16SSascha Wildner ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */ 16521093ca81SSascha Wildner ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */ 16531093ca81SSascha Wildner ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ 16540d02842fSSascha Wildner }; 16550d02842fSSascha Wildner 16560d02842fSSascha Wildner /* Values for ConfigWriteEnable bitfield above */ 16570d02842fSSascha Wildner 16580d02842fSSascha Wildner #define ACPI_HEST_TYPE (1) 16590d02842fSSascha Wildner #define ACPI_HEST_POLL_INTERVAL (1<<1) 16600d02842fSSascha Wildner #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 16610d02842fSSascha Wildner #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 16620d02842fSSascha Wildner #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 16630d02842fSSascha Wildner #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 16640d02842fSSascha Wildner 16650d02842fSSascha Wildner 16660d02842fSSascha Wildner /* 16670d02842fSSascha Wildner * HEST subtables 16680d02842fSSascha Wildner */ 16690d02842fSSascha Wildner 16700d02842fSSascha Wildner /* 0: IA32 Machine Check Exception */ 16710d02842fSSascha Wildner 16720d02842fSSascha Wildner typedef struct acpi_hest_ia_machine_check 16730d02842fSSascha Wildner { 16740d02842fSSascha Wildner ACPI_HEST_HEADER Header; 16750d02842fSSascha Wildner UINT16 Reserved1; 16761093ca81SSascha Wildner UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 16770d02842fSSascha Wildner UINT8 Enabled; 16780d02842fSSascha Wildner UINT32 RecordsToPreallocate; 16790d02842fSSascha Wildner UINT32 MaxSectionsPerRecord; 16800d02842fSSascha Wildner UINT64 GlobalCapabilityData; 16810d02842fSSascha Wildner UINT64 GlobalControlData; 16820d02842fSSascha Wildner UINT8 NumHardwareBanks; 16830d02842fSSascha Wildner UINT8 Reserved3[7]; 16840d02842fSSascha Wildner 16850d02842fSSascha Wildner } ACPI_HEST_IA_MACHINE_CHECK; 16860d02842fSSascha Wildner 16870d02842fSSascha Wildner 16880d02842fSSascha Wildner /* 1: IA32 Corrected Machine Check */ 16890d02842fSSascha Wildner 16900d02842fSSascha Wildner typedef struct acpi_hest_ia_corrected 16910d02842fSSascha Wildner { 16920d02842fSSascha Wildner ACPI_HEST_HEADER Header; 16930d02842fSSascha Wildner UINT16 Reserved1; 16941093ca81SSascha Wildner UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 16950d02842fSSascha Wildner UINT8 Enabled; 16960d02842fSSascha Wildner UINT32 RecordsToPreallocate; 16970d02842fSSascha Wildner UINT32 MaxSectionsPerRecord; 16980d02842fSSascha Wildner ACPI_HEST_NOTIFY Notify; 16990d02842fSSascha Wildner UINT8 NumHardwareBanks; 17000d02842fSSascha Wildner UINT8 Reserved2[3]; 17010d02842fSSascha Wildner 17020d02842fSSascha Wildner } ACPI_HEST_IA_CORRECTED; 17030d02842fSSascha Wildner 17040d02842fSSascha Wildner 17050d02842fSSascha Wildner /* 2: IA32 Non-Maskable Interrupt */ 17060d02842fSSascha Wildner 17070d02842fSSascha Wildner typedef struct acpi_hest_ia_nmi 17080d02842fSSascha Wildner { 17090d02842fSSascha Wildner ACPI_HEST_HEADER Header; 17100d02842fSSascha Wildner UINT32 Reserved; 17110d02842fSSascha Wildner UINT32 RecordsToPreallocate; 17120d02842fSSascha Wildner UINT32 MaxSectionsPerRecord; 17130d02842fSSascha Wildner UINT32 MaxRawDataLength; 17140d02842fSSascha Wildner 17150d02842fSSascha Wildner } ACPI_HEST_IA_NMI; 17160d02842fSSascha Wildner 17170d02842fSSascha Wildner 17180d02842fSSascha Wildner /* 3,4,5: Not used */ 17190d02842fSSascha Wildner 17200d02842fSSascha Wildner /* 6: PCI Express Root Port AER */ 17210d02842fSSascha Wildner 17220d02842fSSascha Wildner typedef struct acpi_hest_aer_root 17230d02842fSSascha Wildner { 17240d02842fSSascha Wildner ACPI_HEST_HEADER Header; 17250d02842fSSascha Wildner ACPI_HEST_AER_COMMON Aer; 17260d02842fSSascha Wildner UINT32 RootErrorCommand; 17270d02842fSSascha Wildner 17280d02842fSSascha Wildner } ACPI_HEST_AER_ROOT; 17290d02842fSSascha Wildner 17300d02842fSSascha Wildner 17310d02842fSSascha Wildner /* 7: PCI Express AER (AER Endpoint) */ 17320d02842fSSascha Wildner 17330d02842fSSascha Wildner typedef struct acpi_hest_aer 17340d02842fSSascha Wildner { 17350d02842fSSascha Wildner ACPI_HEST_HEADER Header; 17360d02842fSSascha Wildner ACPI_HEST_AER_COMMON Aer; 17370d02842fSSascha Wildner 17380d02842fSSascha Wildner } ACPI_HEST_AER; 17390d02842fSSascha Wildner 17400d02842fSSascha Wildner 17410d02842fSSascha Wildner /* 8: PCI Express/PCI-X Bridge AER */ 17420d02842fSSascha Wildner 17430d02842fSSascha Wildner typedef struct acpi_hest_aer_bridge 17440d02842fSSascha Wildner { 17450d02842fSSascha Wildner ACPI_HEST_HEADER Header; 17460d02842fSSascha Wildner ACPI_HEST_AER_COMMON Aer; 17470d02842fSSascha Wildner UINT32 UncorrectableMask2; 17480d02842fSSascha Wildner UINT32 UncorrectableSeverity2; 17490d02842fSSascha Wildner UINT32 AdvancedCapabilities2; 17500d02842fSSascha Wildner 17510d02842fSSascha Wildner } ACPI_HEST_AER_BRIDGE; 17520d02842fSSascha Wildner 17530d02842fSSascha Wildner 17540d02842fSSascha Wildner /* 9: Generic Hardware Error Source */ 17550d02842fSSascha Wildner 17560d02842fSSascha Wildner typedef struct acpi_hest_generic 17570d02842fSSascha Wildner { 17580d02842fSSascha Wildner ACPI_HEST_HEADER Header; 17590d02842fSSascha Wildner UINT16 RelatedSourceId; 17600d02842fSSascha Wildner UINT8 Reserved; 17610d02842fSSascha Wildner UINT8 Enabled; 17620d02842fSSascha Wildner UINT32 RecordsToPreallocate; 17630d02842fSSascha Wildner UINT32 MaxSectionsPerRecord; 17640d02842fSSascha Wildner UINT32 MaxRawDataLength; 17650d02842fSSascha Wildner ACPI_GENERIC_ADDRESS ErrorStatusAddress; 17660d02842fSSascha Wildner ACPI_HEST_NOTIFY Notify; 17670d02842fSSascha Wildner UINT32 ErrorBlockLength; 17680d02842fSSascha Wildner 17690d02842fSSascha Wildner } ACPI_HEST_GENERIC; 17700d02842fSSascha Wildner 17710d02842fSSascha Wildner 17727c9678bcSSascha Wildner /* 10: Generic Hardware Error Source, version 2 */ 17737c9678bcSSascha Wildner 17747c9678bcSSascha Wildner typedef struct acpi_hest_generic_v2 17757c9678bcSSascha Wildner { 17767c9678bcSSascha Wildner ACPI_HEST_HEADER Header; 17777c9678bcSSascha Wildner UINT16 RelatedSourceId; 17787c9678bcSSascha Wildner UINT8 Reserved; 17797c9678bcSSascha Wildner UINT8 Enabled; 17807c9678bcSSascha Wildner UINT32 RecordsToPreallocate; 17817c9678bcSSascha Wildner UINT32 MaxSectionsPerRecord; 17827c9678bcSSascha Wildner UINT32 MaxRawDataLength; 17837c9678bcSSascha Wildner ACPI_GENERIC_ADDRESS ErrorStatusAddress; 17847c9678bcSSascha Wildner ACPI_HEST_NOTIFY Notify; 17857c9678bcSSascha Wildner UINT32 ErrorBlockLength; 17867c9678bcSSascha Wildner ACPI_GENERIC_ADDRESS ReadAckRegister; 17877c9678bcSSascha Wildner UINT64 ReadAckPreserve; 17887c9678bcSSascha Wildner UINT64 ReadAckWrite; 17897c9678bcSSascha Wildner 17907c9678bcSSascha Wildner } ACPI_HEST_GENERIC_V2; 17917c9678bcSSascha Wildner 17927c9678bcSSascha Wildner 17930d02842fSSascha Wildner /* Generic Error Status block */ 17940d02842fSSascha Wildner 17950d02842fSSascha Wildner typedef struct acpi_hest_generic_status 17960d02842fSSascha Wildner { 17970d02842fSSascha Wildner UINT32 BlockStatus; 17980d02842fSSascha Wildner UINT32 RawDataOffset; 17990d02842fSSascha Wildner UINT32 RawDataLength; 18000d02842fSSascha Wildner UINT32 DataLength; 18010d02842fSSascha Wildner UINT32 ErrorSeverity; 18020d02842fSSascha Wildner 18030d02842fSSascha Wildner } ACPI_HEST_GENERIC_STATUS; 18040d02842fSSascha Wildner 18050d02842fSSascha Wildner /* Values for BlockStatus flags above */ 18060d02842fSSascha Wildner 18070d02842fSSascha Wildner #define ACPI_HEST_UNCORRECTABLE (1) 18080d02842fSSascha Wildner #define ACPI_HEST_CORRECTABLE (1<<1) 18090d02842fSSascha Wildner #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 18100d02842fSSascha Wildner #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 18110d02842fSSascha Wildner #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 18120d02842fSSascha Wildner 18130d02842fSSascha Wildner 18140d02842fSSascha Wildner /* Generic Error Data entry */ 18150d02842fSSascha Wildner 18160d02842fSSascha Wildner typedef struct acpi_hest_generic_data 18170d02842fSSascha Wildner { 18180d02842fSSascha Wildner UINT8 SectionType[16]; 18190d02842fSSascha Wildner UINT32 ErrorSeverity; 18200d02842fSSascha Wildner UINT16 Revision; 18210d02842fSSascha Wildner UINT8 ValidationBits; 18220d02842fSSascha Wildner UINT8 Flags; 18230d02842fSSascha Wildner UINT32 ErrorDataLength; 18240d02842fSSascha Wildner UINT8 FruId[16]; 18250d02842fSSascha Wildner UINT8 FruText[20]; 18269cefb7c8SSascha Wildner 1827dbd7d990SSascha Wildner } ACPI_HEST_GENERIC_DATA; 18289cefb7c8SSascha Wildner 18292ffe9f16SSascha Wildner /* Extension for revision 0x0300 */ 18302ffe9f16SSascha Wildner 18312ffe9f16SSascha Wildner typedef struct acpi_hest_generic_data_v300 18322ffe9f16SSascha Wildner { 18332ffe9f16SSascha Wildner UINT8 SectionType[16]; 18342ffe9f16SSascha Wildner UINT32 ErrorSeverity; 18352ffe9f16SSascha Wildner UINT16 Revision; 18362ffe9f16SSascha Wildner UINT8 ValidationBits; 18372ffe9f16SSascha Wildner UINT8 Flags; 18382ffe9f16SSascha Wildner UINT32 ErrorDataLength; 18392ffe9f16SSascha Wildner UINT8 FruId[16]; 18402ffe9f16SSascha Wildner UINT8 FruText[20]; 18412ffe9f16SSascha Wildner UINT64 TimeStamp; 18422ffe9f16SSascha Wildner 18432ffe9f16SSascha Wildner } ACPI_HEST_GENERIC_DATA_V300; 18442ffe9f16SSascha Wildner 18452ffe9f16SSascha Wildner /* Values for ErrorSeverity above */ 18462ffe9f16SSascha Wildner 18472ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0 18482ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_FATAL 1 18492ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_CORRECTED 2 18502ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_NONE 3 18512ffe9f16SSascha Wildner 18522ffe9f16SSascha Wildner /* Flags for ValidationBits above */ 18532ffe9f16SSascha Wildner 18542ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_FRU_ID (1) 18552ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1) 18562ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2) 18572ffe9f16SSascha Wildner 18580d02842fSSascha Wildner 18591093ca81SSascha Wildner /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */ 18601093ca81SSascha Wildner 18611093ca81SSascha Wildner typedef struct acpi_hest_ia_deferred_check 18621093ca81SSascha Wildner { 18631093ca81SSascha Wildner ACPI_HEST_HEADER Header; 18641093ca81SSascha Wildner UINT16 Reserved1; 18651093ca81SSascha Wildner UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 18661093ca81SSascha Wildner UINT8 Enabled; 18671093ca81SSascha Wildner UINT32 RecordsToPreallocate; 18681093ca81SSascha Wildner UINT32 MaxSectionsPerRecord; 18691093ca81SSascha Wildner ACPI_HEST_NOTIFY Notify; 18701093ca81SSascha Wildner UINT8 NumHardwareBanks; 18711093ca81SSascha Wildner UINT8 Reserved2[3]; 18721093ca81SSascha Wildner 18731093ca81SSascha Wildner } ACPI_HEST_IA_DEFERRED_CHECK; 18741093ca81SSascha Wildner 18751093ca81SSascha Wildner 18761093ca81SSascha Wildner /******************************************************************************* 18771093ca81SSascha Wildner * 1878c5a52fd3SSascha Wildner * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3) 18791093ca81SSascha Wildner * 18801093ca81SSascha Wildner ******************************************************************************/ 18811093ca81SSascha Wildner 18821093ca81SSascha Wildner typedef struct acpi_table_hmat 18831093ca81SSascha Wildner { 18841093ca81SSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 18851093ca81SSascha Wildner UINT32 Reserved; 18861093ca81SSascha Wildner 18871093ca81SSascha Wildner } ACPI_TABLE_HMAT; 18881093ca81SSascha Wildner 18891093ca81SSascha Wildner 18901093ca81SSascha Wildner /* Values for HMAT structure types */ 18911093ca81SSascha Wildner 18921093ca81SSascha Wildner enum AcpiHmatType 18931093ca81SSascha Wildner { 189400ffa116SSascha Wildner ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */ 18951093ca81SSascha Wildner ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */ 18961093ca81SSascha Wildner ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */ 18971093ca81SSascha Wildner ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 18981093ca81SSascha Wildner }; 18991093ca81SSascha Wildner 19001093ca81SSascha Wildner typedef struct acpi_hmat_structure 19011093ca81SSascha Wildner { 19021093ca81SSascha Wildner UINT16 Type; 19031093ca81SSascha Wildner UINT16 Reserved; 19041093ca81SSascha Wildner UINT32 Length; 19051093ca81SSascha Wildner 19061093ca81SSascha Wildner } ACPI_HMAT_STRUCTURE; 19071093ca81SSascha Wildner 19081093ca81SSascha Wildner 19091093ca81SSascha Wildner /* 19101093ca81SSascha Wildner * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE 19111093ca81SSascha Wildner */ 19121093ca81SSascha Wildner 191300ffa116SSascha Wildner /* 0: Memory proximity domain attributes */ 19141093ca81SSascha Wildner 191500ffa116SSascha Wildner typedef struct acpi_hmat_proximity_domain 19161093ca81SSascha Wildner { 19171093ca81SSascha Wildner ACPI_HMAT_STRUCTURE Header; 19181093ca81SSascha Wildner UINT16 Flags; 19191093ca81SSascha Wildner UINT16 Reserved1; 1920c5a52fd3SSascha Wildner UINT32 InitiatorPD; /* Attached Initiator proximity domain */ 19211093ca81SSascha Wildner UINT32 MemoryPD; /* Memory proximity domain */ 19221093ca81SSascha Wildner UINT32 Reserved2; 192300ffa116SSascha Wildner UINT64 Reserved3; 192400ffa116SSascha Wildner UINT64 Reserved4; 19251093ca81SSascha Wildner 192600ffa116SSascha Wildner } ACPI_HMAT_PROXIMITY_DOMAIN; 19271093ca81SSascha Wildner 19281093ca81SSascha Wildner /* Masks for Flags field above */ 19291093ca81SSascha Wildner 1930c5a52fd3SSascha Wildner #define ACPI_HMAT_INITIATOR_PD_VALID (1) /* 1: InitiatorPD field is valid */ 19311093ca81SSascha Wildner 19321093ca81SSascha Wildner 19331093ca81SSascha Wildner /* 1: System locality latency and bandwidth information */ 19341093ca81SSascha Wildner 19351093ca81SSascha Wildner typedef struct acpi_hmat_locality 19361093ca81SSascha Wildner { 19371093ca81SSascha Wildner ACPI_HMAT_STRUCTURE Header; 19381093ca81SSascha Wildner UINT8 Flags; 19391093ca81SSascha Wildner UINT8 DataType; 194001d5d5dfSSascha Wildner UINT8 MinTransferSize; 194101d5d5dfSSascha Wildner UINT8 Reserved1; 19421093ca81SSascha Wildner UINT32 NumberOfInitiatorPDs; 19431093ca81SSascha Wildner UINT32 NumberOfTargetPDs; 19441093ca81SSascha Wildner UINT32 Reserved2; 19451093ca81SSascha Wildner UINT64 EntryBaseUnit; 19461093ca81SSascha Wildner 19471093ca81SSascha Wildner } ACPI_HMAT_LOCALITY; 19481093ca81SSascha Wildner 19491093ca81SSascha Wildner /* Masks for Flags field above */ 19501093ca81SSascha Wildner 195101d5d5dfSSascha Wildner #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */ 19521093ca81SSascha Wildner 195301d5d5dfSSascha Wildner /* Values for Memory Hierarchy flags */ 19541093ca81SSascha Wildner 19551093ca81SSascha Wildner #define ACPI_HMAT_MEMORY 0 1956c5a52fd3SSascha Wildner #define ACPI_HMAT_1ST_LEVEL_CACHE 1 1957c5a52fd3SSascha Wildner #define ACPI_HMAT_2ND_LEVEL_CACHE 2 1958c5a52fd3SSascha Wildner #define ACPI_HMAT_3RD_LEVEL_CACHE 3 195901d5d5dfSSascha Wildner #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */ 196001d5d5dfSSascha Wildner #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */ 196101d5d5dfSSascha Wildner 19621093ca81SSascha Wildner 19631093ca81SSascha Wildner /* Values for DataType field above */ 19641093ca81SSascha Wildner 19651093ca81SSascha Wildner #define ACPI_HMAT_ACCESS_LATENCY 0 19661093ca81SSascha Wildner #define ACPI_HMAT_READ_LATENCY 1 19671093ca81SSascha Wildner #define ACPI_HMAT_WRITE_LATENCY 2 19681093ca81SSascha Wildner #define ACPI_HMAT_ACCESS_BANDWIDTH 3 19691093ca81SSascha Wildner #define ACPI_HMAT_READ_BANDWIDTH 4 19701093ca81SSascha Wildner #define ACPI_HMAT_WRITE_BANDWIDTH 5 19711093ca81SSascha Wildner 19721093ca81SSascha Wildner 19731093ca81SSascha Wildner /* 2: Memory side cache information */ 19741093ca81SSascha Wildner 19751093ca81SSascha Wildner typedef struct acpi_hmat_cache 19761093ca81SSascha Wildner { 19771093ca81SSascha Wildner ACPI_HMAT_STRUCTURE Header; 19781093ca81SSascha Wildner UINT32 MemoryPD; 19791093ca81SSascha Wildner UINT32 Reserved1; 19801093ca81SSascha Wildner UINT64 CacheSize; 19811093ca81SSascha Wildner UINT32 CacheAttributes; 19821093ca81SSascha Wildner UINT16 Reserved2; 19831093ca81SSascha Wildner UINT16 NumberOfSMBIOSHandles; 19841093ca81SSascha Wildner 19851093ca81SSascha Wildner } ACPI_HMAT_CACHE; 19861093ca81SSascha Wildner 19871093ca81SSascha Wildner /* Masks for CacheAttributes field above */ 19881093ca81SSascha Wildner 19891093ca81SSascha Wildner #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F) 19901093ca81SSascha Wildner #define ACPI_HMAT_CACHE_LEVEL (0x000000F0) 19911093ca81SSascha Wildner #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00) 19921093ca81SSascha Wildner #define ACPI_HMAT_WRITE_POLICY (0x0000F000) 19931093ca81SSascha Wildner #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000) 19941093ca81SSascha Wildner 19951093ca81SSascha Wildner /* Values for cache associativity flag */ 19961093ca81SSascha Wildner 19971093ca81SSascha Wildner #define ACPI_HMAT_CA_NONE (0) 19981093ca81SSascha Wildner #define ACPI_HMAT_CA_DIRECT_MAPPED (1) 19991093ca81SSascha Wildner #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2) 20001093ca81SSascha Wildner 20011093ca81SSascha Wildner /* Values for write policy flag */ 20021093ca81SSascha Wildner 20031093ca81SSascha Wildner #define ACPI_HMAT_CP_NONE (0) 20041093ca81SSascha Wildner #define ACPI_HMAT_CP_WB (1) 20051093ca81SSascha Wildner #define ACPI_HMAT_CP_WT (2) 20061093ca81SSascha Wildner 20071093ca81SSascha Wildner 20080d02842fSSascha Wildner /******************************************************************************* 20090d02842fSSascha Wildner * 20107bcb6cafSSascha Wildner * HPET - High Precision Event Timer table 20117bcb6cafSSascha Wildner * Version 1 20127bcb6cafSSascha Wildner * 20137bcb6cafSSascha Wildner * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 20147bcb6cafSSascha Wildner * Version 1.0a, October 2004 20150d02842fSSascha Wildner * 20160d02842fSSascha Wildner ******************************************************************************/ 20170d02842fSSascha Wildner 20187bcb6cafSSascha Wildner typedef struct acpi_table_hpet 20190d02842fSSascha Wildner { 20200d02842fSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 20217bcb6cafSSascha Wildner UINT32 Id; /* Hardware ID of event timer block */ 20227bcb6cafSSascha Wildner ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 20237bcb6cafSSascha Wildner UINT8 Sequence; /* HPET sequence number */ 20247bcb6cafSSascha Wildner UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 20257bcb6cafSSascha Wildner UINT8 Flags; 20260d02842fSSascha Wildner 20277bcb6cafSSascha Wildner } ACPI_TABLE_HPET; 20280d02842fSSascha Wildner 20290d02842fSSascha Wildner /* Masks for Flags field above */ 20300d02842fSSascha Wildner 20317bcb6cafSSascha Wildner #define ACPI_HPET_PAGE_PROTECT_MASK (3) 20320d02842fSSascha Wildner 20337bcb6cafSSascha Wildner /* Values for Page Protect flags */ 20340d02842fSSascha Wildner 20357bcb6cafSSascha Wildner enum AcpiHpetPageProtect 20360d02842fSSascha Wildner { 20377bcb6cafSSascha Wildner ACPI_HPET_NO_PAGE_PROTECT = 0, 20387bcb6cafSSascha Wildner ACPI_HPET_PAGE_PROTECT4 = 1, 20397bcb6cafSSascha Wildner ACPI_HPET_PAGE_PROTECT64 = 2 20400d02842fSSascha Wildner }; 20410d02842fSSascha Wildner 20420d02842fSSascha Wildner 20437bcb6cafSSascha Wildner /******************************************************************************* 20447bcb6cafSSascha Wildner * 20457bcb6cafSSascha Wildner * IBFT - Boot Firmware Table 20467bcb6cafSSascha Wildner * Version 1 20477bcb6cafSSascha Wildner * 20487bcb6cafSSascha Wildner * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 20497bcb6cafSSascha Wildner * Specification", Version 1.01, March 1, 2007 20507bcb6cafSSascha Wildner * 20517bcb6cafSSascha Wildner * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 20527bcb6cafSSascha Wildner * Therefore, it is not currently supported by the disassembler. 20537bcb6cafSSascha Wildner * 20547bcb6cafSSascha Wildner ******************************************************************************/ 20550d02842fSSascha Wildner 20567bcb6cafSSascha Wildner typedef struct acpi_table_ibft 20570d02842fSSascha Wildner { 20587bcb6cafSSascha Wildner ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 20597bcb6cafSSascha Wildner UINT8 Reserved[12]; 20600d02842fSSascha Wildner 20617bcb6cafSSascha Wildner } ACPI_TABLE_IBFT; 20620d02842fSSascha Wildner 20630d02842fSSascha Wildner 20647bcb6cafSSascha Wildner /* IBFT common subtable header */ 20650d02842fSSascha Wildner 20667bcb6cafSSascha Wildner typedef struct acpi_ibft_header 20670d02842fSSascha Wildner { 20687bcb6cafSSascha Wildner UINT8 Type; 2069896f2e3aSSascha Wildner UINT8 Version; 2070896f2e3aSSascha Wildner UINT16 Length; 20717bcb6cafSSascha Wildner UINT8 Index; 20727bcb6cafSSascha Wildner UINT8 Flags; 2073896f2e3aSSascha Wildner 20747bcb6cafSSascha Wildner } ACPI_IBFT_HEADER; 20751093ca81SSascha Wildner 20761093ca81SSascha Wildner /* Values for Type field above */ 20771093ca81SSascha Wildner 20787bcb6cafSSascha Wildner enum AcpiIbftType 20791093ca81SSascha Wildner { 20807bcb6cafSSascha Wildner ACPI_IBFT_TYPE_NOT_USED = 0, 20817bcb6cafSSascha Wildner ACPI_IBFT_TYPE_CONTROL = 1, 20827bcb6cafSSascha Wildner ACPI_IBFT_TYPE_INITIATOR = 2, 20837bcb6cafSSascha Wildner ACPI_IBFT_TYPE_NIC = 3, 20847bcb6cafSSascha Wildner ACPI_IBFT_TYPE_TARGET = 4, 20857bcb6cafSSascha Wildner ACPI_IBFT_TYPE_EXTENSIONS = 5, 20867bcb6cafSSascha Wildner ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 20871093ca81SSascha Wildner }; 20881093ca81SSascha Wildner 20891093ca81SSascha Wildner 20907bcb6cafSSascha Wildner /* IBFT subtables */ 20911093ca81SSascha Wildner 20927bcb6cafSSascha Wildner typedef struct acpi_ibft_control 2093cf6b3eb1SSascha Wildner { 20947bcb6cafSSascha Wildner ACPI_IBFT_HEADER Header; 20957bcb6cafSSascha Wildner UINT16 Extensions; 20967bcb6cafSSascha Wildner UINT16 InitiatorOffset; 20977bcb6cafSSascha Wildner UINT16 Nic0Offset; 20987bcb6cafSSascha Wildner UINT16 Target0Offset; 20997bcb6cafSSascha Wildner UINT16 Nic1Offset; 21007bcb6cafSSascha Wildner UINT16 Target1Offset; 21011093ca81SSascha Wildner 21027bcb6cafSSascha Wildner } ACPI_IBFT_CONTROL; 21031093ca81SSascha Wildner 21047bcb6cafSSascha Wildner typedef struct acpi_ibft_initiator 2105cf6b3eb1SSascha Wildner { 21067bcb6cafSSascha Wildner ACPI_IBFT_HEADER Header; 21077bcb6cafSSascha Wildner UINT8 SnsServer[16]; 21087bcb6cafSSascha Wildner UINT8 SlpServer[16]; 21097bcb6cafSSascha Wildner UINT8 PrimaryServer[16]; 21107bcb6cafSSascha Wildner UINT8 SecondaryServer[16]; 21117bcb6cafSSascha Wildner UINT16 NameLength; 21127bcb6cafSSascha Wildner UINT16 NameOffset; 21131093ca81SSascha Wildner 21147bcb6cafSSascha Wildner } ACPI_IBFT_INITIATOR; 21151093ca81SSascha Wildner 21167bcb6cafSSascha Wildner typedef struct acpi_ibft_nic 2117cf6b3eb1SSascha Wildner { 21187bcb6cafSSascha Wildner ACPI_IBFT_HEADER Header; 21197bcb6cafSSascha Wildner UINT8 IpAddress[16]; 21207bcb6cafSSascha Wildner UINT8 SubnetMaskPrefix; 21217bcb6cafSSascha Wildner UINT8 Origin; 21227bcb6cafSSascha Wildner UINT8 Gateway[16]; 21237bcb6cafSSascha Wildner UINT8 PrimaryDns[16]; 21247bcb6cafSSascha Wildner UINT8 SecondaryDns[16]; 21257bcb6cafSSascha Wildner UINT8 Dhcp[16]; 21267bcb6cafSSascha Wildner UINT16 Vlan; 21277bcb6cafSSascha Wildner UINT8 MacAddress[6]; 21287bcb6cafSSascha Wildner UINT16 PciAddress; 21297bcb6cafSSascha Wildner UINT16 NameLength; 21307bcb6cafSSascha Wildner UINT16 NameOffset; 21311093ca81SSascha Wildner 21327bcb6cafSSascha Wildner } ACPI_IBFT_NIC; 21331093ca81SSascha Wildner 21347bcb6cafSSascha Wildner typedef struct acpi_ibft_target 21350d02842fSSascha Wildner { 21367bcb6cafSSascha Wildner ACPI_IBFT_HEADER Header; 21377bcb6cafSSascha Wildner UINT8 TargetIpAddress[16]; 21387bcb6cafSSascha Wildner UINT16 TargetIpSocket; 21397bcb6cafSSascha Wildner UINT8 TargetBootLun[8]; 21407bcb6cafSSascha Wildner UINT8 ChapType; 21417bcb6cafSSascha Wildner UINT8 NicAssociation; 21427bcb6cafSSascha Wildner UINT16 TargetNameLength; 21437bcb6cafSSascha Wildner UINT16 TargetNameOffset; 21447bcb6cafSSascha Wildner UINT16 ChapNameLength; 21457bcb6cafSSascha Wildner UINT16 ChapNameOffset; 21467bcb6cafSSascha Wildner UINT16 ChapSecretLength; 21477bcb6cafSSascha Wildner UINT16 ChapSecretOffset; 21487bcb6cafSSascha Wildner UINT16 ReverseChapNameLength; 21497bcb6cafSSascha Wildner UINT16 ReverseChapNameOffset; 21507bcb6cafSSascha Wildner UINT16 ReverseChapSecretLength; 21517bcb6cafSSascha Wildner UINT16 ReverseChapSecretOffset; 21520d02842fSSascha Wildner 21537bcb6cafSSascha Wildner } ACPI_IBFT_TARGET; 21541093ca81SSascha Wildner 21551093ca81SSascha Wildner 2156d4972a9cSSascha Wildner /* Reset to default packing */ 2157d4972a9cSSascha Wildner 2158d4972a9cSSascha Wildner #pragma pack() 21590d02842fSSascha Wildner 21600d02842fSSascha Wildner #endif /* __ACTBL1_H__ */ 2161