10174267aSFredrik Holmqvist /****************************************************************************** 20174267aSFredrik Holmqvist * 30174267aSFredrik Holmqvist * Name: actbl1.h - Additional ACPI table definitions 40174267aSFredrik Holmqvist * 50174267aSFredrik Holmqvist *****************************************************************************/ 60174267aSFredrik Holmqvist 70174267aSFredrik Holmqvist /****************************************************************************** 80174267aSFredrik Holmqvist * 90174267aSFredrik Holmqvist * 1. Copyright Notice 100174267aSFredrik Holmqvist * 11*6dde014fSPulkoMandy * Some or all of this work - Copyright (c) 1999 - 2024, Intel Corp. 120174267aSFredrik Holmqvist * All rights reserved. 130174267aSFredrik Holmqvist * 140174267aSFredrik Holmqvist * 2. License 150174267aSFredrik Holmqvist * 160174267aSFredrik Holmqvist * 2.1. This is your license from Intel Corp. under its intellectual property 170174267aSFredrik Holmqvist * rights. You may have additional license terms from the party that provided 180174267aSFredrik Holmqvist * you this software, covering your right to use that party's intellectual 190174267aSFredrik Holmqvist * property rights. 200174267aSFredrik Holmqvist * 210174267aSFredrik Holmqvist * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220174267aSFredrik Holmqvist * copy of the source code appearing in this file ("Covered Code") an 230174267aSFredrik Holmqvist * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240174267aSFredrik Holmqvist * base code distributed originally by Intel ("Original Intel Code") to copy, 250174267aSFredrik Holmqvist * make derivatives, distribute, use and display any portion of the Covered 260174267aSFredrik Holmqvist * Code in any form, with the right to sublicense such rights; and 270174267aSFredrik Holmqvist * 280174267aSFredrik Holmqvist * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290174267aSFredrik Holmqvist * license (with the right to sublicense), under only those claims of Intel 300174267aSFredrik Holmqvist * patents that are infringed by the Original Intel Code, to make, use, sell, 310174267aSFredrik Holmqvist * offer to sell, and import the Covered Code and derivative works thereof 320174267aSFredrik Holmqvist * solely to the minimum extent necessary to exercise the above copyright 330174267aSFredrik Holmqvist * license, and in no event shall the patent license extend to any additions 340174267aSFredrik Holmqvist * to or modifications of the Original Intel Code. No other license or right 350174267aSFredrik Holmqvist * is granted directly or by implication, estoppel or otherwise; 360174267aSFredrik Holmqvist * 370174267aSFredrik Holmqvist * The above copyright and patent license is granted only if the following 380174267aSFredrik Holmqvist * conditions are met: 390174267aSFredrik Holmqvist * 400174267aSFredrik Holmqvist * 3. Conditions 410174267aSFredrik Holmqvist * 420174267aSFredrik Holmqvist * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430174267aSFredrik Holmqvist * Redistribution of source code of any substantial portion of the Covered 440174267aSFredrik Holmqvist * Code or modification with rights to further distribute source must include 450174267aSFredrik Holmqvist * the above Copyright Notice, the above License, this list of Conditions, 460174267aSFredrik Holmqvist * and the following Disclaimer and Export Compliance provision. In addition, 470174267aSFredrik Holmqvist * Licensee must cause all Covered Code to which Licensee contributes to 480174267aSFredrik Holmqvist * contain a file documenting the changes Licensee made to create that Covered 490174267aSFredrik Holmqvist * Code and the date of any change. Licensee must include in that file the 500174267aSFredrik Holmqvist * documentation of any changes made by any predecessor Licensee. Licensee 510174267aSFredrik Holmqvist * must include a prominent statement that the modification is derived, 520174267aSFredrik Holmqvist * directly or indirectly, from Original Intel Code. 530174267aSFredrik Holmqvist * 540174267aSFredrik Holmqvist * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550174267aSFredrik Holmqvist * Redistribution of source code of any substantial portion of the Covered 560174267aSFredrik Holmqvist * Code or modification without rights to further distribute source must 570174267aSFredrik Holmqvist * include the following Disclaimer and Export Compliance provision in the 580174267aSFredrik Holmqvist * documentation and/or other materials provided with distribution. In 590174267aSFredrik Holmqvist * addition, Licensee may not authorize further sublicense of source of any 600174267aSFredrik Holmqvist * portion of the Covered Code, and must include terms to the effect that the 610174267aSFredrik Holmqvist * license from Licensee to its licensee is limited to the intellectual 620174267aSFredrik Holmqvist * property embodied in the software Licensee provides to its licensee, and 630174267aSFredrik Holmqvist * not to intellectual property embodied in modifications its licensee may 640174267aSFredrik Holmqvist * make. 650174267aSFredrik Holmqvist * 660174267aSFredrik Holmqvist * 3.3. Redistribution of Executable. Redistribution in executable form of any 670174267aSFredrik Holmqvist * substantial portion of the Covered Code or modification must reproduce the 680174267aSFredrik Holmqvist * above Copyright Notice, and the following Disclaimer and Export Compliance 690174267aSFredrik Holmqvist * provision in the documentation and/or other materials provided with the 700174267aSFredrik Holmqvist * distribution. 710174267aSFredrik Holmqvist * 720174267aSFredrik Holmqvist * 3.4. Intel retains all right, title, and interest in and to the Original 730174267aSFredrik Holmqvist * Intel Code. 740174267aSFredrik Holmqvist * 750174267aSFredrik Holmqvist * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760174267aSFredrik Holmqvist * Intel shall be used in advertising or otherwise to promote the sale, use or 770174267aSFredrik Holmqvist * other dealings in products derived from or relating to the Covered Code 780174267aSFredrik Holmqvist * without prior written authorization from Intel. 790174267aSFredrik Holmqvist * 800174267aSFredrik Holmqvist * 4. Disclaimer and Export Compliance 810174267aSFredrik Holmqvist * 820174267aSFredrik Holmqvist * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830174267aSFredrik Holmqvist * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840174267aSFredrik Holmqvist * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850174267aSFredrik Holmqvist * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860174267aSFredrik Holmqvist * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870174267aSFredrik Holmqvist * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880174267aSFredrik Holmqvist * PARTICULAR PURPOSE. 890174267aSFredrik Holmqvist * 900174267aSFredrik Holmqvist * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910174267aSFredrik Holmqvist * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920174267aSFredrik Holmqvist * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930174267aSFredrik Holmqvist * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940174267aSFredrik Holmqvist * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950174267aSFredrik Holmqvist * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960174267aSFredrik Holmqvist * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970174267aSFredrik Holmqvist * LIMITED REMEDY. 980174267aSFredrik Holmqvist * 990174267aSFredrik Holmqvist * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000174267aSFredrik Holmqvist * software or system incorporating such software without first obtaining any 1010174267aSFredrik Holmqvist * required license or other approval from the U. S. Department of Commerce or 1020174267aSFredrik Holmqvist * any other agency or department of the United States Government. In the 1030174267aSFredrik Holmqvist * event Licensee exports any such software from the United States or 1040174267aSFredrik Holmqvist * re-exports any such software from a foreign destination, Licensee shall 1050174267aSFredrik Holmqvist * ensure that the distribution and export/re-export of the software is in 1060174267aSFredrik Holmqvist * compliance with all laws, regulations, orders, or other restrictions of the 1070174267aSFredrik Holmqvist * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080174267aSFredrik Holmqvist * any of its subsidiaries will export/re-export any technical data, process, 1090174267aSFredrik Holmqvist * software, or service, directly or indirectly, to any country for which the 1100174267aSFredrik Holmqvist * United States government or any agency thereof requires an export license, 1110174267aSFredrik Holmqvist * other governmental approval, or letter of assurance, without first obtaining 1120174267aSFredrik Holmqvist * such license, approval or letter. 1130174267aSFredrik Holmqvist * 114ff2e2f81SFredrik Holmqvist ***************************************************************************** 115ff2e2f81SFredrik Holmqvist * 116ff2e2f81SFredrik Holmqvist * Alternatively, you may choose to be licensed under the terms of the 117ff2e2f81SFredrik Holmqvist * following license: 118ff2e2f81SFredrik Holmqvist * 119ff2e2f81SFredrik Holmqvist * Redistribution and use in source and binary forms, with or without 120ff2e2f81SFredrik Holmqvist * modification, are permitted provided that the following conditions 121ff2e2f81SFredrik Holmqvist * are met: 122ff2e2f81SFredrik Holmqvist * 1. Redistributions of source code must retain the above copyright 123ff2e2f81SFredrik Holmqvist * notice, this list of conditions, and the following disclaimer, 124ff2e2f81SFredrik Holmqvist * without modification. 125ff2e2f81SFredrik Holmqvist * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126ff2e2f81SFredrik Holmqvist * substantially similar to the "NO WARRANTY" disclaimer below 127ff2e2f81SFredrik Holmqvist * ("Disclaimer") and any redistribution must be conditioned upon 128ff2e2f81SFredrik Holmqvist * including a substantially similar Disclaimer requirement for further 129ff2e2f81SFredrik Holmqvist * binary redistribution. 130ff2e2f81SFredrik Holmqvist * 3. Neither the names of the above-listed copyright holders nor the names 131ff2e2f81SFredrik Holmqvist * of any contributors may be used to endorse or promote products derived 132ff2e2f81SFredrik Holmqvist * from this software without specific prior written permission. 133ff2e2f81SFredrik Holmqvist * 134ff2e2f81SFredrik Holmqvist * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135ff2e2f81SFredrik Holmqvist * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136ff2e2f81SFredrik Holmqvist * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137ff2e2f81SFredrik Holmqvist * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138ff2e2f81SFredrik Holmqvist * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139ff2e2f81SFredrik Holmqvist * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140ff2e2f81SFredrik Holmqvist * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141ff2e2f81SFredrik Holmqvist * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142ff2e2f81SFredrik Holmqvist * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143ff2e2f81SFredrik Holmqvist * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144ff2e2f81SFredrik Holmqvist * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145ff2e2f81SFredrik Holmqvist * 146ff2e2f81SFredrik Holmqvist * Alternatively, you may choose to be licensed under the terms of the 147ff2e2f81SFredrik Holmqvist * GNU General Public License ("GPL") version 2 as published by the Free 148ff2e2f81SFredrik Holmqvist * Software Foundation. 149ff2e2f81SFredrik Holmqvist * 1500174267aSFredrik Holmqvist *****************************************************************************/ 1510174267aSFredrik Holmqvist 1520174267aSFredrik Holmqvist #ifndef __ACTBL1_H__ 1530174267aSFredrik Holmqvist #define __ACTBL1_H__ 1540174267aSFredrik Holmqvist 1550174267aSFredrik Holmqvist 1560174267aSFredrik Holmqvist /******************************************************************************* 1570174267aSFredrik Holmqvist * 15808c9948cSFredrik Holmqvist * Additional ACPI Tables 1590174267aSFredrik Holmqvist * 1600174267aSFredrik Holmqvist * These tables are not consumed directly by the ACPICA subsystem, but are 1610174267aSFredrik Holmqvist * included here to support device drivers and the AML disassembler. 1620174267aSFredrik Holmqvist * 1630174267aSFredrik Holmqvist ******************************************************************************/ 1640174267aSFredrik Holmqvist 1650174267aSFredrik Holmqvist 1660174267aSFredrik Holmqvist /* 1670174267aSFredrik Holmqvist * Values for description table header signatures for tables defined in this 1680174267aSFredrik Holmqvist * file. Useful because they make it more difficult to inadvertently type in 1690174267aSFredrik Holmqvist * the wrong signature. 1700174267aSFredrik Holmqvist */ 17115338de9SPulkoMandy #define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */ 17208c9948cSFredrik Holmqvist #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 17315338de9SPulkoMandy #define ACPI_SIG_ASPT "ASPT" /* AMD Secure Processor Table */ 1740174267aSFredrik Holmqvist #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 17508c9948cSFredrik Holmqvist #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 17608c9948cSFredrik Holmqvist #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 17715338de9SPulkoMandy #define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */ 1780174267aSFredrik Holmqvist #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 17908c9948cSFredrik Holmqvist #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 18008c9948cSFredrik Holmqvist #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 18108c9948cSFredrik Holmqvist #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 18208c9948cSFredrik Holmqvist #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 18308c9948cSFredrik Holmqvist #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 1840174267aSFredrik Holmqvist #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 1850174267aSFredrik Holmqvist #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 1860174267aSFredrik Holmqvist #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 18708c9948cSFredrik Holmqvist #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 18808c9948cSFredrik Holmqvist #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 1890174267aSFredrik Holmqvist #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 19008c9948cSFredrik Holmqvist #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */ 19108c9948cSFredrik Holmqvist #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 19208c9948cSFredrik Holmqvist #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 19315338de9SPulkoMandy #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table*/ 1940174267aSFredrik Holmqvist 19508c9948cSFredrik Holmqvist #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 19608c9948cSFredrik Holmqvist #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 19708c9948cSFredrik Holmqvist 19808c9948cSFredrik Holmqvist 19908c9948cSFredrik Holmqvist /* Reserved table signatures */ 20008c9948cSFredrik Holmqvist 20108c9948cSFredrik Holmqvist #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 20208c9948cSFredrik Holmqvist #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 20308c9948cSFredrik Holmqvist 20408c9948cSFredrik Holmqvist /* 20508c9948cSFredrik Holmqvist * These tables have been seen in the field, but no definition has been found 20608c9948cSFredrik Holmqvist */ 20708c9948cSFredrik Holmqvist #ifdef ACPI_UNDEFINED_TABLES 20808c9948cSFredrik Holmqvist #define ACPI_SIG_ATKG "ATKG" 20908c9948cSFredrik Holmqvist #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 21008c9948cSFredrik Holmqvist #define ACPI_SIG_IEIT "IEIT" 21108c9948cSFredrik Holmqvist #endif 2120174267aSFredrik Holmqvist 2130174267aSFredrik Holmqvist /* 2140174267aSFredrik Holmqvist * All tables must be byte-packed to match the ACPI specification, since 2150174267aSFredrik Holmqvist * the tables are provided by the system BIOS. 2160174267aSFredrik Holmqvist */ 2170174267aSFredrik Holmqvist #pragma pack(1) 2180174267aSFredrik Holmqvist 2190174267aSFredrik Holmqvist /* 2209b0d045cSFredrik Holmqvist * Note: C bitfields are not used for this reason: 2219b0d045cSFredrik Holmqvist * 2229b0d045cSFredrik Holmqvist * "Bitfields are great and easy to read, but unfortunately the C language 2239b0d045cSFredrik Holmqvist * does not specify the layout of bitfields in memory, which means they are 2249b0d045cSFredrik Holmqvist * essentially useless for dealing with packed data in on-disk formats or 2259b0d045cSFredrik Holmqvist * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 2269b0d045cSFredrik Holmqvist * this decision was a design error in C. Ritchie could have picked an order 2279b0d045cSFredrik Holmqvist * and stuck with it." Norman Ramsey. 2289b0d045cSFredrik Holmqvist * See http://stackoverflow.com/a/1053662/41661 2290174267aSFredrik Holmqvist */ 2300174267aSFredrik Holmqvist 2310174267aSFredrik Holmqvist 2320174267aSFredrik Holmqvist /******************************************************************************* 2330174267aSFredrik Holmqvist * 2340174267aSFredrik Holmqvist * Common subtable headers 2350174267aSFredrik Holmqvist * 2360174267aSFredrik Holmqvist ******************************************************************************/ 2370174267aSFredrik Holmqvist 2380174267aSFredrik Holmqvist /* Generic subtable header (used in MADT, SRAT, etc.) */ 2390174267aSFredrik Holmqvist 2400174267aSFredrik Holmqvist typedef struct acpi_subtable_header 2410174267aSFredrik Holmqvist { 2420174267aSFredrik Holmqvist UINT8 Type; 2430174267aSFredrik Holmqvist UINT8 Length; 2440174267aSFredrik Holmqvist 2450174267aSFredrik Holmqvist } ACPI_SUBTABLE_HEADER; 2460174267aSFredrik Holmqvist 2470174267aSFredrik Holmqvist 2480174267aSFredrik Holmqvist /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 2490174267aSFredrik Holmqvist 2500174267aSFredrik Holmqvist typedef struct acpi_whea_header 2510174267aSFredrik Holmqvist { 2520174267aSFredrik Holmqvist UINT8 Action; 2530174267aSFredrik Holmqvist UINT8 Instruction; 2540174267aSFredrik Holmqvist UINT8 Flags; 2550174267aSFredrik Holmqvist UINT8 Reserved; 2560174267aSFredrik Holmqvist ACPI_GENERIC_ADDRESS RegisterRegion; 2570174267aSFredrik Holmqvist UINT64 Value; /* Value used with Read/Write register */ 2580174267aSFredrik Holmqvist UINT64 Mask; /* Bitmask required for this register instruction */ 2590174267aSFredrik Holmqvist 2600174267aSFredrik Holmqvist } ACPI_WHEA_HEADER; 2610174267aSFredrik Holmqvist 2620174267aSFredrik Holmqvist 2630174267aSFredrik Holmqvist /******************************************************************************* 2640174267aSFredrik Holmqvist * 26508c9948cSFredrik Holmqvist * ASF - Alert Standard Format table (Signature "ASF!") 26608c9948cSFredrik Holmqvist * Revision 0x10 26708c9948cSFredrik Holmqvist * 26808c9948cSFredrik Holmqvist * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 26908c9948cSFredrik Holmqvist * 27008c9948cSFredrik Holmqvist ******************************************************************************/ 27108c9948cSFredrik Holmqvist 27208c9948cSFredrik Holmqvist typedef struct acpi_table_asf 27308c9948cSFredrik Holmqvist { 27408c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 27508c9948cSFredrik Holmqvist 27608c9948cSFredrik Holmqvist } ACPI_TABLE_ASF; 27708c9948cSFredrik Holmqvist 27808c9948cSFredrik Holmqvist 27908c9948cSFredrik Holmqvist /* ASF subtable header */ 28008c9948cSFredrik Holmqvist 28108c9948cSFredrik Holmqvist typedef struct acpi_asf_header 28208c9948cSFredrik Holmqvist { 28308c9948cSFredrik Holmqvist UINT8 Type; 28408c9948cSFredrik Holmqvist UINT8 Reserved; 28508c9948cSFredrik Holmqvist UINT16 Length; 28608c9948cSFredrik Holmqvist 28708c9948cSFredrik Holmqvist } ACPI_ASF_HEADER; 28808c9948cSFredrik Holmqvist 28908c9948cSFredrik Holmqvist 29008c9948cSFredrik Holmqvist /* Values for Type field above */ 29108c9948cSFredrik Holmqvist 29208c9948cSFredrik Holmqvist enum AcpiAsfType 29308c9948cSFredrik Holmqvist { 29408c9948cSFredrik Holmqvist ACPI_ASF_TYPE_INFO = 0, 29508c9948cSFredrik Holmqvist ACPI_ASF_TYPE_ALERT = 1, 29608c9948cSFredrik Holmqvist ACPI_ASF_TYPE_CONTROL = 2, 29708c9948cSFredrik Holmqvist ACPI_ASF_TYPE_BOOT = 3, 29808c9948cSFredrik Holmqvist ACPI_ASF_TYPE_ADDRESS = 4, 29908c9948cSFredrik Holmqvist ACPI_ASF_TYPE_RESERVED = 5 30008c9948cSFredrik Holmqvist }; 30108c9948cSFredrik Holmqvist 30208c9948cSFredrik Holmqvist /* 30308c9948cSFredrik Holmqvist * ASF subtables 30408c9948cSFredrik Holmqvist */ 30508c9948cSFredrik Holmqvist 30608c9948cSFredrik Holmqvist /* 0: ASF Information */ 30708c9948cSFredrik Holmqvist 30808c9948cSFredrik Holmqvist typedef struct acpi_asf_info 30908c9948cSFredrik Holmqvist { 31008c9948cSFredrik Holmqvist ACPI_ASF_HEADER Header; 31108c9948cSFredrik Holmqvist UINT8 MinResetValue; 31208c9948cSFredrik Holmqvist UINT8 MinPollInterval; 31308c9948cSFredrik Holmqvist UINT16 SystemId; 31408c9948cSFredrik Holmqvist UINT32 MfgId; 31508c9948cSFredrik Holmqvist UINT8 Flags; 31608c9948cSFredrik Holmqvist UINT8 Reserved2[3]; 31708c9948cSFredrik Holmqvist 31808c9948cSFredrik Holmqvist } ACPI_ASF_INFO; 31908c9948cSFredrik Holmqvist 32008c9948cSFredrik Holmqvist /* Masks for Flags field above */ 32108c9948cSFredrik Holmqvist 32208c9948cSFredrik Holmqvist #define ACPI_ASF_SMBUS_PROTOCOLS (1) 32308c9948cSFredrik Holmqvist 32408c9948cSFredrik Holmqvist 32508c9948cSFredrik Holmqvist /* 1: ASF Alerts */ 32608c9948cSFredrik Holmqvist 32708c9948cSFredrik Holmqvist typedef struct acpi_asf_alert 32808c9948cSFredrik Holmqvist { 32908c9948cSFredrik Holmqvist ACPI_ASF_HEADER Header; 33008c9948cSFredrik Holmqvist UINT8 AssertMask; 33108c9948cSFredrik Holmqvist UINT8 DeassertMask; 33208c9948cSFredrik Holmqvist UINT8 Alerts; 33308c9948cSFredrik Holmqvist UINT8 DataLength; 33408c9948cSFredrik Holmqvist 33508c9948cSFredrik Holmqvist } ACPI_ASF_ALERT; 33608c9948cSFredrik Holmqvist 33708c9948cSFredrik Holmqvist typedef struct acpi_asf_alert_data 33808c9948cSFredrik Holmqvist { 33908c9948cSFredrik Holmqvist UINT8 Address; 34008c9948cSFredrik Holmqvist UINT8 Command; 34108c9948cSFredrik Holmqvist UINT8 Mask; 34208c9948cSFredrik Holmqvist UINT8 Value; 34308c9948cSFredrik Holmqvist UINT8 SensorType; 34408c9948cSFredrik Holmqvist UINT8 Type; 34508c9948cSFredrik Holmqvist UINT8 Offset; 34608c9948cSFredrik Holmqvist UINT8 SourceType; 34708c9948cSFredrik Holmqvist UINT8 Severity; 34808c9948cSFredrik Holmqvist UINT8 SensorNumber; 34908c9948cSFredrik Holmqvist UINT8 Entity; 35008c9948cSFredrik Holmqvist UINT8 Instance; 35108c9948cSFredrik Holmqvist 35208c9948cSFredrik Holmqvist } ACPI_ASF_ALERT_DATA; 35308c9948cSFredrik Holmqvist 35408c9948cSFredrik Holmqvist 35508c9948cSFredrik Holmqvist /* 2: ASF Remote Control */ 35608c9948cSFredrik Holmqvist 35708c9948cSFredrik Holmqvist typedef struct acpi_asf_remote 35808c9948cSFredrik Holmqvist { 35908c9948cSFredrik Holmqvist ACPI_ASF_HEADER Header; 36008c9948cSFredrik Holmqvist UINT8 Controls; 36108c9948cSFredrik Holmqvist UINT8 DataLength; 36208c9948cSFredrik Holmqvist UINT16 Reserved2; 36308c9948cSFredrik Holmqvist 36408c9948cSFredrik Holmqvist } ACPI_ASF_REMOTE; 36508c9948cSFredrik Holmqvist 36608c9948cSFredrik Holmqvist typedef struct acpi_asf_control_data 36708c9948cSFredrik Holmqvist { 36808c9948cSFredrik Holmqvist UINT8 Function; 36908c9948cSFredrik Holmqvist UINT8 Address; 37008c9948cSFredrik Holmqvist UINT8 Command; 37108c9948cSFredrik Holmqvist UINT8 Value; 37208c9948cSFredrik Holmqvist 37308c9948cSFredrik Holmqvist } ACPI_ASF_CONTROL_DATA; 37408c9948cSFredrik Holmqvist 37508c9948cSFredrik Holmqvist 37608c9948cSFredrik Holmqvist /* 3: ASF RMCP Boot Options */ 37708c9948cSFredrik Holmqvist 37808c9948cSFredrik Holmqvist typedef struct acpi_asf_rmcp 37908c9948cSFredrik Holmqvist { 38008c9948cSFredrik Holmqvist ACPI_ASF_HEADER Header; 38108c9948cSFredrik Holmqvist UINT8 Capabilities[7]; 38208c9948cSFredrik Holmqvist UINT8 CompletionCode; 38308c9948cSFredrik Holmqvist UINT32 EnterpriseId; 38408c9948cSFredrik Holmqvist UINT8 Command; 38508c9948cSFredrik Holmqvist UINT16 Parameter; 38608c9948cSFredrik Holmqvist UINT16 BootOptions; 38708c9948cSFredrik Holmqvist UINT16 OemParameters; 38808c9948cSFredrik Holmqvist 38908c9948cSFredrik Holmqvist } ACPI_ASF_RMCP; 39008c9948cSFredrik Holmqvist 39108c9948cSFredrik Holmqvist 39208c9948cSFredrik Holmqvist /* 4: ASF Address */ 39308c9948cSFredrik Holmqvist 39408c9948cSFredrik Holmqvist typedef struct acpi_asf_address 39508c9948cSFredrik Holmqvist { 39608c9948cSFredrik Holmqvist ACPI_ASF_HEADER Header; 39708c9948cSFredrik Holmqvist UINT8 EpromAddress; 39808c9948cSFredrik Holmqvist UINT8 Devices; 39908c9948cSFredrik Holmqvist 40008c9948cSFredrik Holmqvist } ACPI_ASF_ADDRESS; 40108c9948cSFredrik Holmqvist 40215338de9SPulkoMandy /******************************************************************************* 40315338de9SPulkoMandy * 40415338de9SPulkoMandy * ASPT - AMD Secure Processor Table (Signature "ASPT") 40515338de9SPulkoMandy * Revision 0x1 40615338de9SPulkoMandy * 40715338de9SPulkoMandy * Conforms to AMD Socket SP5/SP6 Platform ASPT Rev1 Specification, 40815338de9SPulkoMandy * 12 September 2022 40915338de9SPulkoMandy * 41015338de9SPulkoMandy ******************************************************************************/ 41115338de9SPulkoMandy 41215338de9SPulkoMandy typedef struct acpi_table_aspt 41315338de9SPulkoMandy { 41415338de9SPulkoMandy ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 41515338de9SPulkoMandy UINT32 NumEntries; 41615338de9SPulkoMandy 41715338de9SPulkoMandy } ACPI_TABLE_ASPT; 41815338de9SPulkoMandy 41915338de9SPulkoMandy 42015338de9SPulkoMandy /* ASPT subtable header */ 42115338de9SPulkoMandy 42215338de9SPulkoMandy typedef struct acpi_aspt_header 42315338de9SPulkoMandy { 42415338de9SPulkoMandy UINT16 Type; 42515338de9SPulkoMandy UINT16 Length; 42615338de9SPulkoMandy 42715338de9SPulkoMandy } ACPI_ASPT_HEADER; 42815338de9SPulkoMandy 42915338de9SPulkoMandy 43015338de9SPulkoMandy /* Values for Type field above */ 43115338de9SPulkoMandy 43215338de9SPulkoMandy enum AcpiAsptType 43315338de9SPulkoMandy { 43415338de9SPulkoMandy ACPI_ASPT_TYPE_GLOBAL_REGS = 0, 43515338de9SPulkoMandy ACPI_ASPT_TYPE_SEV_MBOX_REGS = 1, 43615338de9SPulkoMandy ACPI_ASPT_TYPE_ACPI_MBOX_REGS = 2, 43715338de9SPulkoMandy ACPI_ASPT_TYPE_UNKNOWN = 3, 43815338de9SPulkoMandy }; 43915338de9SPulkoMandy 44015338de9SPulkoMandy /* 44115338de9SPulkoMandy * ASPT subtables 44215338de9SPulkoMandy */ 44315338de9SPulkoMandy 44415338de9SPulkoMandy /* 0: ASPT Global Registers */ 44515338de9SPulkoMandy 44615338de9SPulkoMandy typedef struct acpi_aspt_global_regs 44715338de9SPulkoMandy { 44815338de9SPulkoMandy ACPI_ASPT_HEADER Header; 44915338de9SPulkoMandy UINT32 Reserved; 45015338de9SPulkoMandy UINT64 FeatureRegAddr; 45115338de9SPulkoMandy UINT64 IrqEnRegAddr; 45215338de9SPulkoMandy UINT64 IrqStRegAddr; 45315338de9SPulkoMandy 45415338de9SPulkoMandy } ACPI_ASPT_GLOBAL_REGS; 45515338de9SPulkoMandy 45615338de9SPulkoMandy 45715338de9SPulkoMandy /* 1: ASPT SEV Mailbox Registers */ 45815338de9SPulkoMandy 45915338de9SPulkoMandy typedef struct acpi_aspt_sev_mbox_regs 46015338de9SPulkoMandy { 46115338de9SPulkoMandy ACPI_ASPT_HEADER Header; 46215338de9SPulkoMandy UINT8 MboxIrqId; 46315338de9SPulkoMandy UINT8 Reserved[3]; 46415338de9SPulkoMandy UINT64 CmdRespRegAddr; 46515338de9SPulkoMandy UINT64 CmdBufLoRegAddr; 46615338de9SPulkoMandy UINT64 CmdBufHiRegAddr; 46715338de9SPulkoMandy 46815338de9SPulkoMandy } ACPI_ASPT_SEV_MBOX_REGS; 46915338de9SPulkoMandy 47015338de9SPulkoMandy 47115338de9SPulkoMandy /* 2: ASPT ACPI Mailbox Registers */ 47215338de9SPulkoMandy 47315338de9SPulkoMandy typedef struct acpi_aspt_acpi_mbox_regs 47415338de9SPulkoMandy { 47515338de9SPulkoMandy ACPI_ASPT_HEADER Header; 47615338de9SPulkoMandy UINT32 Reserved1; 47715338de9SPulkoMandy UINT64 CmdRespRegAddr; 47815338de9SPulkoMandy UINT64 Reserved2[2]; 47915338de9SPulkoMandy 48015338de9SPulkoMandy } ACPI_ASPT_ACPI_MBOX_REGS; 48115338de9SPulkoMandy 48208c9948cSFredrik Holmqvist 48308c9948cSFredrik Holmqvist /******************************************************************************* 48408c9948cSFredrik Holmqvist * 4850174267aSFredrik Holmqvist * BERT - Boot Error Record Table (ACPI 4.0) 4860174267aSFredrik Holmqvist * Version 1 4870174267aSFredrik Holmqvist * 4880174267aSFredrik Holmqvist ******************************************************************************/ 4890174267aSFredrik Holmqvist 4900174267aSFredrik Holmqvist typedef struct acpi_table_bert 4910174267aSFredrik Holmqvist { 4920174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4930174267aSFredrik Holmqvist UINT32 RegionLength; /* Length of the boot error region */ 4946822cda0SFredrik Holmqvist UINT64 Address; /* Physical address of the error region */ 4950174267aSFredrik Holmqvist 4960174267aSFredrik Holmqvist } ACPI_TABLE_BERT; 4970174267aSFredrik Holmqvist 4980174267aSFredrik Holmqvist 4990174267aSFredrik Holmqvist /* Boot Error Region (not a subtable, pointed to by Address field above) */ 5000174267aSFredrik Holmqvist 5010174267aSFredrik Holmqvist typedef struct acpi_bert_region 5020174267aSFredrik Holmqvist { 5030174267aSFredrik Holmqvist UINT32 BlockStatus; /* Type of error information */ 5040174267aSFredrik Holmqvist UINT32 RawDataOffset; /* Offset to raw error data */ 5050174267aSFredrik Holmqvist UINT32 RawDataLength; /* Length of raw error data */ 5060174267aSFredrik Holmqvist UINT32 DataLength; /* Length of generic error data */ 5070174267aSFredrik Holmqvist UINT32 ErrorSeverity; /* Severity code */ 5080174267aSFredrik Holmqvist 5090174267aSFredrik Holmqvist } ACPI_BERT_REGION; 5100174267aSFredrik Holmqvist 5110174267aSFredrik Holmqvist /* Values for BlockStatus flags above */ 5120174267aSFredrik Holmqvist 5130174267aSFredrik Holmqvist #define ACPI_BERT_UNCORRECTABLE (1) 5140174267aSFredrik Holmqvist #define ACPI_BERT_CORRECTABLE (1<<1) 5150174267aSFredrik Holmqvist #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) 5160174267aSFredrik Holmqvist #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) 5170174267aSFredrik Holmqvist #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 5180174267aSFredrik Holmqvist 5190174267aSFredrik Holmqvist /* Values for ErrorSeverity above */ 5200174267aSFredrik Holmqvist 5210174267aSFredrik Holmqvist enum AcpiBertErrorSeverity 5220174267aSFredrik Holmqvist { 5230174267aSFredrik Holmqvist ACPI_BERT_ERROR_CORRECTABLE = 0, 5240174267aSFredrik Holmqvist ACPI_BERT_ERROR_FATAL = 1, 5250174267aSFredrik Holmqvist ACPI_BERT_ERROR_CORRECTED = 2, 5260174267aSFredrik Holmqvist ACPI_BERT_ERROR_NONE = 3, 5270174267aSFredrik Holmqvist ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ 5280174267aSFredrik Holmqvist }; 5290174267aSFredrik Holmqvist 5300174267aSFredrik Holmqvist /* 5310174267aSFredrik Holmqvist * Note: The generic error data that follows the ErrorSeverity field above 5320174267aSFredrik Holmqvist * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below 5330174267aSFredrik Holmqvist */ 5340174267aSFredrik Holmqvist 5350174267aSFredrik Holmqvist 5360174267aSFredrik Holmqvist /******************************************************************************* 5370174267aSFredrik Holmqvist * 53808c9948cSFredrik Holmqvist * BGRT - Boot Graphics Resource Table (ACPI 5.0) 53908c9948cSFredrik Holmqvist * Version 1 54008c9948cSFredrik Holmqvist * 54108c9948cSFredrik Holmqvist ******************************************************************************/ 54208c9948cSFredrik Holmqvist 54308c9948cSFredrik Holmqvist typedef struct acpi_table_bgrt 54408c9948cSFredrik Holmqvist { 54508c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 54608c9948cSFredrik Holmqvist UINT16 Version; 54708c9948cSFredrik Holmqvist UINT8 Status; 54808c9948cSFredrik Holmqvist UINT8 ImageType; 54908c9948cSFredrik Holmqvist UINT64 ImageAddress; 55008c9948cSFredrik Holmqvist UINT32 ImageOffsetX; 55108c9948cSFredrik Holmqvist UINT32 ImageOffsetY; 55208c9948cSFredrik Holmqvist 55308c9948cSFredrik Holmqvist } ACPI_TABLE_BGRT; 55408c9948cSFredrik Holmqvist 55508c9948cSFredrik Holmqvist /* Flags for Status field above */ 55608c9948cSFredrik Holmqvist 55708c9948cSFredrik Holmqvist #define ACPI_BGRT_DISPLAYED (1) 55808c9948cSFredrik Holmqvist #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1) 55908c9948cSFredrik Holmqvist 56008c9948cSFredrik Holmqvist 56108c9948cSFredrik Holmqvist /******************************************************************************* 56208c9948cSFredrik Holmqvist * 56308c9948cSFredrik Holmqvist * BOOT - Simple Boot Flag Table 56408c9948cSFredrik Holmqvist * Version 1 56508c9948cSFredrik Holmqvist * 56608c9948cSFredrik Holmqvist * Conforms to the "Simple Boot Flag Specification", Version 2.1 56708c9948cSFredrik Holmqvist * 56808c9948cSFredrik Holmqvist ******************************************************************************/ 56908c9948cSFredrik Holmqvist 57008c9948cSFredrik Holmqvist typedef struct acpi_table_boot 57108c9948cSFredrik Holmqvist { 57208c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 57308c9948cSFredrik Holmqvist UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 57408c9948cSFredrik Holmqvist UINT8 Reserved[3]; 57508c9948cSFredrik Holmqvist 57608c9948cSFredrik Holmqvist } ACPI_TABLE_BOOT; 57708c9948cSFredrik Holmqvist 57808c9948cSFredrik Holmqvist 57908c9948cSFredrik Holmqvist /******************************************************************************* 58008c9948cSFredrik Holmqvist * 58115338de9SPulkoMandy * CDAT - Coherent Device Attribute Table 58215338de9SPulkoMandy * Version 1 58315338de9SPulkoMandy * 58415338de9SPulkoMandy * Conforms to the "Coherent Device Attribute Table (CDAT) Specification 58515338de9SPulkoMandy " (Revision 1.01, October 2020.) 58615338de9SPulkoMandy * 58715338de9SPulkoMandy ******************************************************************************/ 58815338de9SPulkoMandy 58915338de9SPulkoMandy typedef struct acpi_table_cdat 59015338de9SPulkoMandy { 59115338de9SPulkoMandy UINT32 Length; /* Length of table in bytes, including this header */ 59215338de9SPulkoMandy UINT8 Revision; /* ACPI Specification minor version number */ 59315338de9SPulkoMandy UINT8 Checksum; /* To make sum of entire table == 0 */ 59415338de9SPulkoMandy UINT8 Reserved[6]; 59515338de9SPulkoMandy UINT32 Sequence; /* Used to detect runtime CDAT table changes */ 59615338de9SPulkoMandy 59715338de9SPulkoMandy } ACPI_TABLE_CDAT; 59815338de9SPulkoMandy 59915338de9SPulkoMandy 60015338de9SPulkoMandy /* CDAT common subtable header */ 60115338de9SPulkoMandy 60215338de9SPulkoMandy typedef struct acpi_cdat_header 60315338de9SPulkoMandy { 60415338de9SPulkoMandy UINT8 Type; 60515338de9SPulkoMandy UINT8 Reserved; 60615338de9SPulkoMandy UINT16 Length; 60715338de9SPulkoMandy 60815338de9SPulkoMandy } ACPI_CDAT_HEADER; 60915338de9SPulkoMandy 61015338de9SPulkoMandy /* Values for Type field above */ 61115338de9SPulkoMandy 61215338de9SPulkoMandy enum AcpiCdatType 61315338de9SPulkoMandy { 61415338de9SPulkoMandy ACPI_CDAT_TYPE_DSMAS = 0, 61515338de9SPulkoMandy ACPI_CDAT_TYPE_DSLBIS = 1, 61615338de9SPulkoMandy ACPI_CDAT_TYPE_DSMSCIS = 2, 61715338de9SPulkoMandy ACPI_CDAT_TYPE_DSIS = 3, 61815338de9SPulkoMandy ACPI_CDAT_TYPE_DSEMTS = 4, 61915338de9SPulkoMandy ACPI_CDAT_TYPE_SSLBIS = 5, 62015338de9SPulkoMandy ACPI_CDAT_TYPE_RESERVED = 6 /* 6 through 0xFF are reserved */ 62115338de9SPulkoMandy }; 62215338de9SPulkoMandy 62315338de9SPulkoMandy 62415338de9SPulkoMandy /* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */ 62515338de9SPulkoMandy 62615338de9SPulkoMandy typedef struct acpi_cdat_dsmas 62715338de9SPulkoMandy { 62815338de9SPulkoMandy UINT8 DsmadHandle; 62915338de9SPulkoMandy UINT8 Flags; 63015338de9SPulkoMandy UINT16 Reserved; 63115338de9SPulkoMandy UINT64 DpaBaseAddress; 63215338de9SPulkoMandy UINT64 DpaLength; 63315338de9SPulkoMandy 63415338de9SPulkoMandy } ACPI_CDAT_DSMAS; 63515338de9SPulkoMandy 63615338de9SPulkoMandy /* Flags for subtable above */ 63715338de9SPulkoMandy 63815338de9SPulkoMandy #define ACPI_CDAT_DSMAS_NON_VOLATILE (1 << 2) 63915338de9SPulkoMandy 64015338de9SPulkoMandy 64115338de9SPulkoMandy /* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */ 64215338de9SPulkoMandy 64315338de9SPulkoMandy typedef struct acpi_cdat_dslbis 64415338de9SPulkoMandy { 64515338de9SPulkoMandy UINT8 Handle; 64615338de9SPulkoMandy UINT8 Flags; /* If Handle matches a DSMAS handle, the definition of this field matches 64715338de9SPulkoMandy * Flags field in HMAT System Locality Latency */ 64815338de9SPulkoMandy UINT8 DataType; 64915338de9SPulkoMandy UINT8 Reserved; 65015338de9SPulkoMandy UINT64 EntryBaseUnit; 65115338de9SPulkoMandy UINT16 Entry[3]; 65215338de9SPulkoMandy UINT16 Reserved2; 65315338de9SPulkoMandy 65415338de9SPulkoMandy } ACPI_CDAT_DSLBIS; 65515338de9SPulkoMandy 65615338de9SPulkoMandy 65715338de9SPulkoMandy /* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */ 65815338de9SPulkoMandy 65915338de9SPulkoMandy typedef struct acpi_cdat_dsmscis 66015338de9SPulkoMandy { 66115338de9SPulkoMandy UINT8 DsmasHandle; 66215338de9SPulkoMandy UINT8 Reserved[3]; 66315338de9SPulkoMandy UINT64 SideCacheSize; 66415338de9SPulkoMandy UINT32 CacheAttributes; 66515338de9SPulkoMandy 66615338de9SPulkoMandy } ACPI_CDAT_DSMSCIS; 66715338de9SPulkoMandy 66815338de9SPulkoMandy 66915338de9SPulkoMandy /* Subtable 3: Device Scoped Initiator Structure (DSIS) */ 67015338de9SPulkoMandy 67115338de9SPulkoMandy typedef struct acpi_cdat_dsis 67215338de9SPulkoMandy { 67315338de9SPulkoMandy UINT8 Flags; 67415338de9SPulkoMandy UINT8 Handle; 67515338de9SPulkoMandy UINT16 Reserved; 67615338de9SPulkoMandy 67715338de9SPulkoMandy } ACPI_CDAT_DSIS; 67815338de9SPulkoMandy 67915338de9SPulkoMandy /* Flags for above subtable */ 68015338de9SPulkoMandy 68115338de9SPulkoMandy #define ACPI_CDAT_DSIS_MEM_ATTACHED (1 << 0) 68215338de9SPulkoMandy 68315338de9SPulkoMandy 68415338de9SPulkoMandy /* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */ 68515338de9SPulkoMandy 68615338de9SPulkoMandy typedef struct acpi_cdat_dsemts 68715338de9SPulkoMandy { 68815338de9SPulkoMandy UINT8 DsmasHandle; 68915338de9SPulkoMandy UINT8 MemoryType; 69015338de9SPulkoMandy UINT16 Reserved; 69115338de9SPulkoMandy UINT64 DpaOffset; 69215338de9SPulkoMandy UINT64 RangeLength; 69315338de9SPulkoMandy 69415338de9SPulkoMandy } ACPI_CDAT_DSEMTS; 69515338de9SPulkoMandy 69615338de9SPulkoMandy 69715338de9SPulkoMandy /* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */ 69815338de9SPulkoMandy 69915338de9SPulkoMandy typedef struct acpi_cdat_sslbis 70015338de9SPulkoMandy { 70115338de9SPulkoMandy UINT8 DataType; 70215338de9SPulkoMandy UINT8 Reserved[3]; 70315338de9SPulkoMandy UINT64 EntryBaseUnit; 70415338de9SPulkoMandy 70515338de9SPulkoMandy } ACPI_CDAT_SSLBIS; 70615338de9SPulkoMandy 70715338de9SPulkoMandy 70815338de9SPulkoMandy /* Sub-subtable for above, SslbeEntries field */ 70915338de9SPulkoMandy 71015338de9SPulkoMandy typedef struct acpi_cdat_sslbe 71115338de9SPulkoMandy { 71215338de9SPulkoMandy UINT16 PortxId; 71315338de9SPulkoMandy UINT16 PortyId; 71415338de9SPulkoMandy UINT16 LatencyOrBandwidth; 71515338de9SPulkoMandy UINT16 Reserved; 71615338de9SPulkoMandy 71715338de9SPulkoMandy } ACPI_CDAT_SSLBE; 71815338de9SPulkoMandy 719*6dde014fSPulkoMandy #define ACPI_CDAT_SSLBIS_US_PORT 0x0100 720*6dde014fSPulkoMandy #define ACPI_CDAT_SSLBIS_ANY_PORT 0xffff 72115338de9SPulkoMandy 72215338de9SPulkoMandy /******************************************************************************* 72315338de9SPulkoMandy * 72415338de9SPulkoMandy * CEDT - CXL Early Discovery Table 72515338de9SPulkoMandy * Version 1 72615338de9SPulkoMandy * 72715338de9SPulkoMandy * Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020) 72815338de9SPulkoMandy * 72915338de9SPulkoMandy ******************************************************************************/ 73015338de9SPulkoMandy 73115338de9SPulkoMandy typedef struct acpi_table_cedt 73215338de9SPulkoMandy { 73315338de9SPulkoMandy ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 73415338de9SPulkoMandy 73515338de9SPulkoMandy } ACPI_TABLE_CEDT; 73615338de9SPulkoMandy 73715338de9SPulkoMandy /* CEDT subtable header (Performance Record Structure) */ 73815338de9SPulkoMandy 73915338de9SPulkoMandy typedef struct acpi_cedt_header 74015338de9SPulkoMandy { 74115338de9SPulkoMandy UINT8 Type; 74215338de9SPulkoMandy UINT8 Reserved; 74315338de9SPulkoMandy UINT16 Length; 74415338de9SPulkoMandy 74515338de9SPulkoMandy } ACPI_CEDT_HEADER; 74615338de9SPulkoMandy 74715338de9SPulkoMandy /* Values for Type field above */ 74815338de9SPulkoMandy 74915338de9SPulkoMandy enum AcpiCedtType 75015338de9SPulkoMandy { 75115338de9SPulkoMandy ACPI_CEDT_TYPE_CHBS = 0, 75215338de9SPulkoMandy ACPI_CEDT_TYPE_CFMWS = 1, 75315338de9SPulkoMandy ACPI_CEDT_TYPE_CXIMS = 2, 75415338de9SPulkoMandy ACPI_CEDT_TYPE_RDPAS = 3, 75515338de9SPulkoMandy ACPI_CEDT_TYPE_RESERVED = 4, 75615338de9SPulkoMandy }; 75715338de9SPulkoMandy 75815338de9SPulkoMandy /* Values for version field above */ 75915338de9SPulkoMandy 76015338de9SPulkoMandy #define ACPI_CEDT_CHBS_VERSION_CXL11 (0) 76115338de9SPulkoMandy #define ACPI_CEDT_CHBS_VERSION_CXL20 (1) 76215338de9SPulkoMandy 76315338de9SPulkoMandy /* Values for length field above */ 76415338de9SPulkoMandy 76515338de9SPulkoMandy #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000) 76615338de9SPulkoMandy #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000) 76715338de9SPulkoMandy 76815338de9SPulkoMandy /* 76915338de9SPulkoMandy * CEDT subtables 77015338de9SPulkoMandy */ 77115338de9SPulkoMandy 77215338de9SPulkoMandy /* 0: CXL Host Bridge Structure */ 77315338de9SPulkoMandy 77415338de9SPulkoMandy typedef struct acpi_cedt_chbs 77515338de9SPulkoMandy { 77615338de9SPulkoMandy ACPI_CEDT_HEADER Header; 77715338de9SPulkoMandy UINT32 Uid; 77815338de9SPulkoMandy UINT32 CxlVersion; 77915338de9SPulkoMandy UINT32 Reserved; 78015338de9SPulkoMandy UINT64 Base; 78115338de9SPulkoMandy UINT64 Length; 78215338de9SPulkoMandy 78315338de9SPulkoMandy } ACPI_CEDT_CHBS; 78415338de9SPulkoMandy 78515338de9SPulkoMandy 78615338de9SPulkoMandy /* 1: CXL Fixed Memory Window Structure */ 78715338de9SPulkoMandy 78815338de9SPulkoMandy typedef struct acpi_cedt_cfmws 78915338de9SPulkoMandy { 79015338de9SPulkoMandy ACPI_CEDT_HEADER Header; 79115338de9SPulkoMandy UINT32 Reserved1; 79215338de9SPulkoMandy UINT64 BaseHpa; 79315338de9SPulkoMandy UINT64 WindowSize; 79415338de9SPulkoMandy UINT8 InterleaveWays; 79515338de9SPulkoMandy UINT8 InterleaveArithmetic; 79615338de9SPulkoMandy UINT16 Reserved2; 79715338de9SPulkoMandy UINT32 Granularity; 79815338de9SPulkoMandy UINT16 Restrictions; 79915338de9SPulkoMandy UINT16 QtgId; 80015338de9SPulkoMandy UINT32 InterleaveTargets[]; 80115338de9SPulkoMandy 80215338de9SPulkoMandy } ACPI_CEDT_CFMWS; 80315338de9SPulkoMandy 80415338de9SPulkoMandy typedef struct acpi_cedt_cfmws_target_element 80515338de9SPulkoMandy { 80615338de9SPulkoMandy UINT32 InterleaveTarget; 80715338de9SPulkoMandy 80815338de9SPulkoMandy } ACPI_CEDT_CFMWS_TARGET_ELEMENT; 80915338de9SPulkoMandy 81015338de9SPulkoMandy /* Values for Interleave Arithmetic field above */ 81115338de9SPulkoMandy 81215338de9SPulkoMandy #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0) 81315338de9SPulkoMandy #define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1) 81415338de9SPulkoMandy 81515338de9SPulkoMandy /* Values for Restrictions field above */ 81615338de9SPulkoMandy 81715338de9SPulkoMandy #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1) 81815338de9SPulkoMandy #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1) 81915338de9SPulkoMandy #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2) 82015338de9SPulkoMandy #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3) 82115338de9SPulkoMandy #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4) 82215338de9SPulkoMandy 82315338de9SPulkoMandy /* 2: CXL XOR Interleave Math Structure */ 82415338de9SPulkoMandy 82515338de9SPulkoMandy struct acpi_cedt_cxims { 82615338de9SPulkoMandy ACPI_CEDT_HEADER Header; 82715338de9SPulkoMandy UINT16 Reserved1; 82815338de9SPulkoMandy UINT8 Hbig; 82915338de9SPulkoMandy UINT8 NrXormaps; 83015338de9SPulkoMandy UINT64 XormapList[]; 83115338de9SPulkoMandy }; 83215338de9SPulkoMandy 83315338de9SPulkoMandy /* 3: CXL RCEC Downstream Port Association Structure */ 83415338de9SPulkoMandy 83515338de9SPulkoMandy struct acpi_cedt_rdpas { 83615338de9SPulkoMandy ACPI_CEDT_HEADER Header; 83715338de9SPulkoMandy UINT16 Segment; 83815338de9SPulkoMandy UINT16 Bdf; 83915338de9SPulkoMandy UINT8 Protocol; 84015338de9SPulkoMandy UINT64 Address; 84115338de9SPulkoMandy }; 84215338de9SPulkoMandy 84315338de9SPulkoMandy /* Masks for bdf field above */ 84415338de9SPulkoMandy #define ACPI_CEDT_RDPAS_BUS_MASK 0xff00 84515338de9SPulkoMandy #define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8 84615338de9SPulkoMandy #define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007 84715338de9SPulkoMandy 84815338de9SPulkoMandy #define ACPI_CEDT_RDPAS_PROTOCOL_IO (0) 84915338de9SPulkoMandy #define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1) 85015338de9SPulkoMandy 85115338de9SPulkoMandy /******************************************************************************* 85215338de9SPulkoMandy * 8530174267aSFredrik Holmqvist * CPEP - Corrected Platform Error Polling table (ACPI 4.0) 8540174267aSFredrik Holmqvist * Version 1 8550174267aSFredrik Holmqvist * 8560174267aSFredrik Holmqvist ******************************************************************************/ 8570174267aSFredrik Holmqvist 8580174267aSFredrik Holmqvist typedef struct acpi_table_cpep 8590174267aSFredrik Holmqvist { 8600174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 8610174267aSFredrik Holmqvist UINT64 Reserved; 8620174267aSFredrik Holmqvist 8630174267aSFredrik Holmqvist } ACPI_TABLE_CPEP; 8640174267aSFredrik Holmqvist 8650174267aSFredrik Holmqvist 8660174267aSFredrik Holmqvist /* Subtable */ 8670174267aSFredrik Holmqvist 8680174267aSFredrik Holmqvist typedef struct acpi_cpep_polling 8690174267aSFredrik Holmqvist { 8700174267aSFredrik Holmqvist ACPI_SUBTABLE_HEADER Header; 8710174267aSFredrik Holmqvist UINT8 Id; /* Processor ID */ 8720174267aSFredrik Holmqvist UINT8 Eid; /* Processor EID */ 8730174267aSFredrik Holmqvist UINT32 Interval; /* Polling interval (msec) */ 8740174267aSFredrik Holmqvist 8750174267aSFredrik Holmqvist } ACPI_CPEP_POLLING; 8760174267aSFredrik Holmqvist 8770174267aSFredrik Holmqvist 8780174267aSFredrik Holmqvist /******************************************************************************* 8790174267aSFredrik Holmqvist * 88008c9948cSFredrik Holmqvist * CSRT - Core System Resource Table 88108c9948cSFredrik Holmqvist * Version 0 88208c9948cSFredrik Holmqvist * 88308c9948cSFredrik Holmqvist * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 88408c9948cSFredrik Holmqvist * 88508c9948cSFredrik Holmqvist ******************************************************************************/ 88608c9948cSFredrik Holmqvist 88708c9948cSFredrik Holmqvist typedef struct acpi_table_csrt 88808c9948cSFredrik Holmqvist { 88908c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 89008c9948cSFredrik Holmqvist 89108c9948cSFredrik Holmqvist } ACPI_TABLE_CSRT; 89208c9948cSFredrik Holmqvist 89308c9948cSFredrik Holmqvist 89408c9948cSFredrik Holmqvist /* Resource Group subtable */ 89508c9948cSFredrik Holmqvist 89608c9948cSFredrik Holmqvist typedef struct acpi_csrt_group 89708c9948cSFredrik Holmqvist { 89808c9948cSFredrik Holmqvist UINT32 Length; 89908c9948cSFredrik Holmqvist UINT32 VendorId; 90008c9948cSFredrik Holmqvist UINT32 SubvendorId; 90108c9948cSFredrik Holmqvist UINT16 DeviceId; 90208c9948cSFredrik Holmqvist UINT16 SubdeviceId; 90308c9948cSFredrik Holmqvist UINT16 Revision; 90408c9948cSFredrik Holmqvist UINT16 Reserved; 90508c9948cSFredrik Holmqvist UINT32 SharedInfoLength; 90608c9948cSFredrik Holmqvist 90708c9948cSFredrik Holmqvist /* Shared data immediately follows (Length = SharedInfoLength) */ 90808c9948cSFredrik Holmqvist 90908c9948cSFredrik Holmqvist } ACPI_CSRT_GROUP; 91008c9948cSFredrik Holmqvist 91108c9948cSFredrik Holmqvist /* Shared Info subtable */ 91208c9948cSFredrik Holmqvist 91308c9948cSFredrik Holmqvist typedef struct acpi_csrt_shared_info 91408c9948cSFredrik Holmqvist { 91508c9948cSFredrik Holmqvist UINT16 MajorVersion; 91608c9948cSFredrik Holmqvist UINT16 MinorVersion; 91708c9948cSFredrik Holmqvist UINT32 MmioBaseLow; 91808c9948cSFredrik Holmqvist UINT32 MmioBaseHigh; 91908c9948cSFredrik Holmqvist UINT32 GsiInterrupt; 92008c9948cSFredrik Holmqvist UINT8 InterruptPolarity; 92108c9948cSFredrik Holmqvist UINT8 InterruptMode; 92208c9948cSFredrik Holmqvist UINT8 NumChannels; 92308c9948cSFredrik Holmqvist UINT8 DmaAddressWidth; 92408c9948cSFredrik Holmqvist UINT16 BaseRequestLine; 92508c9948cSFredrik Holmqvist UINT16 NumHandshakeSignals; 92608c9948cSFredrik Holmqvist UINT32 MaxBlockSize; 92708c9948cSFredrik Holmqvist 92808c9948cSFredrik Holmqvist /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 92908c9948cSFredrik Holmqvist 93008c9948cSFredrik Holmqvist } ACPI_CSRT_SHARED_INFO; 93108c9948cSFredrik Holmqvist 93208c9948cSFredrik Holmqvist /* Resource Descriptor subtable */ 93308c9948cSFredrik Holmqvist 93408c9948cSFredrik Holmqvist typedef struct acpi_csrt_descriptor 93508c9948cSFredrik Holmqvist { 93608c9948cSFredrik Holmqvist UINT32 Length; 93708c9948cSFredrik Holmqvist UINT16 Type; 93808c9948cSFredrik Holmqvist UINT16 Subtype; 93908c9948cSFredrik Holmqvist UINT32 Uid; 94008c9948cSFredrik Holmqvist 94108c9948cSFredrik Holmqvist /* Resource-specific information immediately follows */ 94208c9948cSFredrik Holmqvist 94308c9948cSFredrik Holmqvist } ACPI_CSRT_DESCRIPTOR; 94408c9948cSFredrik Holmqvist 94508c9948cSFredrik Holmqvist 94608c9948cSFredrik Holmqvist /* Resource Types */ 94708c9948cSFredrik Holmqvist 94808c9948cSFredrik Holmqvist #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 94908c9948cSFredrik Holmqvist #define ACPI_CSRT_TYPE_TIMER 0x0002 95008c9948cSFredrik Holmqvist #define ACPI_CSRT_TYPE_DMA 0x0003 95108c9948cSFredrik Holmqvist 95208c9948cSFredrik Holmqvist /* Resource Subtypes */ 95308c9948cSFredrik Holmqvist 95408c9948cSFredrik Holmqvist #define ACPI_CSRT_XRUPT_LINE 0x0000 95508c9948cSFredrik Holmqvist #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 95608c9948cSFredrik Holmqvist #define ACPI_CSRT_TIMER 0x0000 95708c9948cSFredrik Holmqvist #define ACPI_CSRT_DMA_CHANNEL 0x0000 95808c9948cSFredrik Holmqvist #define ACPI_CSRT_DMA_CONTROLLER 0x0001 95908c9948cSFredrik Holmqvist 96008c9948cSFredrik Holmqvist 96108c9948cSFredrik Holmqvist /******************************************************************************* 96208c9948cSFredrik Holmqvist * 96308c9948cSFredrik Holmqvist * DBG2 - Debug Port Table 2 96408c9948cSFredrik Holmqvist * Version 0 (Both main table and subtables) 96508c9948cSFredrik Holmqvist * 96615338de9SPulkoMandy * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020 96708c9948cSFredrik Holmqvist * 96808c9948cSFredrik Holmqvist ******************************************************************************/ 96908c9948cSFredrik Holmqvist 97008c9948cSFredrik Holmqvist typedef struct acpi_table_dbg2 97108c9948cSFredrik Holmqvist { 97208c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 97308c9948cSFredrik Holmqvist UINT32 InfoOffset; 97408c9948cSFredrik Holmqvist UINT32 InfoCount; 97508c9948cSFredrik Holmqvist 97608c9948cSFredrik Holmqvist } ACPI_TABLE_DBG2; 97708c9948cSFredrik Holmqvist 97808c9948cSFredrik Holmqvist 97908c9948cSFredrik Holmqvist typedef struct acpi_dbg2_header 98008c9948cSFredrik Holmqvist { 98108c9948cSFredrik Holmqvist UINT32 InfoOffset; 98208c9948cSFredrik Holmqvist UINT32 InfoCount; 98308c9948cSFredrik Holmqvist 98408c9948cSFredrik Holmqvist } ACPI_DBG2_HEADER; 98508c9948cSFredrik Holmqvist 98608c9948cSFredrik Holmqvist 98708c9948cSFredrik Holmqvist /* Debug Device Information Subtable */ 98808c9948cSFredrik Holmqvist 98908c9948cSFredrik Holmqvist typedef struct acpi_dbg2_device 99008c9948cSFredrik Holmqvist { 99108c9948cSFredrik Holmqvist UINT8 Revision; 99208c9948cSFredrik Holmqvist UINT16 Length; 99308c9948cSFredrik Holmqvist UINT8 RegisterCount; /* Number of BaseAddress registers */ 99408c9948cSFredrik Holmqvist UINT16 NamepathLength; 99508c9948cSFredrik Holmqvist UINT16 NamepathOffset; 99608c9948cSFredrik Holmqvist UINT16 OemDataLength; 99708c9948cSFredrik Holmqvist UINT16 OemDataOffset; 99808c9948cSFredrik Holmqvist UINT16 PortType; 99908c9948cSFredrik Holmqvist UINT16 PortSubtype; 100008c9948cSFredrik Holmqvist UINT16 Reserved; 100108c9948cSFredrik Holmqvist UINT16 BaseAddressOffset; 100208c9948cSFredrik Holmqvist UINT16 AddressSizeOffset; 100308c9948cSFredrik Holmqvist /* 100408c9948cSFredrik Holmqvist * Data that follows: 100508c9948cSFredrik Holmqvist * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 100608c9948cSFredrik Holmqvist * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 100708c9948cSFredrik Holmqvist * Namepath (required) - Null terminated string. Single dot if not supported. 100808c9948cSFredrik Holmqvist * OemData (optional) - Length is OemDataLength. 100908c9948cSFredrik Holmqvist */ 101008c9948cSFredrik Holmqvist } ACPI_DBG2_DEVICE; 101108c9948cSFredrik Holmqvist 101208c9948cSFredrik Holmqvist /* Types for PortType field above */ 101308c9948cSFredrik Holmqvist 101408c9948cSFredrik Holmqvist #define ACPI_DBG2_SERIAL_PORT 0x8000 101508c9948cSFredrik Holmqvist #define ACPI_DBG2_1394_PORT 0x8001 101608c9948cSFredrik Holmqvist #define ACPI_DBG2_USB_PORT 0x8002 101708c9948cSFredrik Holmqvist #define ACPI_DBG2_NET_PORT 0x8003 101808c9948cSFredrik Holmqvist 101908c9948cSFredrik Holmqvist /* Subtypes for PortSubtype field above */ 102008c9948cSFredrik Holmqvist 102108c9948cSFredrik Holmqvist #define ACPI_DBG2_16550_COMPATIBLE 0x0000 102208c9948cSFredrik Holmqvist #define ACPI_DBG2_16550_SUBSET 0x0001 102315338de9SPulkoMandy #define ACPI_DBG2_MAX311XE_SPI 0x0002 102408c9948cSFredrik Holmqvist #define ACPI_DBG2_ARM_PL011 0x0003 102515338de9SPulkoMandy #define ACPI_DBG2_MSM8X60 0x0004 102615338de9SPulkoMandy #define ACPI_DBG2_16550_NVIDIA 0x0005 102715338de9SPulkoMandy #define ACPI_DBG2_TI_OMAP 0x0006 102815338de9SPulkoMandy #define ACPI_DBG2_APM88XXXX 0x0008 102915338de9SPulkoMandy #define ACPI_DBG2_MSM8974 0x0009 103015338de9SPulkoMandy #define ACPI_DBG2_SAM5250 0x000A 103115338de9SPulkoMandy #define ACPI_DBG2_INTEL_USIF 0x000B 103215338de9SPulkoMandy #define ACPI_DBG2_IMX6 0x000C 103308c9948cSFredrik Holmqvist #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 103408c9948cSFredrik Holmqvist #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 103508c9948cSFredrik Holmqvist #define ACPI_DBG2_ARM_DCC 0x000F 103608c9948cSFredrik Holmqvist #define ACPI_DBG2_BCM2835 0x0010 103715338de9SPulkoMandy #define ACPI_DBG2_SDM845_1_8432MHZ 0x0011 103815338de9SPulkoMandy #define ACPI_DBG2_16550_WITH_GAS 0x0012 103915338de9SPulkoMandy #define ACPI_DBG2_SDM845_7_372MHZ 0x0013 104015338de9SPulkoMandy #define ACPI_DBG2_INTEL_LPSS 0x0014 104108c9948cSFredrik Holmqvist 104208c9948cSFredrik Holmqvist #define ACPI_DBG2_1394_STANDARD 0x0000 104308c9948cSFredrik Holmqvist 104408c9948cSFredrik Holmqvist #define ACPI_DBG2_USB_XHCI 0x0000 104508c9948cSFredrik Holmqvist #define ACPI_DBG2_USB_EHCI 0x0001 104608c9948cSFredrik Holmqvist 104708c9948cSFredrik Holmqvist 104808c9948cSFredrik Holmqvist /******************************************************************************* 104908c9948cSFredrik Holmqvist * 105008c9948cSFredrik Holmqvist * DBGP - Debug Port table 105108c9948cSFredrik Holmqvist * Version 1 105208c9948cSFredrik Holmqvist * 105308c9948cSFredrik Holmqvist * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 105408c9948cSFredrik Holmqvist * 105508c9948cSFredrik Holmqvist ******************************************************************************/ 105608c9948cSFredrik Holmqvist 105708c9948cSFredrik Holmqvist typedef struct acpi_table_dbgp 105808c9948cSFredrik Holmqvist { 105908c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 106008c9948cSFredrik Holmqvist UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 106108c9948cSFredrik Holmqvist UINT8 Reserved[3]; 106208c9948cSFredrik Holmqvist ACPI_GENERIC_ADDRESS DebugPort; 106308c9948cSFredrik Holmqvist 106408c9948cSFredrik Holmqvist } ACPI_TABLE_DBGP; 106508c9948cSFredrik Holmqvist 106608c9948cSFredrik Holmqvist 106708c9948cSFredrik Holmqvist /******************************************************************************* 106808c9948cSFredrik Holmqvist * 106908c9948cSFredrik Holmqvist * DMAR - DMA Remapping table 107008c9948cSFredrik Holmqvist * Version 1 107108c9948cSFredrik Holmqvist * 107208c9948cSFredrik Holmqvist * Conforms to "Intel Virtualization Technology for Directed I/O", 107308c9948cSFredrik Holmqvist * Version 2.3, October 2014 107408c9948cSFredrik Holmqvist * 107508c9948cSFredrik Holmqvist ******************************************************************************/ 107608c9948cSFredrik Holmqvist 107708c9948cSFredrik Holmqvist typedef struct acpi_table_dmar 107808c9948cSFredrik Holmqvist { 107908c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 108008c9948cSFredrik Holmqvist UINT8 Width; /* Host Address Width */ 108108c9948cSFredrik Holmqvist UINT8 Flags; 108208c9948cSFredrik Holmqvist UINT8 Reserved[10]; 108308c9948cSFredrik Holmqvist 108408c9948cSFredrik Holmqvist } ACPI_TABLE_DMAR; 108508c9948cSFredrik Holmqvist 108608c9948cSFredrik Holmqvist /* Masks for Flags field above */ 108708c9948cSFredrik Holmqvist 108808c9948cSFredrik Holmqvist #define ACPI_DMAR_INTR_REMAP (1) 108908c9948cSFredrik Holmqvist #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 109008c9948cSFredrik Holmqvist #define ACPI_DMAR_X2APIC_MODE (1<<2) 109108c9948cSFredrik Holmqvist 109208c9948cSFredrik Holmqvist 109308c9948cSFredrik Holmqvist /* DMAR subtable header */ 109408c9948cSFredrik Holmqvist 109508c9948cSFredrik Holmqvist typedef struct acpi_dmar_header 109608c9948cSFredrik Holmqvist { 109708c9948cSFredrik Holmqvist UINT16 Type; 109808c9948cSFredrik Holmqvist UINT16 Length; 109908c9948cSFredrik Holmqvist 110008c9948cSFredrik Holmqvist } ACPI_DMAR_HEADER; 110108c9948cSFredrik Holmqvist 110208c9948cSFredrik Holmqvist /* Values for subtable type in ACPI_DMAR_HEADER */ 110308c9948cSFredrik Holmqvist 110408c9948cSFredrik Holmqvist enum AcpiDmarType 110508c9948cSFredrik Holmqvist { 110608c9948cSFredrik Holmqvist ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 110708c9948cSFredrik Holmqvist ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 110808c9948cSFredrik Holmqvist ACPI_DMAR_TYPE_ROOT_ATS = 2, 110908c9948cSFredrik Holmqvist ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 111008c9948cSFredrik Holmqvist ACPI_DMAR_TYPE_NAMESPACE = 4, 111115338de9SPulkoMandy ACPI_DMAR_TYPE_SATC = 5, 111215338de9SPulkoMandy ACPI_DMAR_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 111308c9948cSFredrik Holmqvist }; 111408c9948cSFredrik Holmqvist 111508c9948cSFredrik Holmqvist 111608c9948cSFredrik Holmqvist /* DMAR Device Scope structure */ 111708c9948cSFredrik Holmqvist 111808c9948cSFredrik Holmqvist typedef struct acpi_dmar_device_scope 111908c9948cSFredrik Holmqvist { 112008c9948cSFredrik Holmqvist UINT8 EntryType; 112108c9948cSFredrik Holmqvist UINT8 Length; 112208c9948cSFredrik Holmqvist UINT16 Reserved; 112308c9948cSFredrik Holmqvist UINT8 EnumerationId; 112408c9948cSFredrik Holmqvist UINT8 Bus; 112508c9948cSFredrik Holmqvist 112608c9948cSFredrik Holmqvist } ACPI_DMAR_DEVICE_SCOPE; 112708c9948cSFredrik Holmqvist 112808c9948cSFredrik Holmqvist /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 112908c9948cSFredrik Holmqvist 113008c9948cSFredrik Holmqvist enum AcpiDmarScopeType 113108c9948cSFredrik Holmqvist { 113208c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 113308c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 113408c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 113508c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 113608c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_HPET = 4, 113708c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 113808c9948cSFredrik Holmqvist ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 113908c9948cSFredrik Holmqvist }; 114008c9948cSFredrik Holmqvist 114108c9948cSFredrik Holmqvist typedef struct acpi_dmar_pci_path 114208c9948cSFredrik Holmqvist { 114308c9948cSFredrik Holmqvist UINT8 Device; 114408c9948cSFredrik Holmqvist UINT8 Function; 114508c9948cSFredrik Holmqvist 114608c9948cSFredrik Holmqvist } ACPI_DMAR_PCI_PATH; 114708c9948cSFredrik Holmqvist 114808c9948cSFredrik Holmqvist 114908c9948cSFredrik Holmqvist /* 115008c9948cSFredrik Holmqvist * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 115108c9948cSFredrik Holmqvist */ 115208c9948cSFredrik Holmqvist 115308c9948cSFredrik Holmqvist /* 0: Hardware Unit Definition */ 115408c9948cSFredrik Holmqvist 115508c9948cSFredrik Holmqvist typedef struct acpi_dmar_hardware_unit 115608c9948cSFredrik Holmqvist { 115708c9948cSFredrik Holmqvist ACPI_DMAR_HEADER Header; 115808c9948cSFredrik Holmqvist UINT8 Flags; 115908c9948cSFredrik Holmqvist UINT8 Reserved; 116008c9948cSFredrik Holmqvist UINT16 Segment; 116108c9948cSFredrik Holmqvist UINT64 Address; /* Register Base Address */ 116208c9948cSFredrik Holmqvist 116308c9948cSFredrik Holmqvist } ACPI_DMAR_HARDWARE_UNIT; 116408c9948cSFredrik Holmqvist 116508c9948cSFredrik Holmqvist /* Masks for Flags field above */ 116608c9948cSFredrik Holmqvist 116708c9948cSFredrik Holmqvist #define ACPI_DMAR_INCLUDE_ALL (1) 116808c9948cSFredrik Holmqvist 116908c9948cSFredrik Holmqvist 11700ffed378SFredrik Holmqvist /* 1: Reserved Memory Definition */ 117108c9948cSFredrik Holmqvist 117208c9948cSFredrik Holmqvist typedef struct acpi_dmar_reserved_memory 117308c9948cSFredrik Holmqvist { 117408c9948cSFredrik Holmqvist ACPI_DMAR_HEADER Header; 117508c9948cSFredrik Holmqvist UINT16 Reserved; 117608c9948cSFredrik Holmqvist UINT16 Segment; 117708c9948cSFredrik Holmqvist UINT64 BaseAddress; /* 4K aligned base address */ 117808c9948cSFredrik Holmqvist UINT64 EndAddress; /* 4K aligned limit address */ 117908c9948cSFredrik Holmqvist 118008c9948cSFredrik Holmqvist } ACPI_DMAR_RESERVED_MEMORY; 118108c9948cSFredrik Holmqvist 118208c9948cSFredrik Holmqvist /* Masks for Flags field above */ 118308c9948cSFredrik Holmqvist 118408c9948cSFredrik Holmqvist #define ACPI_DMAR_ALLOW_ALL (1) 118508c9948cSFredrik Holmqvist 118608c9948cSFredrik Holmqvist 118708c9948cSFredrik Holmqvist /* 2: Root Port ATS Capability Reporting Structure */ 118808c9948cSFredrik Holmqvist 118908c9948cSFredrik Holmqvist typedef struct acpi_dmar_atsr 119008c9948cSFredrik Holmqvist { 119108c9948cSFredrik Holmqvist ACPI_DMAR_HEADER Header; 119208c9948cSFredrik Holmqvist UINT8 Flags; 119308c9948cSFredrik Holmqvist UINT8 Reserved; 119408c9948cSFredrik Holmqvist UINT16 Segment; 119508c9948cSFredrik Holmqvist 119608c9948cSFredrik Holmqvist } ACPI_DMAR_ATSR; 119708c9948cSFredrik Holmqvist 119808c9948cSFredrik Holmqvist /* Masks for Flags field above */ 119908c9948cSFredrik Holmqvist 120008c9948cSFredrik Holmqvist #define ACPI_DMAR_ALL_PORTS (1) 120108c9948cSFredrik Holmqvist 120208c9948cSFredrik Holmqvist 120308c9948cSFredrik Holmqvist /* 3: Remapping Hardware Static Affinity Structure */ 120408c9948cSFredrik Holmqvist 120508c9948cSFredrik Holmqvist typedef struct acpi_dmar_rhsa 120608c9948cSFredrik Holmqvist { 120708c9948cSFredrik Holmqvist ACPI_DMAR_HEADER Header; 120808c9948cSFredrik Holmqvist UINT32 Reserved; 120908c9948cSFredrik Holmqvist UINT64 BaseAddress; 121008c9948cSFredrik Holmqvist UINT32 ProximityDomain; 121108c9948cSFredrik Holmqvist 121208c9948cSFredrik Holmqvist } ACPI_DMAR_RHSA; 121308c9948cSFredrik Holmqvist 121408c9948cSFredrik Holmqvist 121508c9948cSFredrik Holmqvist /* 4: ACPI Namespace Device Declaration Structure */ 121608c9948cSFredrik Holmqvist 121708c9948cSFredrik Holmqvist typedef struct acpi_dmar_andd 121808c9948cSFredrik Holmqvist { 121908c9948cSFredrik Holmqvist ACPI_DMAR_HEADER Header; 122008c9948cSFredrik Holmqvist UINT8 Reserved[3]; 122108c9948cSFredrik Holmqvist UINT8 DeviceNumber; 122215338de9SPulkoMandy union { 122315338de9SPulkoMandy char __pad; 122415338de9SPulkoMandy ACPI_FLEX_ARRAY(char, DeviceName); 122515338de9SPulkoMandy }; 122608c9948cSFredrik Holmqvist 122708c9948cSFredrik Holmqvist } ACPI_DMAR_ANDD; 122808c9948cSFredrik Holmqvist 122908c9948cSFredrik Holmqvist 123015338de9SPulkoMandy /* 5: SoC Integrated Address Translation Cache (SATC) */ 123115338de9SPulkoMandy 123215338de9SPulkoMandy typedef struct acpi_dmar_satc 123315338de9SPulkoMandy { 123415338de9SPulkoMandy ACPI_DMAR_HEADER Header; 123515338de9SPulkoMandy UINT8 Flags; 123615338de9SPulkoMandy UINT8 Reserved; 123715338de9SPulkoMandy UINT16 Segment; 123815338de9SPulkoMandy 123915338de9SPulkoMandy } ACPI_DMAR_SATC 124015338de9SPulkoMandy 124115338de9SPulkoMandy ; 124208c9948cSFredrik Holmqvist /******************************************************************************* 124308c9948cSFredrik Holmqvist * 124408c9948cSFredrik Holmqvist * DRTM - Dynamic Root of Trust for Measurement table 124508c9948cSFredrik Holmqvist * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 124608c9948cSFredrik Holmqvist * Table version 1 124708c9948cSFredrik Holmqvist * 124808c9948cSFredrik Holmqvist ******************************************************************************/ 124908c9948cSFredrik Holmqvist 125008c9948cSFredrik Holmqvist typedef struct acpi_table_drtm 125108c9948cSFredrik Holmqvist { 125208c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 125308c9948cSFredrik Holmqvist UINT64 EntryBaseAddress; 125408c9948cSFredrik Holmqvist UINT64 EntryLength; 125508c9948cSFredrik Holmqvist UINT32 EntryAddress32; 125608c9948cSFredrik Holmqvist UINT64 EntryAddress64; 125708c9948cSFredrik Holmqvist UINT64 ExitAddress; 125808c9948cSFredrik Holmqvist UINT64 LogAreaAddress; 125908c9948cSFredrik Holmqvist UINT32 LogAreaLength; 126008c9948cSFredrik Holmqvist UINT64 ArchDependentAddress; 126108c9948cSFredrik Holmqvist UINT32 Flags; 126208c9948cSFredrik Holmqvist 126308c9948cSFredrik Holmqvist } ACPI_TABLE_DRTM; 126408c9948cSFredrik Holmqvist 126508c9948cSFredrik Holmqvist /* Flag Definitions for above */ 126608c9948cSFredrik Holmqvist 126708c9948cSFredrik Holmqvist #define ACPI_DRTM_ACCESS_ALLOWED (1) 126808c9948cSFredrik Holmqvist #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 126908c9948cSFredrik Holmqvist #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 127008c9948cSFredrik Holmqvist #define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 127108c9948cSFredrik Holmqvist 127208c9948cSFredrik Holmqvist 127308c9948cSFredrik Holmqvist /* 1) Validated Tables List (64-bit addresses) */ 127408c9948cSFredrik Holmqvist 127508c9948cSFredrik Holmqvist typedef struct acpi_drtm_vtable_list 127608c9948cSFredrik Holmqvist { 127708c9948cSFredrik Holmqvist UINT32 ValidatedTableCount; 127815338de9SPulkoMandy UINT64 ValidatedTables[]; 127908c9948cSFredrik Holmqvist 128008c9948cSFredrik Holmqvist } ACPI_DRTM_VTABLE_LIST; 128108c9948cSFredrik Holmqvist 128208c9948cSFredrik Holmqvist /* 2) Resources List (of Resource Descriptors) */ 128308c9948cSFredrik Holmqvist 128408c9948cSFredrik Holmqvist /* Resource Descriptor */ 128508c9948cSFredrik Holmqvist 128608c9948cSFredrik Holmqvist typedef struct acpi_drtm_resource 128708c9948cSFredrik Holmqvist { 128808c9948cSFredrik Holmqvist UINT8 Size[7]; 128908c9948cSFredrik Holmqvist UINT8 Type; 129008c9948cSFredrik Holmqvist UINT64 Address; 129108c9948cSFredrik Holmqvist 129208c9948cSFredrik Holmqvist } ACPI_DRTM_RESOURCE; 129308c9948cSFredrik Holmqvist 129408c9948cSFredrik Holmqvist typedef struct acpi_drtm_resource_list 129508c9948cSFredrik Holmqvist { 129608c9948cSFredrik Holmqvist UINT32 ResourceCount; 129715338de9SPulkoMandy ACPI_DRTM_RESOURCE Resources[]; 129808c9948cSFredrik Holmqvist 129908c9948cSFredrik Holmqvist } ACPI_DRTM_RESOURCE_LIST; 130008c9948cSFredrik Holmqvist 130108c9948cSFredrik Holmqvist /* 3) Platform-specific Identifiers List */ 130208c9948cSFredrik Holmqvist 130308c9948cSFredrik Holmqvist typedef struct acpi_drtm_dps_id 130408c9948cSFredrik Holmqvist { 130508c9948cSFredrik Holmqvist UINT32 DpsIdLength; 130608c9948cSFredrik Holmqvist UINT8 DpsId[16]; 130708c9948cSFredrik Holmqvist 130808c9948cSFredrik Holmqvist } ACPI_DRTM_DPS_ID; 130908c9948cSFredrik Holmqvist 131008c9948cSFredrik Holmqvist 131108c9948cSFredrik Holmqvist /******************************************************************************* 131208c9948cSFredrik Holmqvist * 13130174267aSFredrik Holmqvist * ECDT - Embedded Controller Boot Resources Table 13140174267aSFredrik Holmqvist * Version 1 13150174267aSFredrik Holmqvist * 13160174267aSFredrik Holmqvist ******************************************************************************/ 13170174267aSFredrik Holmqvist 13180174267aSFredrik Holmqvist typedef struct acpi_table_ecdt 13190174267aSFredrik Holmqvist { 13200174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13210174267aSFredrik Holmqvist ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 13220174267aSFredrik Holmqvist ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 13230174267aSFredrik Holmqvist UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 13240174267aSFredrik Holmqvist UINT8 Gpe; /* The GPE for the EC */ 132515338de9SPulkoMandy UINT8 Id[]; /* Full namepath of the EC in the ACPI namespace */ 13260174267aSFredrik Holmqvist 13270174267aSFredrik Holmqvist } ACPI_TABLE_ECDT; 13280174267aSFredrik Holmqvist 13290174267aSFredrik Holmqvist 13300174267aSFredrik Holmqvist /******************************************************************************* 13310174267aSFredrik Holmqvist * 13320174267aSFredrik Holmqvist * EINJ - Error Injection Table (ACPI 4.0) 13330174267aSFredrik Holmqvist * Version 1 13340174267aSFredrik Holmqvist * 13350174267aSFredrik Holmqvist ******************************************************************************/ 13360174267aSFredrik Holmqvist 13370174267aSFredrik Holmqvist typedef struct acpi_table_einj 13380174267aSFredrik Holmqvist { 13390174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13400174267aSFredrik Holmqvist UINT32 HeaderLength; 13410174267aSFredrik Holmqvist UINT8 Flags; 13420174267aSFredrik Holmqvist UINT8 Reserved[3]; 13430174267aSFredrik Holmqvist UINT32 Entries; 13440174267aSFredrik Holmqvist 13450174267aSFredrik Holmqvist } ACPI_TABLE_EINJ; 13460174267aSFredrik Holmqvist 13470174267aSFredrik Holmqvist 13480174267aSFredrik Holmqvist /* EINJ Injection Instruction Entries (actions) */ 13490174267aSFredrik Holmqvist 13500174267aSFredrik Holmqvist typedef struct acpi_einj_entry 13510174267aSFredrik Holmqvist { 13520174267aSFredrik Holmqvist ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 13530174267aSFredrik Holmqvist 13540174267aSFredrik Holmqvist } ACPI_EINJ_ENTRY; 13550174267aSFredrik Holmqvist 13560174267aSFredrik Holmqvist /* Masks for Flags field above */ 13570174267aSFredrik Holmqvist 13580174267aSFredrik Holmqvist #define ACPI_EINJ_PRESERVE (1) 13590174267aSFredrik Holmqvist 13600174267aSFredrik Holmqvist /* Values for Action field above */ 13610174267aSFredrik Holmqvist 13620174267aSFredrik Holmqvist enum AcpiEinjActions 13630174267aSFredrik Holmqvist { 13640174267aSFredrik Holmqvist ACPI_EINJ_BEGIN_OPERATION = 0, 13650174267aSFredrik Holmqvist ACPI_EINJ_GET_TRIGGER_TABLE = 1, 13660174267aSFredrik Holmqvist ACPI_EINJ_SET_ERROR_TYPE = 2, 13670174267aSFredrik Holmqvist ACPI_EINJ_GET_ERROR_TYPE = 3, 13680174267aSFredrik Holmqvist ACPI_EINJ_END_OPERATION = 4, 13690174267aSFredrik Holmqvist ACPI_EINJ_EXECUTE_OPERATION = 5, 13700174267aSFredrik Holmqvist ACPI_EINJ_CHECK_BUSY_STATUS = 6, 13710174267aSFredrik Holmqvist ACPI_EINJ_GET_COMMAND_STATUS = 7, 13726822cda0SFredrik Holmqvist ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, 137374ffd18dSFredrik Holmqvist ACPI_EINJ_GET_EXECUTE_TIMINGS = 9, 137474ffd18dSFredrik Holmqvist ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */ 13750174267aSFredrik Holmqvist ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 13760174267aSFredrik Holmqvist }; 13770174267aSFredrik Holmqvist 13780174267aSFredrik Holmqvist /* Values for Instruction field above */ 13790174267aSFredrik Holmqvist 13800174267aSFredrik Holmqvist enum AcpiEinjInstructions 13810174267aSFredrik Holmqvist { 13820174267aSFredrik Holmqvist ACPI_EINJ_READ_REGISTER = 0, 13830174267aSFredrik Holmqvist ACPI_EINJ_READ_REGISTER_VALUE = 1, 13840174267aSFredrik Holmqvist ACPI_EINJ_WRITE_REGISTER = 2, 13850174267aSFredrik Holmqvist ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 13860174267aSFredrik Holmqvist ACPI_EINJ_NOOP = 4, 13876822cda0SFredrik Holmqvist ACPI_EINJ_FLUSH_CACHELINE = 5, 13886822cda0SFredrik Holmqvist ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ 13890174267aSFredrik Holmqvist }; 13900174267aSFredrik Holmqvist 13916822cda0SFredrik Holmqvist typedef struct acpi_einj_error_type_with_addr 13926822cda0SFredrik Holmqvist { 13936822cda0SFredrik Holmqvist UINT32 ErrorType; 13946822cda0SFredrik Holmqvist UINT32 VendorStructOffset; 13956822cda0SFredrik Holmqvist UINT32 Flags; 13966822cda0SFredrik Holmqvist UINT32 ApicId; 13976822cda0SFredrik Holmqvist UINT64 Address; 13986822cda0SFredrik Holmqvist UINT64 Range; 13996822cda0SFredrik Holmqvist UINT32 PcieId; 14006822cda0SFredrik Holmqvist 14016822cda0SFredrik Holmqvist } ACPI_EINJ_ERROR_TYPE_WITH_ADDR; 14026822cda0SFredrik Holmqvist 14036822cda0SFredrik Holmqvist typedef struct acpi_einj_vendor 14046822cda0SFredrik Holmqvist { 14056822cda0SFredrik Holmqvist UINT32 Length; 14066822cda0SFredrik Holmqvist UINT32 PcieId; 14076822cda0SFredrik Holmqvist UINT16 VendorId; 14086822cda0SFredrik Holmqvist UINT16 DeviceId; 14096822cda0SFredrik Holmqvist UINT8 RevisionId; 14106822cda0SFredrik Holmqvist UINT8 Reserved[3]; 14116822cda0SFredrik Holmqvist 14126822cda0SFredrik Holmqvist } ACPI_EINJ_VENDOR; 14136822cda0SFredrik Holmqvist 14140174267aSFredrik Holmqvist 14150174267aSFredrik Holmqvist /* EINJ Trigger Error Action Table */ 14160174267aSFredrik Holmqvist 14170174267aSFredrik Holmqvist typedef struct acpi_einj_trigger 14180174267aSFredrik Holmqvist { 14190174267aSFredrik Holmqvist UINT32 HeaderSize; 14200174267aSFredrik Holmqvist UINT32 Revision; 14210174267aSFredrik Holmqvist UINT32 TableSize; 14220174267aSFredrik Holmqvist UINT32 EntryCount; 14230174267aSFredrik Holmqvist 14240174267aSFredrik Holmqvist } ACPI_EINJ_TRIGGER; 14250174267aSFredrik Holmqvist 14260174267aSFredrik Holmqvist /* Command status return values */ 14270174267aSFredrik Holmqvist 14280174267aSFredrik Holmqvist enum AcpiEinjCommandStatus 14290174267aSFredrik Holmqvist { 14300174267aSFredrik Holmqvist ACPI_EINJ_SUCCESS = 0, 14310174267aSFredrik Holmqvist ACPI_EINJ_FAILURE = 1, 14320174267aSFredrik Holmqvist ACPI_EINJ_INVALID_ACCESS = 2, 14330174267aSFredrik Holmqvist ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ 14340174267aSFredrik Holmqvist }; 14350174267aSFredrik Holmqvist 14360174267aSFredrik Holmqvist 14370174267aSFredrik Holmqvist /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ 14380174267aSFredrik Holmqvist 14390174267aSFredrik Holmqvist #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) 14400174267aSFredrik Holmqvist #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) 14410174267aSFredrik Holmqvist #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) 14420174267aSFredrik Holmqvist #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) 14430174267aSFredrik Holmqvist #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) 14440174267aSFredrik Holmqvist #define ACPI_EINJ_MEMORY_FATAL (1<<5) 14450174267aSFredrik Holmqvist #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) 14460174267aSFredrik Holmqvist #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) 14470174267aSFredrik Holmqvist #define ACPI_EINJ_PCIX_FATAL (1<<8) 14480174267aSFredrik Holmqvist #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) 14490174267aSFredrik Holmqvist #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) 14500174267aSFredrik Holmqvist #define ACPI_EINJ_PLATFORM_FATAL (1<<11) 1451*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12) 1452*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13) 1453*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_CACHE_FATAL (1<<14) 1454*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15) 1455*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16) 1456*6dde014fSPulkoMandy #define ACPI_EINJ_CXL_MEM_FATAL (1<<17) 14576822cda0SFredrik Holmqvist #define ACPI_EINJ_VENDOR_DEFINED (1<<31) 14580174267aSFredrik Holmqvist 14590174267aSFredrik Holmqvist 14600174267aSFredrik Holmqvist /******************************************************************************* 14610174267aSFredrik Holmqvist * 14620174267aSFredrik Holmqvist * ERST - Error Record Serialization Table (ACPI 4.0) 14630174267aSFredrik Holmqvist * Version 1 14640174267aSFredrik Holmqvist * 14650174267aSFredrik Holmqvist ******************************************************************************/ 14660174267aSFredrik Holmqvist 14670174267aSFredrik Holmqvist typedef struct acpi_table_erst 14680174267aSFredrik Holmqvist { 14690174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14700174267aSFredrik Holmqvist UINT32 HeaderLength; 14710174267aSFredrik Holmqvist UINT32 Reserved; 14720174267aSFredrik Holmqvist UINT32 Entries; 14730174267aSFredrik Holmqvist 14740174267aSFredrik Holmqvist } ACPI_TABLE_ERST; 14750174267aSFredrik Holmqvist 14760174267aSFredrik Holmqvist 14770174267aSFredrik Holmqvist /* ERST Serialization Entries (actions) */ 14780174267aSFredrik Holmqvist 14790174267aSFredrik Holmqvist typedef struct acpi_erst_entry 14800174267aSFredrik Holmqvist { 14810174267aSFredrik Holmqvist ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 14820174267aSFredrik Holmqvist 14830174267aSFredrik Holmqvist } ACPI_ERST_ENTRY; 14840174267aSFredrik Holmqvist 14850174267aSFredrik Holmqvist /* Masks for Flags field above */ 14860174267aSFredrik Holmqvist 14870174267aSFredrik Holmqvist #define ACPI_ERST_PRESERVE (1) 14880174267aSFredrik Holmqvist 14890174267aSFredrik Holmqvist /* Values for Action field above */ 14900174267aSFredrik Holmqvist 14910174267aSFredrik Holmqvist enum AcpiErstActions 14920174267aSFredrik Holmqvist { 14930174267aSFredrik Holmqvist ACPI_ERST_BEGIN_WRITE = 0, 14940174267aSFredrik Holmqvist ACPI_ERST_BEGIN_READ = 1, 14950174267aSFredrik Holmqvist ACPI_ERST_BEGIN_CLEAR = 2, 14960174267aSFredrik Holmqvist ACPI_ERST_END = 3, 14970174267aSFredrik Holmqvist ACPI_ERST_SET_RECORD_OFFSET = 4, 14980174267aSFredrik Holmqvist ACPI_ERST_EXECUTE_OPERATION = 5, 14990174267aSFredrik Holmqvist ACPI_ERST_CHECK_BUSY_STATUS = 6, 15000174267aSFredrik Holmqvist ACPI_ERST_GET_COMMAND_STATUS = 7, 15010174267aSFredrik Holmqvist ACPI_ERST_GET_RECORD_ID = 8, 15020174267aSFredrik Holmqvist ACPI_ERST_SET_RECORD_ID = 9, 15030174267aSFredrik Holmqvist ACPI_ERST_GET_RECORD_COUNT = 10, 15040174267aSFredrik Holmqvist ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 15050174267aSFredrik Holmqvist ACPI_ERST_NOT_USED = 12, 15060174267aSFredrik Holmqvist ACPI_ERST_GET_ERROR_RANGE = 13, 15070174267aSFredrik Holmqvist ACPI_ERST_GET_ERROR_LENGTH = 14, 15080174267aSFredrik Holmqvist ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 150974ffd18dSFredrik Holmqvist ACPI_ERST_EXECUTE_TIMINGS = 16, 151074ffd18dSFredrik Holmqvist ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */ 15110174267aSFredrik Holmqvist }; 15120174267aSFredrik Holmqvist 15130174267aSFredrik Holmqvist /* Values for Instruction field above */ 15140174267aSFredrik Holmqvist 15150174267aSFredrik Holmqvist enum AcpiErstInstructions 15160174267aSFredrik Holmqvist { 15170174267aSFredrik Holmqvist ACPI_ERST_READ_REGISTER = 0, 15180174267aSFredrik Holmqvist ACPI_ERST_READ_REGISTER_VALUE = 1, 15190174267aSFredrik Holmqvist ACPI_ERST_WRITE_REGISTER = 2, 15200174267aSFredrik Holmqvist ACPI_ERST_WRITE_REGISTER_VALUE = 3, 15210174267aSFredrik Holmqvist ACPI_ERST_NOOP = 4, 15220174267aSFredrik Holmqvist ACPI_ERST_LOAD_VAR1 = 5, 15230174267aSFredrik Holmqvist ACPI_ERST_LOAD_VAR2 = 6, 15240174267aSFredrik Holmqvist ACPI_ERST_STORE_VAR1 = 7, 15250174267aSFredrik Holmqvist ACPI_ERST_ADD = 8, 15260174267aSFredrik Holmqvist ACPI_ERST_SUBTRACT = 9, 15270174267aSFredrik Holmqvist ACPI_ERST_ADD_VALUE = 10, 15280174267aSFredrik Holmqvist ACPI_ERST_SUBTRACT_VALUE = 11, 15290174267aSFredrik Holmqvist ACPI_ERST_STALL = 12, 15300174267aSFredrik Holmqvist ACPI_ERST_STALL_WHILE_TRUE = 13, 15310174267aSFredrik Holmqvist ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 15320174267aSFredrik Holmqvist ACPI_ERST_GOTO = 15, 15330174267aSFredrik Holmqvist ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 15340174267aSFredrik Holmqvist ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 15350174267aSFredrik Holmqvist ACPI_ERST_MOVE_DATA = 18, 15360174267aSFredrik Holmqvist ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 15370174267aSFredrik Holmqvist }; 15380174267aSFredrik Holmqvist 15390174267aSFredrik Holmqvist /* Command status return values */ 15400174267aSFredrik Holmqvist 15410174267aSFredrik Holmqvist enum AcpiErstCommandStatus 15420174267aSFredrik Holmqvist { 15430ffed378SFredrik Holmqvist ACPI_ERST_SUCCESS = 0, 15440174267aSFredrik Holmqvist ACPI_ERST_NO_SPACE = 1, 15450174267aSFredrik Holmqvist ACPI_ERST_NOT_AVAILABLE = 2, 15460174267aSFredrik Holmqvist ACPI_ERST_FAILURE = 3, 15470174267aSFredrik Holmqvist ACPI_ERST_RECORD_EMPTY = 4, 15480174267aSFredrik Holmqvist ACPI_ERST_NOT_FOUND = 5, 15490174267aSFredrik Holmqvist ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ 15500174267aSFredrik Holmqvist }; 15510174267aSFredrik Holmqvist 15520174267aSFredrik Holmqvist 15530174267aSFredrik Holmqvist /* Error Record Serialization Information */ 15540174267aSFredrik Holmqvist 15550174267aSFredrik Holmqvist typedef struct acpi_erst_info 15560174267aSFredrik Holmqvist { 15570174267aSFredrik Holmqvist UINT16 Signature; /* Should be "ER" */ 15580174267aSFredrik Holmqvist UINT8 Data[48]; 15590174267aSFredrik Holmqvist 15600174267aSFredrik Holmqvist } ACPI_ERST_INFO; 15610174267aSFredrik Holmqvist 15620174267aSFredrik Holmqvist 15630174267aSFredrik Holmqvist /******************************************************************************* 15640174267aSFredrik Holmqvist * 156508c9948cSFredrik Holmqvist * FPDT - Firmware Performance Data Table (ACPI 5.0) 156608c9948cSFredrik Holmqvist * Version 1 156708c9948cSFredrik Holmqvist * 156808c9948cSFredrik Holmqvist ******************************************************************************/ 156908c9948cSFredrik Holmqvist 157008c9948cSFredrik Holmqvist typedef struct acpi_table_fpdt 157108c9948cSFredrik Holmqvist { 157208c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 157308c9948cSFredrik Holmqvist 157408c9948cSFredrik Holmqvist } ACPI_TABLE_FPDT; 157508c9948cSFredrik Holmqvist 157608c9948cSFredrik Holmqvist 157708c9948cSFredrik Holmqvist /* FPDT subtable header (Performance Record Structure) */ 157808c9948cSFredrik Holmqvist 157908c9948cSFredrik Holmqvist typedef struct acpi_fpdt_header 158008c9948cSFredrik Holmqvist { 158108c9948cSFredrik Holmqvist UINT16 Type; 158208c9948cSFredrik Holmqvist UINT8 Length; 158308c9948cSFredrik Holmqvist UINT8 Revision; 158408c9948cSFredrik Holmqvist 158508c9948cSFredrik Holmqvist } ACPI_FPDT_HEADER; 158608c9948cSFredrik Holmqvist 158708c9948cSFredrik Holmqvist /* Values for Type field above */ 158808c9948cSFredrik Holmqvist 158908c9948cSFredrik Holmqvist enum AcpiFpdtType 159008c9948cSFredrik Holmqvist { 159108c9948cSFredrik Holmqvist ACPI_FPDT_TYPE_BOOT = 0, 159208c9948cSFredrik Holmqvist ACPI_FPDT_TYPE_S3PERF = 1 159308c9948cSFredrik Holmqvist }; 159408c9948cSFredrik Holmqvist 159508c9948cSFredrik Holmqvist 159608c9948cSFredrik Holmqvist /* 159708c9948cSFredrik Holmqvist * FPDT subtables 159808c9948cSFredrik Holmqvist */ 159908c9948cSFredrik Holmqvist 160008c9948cSFredrik Holmqvist /* 0: Firmware Basic Boot Performance Record */ 160108c9948cSFredrik Holmqvist 160208c9948cSFredrik Holmqvist typedef struct acpi_fpdt_boot_pointer 160308c9948cSFredrik Holmqvist { 160408c9948cSFredrik Holmqvist ACPI_FPDT_HEADER Header; 160508c9948cSFredrik Holmqvist UINT8 Reserved[4]; 160608c9948cSFredrik Holmqvist UINT64 Address; 160708c9948cSFredrik Holmqvist 160808c9948cSFredrik Holmqvist } ACPI_FPDT_BOOT_POINTER; 160908c9948cSFredrik Holmqvist 161008c9948cSFredrik Holmqvist 161108c9948cSFredrik Holmqvist /* 1: S3 Performance Table Pointer Record */ 161208c9948cSFredrik Holmqvist 161308c9948cSFredrik Holmqvist typedef struct acpi_fpdt_s3pt_pointer 161408c9948cSFredrik Holmqvist { 161508c9948cSFredrik Holmqvist ACPI_FPDT_HEADER Header; 161608c9948cSFredrik Holmqvist UINT8 Reserved[4]; 161708c9948cSFredrik Holmqvist UINT64 Address; 161808c9948cSFredrik Holmqvist 161908c9948cSFredrik Holmqvist } ACPI_FPDT_S3PT_POINTER; 162008c9948cSFredrik Holmqvist 162108c9948cSFredrik Holmqvist 162208c9948cSFredrik Holmqvist /* 162308c9948cSFredrik Holmqvist * S3PT - S3 Performance Table. This table is pointed to by the 162408c9948cSFredrik Holmqvist * S3 Pointer Record above. 162508c9948cSFredrik Holmqvist */ 162608c9948cSFredrik Holmqvist typedef struct acpi_table_s3pt 162708c9948cSFredrik Holmqvist { 162808c9948cSFredrik Holmqvist UINT8 Signature[4]; /* "S3PT" */ 162908c9948cSFredrik Holmqvist UINT32 Length; 163008c9948cSFredrik Holmqvist 163108c9948cSFredrik Holmqvist } ACPI_TABLE_S3PT; 163208c9948cSFredrik Holmqvist 163308c9948cSFredrik Holmqvist 163408c9948cSFredrik Holmqvist /* 163508c9948cSFredrik Holmqvist * S3PT Subtables (Not part of the actual FPDT) 163608c9948cSFredrik Holmqvist */ 163708c9948cSFredrik Holmqvist 163808c9948cSFredrik Holmqvist /* Values for Type field in S3PT header */ 163908c9948cSFredrik Holmqvist 164008c9948cSFredrik Holmqvist enum AcpiS3ptType 164108c9948cSFredrik Holmqvist { 164208c9948cSFredrik Holmqvist ACPI_S3PT_TYPE_RESUME = 0, 164308c9948cSFredrik Holmqvist ACPI_S3PT_TYPE_SUSPEND = 1, 164408c9948cSFredrik Holmqvist ACPI_FPDT_BOOT_PERFORMANCE = 2 164508c9948cSFredrik Holmqvist }; 164608c9948cSFredrik Holmqvist 164708c9948cSFredrik Holmqvist typedef struct acpi_s3pt_resume 164808c9948cSFredrik Holmqvist { 164908c9948cSFredrik Holmqvist ACPI_FPDT_HEADER Header; 165008c9948cSFredrik Holmqvist UINT32 ResumeCount; 165108c9948cSFredrik Holmqvist UINT64 FullResume; 165208c9948cSFredrik Holmqvist UINT64 AverageResume; 165308c9948cSFredrik Holmqvist 165408c9948cSFredrik Holmqvist } ACPI_S3PT_RESUME; 165508c9948cSFredrik Holmqvist 165608c9948cSFredrik Holmqvist typedef struct acpi_s3pt_suspend 165708c9948cSFredrik Holmqvist { 165808c9948cSFredrik Holmqvist ACPI_FPDT_HEADER Header; 165908c9948cSFredrik Holmqvist UINT64 SuspendStart; 166008c9948cSFredrik Holmqvist UINT64 SuspendEnd; 166108c9948cSFredrik Holmqvist 166208c9948cSFredrik Holmqvist } ACPI_S3PT_SUSPEND; 166308c9948cSFredrik Holmqvist 166408c9948cSFredrik Holmqvist 166508c9948cSFredrik Holmqvist /* 166608c9948cSFredrik Holmqvist * FPDT Boot Performance Record (Not part of the actual FPDT) 166708c9948cSFredrik Holmqvist */ 166808c9948cSFredrik Holmqvist typedef struct acpi_fpdt_boot 166908c9948cSFredrik Holmqvist { 167008c9948cSFredrik Holmqvist ACPI_FPDT_HEADER Header; 167108c9948cSFredrik Holmqvist UINT8 Reserved[4]; 167208c9948cSFredrik Holmqvist UINT64 ResetEnd; 167308c9948cSFredrik Holmqvist UINT64 LoadStart; 167408c9948cSFredrik Holmqvist UINT64 StartupStart; 167508c9948cSFredrik Holmqvist UINT64 ExitServicesEntry; 167608c9948cSFredrik Holmqvist UINT64 ExitServicesExit; 167708c9948cSFredrik Holmqvist 167808c9948cSFredrik Holmqvist } ACPI_FPDT_BOOT; 167908c9948cSFredrik Holmqvist 168008c9948cSFredrik Holmqvist 168108c9948cSFredrik Holmqvist /******************************************************************************* 168208c9948cSFredrik Holmqvist * 168308c9948cSFredrik Holmqvist * GTDT - Generic Timer Description Table (ACPI 5.1) 168408c9948cSFredrik Holmqvist * Version 2 168508c9948cSFredrik Holmqvist * 168608c9948cSFredrik Holmqvist ******************************************************************************/ 168708c9948cSFredrik Holmqvist 168808c9948cSFredrik Holmqvist typedef struct acpi_table_gtdt 168908c9948cSFredrik Holmqvist { 169008c9948cSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 169108c9948cSFredrik Holmqvist UINT64 CounterBlockAddresss; 169208c9948cSFredrik Holmqvist UINT32 Reserved; 169308c9948cSFredrik Holmqvist UINT32 SecureEl1Interrupt; 169408c9948cSFredrik Holmqvist UINT32 SecureEl1Flags; 169508c9948cSFredrik Holmqvist UINT32 NonSecureEl1Interrupt; 169608c9948cSFredrik Holmqvist UINT32 NonSecureEl1Flags; 169708c9948cSFredrik Holmqvist UINT32 VirtualTimerInterrupt; 169808c9948cSFredrik Holmqvist UINT32 VirtualTimerFlags; 169908c9948cSFredrik Holmqvist UINT32 NonSecureEl2Interrupt; 170008c9948cSFredrik Holmqvist UINT32 NonSecureEl2Flags; 170108c9948cSFredrik Holmqvist UINT64 CounterReadBlockAddress; 170208c9948cSFredrik Holmqvist UINT32 PlatformTimerCount; 170308c9948cSFredrik Holmqvist UINT32 PlatformTimerOffset; 170408c9948cSFredrik Holmqvist 170508c9948cSFredrik Holmqvist } ACPI_TABLE_GTDT; 170608c9948cSFredrik Holmqvist 170708c9948cSFredrik Holmqvist /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 170808c9948cSFredrik Holmqvist 170908c9948cSFredrik Holmqvist #define ACPI_GTDT_INTERRUPT_MODE (1) 171008c9948cSFredrik Holmqvist #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 171108c9948cSFredrik Holmqvist #define ACPI_GTDT_ALWAYS_ON (1<<2) 171208c9948cSFredrik Holmqvist 17130ffed378SFredrik Holmqvist typedef struct acpi_gtdt_el2 17140ffed378SFredrik Holmqvist { 17150ffed378SFredrik Holmqvist UINT32 VirtualEL2TimerGsiv; 17160ffed378SFredrik Holmqvist UINT32 VirtualEL2TimerFlags; 17170ffed378SFredrik Holmqvist } ACPI_GTDT_EL2; 17180ffed378SFredrik Holmqvist 171908c9948cSFredrik Holmqvist 172008c9948cSFredrik Holmqvist /* Common GTDT subtable header */ 172108c9948cSFredrik Holmqvist 172208c9948cSFredrik Holmqvist typedef struct acpi_gtdt_header 172308c9948cSFredrik Holmqvist { 172408c9948cSFredrik Holmqvist UINT8 Type; 172508c9948cSFredrik Holmqvist UINT16 Length; 172608c9948cSFredrik Holmqvist 172708c9948cSFredrik Holmqvist } ACPI_GTDT_HEADER; 172808c9948cSFredrik Holmqvist 172908c9948cSFredrik Holmqvist /* Values for GTDT subtable type above */ 173008c9948cSFredrik Holmqvist 173108c9948cSFredrik Holmqvist enum AcpiGtdtType 173208c9948cSFredrik Holmqvist { 173308c9948cSFredrik Holmqvist ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 173408c9948cSFredrik Holmqvist ACPI_GTDT_TYPE_WATCHDOG = 1, 173508c9948cSFredrik Holmqvist ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 173608c9948cSFredrik Holmqvist }; 173708c9948cSFredrik Holmqvist 173808c9948cSFredrik Holmqvist 173908c9948cSFredrik Holmqvist /* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 174008c9948cSFredrik Holmqvist 174108c9948cSFredrik Holmqvist /* 0: Generic Timer Block */ 174208c9948cSFredrik Holmqvist 174308c9948cSFredrik Holmqvist typedef struct acpi_gtdt_timer_block 174408c9948cSFredrik Holmqvist { 174508c9948cSFredrik Holmqvist ACPI_GTDT_HEADER Header; 174608c9948cSFredrik Holmqvist UINT8 Reserved; 174708c9948cSFredrik Holmqvist UINT64 BlockAddress; 174808c9948cSFredrik Holmqvist UINT32 TimerCount; 174908c9948cSFredrik Holmqvist UINT32 TimerOffset; 175008c9948cSFredrik Holmqvist 175108c9948cSFredrik Holmqvist } ACPI_GTDT_TIMER_BLOCK; 175208c9948cSFredrik Holmqvist 175308c9948cSFredrik Holmqvist /* Timer Sub-Structure, one per timer */ 175408c9948cSFredrik Holmqvist 175508c9948cSFredrik Holmqvist typedef struct acpi_gtdt_timer_entry 175608c9948cSFredrik Holmqvist { 175708c9948cSFredrik Holmqvist UINT8 FrameNumber; 175808c9948cSFredrik Holmqvist UINT8 Reserved[3]; 175908c9948cSFredrik Holmqvist UINT64 BaseAddress; 176008c9948cSFredrik Holmqvist UINT64 El0BaseAddress; 176108c9948cSFredrik Holmqvist UINT32 TimerInterrupt; 176208c9948cSFredrik Holmqvist UINT32 TimerFlags; 176308c9948cSFredrik Holmqvist UINT32 VirtualTimerInterrupt; 176408c9948cSFredrik Holmqvist UINT32 VirtualTimerFlags; 176508c9948cSFredrik Holmqvist UINT32 CommonFlags; 176608c9948cSFredrik Holmqvist 176708c9948cSFredrik Holmqvist } ACPI_GTDT_TIMER_ENTRY; 176808c9948cSFredrik Holmqvist 176908c9948cSFredrik Holmqvist /* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 177008c9948cSFredrik Holmqvist 177108c9948cSFredrik Holmqvist #define ACPI_GTDT_GT_IRQ_MODE (1) 177208c9948cSFredrik Holmqvist #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 177308c9948cSFredrik Holmqvist 177408c9948cSFredrik Holmqvist /* Flag Definitions: CommonFlags above */ 177508c9948cSFredrik Holmqvist 177608c9948cSFredrik Holmqvist #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 177708c9948cSFredrik Holmqvist #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 177808c9948cSFredrik Holmqvist 177908c9948cSFredrik Holmqvist 178008c9948cSFredrik Holmqvist /* 1: SBSA Generic Watchdog Structure */ 178108c9948cSFredrik Holmqvist 178208c9948cSFredrik Holmqvist typedef struct acpi_gtdt_watchdog 178308c9948cSFredrik Holmqvist { 178408c9948cSFredrik Holmqvist ACPI_GTDT_HEADER Header; 178508c9948cSFredrik Holmqvist UINT8 Reserved; 178608c9948cSFredrik Holmqvist UINT64 RefreshFrameAddress; 178708c9948cSFredrik Holmqvist UINT64 ControlFrameAddress; 178808c9948cSFredrik Holmqvist UINT32 TimerInterrupt; 178908c9948cSFredrik Holmqvist UINT32 TimerFlags; 179008c9948cSFredrik Holmqvist 179108c9948cSFredrik Holmqvist } ACPI_GTDT_WATCHDOG; 179208c9948cSFredrik Holmqvist 179308c9948cSFredrik Holmqvist /* Flag Definitions: TimerFlags above */ 179408c9948cSFredrik Holmqvist 179508c9948cSFredrik Holmqvist #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 179608c9948cSFredrik Holmqvist #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 179708c9948cSFredrik Holmqvist #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 179808c9948cSFredrik Holmqvist 179908c9948cSFredrik Holmqvist 180008c9948cSFredrik Holmqvist /******************************************************************************* 180108c9948cSFredrik Holmqvist * 18020174267aSFredrik Holmqvist * HEST - Hardware Error Source Table (ACPI 4.0) 18030174267aSFredrik Holmqvist * Version 1 18040174267aSFredrik Holmqvist * 18050174267aSFredrik Holmqvist ******************************************************************************/ 18060174267aSFredrik Holmqvist 18070174267aSFredrik Holmqvist typedef struct acpi_table_hest 18080174267aSFredrik Holmqvist { 18090174267aSFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 18100174267aSFredrik Holmqvist UINT32 ErrorSourceCount; 18110174267aSFredrik Holmqvist 18120174267aSFredrik Holmqvist } ACPI_TABLE_HEST; 18130174267aSFredrik Holmqvist 18140174267aSFredrik Holmqvist 18150174267aSFredrik Holmqvist /* HEST subtable header */ 18160174267aSFredrik Holmqvist 18170174267aSFredrik Holmqvist typedef struct acpi_hest_header 18180174267aSFredrik Holmqvist { 18190174267aSFredrik Holmqvist UINT16 Type; 18200174267aSFredrik Holmqvist UINT16 SourceId; 18210174267aSFredrik Holmqvist 18220174267aSFredrik Holmqvist } ACPI_HEST_HEADER; 18230174267aSFredrik Holmqvist 18240174267aSFredrik Holmqvist 18250174267aSFredrik Holmqvist /* Values for Type field above for subtables */ 18260174267aSFredrik Holmqvist 18270174267aSFredrik Holmqvist enum AcpiHestTypes 18280174267aSFredrik Holmqvist { 18290174267aSFredrik Holmqvist ACPI_HEST_TYPE_IA32_CHECK = 0, 18300174267aSFredrik Holmqvist ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, 18310174267aSFredrik Holmqvist ACPI_HEST_TYPE_IA32_NMI = 2, 18320174267aSFredrik Holmqvist ACPI_HEST_TYPE_NOT_USED3 = 3, 18330174267aSFredrik Holmqvist ACPI_HEST_TYPE_NOT_USED4 = 4, 18340174267aSFredrik Holmqvist ACPI_HEST_TYPE_NOT_USED5 = 5, 18350174267aSFredrik Holmqvist ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 18360174267aSFredrik Holmqvist ACPI_HEST_TYPE_AER_ENDPOINT = 7, 18370174267aSFredrik Holmqvist ACPI_HEST_TYPE_AER_BRIDGE = 8, 18380174267aSFredrik Holmqvist ACPI_HEST_TYPE_GENERIC_ERROR = 9, 183974ffd18dSFredrik Holmqvist ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10, 1840ff2e2f81SFredrik Holmqvist ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11, 1841ff2e2f81SFredrik Holmqvist ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */ 18420174267aSFredrik Holmqvist }; 18430174267aSFredrik Holmqvist 18440174267aSFredrik Holmqvist 18450174267aSFredrik Holmqvist /* 18460174267aSFredrik Holmqvist * HEST substructures contained in subtables 18470174267aSFredrik Holmqvist */ 18480174267aSFredrik Holmqvist 18490174267aSFredrik Holmqvist /* 18500174267aSFredrik Holmqvist * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and 18510174267aSFredrik Holmqvist * ACPI_HEST_IA_CORRECTED structures. 18520174267aSFredrik Holmqvist */ 18530174267aSFredrik Holmqvist typedef struct acpi_hest_ia_error_bank 18540174267aSFredrik Holmqvist { 18550174267aSFredrik Holmqvist UINT8 BankNumber; 18560174267aSFredrik Holmqvist UINT8 ClearStatusOnInit; 18570174267aSFredrik Holmqvist UINT8 StatusFormat; 18580174267aSFredrik Holmqvist UINT8 Reserved; 18590174267aSFredrik Holmqvist UINT32 ControlRegister; 18600174267aSFredrik Holmqvist UINT64 ControlData; 18610174267aSFredrik Holmqvist UINT32 StatusRegister; 18620174267aSFredrik Holmqvist UINT32 AddressRegister; 18630174267aSFredrik Holmqvist UINT32 MiscRegister; 18640174267aSFredrik Holmqvist 18650174267aSFredrik Holmqvist } ACPI_HEST_IA_ERROR_BANK; 18660174267aSFredrik Holmqvist 18670174267aSFredrik Holmqvist 18680174267aSFredrik Holmqvist /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ 18690174267aSFredrik Holmqvist 18700174267aSFredrik Holmqvist typedef struct acpi_hest_aer_common 18710174267aSFredrik Holmqvist { 18720174267aSFredrik Holmqvist UINT16 Reserved1; 18730174267aSFredrik Holmqvist UINT8 Flags; 18740174267aSFredrik Holmqvist UINT8 Enabled; 18750174267aSFredrik Holmqvist UINT32 RecordsToPreallocate; 18760174267aSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 1877ad5bbfb8SFredrik Holmqvist UINT32 Bus; /* Bus and Segment numbers */ 18780174267aSFredrik Holmqvist UINT16 Device; 18790174267aSFredrik Holmqvist UINT16 Function; 18800174267aSFredrik Holmqvist UINT16 DeviceControl; 18810174267aSFredrik Holmqvist UINT16 Reserved2; 18820174267aSFredrik Holmqvist UINT32 UncorrectableMask; 18830174267aSFredrik Holmqvist UINT32 UncorrectableSeverity; 18840174267aSFredrik Holmqvist UINT32 CorrectableMask; 18850174267aSFredrik Holmqvist UINT32 AdvancedCapabilities; 18860174267aSFredrik Holmqvist 18870174267aSFredrik Holmqvist } ACPI_HEST_AER_COMMON; 18880174267aSFredrik Holmqvist 18890174267aSFredrik Holmqvist /* Masks for HEST Flags fields */ 18900174267aSFredrik Holmqvist 18910174267aSFredrik Holmqvist #define ACPI_HEST_FIRMWARE_FIRST (1) 18920174267aSFredrik Holmqvist #define ACPI_HEST_GLOBAL (1<<1) 1893ff2e2f81SFredrik Holmqvist #define ACPI_HEST_GHES_ASSIST (1<<2) 18940174267aSFredrik Holmqvist 1895ad5bbfb8SFredrik Holmqvist /* 1896ad5bbfb8SFredrik Holmqvist * Macros to access the bus/segment numbers in Bus field above: 1897ad5bbfb8SFredrik Holmqvist * Bus number is encoded in bits 7:0 1898ad5bbfb8SFredrik Holmqvist * Segment number is encoded in bits 23:8 1899ad5bbfb8SFredrik Holmqvist */ 1900ad5bbfb8SFredrik Holmqvist #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF) 1901ad5bbfb8SFredrik Holmqvist #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF) 1902ad5bbfb8SFredrik Holmqvist 19030174267aSFredrik Holmqvist 19040174267aSFredrik Holmqvist /* Hardware Error Notification */ 19050174267aSFredrik Holmqvist 19060174267aSFredrik Holmqvist typedef struct acpi_hest_notify 19070174267aSFredrik Holmqvist { 19080174267aSFredrik Holmqvist UINT8 Type; 19090174267aSFredrik Holmqvist UINT8 Length; 19100174267aSFredrik Holmqvist UINT16 ConfigWriteEnable; 19110174267aSFredrik Holmqvist UINT32 PollInterval; 19120174267aSFredrik Holmqvist UINT32 Vector; 19130174267aSFredrik Holmqvist UINT32 PollingThresholdValue; 19140174267aSFredrik Holmqvist UINT32 PollingThresholdWindow; 19150174267aSFredrik Holmqvist UINT32 ErrorThresholdValue; 19160174267aSFredrik Holmqvist UINT32 ErrorThresholdWindow; 19170174267aSFredrik Holmqvist 19180174267aSFredrik Holmqvist } ACPI_HEST_NOTIFY; 19190174267aSFredrik Holmqvist 19200174267aSFredrik Holmqvist /* Values for Notify Type field above */ 19210174267aSFredrik Holmqvist 19220174267aSFredrik Holmqvist enum AcpiHestNotifyTypes 19230174267aSFredrik Holmqvist { 19240174267aSFredrik Holmqvist ACPI_HEST_NOTIFY_POLLED = 0, 19250174267aSFredrik Holmqvist ACPI_HEST_NOTIFY_EXTERNAL = 1, 19260174267aSFredrik Holmqvist ACPI_HEST_NOTIFY_LOCAL = 2, 19270174267aSFredrik Holmqvist ACPI_HEST_NOTIFY_SCI = 3, 19280174267aSFredrik Holmqvist ACPI_HEST_NOTIFY_NMI = 4, 19299b0d045cSFredrik Holmqvist ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ 19309b0d045cSFredrik Holmqvist ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ 193174ffd18dSFredrik Holmqvist ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */ 193274ffd18dSFredrik Holmqvist ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */ 193374ffd18dSFredrik Holmqvist ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */ 193474ffd18dSFredrik Holmqvist ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */ 1935ff2e2f81SFredrik Holmqvist ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */ 1936ff2e2f81SFredrik Holmqvist ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */ 19370174267aSFredrik Holmqvist }; 19380174267aSFredrik Holmqvist 19390174267aSFredrik Holmqvist /* Values for ConfigWriteEnable bitfield above */ 19400174267aSFredrik Holmqvist 19410174267aSFredrik Holmqvist #define ACPI_HEST_TYPE (1) 19420174267aSFredrik Holmqvist #define ACPI_HEST_POLL_INTERVAL (1<<1) 19430174267aSFredrik Holmqvist #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) 19440174267aSFredrik Holmqvist #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) 19450174267aSFredrik Holmqvist #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) 19460174267aSFredrik Holmqvist #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) 19470174267aSFredrik Holmqvist 19480174267aSFredrik Holmqvist 19490174267aSFredrik Holmqvist /* 19500174267aSFredrik Holmqvist * HEST subtables 19510174267aSFredrik Holmqvist */ 19520174267aSFredrik Holmqvist 19530174267aSFredrik Holmqvist /* 0: IA32 Machine Check Exception */ 19540174267aSFredrik Holmqvist 19550174267aSFredrik Holmqvist typedef struct acpi_hest_ia_machine_check 19560174267aSFredrik Holmqvist { 19570174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 19580174267aSFredrik Holmqvist UINT16 Reserved1; 1959ff2e2f81SFredrik Holmqvist UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 19600174267aSFredrik Holmqvist UINT8 Enabled; 19610174267aSFredrik Holmqvist UINT32 RecordsToPreallocate; 19620174267aSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 19630174267aSFredrik Holmqvist UINT64 GlobalCapabilityData; 19640174267aSFredrik Holmqvist UINT64 GlobalControlData; 19650174267aSFredrik Holmqvist UINT8 NumHardwareBanks; 19660174267aSFredrik Holmqvist UINT8 Reserved3[7]; 19670174267aSFredrik Holmqvist 19680174267aSFredrik Holmqvist } ACPI_HEST_IA_MACHINE_CHECK; 19690174267aSFredrik Holmqvist 19700174267aSFredrik Holmqvist 19710174267aSFredrik Holmqvist /* 1: IA32 Corrected Machine Check */ 19720174267aSFredrik Holmqvist 19730174267aSFredrik Holmqvist typedef struct acpi_hest_ia_corrected 19740174267aSFredrik Holmqvist { 19750174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 19760174267aSFredrik Holmqvist UINT16 Reserved1; 1977ff2e2f81SFredrik Holmqvist UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 19780174267aSFredrik Holmqvist UINT8 Enabled; 19790174267aSFredrik Holmqvist UINT32 RecordsToPreallocate; 19800174267aSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 19810174267aSFredrik Holmqvist ACPI_HEST_NOTIFY Notify; 19820174267aSFredrik Holmqvist UINT8 NumHardwareBanks; 19830174267aSFredrik Holmqvist UINT8 Reserved2[3]; 19840174267aSFredrik Holmqvist 19850174267aSFredrik Holmqvist } ACPI_HEST_IA_CORRECTED; 19860174267aSFredrik Holmqvist 19870174267aSFredrik Holmqvist 19880174267aSFredrik Holmqvist /* 2: IA32 Non-Maskable Interrupt */ 19890174267aSFredrik Holmqvist 19900174267aSFredrik Holmqvist typedef struct acpi_hest_ia_nmi 19910174267aSFredrik Holmqvist { 19920174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 19930174267aSFredrik Holmqvist UINT32 Reserved; 19940174267aSFredrik Holmqvist UINT32 RecordsToPreallocate; 19950174267aSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 19960174267aSFredrik Holmqvist UINT32 MaxRawDataLength; 19970174267aSFredrik Holmqvist 19980174267aSFredrik Holmqvist } ACPI_HEST_IA_NMI; 19990174267aSFredrik Holmqvist 20000174267aSFredrik Holmqvist 20010174267aSFredrik Holmqvist /* 3,4,5: Not used */ 20020174267aSFredrik Holmqvist 20030174267aSFredrik Holmqvist /* 6: PCI Express Root Port AER */ 20040174267aSFredrik Holmqvist 20050174267aSFredrik Holmqvist typedef struct acpi_hest_aer_root 20060174267aSFredrik Holmqvist { 20070174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 20080174267aSFredrik Holmqvist ACPI_HEST_AER_COMMON Aer; 20090174267aSFredrik Holmqvist UINT32 RootErrorCommand; 20100174267aSFredrik Holmqvist 20110174267aSFredrik Holmqvist } ACPI_HEST_AER_ROOT; 20120174267aSFredrik Holmqvist 20130174267aSFredrik Holmqvist 20140174267aSFredrik Holmqvist /* 7: PCI Express AER (AER Endpoint) */ 20150174267aSFredrik Holmqvist 20160174267aSFredrik Holmqvist typedef struct acpi_hest_aer 20170174267aSFredrik Holmqvist { 20180174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 20190174267aSFredrik Holmqvist ACPI_HEST_AER_COMMON Aer; 20200174267aSFredrik Holmqvist 20210174267aSFredrik Holmqvist } ACPI_HEST_AER; 20220174267aSFredrik Holmqvist 20230174267aSFredrik Holmqvist 20240174267aSFredrik Holmqvist /* 8: PCI Express/PCI-X Bridge AER */ 20250174267aSFredrik Holmqvist 20260174267aSFredrik Holmqvist typedef struct acpi_hest_aer_bridge 20270174267aSFredrik Holmqvist { 20280174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 20290174267aSFredrik Holmqvist ACPI_HEST_AER_COMMON Aer; 20300174267aSFredrik Holmqvist UINT32 UncorrectableMask2; 20310174267aSFredrik Holmqvist UINT32 UncorrectableSeverity2; 20320174267aSFredrik Holmqvist UINT32 AdvancedCapabilities2; 20330174267aSFredrik Holmqvist 20340174267aSFredrik Holmqvist } ACPI_HEST_AER_BRIDGE; 20350174267aSFredrik Holmqvist 20360174267aSFredrik Holmqvist 20370174267aSFredrik Holmqvist /* 9: Generic Hardware Error Source */ 20380174267aSFredrik Holmqvist 20390174267aSFredrik Holmqvist typedef struct acpi_hest_generic 20400174267aSFredrik Holmqvist { 20410174267aSFredrik Holmqvist ACPI_HEST_HEADER Header; 20420174267aSFredrik Holmqvist UINT16 RelatedSourceId; 20430174267aSFredrik Holmqvist UINT8 Reserved; 20440174267aSFredrik Holmqvist UINT8 Enabled; 20450174267aSFredrik Holmqvist UINT32 RecordsToPreallocate; 20460174267aSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 20470174267aSFredrik Holmqvist UINT32 MaxRawDataLength; 20480174267aSFredrik Holmqvist ACPI_GENERIC_ADDRESS ErrorStatusAddress; 20490174267aSFredrik Holmqvist ACPI_HEST_NOTIFY Notify; 20500174267aSFredrik Holmqvist UINT32 ErrorBlockLength; 20510174267aSFredrik Holmqvist 20520174267aSFredrik Holmqvist } ACPI_HEST_GENERIC; 20530174267aSFredrik Holmqvist 20540174267aSFredrik Holmqvist 205574ffd18dSFredrik Holmqvist /* 10: Generic Hardware Error Source, version 2 */ 205674ffd18dSFredrik Holmqvist 205774ffd18dSFredrik Holmqvist typedef struct acpi_hest_generic_v2 205874ffd18dSFredrik Holmqvist { 205974ffd18dSFredrik Holmqvist ACPI_HEST_HEADER Header; 206074ffd18dSFredrik Holmqvist UINT16 RelatedSourceId; 206174ffd18dSFredrik Holmqvist UINT8 Reserved; 206274ffd18dSFredrik Holmqvist UINT8 Enabled; 206374ffd18dSFredrik Holmqvist UINT32 RecordsToPreallocate; 206474ffd18dSFredrik Holmqvist UINT32 MaxSectionsPerRecord; 206574ffd18dSFredrik Holmqvist UINT32 MaxRawDataLength; 206674ffd18dSFredrik Holmqvist ACPI_GENERIC_ADDRESS ErrorStatusAddress; 206774ffd18dSFredrik Holmqvist ACPI_HEST_NOTIFY Notify; 206874ffd18dSFredrik Holmqvist UINT32 ErrorBlockLength; 206974ffd18dSFredrik Holmqvist ACPI_GENERIC_ADDRESS ReadAckRegister; 207074ffd18dSFredrik Holmqvist UINT64 ReadAckPreserve; 207174ffd18dSFredrik Holmqvist UINT64 ReadAckWrite; 207274ffd18dSFredrik Holmqvist 207374ffd18dSFredrik Holmqvist } ACPI_HEST_GENERIC_V2; 207474ffd18dSFredrik Holmqvist 207574ffd18dSFredrik Holmqvist 20760174267aSFredrik Holmqvist /* Generic Error Status block */ 20770174267aSFredrik Holmqvist 20780174267aSFredrik Holmqvist typedef struct acpi_hest_generic_status 20790174267aSFredrik Holmqvist { 20800174267aSFredrik Holmqvist UINT32 BlockStatus; 20810174267aSFredrik Holmqvist UINT32 RawDataOffset; 20820174267aSFredrik Holmqvist UINT32 RawDataLength; 20830174267aSFredrik Holmqvist UINT32 DataLength; 20840174267aSFredrik Holmqvist UINT32 ErrorSeverity; 20850174267aSFredrik Holmqvist 20860174267aSFredrik Holmqvist } ACPI_HEST_GENERIC_STATUS; 20870174267aSFredrik Holmqvist 20880174267aSFredrik Holmqvist /* Values for BlockStatus flags above */ 20890174267aSFredrik Holmqvist 20900174267aSFredrik Holmqvist #define ACPI_HEST_UNCORRECTABLE (1) 20910174267aSFredrik Holmqvist #define ACPI_HEST_CORRECTABLE (1<<1) 20920174267aSFredrik Holmqvist #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) 20930174267aSFredrik Holmqvist #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) 20940174267aSFredrik Holmqvist #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ 20950174267aSFredrik Holmqvist 20960174267aSFredrik Holmqvist 20970174267aSFredrik Holmqvist /* Generic Error Data entry */ 20980174267aSFredrik Holmqvist 20990174267aSFredrik Holmqvist typedef struct acpi_hest_generic_data 21000174267aSFredrik Holmqvist { 21010174267aSFredrik Holmqvist UINT8 SectionType[16]; 21020174267aSFredrik Holmqvist UINT32 ErrorSeverity; 21030174267aSFredrik Holmqvist UINT16 Revision; 21040174267aSFredrik Holmqvist UINT8 ValidationBits; 21050174267aSFredrik Holmqvist UINT8 Flags; 21060174267aSFredrik Holmqvist UINT32 ErrorDataLength; 21070174267aSFredrik Holmqvist UINT8 FruId[16]; 21080174267aSFredrik Holmqvist UINT8 FruText[20]; 21090174267aSFredrik Holmqvist 21100174267aSFredrik Holmqvist } ACPI_HEST_GENERIC_DATA; 21110174267aSFredrik Holmqvist 211274ffd18dSFredrik Holmqvist /* Extension for revision 0x0300 */ 211374ffd18dSFredrik Holmqvist 211474ffd18dSFredrik Holmqvist typedef struct acpi_hest_generic_data_v300 211574ffd18dSFredrik Holmqvist { 211674ffd18dSFredrik Holmqvist UINT8 SectionType[16]; 211774ffd18dSFredrik Holmqvist UINT32 ErrorSeverity; 211874ffd18dSFredrik Holmqvist UINT16 Revision; 211974ffd18dSFredrik Holmqvist UINT8 ValidationBits; 212074ffd18dSFredrik Holmqvist UINT8 Flags; 212174ffd18dSFredrik Holmqvist UINT32 ErrorDataLength; 212274ffd18dSFredrik Holmqvist UINT8 FruId[16]; 212374ffd18dSFredrik Holmqvist UINT8 FruText[20]; 212474ffd18dSFredrik Holmqvist UINT64 TimeStamp; 212574ffd18dSFredrik Holmqvist 212674ffd18dSFredrik Holmqvist } ACPI_HEST_GENERIC_DATA_V300; 212774ffd18dSFredrik Holmqvist 212874ffd18dSFredrik Holmqvist /* Values for ErrorSeverity above */ 212974ffd18dSFredrik Holmqvist 213074ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0 213174ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_ERROR_FATAL 1 213274ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_ERROR_CORRECTED 2 213374ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_ERROR_NONE 3 213474ffd18dSFredrik Holmqvist 213574ffd18dSFredrik Holmqvist /* Flags for ValidationBits above */ 213674ffd18dSFredrik Holmqvist 213774ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_VALID_FRU_ID (1) 213874ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1) 213974ffd18dSFredrik Holmqvist #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2) 214074ffd18dSFredrik Holmqvist 21410174267aSFredrik Holmqvist 2142ff2e2f81SFredrik Holmqvist /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */ 2143ff2e2f81SFredrik Holmqvist 2144ff2e2f81SFredrik Holmqvist typedef struct acpi_hest_ia_deferred_check 2145ff2e2f81SFredrik Holmqvist { 2146ff2e2f81SFredrik Holmqvist ACPI_HEST_HEADER Header; 2147ff2e2f81SFredrik Holmqvist UINT16 Reserved1; 2148ff2e2f81SFredrik Holmqvist UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */ 2149ff2e2f81SFredrik Holmqvist UINT8 Enabled; 2150ff2e2f81SFredrik Holmqvist UINT32 RecordsToPreallocate; 2151ff2e2f81SFredrik Holmqvist UINT32 MaxSectionsPerRecord; 2152ff2e2f81SFredrik Holmqvist ACPI_HEST_NOTIFY Notify; 2153ff2e2f81SFredrik Holmqvist UINT8 NumHardwareBanks; 2154ff2e2f81SFredrik Holmqvist UINT8 Reserved2[3]; 2155ff2e2f81SFredrik Holmqvist 2156ff2e2f81SFredrik Holmqvist } ACPI_HEST_IA_DEFERRED_CHECK; 2157ff2e2f81SFredrik Holmqvist 2158ff2e2f81SFredrik Holmqvist 2159ff2e2f81SFredrik Holmqvist /******************************************************************************* 2160ff2e2f81SFredrik Holmqvist * 21610ffed378SFredrik Holmqvist * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3) 2162ff2e2f81SFredrik Holmqvist * 2163ff2e2f81SFredrik Holmqvist ******************************************************************************/ 2164ff2e2f81SFredrik Holmqvist 2165ff2e2f81SFredrik Holmqvist typedef struct acpi_table_hmat 2166ff2e2f81SFredrik Holmqvist { 2167ff2e2f81SFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2168ff2e2f81SFredrik Holmqvist UINT32 Reserved; 2169ff2e2f81SFredrik Holmqvist 2170ff2e2f81SFredrik Holmqvist } ACPI_TABLE_HMAT; 2171ff2e2f81SFredrik Holmqvist 2172ff2e2f81SFredrik Holmqvist 2173ff2e2f81SFredrik Holmqvist /* Values for HMAT structure types */ 2174ff2e2f81SFredrik Holmqvist 2175ff2e2f81SFredrik Holmqvist enum AcpiHmatType 2176ff2e2f81SFredrik Holmqvist { 21770ffed378SFredrik Holmqvist ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */ 2178ff2e2f81SFredrik Holmqvist ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */ 2179ff2e2f81SFredrik Holmqvist ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */ 2180ff2e2f81SFredrik Holmqvist ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 2181ff2e2f81SFredrik Holmqvist }; 2182ff2e2f81SFredrik Holmqvist 2183ff2e2f81SFredrik Holmqvist typedef struct acpi_hmat_structure 2184ff2e2f81SFredrik Holmqvist { 2185ff2e2f81SFredrik Holmqvist UINT16 Type; 2186ff2e2f81SFredrik Holmqvist UINT16 Reserved; 2187ff2e2f81SFredrik Holmqvist UINT32 Length; 2188ff2e2f81SFredrik Holmqvist 2189ff2e2f81SFredrik Holmqvist } ACPI_HMAT_STRUCTURE; 2190ff2e2f81SFredrik Holmqvist 2191ff2e2f81SFredrik Holmqvist 2192ff2e2f81SFredrik Holmqvist /* 2193ff2e2f81SFredrik Holmqvist * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE 2194ff2e2f81SFredrik Holmqvist */ 2195ff2e2f81SFredrik Holmqvist 21960ffed378SFredrik Holmqvist /* 0: Memory proximity domain attributes */ 2197ff2e2f81SFredrik Holmqvist 21980ffed378SFredrik Holmqvist typedef struct acpi_hmat_proximity_domain 2199ff2e2f81SFredrik Holmqvist { 2200ff2e2f81SFredrik Holmqvist ACPI_HMAT_STRUCTURE Header; 2201ff2e2f81SFredrik Holmqvist UINT16 Flags; 2202ff2e2f81SFredrik Holmqvist UINT16 Reserved1; 22030ffed378SFredrik Holmqvist UINT32 InitiatorPD; /* Attached Initiator proximity domain */ 2204ff2e2f81SFredrik Holmqvist UINT32 MemoryPD; /* Memory proximity domain */ 2205ff2e2f81SFredrik Holmqvist UINT32 Reserved2; 22060ffed378SFredrik Holmqvist UINT64 Reserved3; 22070ffed378SFredrik Holmqvist UINT64 Reserved4; 2208ff2e2f81SFredrik Holmqvist 22090ffed378SFredrik Holmqvist } ACPI_HMAT_PROXIMITY_DOMAIN; 2210ff2e2f81SFredrik Holmqvist 2211ff2e2f81SFredrik Holmqvist /* Masks for Flags field above */ 2212ff2e2f81SFredrik Holmqvist 22130ffed378SFredrik Holmqvist #define ACPI_HMAT_INITIATOR_PD_VALID (1) /* 1: InitiatorPD field is valid */ 2214ff2e2f81SFredrik Holmqvist 2215ff2e2f81SFredrik Holmqvist 2216ff2e2f81SFredrik Holmqvist /* 1: System locality latency and bandwidth information */ 2217ff2e2f81SFredrik Holmqvist 2218ff2e2f81SFredrik Holmqvist typedef struct acpi_hmat_locality 2219ff2e2f81SFredrik Holmqvist { 2220ff2e2f81SFredrik Holmqvist ACPI_HMAT_STRUCTURE Header; 2221ff2e2f81SFredrik Holmqvist UINT8 Flags; 2222ff2e2f81SFredrik Holmqvist UINT8 DataType; 222315338de9SPulkoMandy UINT8 MinTransferSize; 222415338de9SPulkoMandy UINT8 Reserved1; 2225ff2e2f81SFredrik Holmqvist UINT32 NumberOfInitiatorPDs; 2226ff2e2f81SFredrik Holmqvist UINT32 NumberOfTargetPDs; 2227ff2e2f81SFredrik Holmqvist UINT32 Reserved2; 2228ff2e2f81SFredrik Holmqvist UINT64 EntryBaseUnit; 2229ff2e2f81SFredrik Holmqvist 2230ff2e2f81SFredrik Holmqvist } ACPI_HMAT_LOCALITY; 2231ff2e2f81SFredrik Holmqvist 2232ff2e2f81SFredrik Holmqvist /* Masks for Flags field above */ 2233ff2e2f81SFredrik Holmqvist 223415338de9SPulkoMandy #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */ 2235ff2e2f81SFredrik Holmqvist 223615338de9SPulkoMandy /* Values for Memory Hierarchy flags */ 2237ff2e2f81SFredrik Holmqvist 2238ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_MEMORY 0 22390ffed378SFredrik Holmqvist #define ACPI_HMAT_1ST_LEVEL_CACHE 1 22400ffed378SFredrik Holmqvist #define ACPI_HMAT_2ND_LEVEL_CACHE 2 22410ffed378SFredrik Holmqvist #define ACPI_HMAT_3RD_LEVEL_CACHE 3 224215338de9SPulkoMandy #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */ 224315338de9SPulkoMandy #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */ 224415338de9SPulkoMandy 2245ff2e2f81SFredrik Holmqvist 2246ff2e2f81SFredrik Holmqvist /* Values for DataType field above */ 2247ff2e2f81SFredrik Holmqvist 2248ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_ACCESS_LATENCY 0 2249ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_READ_LATENCY 1 2250ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_WRITE_LATENCY 2 2251ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_ACCESS_BANDWIDTH 3 2252ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_READ_BANDWIDTH 4 2253ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_WRITE_BANDWIDTH 5 2254ff2e2f81SFredrik Holmqvist 2255ff2e2f81SFredrik Holmqvist 2256ff2e2f81SFredrik Holmqvist /* 2: Memory side cache information */ 2257ff2e2f81SFredrik Holmqvist 2258ff2e2f81SFredrik Holmqvist typedef struct acpi_hmat_cache 2259ff2e2f81SFredrik Holmqvist { 2260ff2e2f81SFredrik Holmqvist ACPI_HMAT_STRUCTURE Header; 2261ff2e2f81SFredrik Holmqvist UINT32 MemoryPD; 2262ff2e2f81SFredrik Holmqvist UINT32 Reserved1; 2263ff2e2f81SFredrik Holmqvist UINT64 CacheSize; 2264ff2e2f81SFredrik Holmqvist UINT32 CacheAttributes; 2265ff2e2f81SFredrik Holmqvist UINT16 Reserved2; 2266ff2e2f81SFredrik Holmqvist UINT16 NumberOfSMBIOSHandles; 2267ff2e2f81SFredrik Holmqvist 2268ff2e2f81SFredrik Holmqvist } ACPI_HMAT_CACHE; 2269ff2e2f81SFredrik Holmqvist 2270ff2e2f81SFredrik Holmqvist /* Masks for CacheAttributes field above */ 2271ff2e2f81SFredrik Holmqvist 2272ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F) 2273ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CACHE_LEVEL (0x000000F0) 2274ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00) 2275ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_WRITE_POLICY (0x0000F000) 2276ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000) 2277ff2e2f81SFredrik Holmqvist 2278ff2e2f81SFredrik Holmqvist /* Values for cache associativity flag */ 2279ff2e2f81SFredrik Holmqvist 2280ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CA_NONE (0) 2281ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CA_DIRECT_MAPPED (1) 2282ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2) 2283ff2e2f81SFredrik Holmqvist 2284ff2e2f81SFredrik Holmqvist /* Values for write policy flag */ 2285ff2e2f81SFredrik Holmqvist 2286ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CP_NONE (0) 2287ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CP_WB (1) 2288ff2e2f81SFredrik Holmqvist #define ACPI_HMAT_CP_WT (2) 2289ff2e2f81SFredrik Holmqvist 2290ff2e2f81SFredrik Holmqvist 22910174267aSFredrik Holmqvist /******************************************************************************* 22920174267aSFredrik Holmqvist * 229308c9948cSFredrik Holmqvist * HPET - High Precision Event Timer table 22940174267aSFredrik Holmqvist * Version 1 22950174267aSFredrik Holmqvist * 229608c9948cSFredrik Holmqvist * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 229708c9948cSFredrik Holmqvist * Version 1.0a, October 2004 2298e226d1d0SFredrik Holmqvist * 2299e226d1d0SFredrik Holmqvist ******************************************************************************/ 2300e226d1d0SFredrik Holmqvist 230108c9948cSFredrik Holmqvist typedef struct acpi_table_hpet 2302e226d1d0SFredrik Holmqvist { 2303e226d1d0SFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 230408c9948cSFredrik Holmqvist UINT32 Id; /* Hardware ID of event timer block */ 230508c9948cSFredrik Holmqvist ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 230608c9948cSFredrik Holmqvist UINT8 Sequence; /* HPET sequence number */ 230708c9948cSFredrik Holmqvist UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 2308ff2e2f81SFredrik Holmqvist UINT8 Flags; 2309ff2e2f81SFredrik Holmqvist 231008c9948cSFredrik Holmqvist } ACPI_TABLE_HPET; 2311ff2e2f81SFredrik Holmqvist 231208c9948cSFredrik Holmqvist /* Masks for Flags field above */ 2313ff2e2f81SFredrik Holmqvist 231408c9948cSFredrik Holmqvist #define ACPI_HPET_PAGE_PROTECT_MASK (3) 231508c9948cSFredrik Holmqvist 231608c9948cSFredrik Holmqvist /* Values for Page Protect flags */ 231708c9948cSFredrik Holmqvist 231808c9948cSFredrik Holmqvist enum AcpiHpetPageProtect 231908c9948cSFredrik Holmqvist { 232008c9948cSFredrik Holmqvist ACPI_HPET_NO_PAGE_PROTECT = 0, 232108c9948cSFredrik Holmqvist ACPI_HPET_PAGE_PROTECT4 = 1, 232208c9948cSFredrik Holmqvist ACPI_HPET_PAGE_PROTECT64 = 2 232308c9948cSFredrik Holmqvist }; 2324ff2e2f81SFredrik Holmqvist 2325ff2e2f81SFredrik Holmqvist 2326ff2e2f81SFredrik Holmqvist /******************************************************************************* 2327ff2e2f81SFredrik Holmqvist * 232808c9948cSFredrik Holmqvist * IBFT - Boot Firmware Table 2329ff2e2f81SFredrik Holmqvist * Version 1 2330ff2e2f81SFredrik Holmqvist * 233108c9948cSFredrik Holmqvist * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 233208c9948cSFredrik Holmqvist * Specification", Version 1.01, March 1, 2007 233308c9948cSFredrik Holmqvist * 233408c9948cSFredrik Holmqvist * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 233508c9948cSFredrik Holmqvist * Therefore, it is not currently supported by the disassembler. 233608c9948cSFredrik Holmqvist * 2337ff2e2f81SFredrik Holmqvist ******************************************************************************/ 2338ff2e2f81SFredrik Holmqvist 233908c9948cSFredrik Holmqvist typedef struct acpi_table_ibft 2340ff2e2f81SFredrik Holmqvist { 2341ff2e2f81SFredrik Holmqvist ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 234208c9948cSFredrik Holmqvist UINT8 Reserved[12]; 2343ff2e2f81SFredrik Holmqvist 234408c9948cSFredrik Holmqvist } ACPI_TABLE_IBFT; 234508c9948cSFredrik Holmqvist 234608c9948cSFredrik Holmqvist 234708c9948cSFredrik Holmqvist /* IBFT common subtable header */ 234808c9948cSFredrik Holmqvist 234908c9948cSFredrik Holmqvist typedef struct acpi_ibft_header 235008c9948cSFredrik Holmqvist { 235108c9948cSFredrik Holmqvist UINT8 Type; 235208c9948cSFredrik Holmqvist UINT8 Version; 235308c9948cSFredrik Holmqvist UINT16 Length; 235408c9948cSFredrik Holmqvist UINT8 Index; 235508c9948cSFredrik Holmqvist UINT8 Flags; 235608c9948cSFredrik Holmqvist 235708c9948cSFredrik Holmqvist } ACPI_IBFT_HEADER; 2358ff2e2f81SFredrik Holmqvist 2359ff2e2f81SFredrik Holmqvist /* Values for Type field above */ 2360ff2e2f81SFredrik Holmqvist 236108c9948cSFredrik Holmqvist enum AcpiIbftType 2362ff2e2f81SFredrik Holmqvist { 236308c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_NOT_USED = 0, 236408c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_CONTROL = 1, 236508c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_INITIATOR = 2, 236608c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_NIC = 3, 236708c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_TARGET = 4, 236808c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_EXTENSIONS = 5, 236908c9948cSFredrik Holmqvist ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 2370ff2e2f81SFredrik Holmqvist }; 2371ff2e2f81SFredrik Holmqvist 2372ff2e2f81SFredrik Holmqvist 237308c9948cSFredrik Holmqvist /* IBFT subtables */ 2374ff2e2f81SFredrik Holmqvist 237508c9948cSFredrik Holmqvist typedef struct acpi_ibft_control 2376ff2e2f81SFredrik Holmqvist { 237708c9948cSFredrik Holmqvist ACPI_IBFT_HEADER Header; 237808c9948cSFredrik Holmqvist UINT16 Extensions; 237908c9948cSFredrik Holmqvist UINT16 InitiatorOffset; 238008c9948cSFredrik Holmqvist UINT16 Nic0Offset; 238108c9948cSFredrik Holmqvist UINT16 Target0Offset; 238208c9948cSFredrik Holmqvist UINT16 Nic1Offset; 238308c9948cSFredrik Holmqvist UINT16 Target1Offset; 2384ff2e2f81SFredrik Holmqvist 238508c9948cSFredrik Holmqvist } ACPI_IBFT_CONTROL; 2386ff2e2f81SFredrik Holmqvist 238708c9948cSFredrik Holmqvist typedef struct acpi_ibft_initiator 2388ff2e2f81SFredrik Holmqvist { 238908c9948cSFredrik Holmqvist ACPI_IBFT_HEADER Header; 239008c9948cSFredrik Holmqvist UINT8 SnsServer[16]; 239108c9948cSFredrik Holmqvist UINT8 SlpServer[16]; 239208c9948cSFredrik Holmqvist UINT8 PrimaryServer[16]; 239308c9948cSFredrik Holmqvist UINT8 SecondaryServer[16]; 239408c9948cSFredrik Holmqvist UINT16 NameLength; 239508c9948cSFredrik Holmqvist UINT16 NameOffset; 2396ff2e2f81SFredrik Holmqvist 239708c9948cSFredrik Holmqvist } ACPI_IBFT_INITIATOR; 2398ff2e2f81SFredrik Holmqvist 239908c9948cSFredrik Holmqvist typedef struct acpi_ibft_nic 2400ff2e2f81SFredrik Holmqvist { 240108c9948cSFredrik Holmqvist ACPI_IBFT_HEADER Header; 240208c9948cSFredrik Holmqvist UINT8 IpAddress[16]; 240308c9948cSFredrik Holmqvist UINT8 SubnetMaskPrefix; 240408c9948cSFredrik Holmqvist UINT8 Origin; 240508c9948cSFredrik Holmqvist UINT8 Gateway[16]; 240608c9948cSFredrik Holmqvist UINT8 PrimaryDns[16]; 240708c9948cSFredrik Holmqvist UINT8 SecondaryDns[16]; 240808c9948cSFredrik Holmqvist UINT8 Dhcp[16]; 240908c9948cSFredrik Holmqvist UINT16 Vlan; 241008c9948cSFredrik Holmqvist UINT8 MacAddress[6]; 241108c9948cSFredrik Holmqvist UINT16 PciAddress; 241208c9948cSFredrik Holmqvist UINT16 NameLength; 241308c9948cSFredrik Holmqvist UINT16 NameOffset; 2414ff2e2f81SFredrik Holmqvist 241508c9948cSFredrik Holmqvist } ACPI_IBFT_NIC; 2416ff2e2f81SFredrik Holmqvist 241708c9948cSFredrik Holmqvist typedef struct acpi_ibft_target 24180174267aSFredrik Holmqvist { 241908c9948cSFredrik Holmqvist ACPI_IBFT_HEADER Header; 242008c9948cSFredrik Holmqvist UINT8 TargetIpAddress[16]; 242108c9948cSFredrik Holmqvist UINT16 TargetIpSocket; 242208c9948cSFredrik Holmqvist UINT8 TargetBootLun[8]; 242308c9948cSFredrik Holmqvist UINT8 ChapType; 242408c9948cSFredrik Holmqvist UINT8 NicAssociation; 242508c9948cSFredrik Holmqvist UINT16 TargetNameLength; 242608c9948cSFredrik Holmqvist UINT16 TargetNameOffset; 242708c9948cSFredrik Holmqvist UINT16 ChapNameLength; 242808c9948cSFredrik Holmqvist UINT16 ChapNameOffset; 242908c9948cSFredrik Holmqvist UINT16 ChapSecretLength; 243008c9948cSFredrik Holmqvist UINT16 ChapSecretOffset; 243108c9948cSFredrik Holmqvist UINT16 ReverseChapNameLength; 243208c9948cSFredrik Holmqvist UINT16 ReverseChapNameOffset; 243308c9948cSFredrik Holmqvist UINT16 ReverseChapSecretLength; 243408c9948cSFredrik Holmqvist UINT16 ReverseChapSecretOffset; 24350174267aSFredrik Holmqvist 243608c9948cSFredrik Holmqvist } ACPI_IBFT_TARGET; 2437ff2e2f81SFredrik Holmqvist 2438ff2e2f81SFredrik Holmqvist 24390174267aSFredrik Holmqvist /* Reset to default packing */ 24400174267aSFredrik Holmqvist 24410174267aSFredrik Holmqvist #pragma pack() 24420174267aSFredrik Holmqvist 24430174267aSFredrik Holmqvist #endif /* __ACTBL1_H__ */ 2444