13f0275a0SJung-uk Kim /****************************************************************************** 23f0275a0SJung-uk Kim * 33f0275a0SJung-uk Kim * Name: actbl3.h - ACPI Table Definitions 43f0275a0SJung-uk Kim * 53f0275a0SJung-uk Kim *****************************************************************************/ 63f0275a0SJung-uk Kim 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 1129f37e9bSJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp. 123f0275a0SJung-uk Kim * All rights reserved. 133f0275a0SJung-uk Kim * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-uk Kim * 1193f0275a0SJung-uk Kim * Redistribution and use in source and binary forms, with or without 1203f0275a0SJung-uk Kim * modification, are permitted provided that the following conditions 1213f0275a0SJung-uk Kim * are met: 1223f0275a0SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 1233f0275a0SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 1243f0275a0SJung-uk Kim * without modification. 1253f0275a0SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1263f0275a0SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 1273f0275a0SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 1283f0275a0SJung-uk Kim * including a substantially similar Disclaimer requirement for further 1293f0275a0SJung-uk Kim * binary redistribution. 1303f0275a0SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 1313f0275a0SJung-uk Kim * of any contributors may be used to endorse or promote products derived 1323f0275a0SJung-uk Kim * from this software without specific prior written permission. 1333f0275a0SJung-uk Kim * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1473f0275a0SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 1483f0275a0SJung-uk Kim * Software Foundation. 1493f0275a0SJung-uk Kim * 1500d84335fSJung-uk Kim *****************************************************************************/ 1513f0275a0SJung-uk Kim 1523f0275a0SJung-uk Kim #ifndef __ACTBL3_H__ 1533f0275a0SJung-uk Kim #define __ACTBL3_H__ 1543f0275a0SJung-uk Kim 1553f0275a0SJung-uk Kim 1563f0275a0SJung-uk Kim /******************************************************************************* 1573f0275a0SJung-uk Kim * 158ff879b07SJung-uk Kim * Additional ACPI Tables 1593f0275a0SJung-uk Kim * 1603f0275a0SJung-uk Kim * These tables are not consumed directly by the ACPICA subsystem, but are 1613f0275a0SJung-uk Kim * included here to support device drivers and the AML disassembler. 1623f0275a0SJung-uk Kim * 1633f0275a0SJung-uk Kim ******************************************************************************/ 1643f0275a0SJung-uk Kim 1653f0275a0SJung-uk Kim 1663f0275a0SJung-uk Kim /* 1673f0275a0SJung-uk Kim * Values for description table header signatures for tables defined in this 1683f0275a0SJung-uk Kim * file. Useful because they make it more difficult to inadvertently type in 1693f0275a0SJung-uk Kim * the wrong signature. 1703f0275a0SJung-uk Kim */ 171ff879b07SJung-uk Kim #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 172ff879b07SJung-uk Kim #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 173ff879b07SJung-uk Kim #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 174ff879b07SJung-uk Kim #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 175ff879b07SJung-uk Kim #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 176a371a5fdSJung-uk Kim #define ACPI_SIG_STAO "STAO" /* Status Override table */ 177ff879b07SJung-uk Kim #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 178ff879b07SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 179ff879b07SJung-uk Kim #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 180cfd1ed46SJung-uk Kim #define ACPI_SIG_VIOT "VIOT" /* Virtual I/O Translation Table */ 181ff879b07SJung-uk Kim #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 182ff879b07SJung-uk Kim #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 183ff879b07SJung-uk Kim #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 184ff879b07SJung-uk Kim #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 185a371a5fdSJung-uk Kim #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 1863ee58df5SJung-uk Kim #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */ 187a371a5fdSJung-uk Kim #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 188ff879b07SJung-uk Kim #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 1893f0275a0SJung-uk Kim 1903f0275a0SJung-uk Kim /* 1913f0275a0SJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 1923f0275a0SJung-uk Kim * the tables are provided by the system BIOS. 1933f0275a0SJung-uk Kim */ 1943f0275a0SJung-uk Kim #pragma pack(1) 1953f0275a0SJung-uk Kim 1963f0275a0SJung-uk Kim /* 1971df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 1981df130f1SJung-uk Kim * 1991df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 2001df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 2011df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 2021df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 2031df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 2041df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 2051df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 2063f0275a0SJung-uk Kim */ 2073f0275a0SJung-uk Kim 2083f0275a0SJung-uk Kim 2093f0275a0SJung-uk Kim /******************************************************************************* 2103f0275a0SJung-uk Kim * 211ff879b07SJung-uk Kim * SLIC - Software Licensing Description Table 212ff879b07SJung-uk Kim * 213ff879b07SJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 214ff879b07SJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 215ff879b07SJung-uk Kim * 216ff879b07SJung-uk Kim ******************************************************************************/ 217ff879b07SJung-uk Kim 218ff879b07SJung-uk Kim /* Basic SLIC table is only the common ACPI header */ 219ff879b07SJung-uk Kim 220ff879b07SJung-uk Kim typedef struct acpi_table_slic 221ff879b07SJung-uk Kim { 222ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 223ff879b07SJung-uk Kim 224ff879b07SJung-uk Kim } ACPI_TABLE_SLIC; 225ff879b07SJung-uk Kim 226ff879b07SJung-uk Kim 227ff879b07SJung-uk Kim /******************************************************************************* 228ff879b07SJung-uk Kim * 229ff879b07SJung-uk Kim * SLIT - System Locality Distance Information Table 2303f0275a0SJung-uk Kim * Version 1 2313f0275a0SJung-uk Kim * 2323f0275a0SJung-uk Kim ******************************************************************************/ 2333f0275a0SJung-uk Kim 234ff879b07SJung-uk Kim typedef struct acpi_table_slit 2353f0275a0SJung-uk Kim { 2363f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 237ff879b07SJung-uk Kim UINT64 LocalityCount; 238ff879b07SJung-uk Kim UINT8 Entry[1]; /* Real size = localities^2 */ 2393f0275a0SJung-uk Kim 240ff879b07SJung-uk Kim } ACPI_TABLE_SLIT; 241af051161SJung-uk Kim 2423f0275a0SJung-uk Kim 2433f0275a0SJung-uk Kim /******************************************************************************* 2443f0275a0SJung-uk Kim * 245ff879b07SJung-uk Kim * SPCR - Serial Port Console Redirection table 246313a0c13SJung-uk Kim * Version 2 2473f0275a0SJung-uk Kim * 248ff879b07SJung-uk Kim * Conforms to "Serial Port Console Redirection Table", 249ff879b07SJung-uk Kim * Version 1.03, August 10, 2015 250ff879b07SJung-uk Kim * 2513f0275a0SJung-uk Kim ******************************************************************************/ 2523f0275a0SJung-uk Kim 253ff879b07SJung-uk Kim typedef struct acpi_table_spcr 2543f0275a0SJung-uk Kim { 2553f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 256ff879b07SJung-uk Kim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 257ff879b07SJung-uk Kim UINT8 Reserved[3]; 258ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS SerialPort; 259ff879b07SJung-uk Kim UINT8 InterruptType; 260ff879b07SJung-uk Kim UINT8 PcInterrupt; 261ff879b07SJung-uk Kim UINT32 Interrupt; 262ff879b07SJung-uk Kim UINT8 BaudRate; 263ff879b07SJung-uk Kim UINT8 Parity; 264ff879b07SJung-uk Kim UINT8 StopBits; 265ff879b07SJung-uk Kim UINT8 FlowControl; 266ff879b07SJung-uk Kim UINT8 TerminalType; 267ff879b07SJung-uk Kim UINT8 Reserved1; 268ff879b07SJung-uk Kim UINT16 PciDeviceId; 269ff879b07SJung-uk Kim UINT16 PciVendorId; 270ff879b07SJung-uk Kim UINT8 PciBus; 271ff879b07SJung-uk Kim UINT8 PciDevice; 272ff879b07SJung-uk Kim UINT8 PciFunction; 273ff879b07SJung-uk Kim UINT32 PciFlags; 274ff879b07SJung-uk Kim UINT8 PciSegment; 275ff879b07SJung-uk Kim UINT32 Reserved2; 2763f0275a0SJung-uk Kim 277ff879b07SJung-uk Kim } ACPI_TABLE_SPCR; 2783f0275a0SJung-uk Kim 279ff879b07SJung-uk Kim /* Masks for PciFlags field above */ 2803f0275a0SJung-uk Kim 281ff879b07SJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE (1) 282ff879b07SJung-uk Kim 283ff879b07SJung-uk Kim /* Values for Interface Type: See the definition of the DBG2 table */ 2843f0275a0SJung-uk Kim 2853f0275a0SJung-uk Kim 286ff879b07SJung-uk Kim /******************************************************************************* 287ff879b07SJung-uk Kim * 288ff879b07SJung-uk Kim * SPMI - Server Platform Management Interface table 289ff879b07SJung-uk Kim * Version 5 290ff879b07SJung-uk Kim * 291ff879b07SJung-uk Kim * Conforms to "Intelligent Platform Management Interface Specification 292ff879b07SJung-uk Kim * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 293ff879b07SJung-uk Kim * June 12, 2009 markup. 294ff879b07SJung-uk Kim * 295ff879b07SJung-uk Kim ******************************************************************************/ 296313a0c13SJung-uk Kim 297ff879b07SJung-uk Kim typedef struct acpi_table_spmi 298313a0c13SJung-uk Kim { 299ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 300ff879b07SJung-uk Kim UINT8 InterfaceType; 301ff879b07SJung-uk Kim UINT8 Reserved; /* Must be 1 */ 302ff879b07SJung-uk Kim UINT16 SpecRevision; /* Version of IPMI */ 303ff879b07SJung-uk Kim UINT8 InterruptType; 304ff879b07SJung-uk Kim UINT8 GpeNumber; /* GPE assigned */ 305ff879b07SJung-uk Kim UINT8 Reserved1; 306ff879b07SJung-uk Kim UINT8 PciDeviceFlag; 307ff879b07SJung-uk Kim UINT32 Interrupt; 308ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS IpmiRegister; 309ff879b07SJung-uk Kim UINT8 PciSegment; 310ff879b07SJung-uk Kim UINT8 PciBus; 311ff879b07SJung-uk Kim UINT8 PciDevice; 312ff879b07SJung-uk Kim UINT8 PciFunction; 313ff879b07SJung-uk Kim UINT8 Reserved2; 314313a0c13SJung-uk Kim 315ff879b07SJung-uk Kim } ACPI_TABLE_SPMI; 316313a0c13SJung-uk Kim 317ff879b07SJung-uk Kim /* Values for InterfaceType above */ 318313a0c13SJung-uk Kim 319ff879b07SJung-uk Kim enum AcpiSpmiInterfaceTypes 320313a0c13SJung-uk Kim { 321ff879b07SJung-uk Kim ACPI_SPMI_NOT_USED = 0, 322ff879b07SJung-uk Kim ACPI_SPMI_KEYBOARD = 1, 323ff879b07SJung-uk Kim ACPI_SPMI_SMI = 2, 324ff879b07SJung-uk Kim ACPI_SPMI_BLOCK_TRANSFER = 3, 325ff879b07SJung-uk Kim ACPI_SPMI_SMBUS = 4, 326ff879b07SJung-uk Kim ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 327313a0c13SJung-uk Kim }; 328313a0c13SJung-uk Kim 329313a0c13SJung-uk Kim 3303f0275a0SJung-uk Kim /******************************************************************************* 3313f0275a0SJung-uk Kim * 332ff879b07SJung-uk Kim * SRAT - System Resource Affinity Table 333ff879b07SJung-uk Kim * Version 3 3343f0275a0SJung-uk Kim * 3353f0275a0SJung-uk Kim ******************************************************************************/ 3363f0275a0SJung-uk Kim 337ff879b07SJung-uk Kim typedef struct acpi_table_srat 3383f0275a0SJung-uk Kim { 3393f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 340ff879b07SJung-uk Kim UINT32 TableRevision; /* Must be value '1' */ 341ff879b07SJung-uk Kim UINT64 Reserved; /* Reserved, must be zero */ 3423f0275a0SJung-uk Kim 343ff879b07SJung-uk Kim } ACPI_TABLE_SRAT; 3443f0275a0SJung-uk Kim 345313a0c13SJung-uk Kim /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 346313a0c13SJung-uk Kim 347ff879b07SJung-uk Kim enum AcpiSratType 348313a0c13SJung-uk Kim { 349ff879b07SJung-uk Kim ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 350ff879b07SJung-uk Kim ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 351ff879b07SJung-uk Kim ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 352ff879b07SJung-uk Kim ACPI_SRAT_TYPE_GICC_AFFINITY = 3, 353ff879b07SJung-uk Kim ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ 354cd6518c7SJung-uk Kim ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */ 355*1b7a2680SJung-uk Kim ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */ 356*1b7a2680SJung-uk Kim ACPI_SRAT_TYPE_RESERVED = 7 /* 7 and greater are reserved */ 357313a0c13SJung-uk Kim }; 358313a0c13SJung-uk Kim 3593f0275a0SJung-uk Kim /* 360ff879b07SJung-uk Kim * SRAT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 3613f0275a0SJung-uk Kim */ 3623f0275a0SJung-uk Kim 363ff879b07SJung-uk Kim /* 0: Processor Local APIC/SAPIC Affinity */ 3643f0275a0SJung-uk Kim 365ff879b07SJung-uk Kim typedef struct acpi_srat_cpu_affinity 3663f0275a0SJung-uk Kim { 3673f0275a0SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 368ff879b07SJung-uk Kim UINT8 ProximityDomainLo; 369ff879b07SJung-uk Kim UINT8 ApicId; 370af051161SJung-uk Kim UINT32 Flags; 371ff879b07SJung-uk Kim UINT8 LocalSapicEid; 372ff879b07SJung-uk Kim UINT8 ProximityDomainHi[3]; 373ff879b07SJung-uk Kim UINT32 ClockDomain; 374af051161SJung-uk Kim 375ff879b07SJung-uk Kim } ACPI_SRAT_CPU_AFFINITY; 376ff879b07SJung-uk Kim 377ff879b07SJung-uk Kim /* Flags */ 378ff879b07SJung-uk Kim 379ff879b07SJung-uk Kim #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 380af051161SJung-uk Kim 381af051161SJung-uk Kim 382ff879b07SJung-uk Kim /* 1: Memory Affinity */ 3833f0275a0SJung-uk Kim 384ff879b07SJung-uk Kim typedef struct acpi_srat_mem_affinity 3853f0275a0SJung-uk Kim { 386ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 3873f0275a0SJung-uk Kim UINT32 ProximityDomain; 388ff879b07SJung-uk Kim UINT16 Reserved; /* Reserved, must be zero */ 389ff879b07SJung-uk Kim UINT64 BaseAddress; 390ff879b07SJung-uk Kim UINT64 Length; 391ff879b07SJung-uk Kim UINT32 Reserved1; 392ff879b07SJung-uk Kim UINT32 Flags; 393ff879b07SJung-uk Kim UINT64 Reserved2; /* Reserved, must be zero */ 3943f0275a0SJung-uk Kim 395ff879b07SJung-uk Kim } ACPI_SRAT_MEM_AFFINITY; 396ff879b07SJung-uk Kim 397ff879b07SJung-uk Kim /* Flags */ 398ff879b07SJung-uk Kim 399ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 400ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 401ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 4023f0275a0SJung-uk Kim 4033f0275a0SJung-uk Kim 404ff879b07SJung-uk Kim /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 4053f0275a0SJung-uk Kim 406ff879b07SJung-uk Kim typedef struct acpi_srat_x2apic_cpu_affinity 4073f0275a0SJung-uk Kim { 408ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 409ff879b07SJung-uk Kim UINT16 Reserved; /* Reserved, must be zero */ 410ff879b07SJung-uk Kim UINT32 ProximityDomain; 411ff879b07SJung-uk Kim UINT32 ApicId; 412ff879b07SJung-uk Kim UINT32 Flags; 413ff879b07SJung-uk Kim UINT32 ClockDomain; 414ff879b07SJung-uk Kim UINT32 Reserved2; 415ff879b07SJung-uk Kim 416ff879b07SJung-uk Kim } ACPI_SRAT_X2APIC_CPU_AFFINITY; 417ff879b07SJung-uk Kim 418ff879b07SJung-uk Kim /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 419ff879b07SJung-uk Kim 420ff879b07SJung-uk Kim #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 421ff879b07SJung-uk Kim 422ff879b07SJung-uk Kim 423ff879b07SJung-uk Kim /* 3: GICC Affinity (ACPI 5.1) */ 424ff879b07SJung-uk Kim 425ff879b07SJung-uk Kim typedef struct acpi_srat_gicc_affinity 426ff879b07SJung-uk Kim { 427ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 428ff879b07SJung-uk Kim UINT32 ProximityDomain; 429ff879b07SJung-uk Kim UINT32 AcpiProcessorUid; 430ff879b07SJung-uk Kim UINT32 Flags; 431ff879b07SJung-uk Kim UINT32 ClockDomain; 432ff879b07SJung-uk Kim 433ff879b07SJung-uk Kim } ACPI_SRAT_GICC_AFFINITY; 434ff879b07SJung-uk Kim 435ff879b07SJung-uk Kim /* Flags for ACPI_SRAT_GICC_AFFINITY */ 436ff879b07SJung-uk Kim 437ff879b07SJung-uk Kim #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ 438ff879b07SJung-uk Kim 439ff879b07SJung-uk Kim 440ff879b07SJung-uk Kim /* 4: GCC ITS Affinity (ACPI 6.2) */ 441ff879b07SJung-uk Kim 442ff879b07SJung-uk Kim typedef struct acpi_srat_gic_its_affinity 443ff879b07SJung-uk Kim { 444ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 445ff879b07SJung-uk Kim UINT32 ProximityDomain; 4463f0275a0SJung-uk Kim UINT16 Reserved; 447ff879b07SJung-uk Kim UINT32 ItsId; 4483f0275a0SJung-uk Kim 449ff879b07SJung-uk Kim } ACPI_SRAT_GIC_ITS_AFFINITY; 4503f0275a0SJung-uk Kim 451*1b7a2680SJung-uk Kim /* 452*1b7a2680SJung-uk Kim * Common structure for SRAT subtable types: 453*1b7a2680SJung-uk Kim * 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY 454*1b7a2680SJung-uk Kim * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY 455*1b7a2680SJung-uk Kim */ 456cd6518c7SJung-uk Kim 457cd6518c7SJung-uk Kim typedef struct acpi_srat_generic_affinity 458cd6518c7SJung-uk Kim { 459cd6518c7SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 460cd6518c7SJung-uk Kim UINT8 Reserved; 461cd6518c7SJung-uk Kim UINT8 DeviceHandleType; 462cd6518c7SJung-uk Kim UINT32 ProximityDomain; 463cd6518c7SJung-uk Kim UINT8 DeviceHandle[16]; 464cd6518c7SJung-uk Kim UINT32 Flags; 465cd6518c7SJung-uk Kim UINT32 Reserved1; 466cd6518c7SJung-uk Kim 467cd6518c7SJung-uk Kim } ACPI_SRAT_GENERIC_AFFINITY; 468cd6518c7SJung-uk Kim 469cd6518c7SJung-uk Kim /* Flags for ACPI_SRAT_GENERIC_AFFINITY */ 470cd6518c7SJung-uk Kim 471cd6518c7SJung-uk Kim #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */ 472cfd1ed46SJung-uk Kim #define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */ 473cd6518c7SJung-uk Kim 474efcc2a30SJung-uk Kim /******************************************************************************* 475efcc2a30SJung-uk Kim * 476a371a5fdSJung-uk Kim * STAO - Status Override Table (_STA override) - ACPI 6.0 477a371a5fdSJung-uk Kim * Version 1 478a371a5fdSJung-uk Kim * 479a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Status Override Table" 480a371a5fdSJung-uk Kim * 6 January 2015 481a371a5fdSJung-uk Kim * 482a371a5fdSJung-uk Kim ******************************************************************************/ 483a371a5fdSJung-uk Kim 484a371a5fdSJung-uk Kim typedef struct acpi_table_stao 485a371a5fdSJung-uk Kim { 486a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 487a371a5fdSJung-uk Kim UINT8 IgnoreUart; 488a371a5fdSJung-uk Kim 489a371a5fdSJung-uk Kim } ACPI_TABLE_STAO; 490a371a5fdSJung-uk Kim 491a371a5fdSJung-uk Kim 492a371a5fdSJung-uk Kim /******************************************************************************* 493a371a5fdSJung-uk Kim * 494ff879b07SJung-uk Kim * TCPA - Trusted Computing Platform Alliance table 495ff879b07SJung-uk Kim * Version 2 496ff879b07SJung-uk Kim * 497ff879b07SJung-uk Kim * TCG Hardware Interface Table for TPM 1.2 Clients and Servers 498ff879b07SJung-uk Kim * 499ff879b07SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 500ff879b07SJung-uk Kim * Version 1.2, Revision 8 501ff879b07SJung-uk Kim * February 27, 2017 502ff879b07SJung-uk Kim * 503ff879b07SJung-uk Kim * NOTE: There are two versions of the table with the same signature -- 504ff879b07SJung-uk Kim * the client version and the server version. The common PlatformClass 505ff879b07SJung-uk Kim * field is used to differentiate the two types of tables. 506ff879b07SJung-uk Kim * 507ff879b07SJung-uk Kim ******************************************************************************/ 508ff879b07SJung-uk Kim 509ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_hdr 510ff879b07SJung-uk Kim { 511ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 512ff879b07SJung-uk Kim UINT16 PlatformClass; 513ff879b07SJung-uk Kim 514ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_HDR; 515ff879b07SJung-uk Kim 516ff879b07SJung-uk Kim /* 517ff879b07SJung-uk Kim * Values for PlatformClass above. 518ff879b07SJung-uk Kim * This is how the client and server subtables are differentiated 519ff879b07SJung-uk Kim */ 520ff879b07SJung-uk Kim #define ACPI_TCPA_CLIENT_TABLE 0 521ff879b07SJung-uk Kim #define ACPI_TCPA_SERVER_TABLE 1 522ff879b07SJung-uk Kim 523ff879b07SJung-uk Kim 524ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_client 525ff879b07SJung-uk Kim { 526ff879b07SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 527ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 528ff879b07SJung-uk Kim 529ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_CLIENT; 530ff879b07SJung-uk Kim 531ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_server 532ff879b07SJung-uk Kim { 533ff879b07SJung-uk Kim UINT16 Reserved; 534ff879b07SJung-uk Kim UINT64 MinimumLogLength; /* Minimum length for the event log area */ 535ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 536ff879b07SJung-uk Kim UINT16 SpecRevision; 537ff879b07SJung-uk Kim UINT8 DeviceFlags; 538ff879b07SJung-uk Kim UINT8 InterruptFlags; 539ff879b07SJung-uk Kim UINT8 GpeNumber; 540ff879b07SJung-uk Kim UINT8 Reserved2[3]; 541ff879b07SJung-uk Kim UINT32 GlobalInterrupt; 542ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 543ff879b07SJung-uk Kim UINT32 Reserved3; 544ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS ConfigAddress; 545ff879b07SJung-uk Kim UINT8 Group; 546ff879b07SJung-uk Kim UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 547ff879b07SJung-uk Kim UINT8 Device; 548ff879b07SJung-uk Kim UINT8 Function; 549ff879b07SJung-uk Kim 550ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_SERVER; 551ff879b07SJung-uk Kim 552ff879b07SJung-uk Kim /* Values for DeviceFlags above */ 553ff879b07SJung-uk Kim 554ff879b07SJung-uk Kim #define ACPI_TCPA_PCI_DEVICE (1) 555ff879b07SJung-uk Kim #define ACPI_TCPA_BUS_PNP (1<<1) 556ff879b07SJung-uk Kim #define ACPI_TCPA_ADDRESS_VALID (1<<2) 557ff879b07SJung-uk Kim 558ff879b07SJung-uk Kim /* Values for InterruptFlags above */ 559ff879b07SJung-uk Kim 560ff879b07SJung-uk Kim #define ACPI_TCPA_INTERRUPT_MODE (1) 561ff879b07SJung-uk Kim #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 562ff879b07SJung-uk Kim #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 563ff879b07SJung-uk Kim #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 564ff879b07SJung-uk Kim 565ff879b07SJung-uk Kim 566ff879b07SJung-uk Kim /******************************************************************************* 567ff879b07SJung-uk Kim * 568ff879b07SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 569ff879b07SJung-uk Kim * Version 4 570ff879b07SJung-uk Kim * 571ff879b07SJung-uk Kim * TCG Hardware Interface Table for TPM 2.0 Clients and Servers 572ff879b07SJung-uk Kim * 573ff879b07SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 574ff879b07SJung-uk Kim * Version 1.2, Revision 8 575ff879b07SJung-uk Kim * February 27, 2017 576ff879b07SJung-uk Kim * 577ff879b07SJung-uk Kim ******************************************************************************/ 578ff879b07SJung-uk Kim 5794a38ee6dSJung-uk Kim /* Revision 3 */ 5804a38ee6dSJung-uk Kim 5814a38ee6dSJung-uk Kim typedef struct acpi_table_tpm23 5824a38ee6dSJung-uk Kim { 5834a38ee6dSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 5844a38ee6dSJung-uk Kim UINT32 Reserved; 5854a38ee6dSJung-uk Kim UINT64 ControlAddress; 5864a38ee6dSJung-uk Kim UINT32 StartMethod; 5874a38ee6dSJung-uk Kim 5884a38ee6dSJung-uk Kim } ACPI_TABLE_TPM23; 5894a38ee6dSJung-uk Kim 5904a38ee6dSJung-uk Kim /* Value for StartMethod above */ 5914a38ee6dSJung-uk Kim 5924a38ee6dSJung-uk Kim #define ACPI_TPM23_ACPI_START_METHOD 2 5934a38ee6dSJung-uk Kim 5944a38ee6dSJung-uk Kim /* 5954a38ee6dSJung-uk Kim * Optional trailer for revision 3. If start method is 2, there is a 4 byte 5964a38ee6dSJung-uk Kim * reserved area of all zeros. 5974a38ee6dSJung-uk Kim */ 5984a38ee6dSJung-uk Kim typedef struct acpi_tmp23_trailer 5994a38ee6dSJung-uk Kim { 6004a38ee6dSJung-uk Kim UINT32 Reserved; 6014a38ee6dSJung-uk Kim 6024a38ee6dSJung-uk Kim } ACPI_TPM23_TRAILER; 6034a38ee6dSJung-uk Kim 6044a38ee6dSJung-uk Kim 6054a38ee6dSJung-uk Kim /* Revision 4 */ 6064a38ee6dSJung-uk Kim 607ff879b07SJung-uk Kim typedef struct acpi_table_tpm2 608ff879b07SJung-uk Kim { 609ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 610ff879b07SJung-uk Kim UINT16 PlatformClass; 611ff879b07SJung-uk Kim UINT16 Reserved; 612ff879b07SJung-uk Kim UINT64 ControlAddress; 613ff879b07SJung-uk Kim UINT32 StartMethod; 614ff879b07SJung-uk Kim 615ff879b07SJung-uk Kim /* Platform-specific data follows */ 616ff879b07SJung-uk Kim 617ff879b07SJung-uk Kim } ACPI_TABLE_TPM2; 618ff879b07SJung-uk Kim 619ff879b07SJung-uk Kim /* Values for StartMethod above */ 620ff879b07SJung-uk Kim 621ff879b07SJung-uk Kim #define ACPI_TPM2_NOT_ALLOWED 0 622ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED1 1 623ff879b07SJung-uk Kim #define ACPI_TPM2_START_METHOD 2 624ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED3 3 625ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED4 4 626ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED5 5 627ff879b07SJung-uk Kim #define ACPI_TPM2_MEMORY_MAPPED 6 628ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER 7 629ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 630ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED9 9 631ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED10 10 632ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 633ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED 12 634ff879b07SJung-uk Kim 635ff879b07SJung-uk Kim 636ff879b07SJung-uk Kim /* Optional trailer appears after any StartMethod subtables */ 637ff879b07SJung-uk Kim 638ff879b07SJung-uk Kim typedef struct acpi_tpm2_trailer 639ff879b07SJung-uk Kim { 640ff879b07SJung-uk Kim UINT8 MethodParameters[12]; 641ff879b07SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 642ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 643ff879b07SJung-uk Kim 644ff879b07SJung-uk Kim } ACPI_TPM2_TRAILER; 645ff879b07SJung-uk Kim 646ff879b07SJung-uk Kim 647ff879b07SJung-uk Kim /* 648ff879b07SJung-uk Kim * Subtables (StartMethod-specific) 649ff879b07SJung-uk Kim */ 650ff879b07SJung-uk Kim 651ff879b07SJung-uk Kim /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 652ff879b07SJung-uk Kim 653ff879b07SJung-uk Kim typedef struct acpi_tpm2_arm_smc 654ff879b07SJung-uk Kim { 655ff879b07SJung-uk Kim UINT32 GlobalInterrupt; 656ff879b07SJung-uk Kim UINT8 InterruptFlags; 657ff879b07SJung-uk Kim UINT8 OperationFlags; 658ff879b07SJung-uk Kim UINT16 Reserved; 659ff879b07SJung-uk Kim UINT32 FunctionId; 660ff879b07SJung-uk Kim 661ff879b07SJung-uk Kim } ACPI_TPM2_ARM_SMC; 662ff879b07SJung-uk Kim 663ff879b07SJung-uk Kim /* Values for InterruptFlags above */ 664ff879b07SJung-uk Kim 665ff879b07SJung-uk Kim #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 666ff879b07SJung-uk Kim 667ff879b07SJung-uk Kim /* Values for OperationFlags above */ 668ff879b07SJung-uk Kim 669ff879b07SJung-uk Kim #define ACPI_TPM2_IDLE_SUPPORT (1) 670ff879b07SJung-uk Kim 671ff879b07SJung-uk Kim 672ff879b07SJung-uk Kim /******************************************************************************* 673ff879b07SJung-uk Kim * 674ff879b07SJung-uk Kim * UEFI - UEFI Boot optimization Table 675ff879b07SJung-uk Kim * Version 1 676ff879b07SJung-uk Kim * 677ff879b07SJung-uk Kim * Conforms to "Unified Extensible Firmware Interface Specification", 678ff879b07SJung-uk Kim * Version 2.3, May 8, 2009 679ff879b07SJung-uk Kim * 680ff879b07SJung-uk Kim ******************************************************************************/ 681ff879b07SJung-uk Kim 682ff879b07SJung-uk Kim typedef struct acpi_table_uefi 683ff879b07SJung-uk Kim { 684ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 685ff879b07SJung-uk Kim UINT8 Identifier[16]; /* UUID identifier */ 686ff879b07SJung-uk Kim UINT16 DataOffset; /* Offset of remaining data in table */ 687ff879b07SJung-uk Kim 688ff879b07SJung-uk Kim } ACPI_TABLE_UEFI; 689ff879b07SJung-uk Kim 690ff879b07SJung-uk Kim 691ff879b07SJung-uk Kim /******************************************************************************* 692ff879b07SJung-uk Kim * 693cfd1ed46SJung-uk Kim * VIOT - Virtual I/O Translation Table 694cfd1ed46SJung-uk Kim * Version 1 695cfd1ed46SJung-uk Kim * 696cfd1ed46SJung-uk Kim ******************************************************************************/ 697cfd1ed46SJung-uk Kim 698cfd1ed46SJung-uk Kim typedef struct acpi_table_viot 699cfd1ed46SJung-uk Kim { 700cfd1ed46SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 701cfd1ed46SJung-uk Kim UINT16 NodeCount; 702cfd1ed46SJung-uk Kim UINT16 NodeOffset; 703cfd1ed46SJung-uk Kim UINT8 Reserved[8]; 704cfd1ed46SJung-uk Kim 705cfd1ed46SJung-uk Kim } ACPI_TABLE_VIOT; 706cfd1ed46SJung-uk Kim 707cfd1ed46SJung-uk Kim /* VIOT subtable header */ 708cfd1ed46SJung-uk Kim 709cfd1ed46SJung-uk Kim typedef struct acpi_viot_header 710cfd1ed46SJung-uk Kim { 711cfd1ed46SJung-uk Kim UINT8 Type; 712cfd1ed46SJung-uk Kim UINT8 Reserved; 713cfd1ed46SJung-uk Kim UINT16 Length; 714cfd1ed46SJung-uk Kim 715cfd1ed46SJung-uk Kim } ACPI_VIOT_HEADER; 716cfd1ed46SJung-uk Kim 717cfd1ed46SJung-uk Kim /* Values for Type field above */ 718cfd1ed46SJung-uk Kim 719cfd1ed46SJung-uk Kim enum AcpiViotNodeType 720cfd1ed46SJung-uk Kim { 721cfd1ed46SJung-uk Kim ACPI_VIOT_NODE_PCI_RANGE = 0x01, 722cfd1ed46SJung-uk Kim ACPI_VIOT_NODE_MMIO = 0x02, 723cfd1ed46SJung-uk Kim ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03, 724cfd1ed46SJung-uk Kim ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04, 725cfd1ed46SJung-uk Kim ACPI_VIOT_RESERVED = 0x05 726cfd1ed46SJung-uk Kim }; 727cfd1ed46SJung-uk Kim 728cfd1ed46SJung-uk Kim /* VIOT subtables */ 729cfd1ed46SJung-uk Kim 730cfd1ed46SJung-uk Kim typedef struct acpi_viot_pci_range 731cfd1ed46SJung-uk Kim { 732cfd1ed46SJung-uk Kim ACPI_VIOT_HEADER Header; 733cfd1ed46SJung-uk Kim UINT32 EndpointStart; 734cfd1ed46SJung-uk Kim UINT16 SegmentStart; 735cfd1ed46SJung-uk Kim UINT16 SegmentEnd; 736cfd1ed46SJung-uk Kim UINT16 BdfStart; 737cfd1ed46SJung-uk Kim UINT16 BdfEnd; 738cfd1ed46SJung-uk Kim UINT16 OutputNode; 739cfd1ed46SJung-uk Kim UINT8 Reserved[6]; 740cfd1ed46SJung-uk Kim 741cfd1ed46SJung-uk Kim } ACPI_VIOT_PCI_RANGE; 742cfd1ed46SJung-uk Kim 743cfd1ed46SJung-uk Kim typedef struct acpi_viot_mmio 744cfd1ed46SJung-uk Kim { 745cfd1ed46SJung-uk Kim ACPI_VIOT_HEADER Header; 746cfd1ed46SJung-uk Kim UINT32 Endpoint; 747cfd1ed46SJung-uk Kim UINT64 BaseAddress; 748cfd1ed46SJung-uk Kim UINT16 OutputNode; 749cfd1ed46SJung-uk Kim UINT8 Reserved[6]; 750cfd1ed46SJung-uk Kim 751cfd1ed46SJung-uk Kim } ACPI_VIOT_MMIO; 752cfd1ed46SJung-uk Kim 753cfd1ed46SJung-uk Kim typedef struct acpi_viot_virtio_iommu_pci 754cfd1ed46SJung-uk Kim { 755cfd1ed46SJung-uk Kim ACPI_VIOT_HEADER Header; 756cfd1ed46SJung-uk Kim UINT16 Segment; 757cfd1ed46SJung-uk Kim UINT16 Bdf; 758cfd1ed46SJung-uk Kim UINT8 Reserved[8]; 759cfd1ed46SJung-uk Kim 760cfd1ed46SJung-uk Kim } ACPI_VIOT_VIRTIO_IOMMU_PCI; 761cfd1ed46SJung-uk Kim 762cfd1ed46SJung-uk Kim typedef struct acpi_viot_virtio_iommu_mmio 763cfd1ed46SJung-uk Kim { 764cfd1ed46SJung-uk Kim ACPI_VIOT_HEADER Header; 765cfd1ed46SJung-uk Kim UINT8 Reserved[4]; 766cfd1ed46SJung-uk Kim UINT64 BaseAddress; 767cfd1ed46SJung-uk Kim 768cfd1ed46SJung-uk Kim } ACPI_VIOT_VIRTIO_IOMMU_MMIO; 769cfd1ed46SJung-uk Kim 770cfd1ed46SJung-uk Kim 771cfd1ed46SJung-uk Kim /******************************************************************************* 772cfd1ed46SJung-uk Kim * 773ff879b07SJung-uk Kim * WAET - Windows ACPI Emulated devices Table 774ff879b07SJung-uk Kim * Version 1 775ff879b07SJung-uk Kim * 776ff879b07SJung-uk Kim * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 777ff879b07SJung-uk Kim * 778ff879b07SJung-uk Kim ******************************************************************************/ 779ff879b07SJung-uk Kim 780ff879b07SJung-uk Kim typedef struct acpi_table_waet 781ff879b07SJung-uk Kim { 782ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 783ff879b07SJung-uk Kim UINT32 Flags; 784ff879b07SJung-uk Kim 785ff879b07SJung-uk Kim } ACPI_TABLE_WAET; 786ff879b07SJung-uk Kim 787ff879b07SJung-uk Kim /* Masks for Flags field above */ 788ff879b07SJung-uk Kim 789ff879b07SJung-uk Kim #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 790ff879b07SJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 791ff879b07SJung-uk Kim 792ff879b07SJung-uk Kim 793ff879b07SJung-uk Kim /******************************************************************************* 794ff879b07SJung-uk Kim * 795ff879b07SJung-uk Kim * WDAT - Watchdog Action Table 796ff879b07SJung-uk Kim * Version 1 797ff879b07SJung-uk Kim * 798ff879b07SJung-uk Kim * Conforms to "Hardware Watchdog Timers Design Specification", 799ff879b07SJung-uk Kim * Copyright 2006 Microsoft Corporation. 800ff879b07SJung-uk Kim * 801ff879b07SJung-uk Kim ******************************************************************************/ 802ff879b07SJung-uk Kim 803ff879b07SJung-uk Kim typedef struct acpi_table_wdat 804ff879b07SJung-uk Kim { 805ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 806ff879b07SJung-uk Kim UINT32 HeaderLength; /* Watchdog Header Length */ 807ff879b07SJung-uk Kim UINT16 PciSegment; /* PCI Segment number */ 808ff879b07SJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 809ff879b07SJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 810ff879b07SJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 811ff879b07SJung-uk Kim UINT8 Reserved[3]; 812ff879b07SJung-uk Kim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 813ff879b07SJung-uk Kim UINT32 MaxCount; /* Maximum counter value supported */ 814ff879b07SJung-uk Kim UINT32 MinCount; /* Minimum counter value */ 815ff879b07SJung-uk Kim UINT8 Flags; 816ff879b07SJung-uk Kim UINT8 Reserved2[3]; 817ff879b07SJung-uk Kim UINT32 Entries; /* Number of watchdog entries that follow */ 818ff879b07SJung-uk Kim 819ff879b07SJung-uk Kim } ACPI_TABLE_WDAT; 820ff879b07SJung-uk Kim 821ff879b07SJung-uk Kim /* Masks for Flags field above */ 822ff879b07SJung-uk Kim 823ff879b07SJung-uk Kim #define ACPI_WDAT_ENABLED (1) 824ff879b07SJung-uk Kim #define ACPI_WDAT_STOPPED 0x80 825ff879b07SJung-uk Kim 826ff879b07SJung-uk Kim 827ff879b07SJung-uk Kim /* WDAT Instruction Entries (actions) */ 828ff879b07SJung-uk Kim 829ff879b07SJung-uk Kim typedef struct acpi_wdat_entry 830ff879b07SJung-uk Kim { 831ff879b07SJung-uk Kim UINT8 Action; 832ff879b07SJung-uk Kim UINT8 Instruction; 833ff879b07SJung-uk Kim UINT16 Reserved; 834ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS RegisterRegion; 835ff879b07SJung-uk Kim UINT32 Value; /* Value used with Read/Write register */ 836ff879b07SJung-uk Kim UINT32 Mask; /* Bitmask required for this register instruction */ 837ff879b07SJung-uk Kim 838ff879b07SJung-uk Kim } ACPI_WDAT_ENTRY; 839ff879b07SJung-uk Kim 840ff879b07SJung-uk Kim /* Values for Action field above */ 841ff879b07SJung-uk Kim 842ff879b07SJung-uk Kim enum AcpiWdatActions 843ff879b07SJung-uk Kim { 844ff879b07SJung-uk Kim ACPI_WDAT_RESET = 1, 845ff879b07SJung-uk Kim ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 846ff879b07SJung-uk Kim ACPI_WDAT_GET_COUNTDOWN = 5, 847ff879b07SJung-uk Kim ACPI_WDAT_SET_COUNTDOWN = 6, 848ff879b07SJung-uk Kim ACPI_WDAT_GET_RUNNING_STATE = 8, 849ff879b07SJung-uk Kim ACPI_WDAT_SET_RUNNING_STATE = 9, 850ff879b07SJung-uk Kim ACPI_WDAT_GET_STOPPED_STATE = 10, 851ff879b07SJung-uk Kim ACPI_WDAT_SET_STOPPED_STATE = 11, 852ff879b07SJung-uk Kim ACPI_WDAT_GET_REBOOT = 16, 853ff879b07SJung-uk Kim ACPI_WDAT_SET_REBOOT = 17, 854ff879b07SJung-uk Kim ACPI_WDAT_GET_SHUTDOWN = 18, 855ff879b07SJung-uk Kim ACPI_WDAT_SET_SHUTDOWN = 19, 856ff879b07SJung-uk Kim ACPI_WDAT_GET_STATUS = 32, 857ff879b07SJung-uk Kim ACPI_WDAT_SET_STATUS = 33, 858ff879b07SJung-uk Kim ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 859ff879b07SJung-uk Kim }; 860ff879b07SJung-uk Kim 861ff879b07SJung-uk Kim /* Values for Instruction field above */ 862ff879b07SJung-uk Kim 863ff879b07SJung-uk Kim enum AcpiWdatInstructions 864ff879b07SJung-uk Kim { 865ff879b07SJung-uk Kim ACPI_WDAT_READ_VALUE = 0, 866ff879b07SJung-uk Kim ACPI_WDAT_READ_COUNTDOWN = 1, 867ff879b07SJung-uk Kim ACPI_WDAT_WRITE_VALUE = 2, 868ff879b07SJung-uk Kim ACPI_WDAT_WRITE_COUNTDOWN = 3, 869ff879b07SJung-uk Kim ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 870ff879b07SJung-uk Kim ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 871ff879b07SJung-uk Kim }; 872ff879b07SJung-uk Kim 873ff879b07SJung-uk Kim 874ff879b07SJung-uk Kim /******************************************************************************* 875ff879b07SJung-uk Kim * 876ff879b07SJung-uk Kim * WDDT - Watchdog Descriptor Table 877ff879b07SJung-uk Kim * Version 1 878ff879b07SJung-uk Kim * 879ff879b07SJung-uk Kim * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 880ff879b07SJung-uk Kim * Version 001, September 2002 881ff879b07SJung-uk Kim * 882ff879b07SJung-uk Kim ******************************************************************************/ 883ff879b07SJung-uk Kim 884ff879b07SJung-uk Kim typedef struct acpi_table_wddt 885ff879b07SJung-uk Kim { 886ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 887ff879b07SJung-uk Kim UINT16 SpecVersion; 888ff879b07SJung-uk Kim UINT16 TableVersion; 889ff879b07SJung-uk Kim UINT16 PciVendorId; 890ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 891ff879b07SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 892ff879b07SJung-uk Kim UINT16 MinCount; /* Minimum counter value supported */ 893ff879b07SJung-uk Kim UINT16 Period; 894ff879b07SJung-uk Kim UINT16 Status; 895ff879b07SJung-uk Kim UINT16 Capability; 896ff879b07SJung-uk Kim 897ff879b07SJung-uk Kim } ACPI_TABLE_WDDT; 898ff879b07SJung-uk Kim 899ff879b07SJung-uk Kim /* Flags for Status field above */ 900ff879b07SJung-uk Kim 901ff879b07SJung-uk Kim #define ACPI_WDDT_AVAILABLE (1) 902ff879b07SJung-uk Kim #define ACPI_WDDT_ACTIVE (1<<1) 903ff879b07SJung-uk Kim #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 904ff879b07SJung-uk Kim #define ACPI_WDDT_USER_RESET (1<<11) 905ff879b07SJung-uk Kim #define ACPI_WDDT_WDT_RESET (1<<12) 906ff879b07SJung-uk Kim #define ACPI_WDDT_POWER_FAIL (1<<13) 907ff879b07SJung-uk Kim #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 908ff879b07SJung-uk Kim 909ff879b07SJung-uk Kim /* Flags for Capability field above */ 910ff879b07SJung-uk Kim 911ff879b07SJung-uk Kim #define ACPI_WDDT_AUTO_RESET (1) 912ff879b07SJung-uk Kim #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 913ff879b07SJung-uk Kim 914ff879b07SJung-uk Kim 915ff879b07SJung-uk Kim /******************************************************************************* 916ff879b07SJung-uk Kim * 917ff879b07SJung-uk Kim * WDRT - Watchdog Resource Table 918ff879b07SJung-uk Kim * Version 1 919ff879b07SJung-uk Kim * 920ff879b07SJung-uk Kim * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 921ff879b07SJung-uk Kim * Version 1.01, August 28, 2006 922ff879b07SJung-uk Kim * 923ff879b07SJung-uk Kim ******************************************************************************/ 924ff879b07SJung-uk Kim 925ff879b07SJung-uk Kim typedef struct acpi_table_wdrt 926ff879b07SJung-uk Kim { 927ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 928ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 929ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS CountRegister; 930ff879b07SJung-uk Kim UINT16 PciDeviceId; 931ff879b07SJung-uk Kim UINT16 PciVendorId; 932ff879b07SJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 933ff879b07SJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 934ff879b07SJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 935ff879b07SJung-uk Kim UINT8 PciSegment; /* PCI Segment number */ 936ff879b07SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 937ff879b07SJung-uk Kim UINT8 Units; 938ff879b07SJung-uk Kim 939ff879b07SJung-uk Kim } ACPI_TABLE_WDRT; 940ff879b07SJung-uk Kim 941ff879b07SJung-uk Kim 942ff879b07SJung-uk Kim /******************************************************************************* 943ff879b07SJung-uk Kim * 944a371a5fdSJung-uk Kim * WPBT - Windows Platform Environment Table (ACPI 6.0) 945a371a5fdSJung-uk Kim * Version 1 946a371a5fdSJung-uk Kim * 947a371a5fdSJung-uk Kim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 948a371a5fdSJung-uk Kim * 949a371a5fdSJung-uk Kim ******************************************************************************/ 950a371a5fdSJung-uk Kim 951a371a5fdSJung-uk Kim typedef struct acpi_table_wpbt 952a371a5fdSJung-uk Kim { 953a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 954a371a5fdSJung-uk Kim UINT32 HandoffSize; 955a371a5fdSJung-uk Kim UINT64 HandoffAddress; 956a371a5fdSJung-uk Kim UINT8 Layout; 957a371a5fdSJung-uk Kim UINT8 Type; 958a371a5fdSJung-uk Kim UINT16 ArgumentsLength; 959a371a5fdSJung-uk Kim 960a371a5fdSJung-uk Kim } ACPI_TABLE_WPBT; 961a371a5fdSJung-uk Kim 96297c0b5abSJung-uk Kim typedef struct acpi_wpbt_unicode 96397c0b5abSJung-uk Kim { 96497c0b5abSJung-uk Kim UINT16 *UnicodeString; 96597c0b5abSJung-uk Kim 96697c0b5abSJung-uk Kim } ACPI_WPBT_UNICODE; 96797c0b5abSJung-uk Kim 968a371a5fdSJung-uk Kim 969a371a5fdSJung-uk Kim /******************************************************************************* 970a371a5fdSJung-uk Kim * 9713ee58df5SJung-uk Kim * WSMT - Windows SMM Security Mitigations Table 972ff879b07SJung-uk Kim * Version 1 973ff879b07SJung-uk Kim * 9743ee58df5SJung-uk Kim * Conforms to "Windows SMM Security Mitigations Table", 975ff879b07SJung-uk Kim * Version 1.0, April 18, 2016 976ff879b07SJung-uk Kim * 977ff879b07SJung-uk Kim ******************************************************************************/ 978ff879b07SJung-uk Kim 979ff879b07SJung-uk Kim typedef struct acpi_table_wsmt 980ff879b07SJung-uk Kim { 981ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 982ff879b07SJung-uk Kim UINT32 ProtectionFlags; 983ff879b07SJung-uk Kim 984ff879b07SJung-uk Kim } ACPI_TABLE_WSMT; 985ff879b07SJung-uk Kim 986ff879b07SJung-uk Kim /* Flags for ProtectionFlags field above */ 987ff879b07SJung-uk Kim 988ff879b07SJung-uk Kim #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 989ff879b07SJung-uk Kim #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 990ff879b07SJung-uk Kim #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 991ff879b07SJung-uk Kim 992ff879b07SJung-uk Kim 993ff879b07SJung-uk Kim /******************************************************************************* 994ff879b07SJung-uk Kim * 995a371a5fdSJung-uk Kim * XENV - Xen Environment Table (ACPI 6.0) 996a371a5fdSJung-uk Kim * Version 1 997a371a5fdSJung-uk Kim * 998a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 999a371a5fdSJung-uk Kim * 1000a371a5fdSJung-uk Kim ******************************************************************************/ 1001a371a5fdSJung-uk Kim 1002a371a5fdSJung-uk Kim typedef struct acpi_table_xenv 1003a371a5fdSJung-uk Kim { 1004a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1005a371a5fdSJung-uk Kim UINT64 GrantTableAddress; 1006a371a5fdSJung-uk Kim UINT64 GrantTableSize; 1007a371a5fdSJung-uk Kim UINT32 EventInterrupt; 1008a371a5fdSJung-uk Kim UINT8 EventFlags; 1009a371a5fdSJung-uk Kim 1010a371a5fdSJung-uk Kim } ACPI_TABLE_XENV; 1011a371a5fdSJung-uk Kim 1012a371a5fdSJung-uk Kim 10133f0275a0SJung-uk Kim /* Reset to default packing */ 10143f0275a0SJung-uk Kim 10153f0275a0SJung-uk Kim #pragma pack() 10163f0275a0SJung-uk Kim 10173f0275a0SJung-uk Kim #endif /* __ACTBL3_H__ */ 1018