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 * 1132ac4016SJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2018, 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 * 158*ff879b07SJung-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 */ 171*ff879b07SJung-uk Kim #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 172*ff879b07SJung-uk Kim #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 173*ff879b07SJung-uk Kim #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 174*ff879b07SJung-uk Kim #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 175*ff879b07SJung-uk Kim #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 176a371a5fdSJung-uk Kim #define ACPI_SIG_STAO "STAO" /* Status Override table */ 177*ff879b07SJung-uk Kim #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 178*ff879b07SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 179*ff879b07SJung-uk Kim #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 180*ff879b07SJung-uk Kim #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 181*ff879b07SJung-uk Kim #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 182*ff879b07SJung-uk Kim #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 183*ff879b07SJung-uk Kim #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 184*ff879b07SJung-uk Kim #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 185a371a5fdSJung-uk Kim #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 186*ff879b07SJung-uk Kim #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */ 187a371a5fdSJung-uk Kim #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 188*ff879b07SJung-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 * 211*ff879b07SJung-uk Kim * SLIC - Software Licensing Description Table 212*ff879b07SJung-uk Kim * 213*ff879b07SJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 214*ff879b07SJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 215*ff879b07SJung-uk Kim * 216*ff879b07SJung-uk Kim ******************************************************************************/ 217*ff879b07SJung-uk Kim 218*ff879b07SJung-uk Kim /* Basic SLIC table is only the common ACPI header */ 219*ff879b07SJung-uk Kim 220*ff879b07SJung-uk Kim typedef struct acpi_table_slic 221*ff879b07SJung-uk Kim { 222*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 223*ff879b07SJung-uk Kim 224*ff879b07SJung-uk Kim } ACPI_TABLE_SLIC; 225*ff879b07SJung-uk Kim 226*ff879b07SJung-uk Kim 227*ff879b07SJung-uk Kim /******************************************************************************* 228*ff879b07SJung-uk Kim * 229*ff879b07SJung-uk Kim * SLIT - System Locality Distance Information Table 2303f0275a0SJung-uk Kim * Version 1 2313f0275a0SJung-uk Kim * 2323f0275a0SJung-uk Kim ******************************************************************************/ 2333f0275a0SJung-uk Kim 234*ff879b07SJung-uk Kim typedef struct acpi_table_slit 2353f0275a0SJung-uk Kim { 2363f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 237*ff879b07SJung-uk Kim UINT64 LocalityCount; 238*ff879b07SJung-uk Kim UINT8 Entry[1]; /* Real size = localities^2 */ 2393f0275a0SJung-uk Kim 240*ff879b07SJung-uk Kim } ACPI_TABLE_SLIT; 241af051161SJung-uk Kim 2423f0275a0SJung-uk Kim 2433f0275a0SJung-uk Kim /******************************************************************************* 2443f0275a0SJung-uk Kim * 245*ff879b07SJung-uk Kim * SPCR - Serial Port Console Redirection table 246313a0c13SJung-uk Kim * Version 2 2473f0275a0SJung-uk Kim * 248*ff879b07SJung-uk Kim * Conforms to "Serial Port Console Redirection Table", 249*ff879b07SJung-uk Kim * Version 1.03, August 10, 2015 250*ff879b07SJung-uk Kim * 2513f0275a0SJung-uk Kim ******************************************************************************/ 2523f0275a0SJung-uk Kim 253*ff879b07SJung-uk Kim typedef struct acpi_table_spcr 2543f0275a0SJung-uk Kim { 2553f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 256*ff879b07SJung-uk Kim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 257*ff879b07SJung-uk Kim UINT8 Reserved[3]; 258*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS SerialPort; 259*ff879b07SJung-uk Kim UINT8 InterruptType; 260*ff879b07SJung-uk Kim UINT8 PcInterrupt; 261*ff879b07SJung-uk Kim UINT32 Interrupt; 262*ff879b07SJung-uk Kim UINT8 BaudRate; 263*ff879b07SJung-uk Kim UINT8 Parity; 264*ff879b07SJung-uk Kim UINT8 StopBits; 265*ff879b07SJung-uk Kim UINT8 FlowControl; 266*ff879b07SJung-uk Kim UINT8 TerminalType; 267*ff879b07SJung-uk Kim UINT8 Reserved1; 268*ff879b07SJung-uk Kim UINT16 PciDeviceId; 269*ff879b07SJung-uk Kim UINT16 PciVendorId; 270*ff879b07SJung-uk Kim UINT8 PciBus; 271*ff879b07SJung-uk Kim UINT8 PciDevice; 272*ff879b07SJung-uk Kim UINT8 PciFunction; 273*ff879b07SJung-uk Kim UINT32 PciFlags; 274*ff879b07SJung-uk Kim UINT8 PciSegment; 275*ff879b07SJung-uk Kim UINT32 Reserved2; 2763f0275a0SJung-uk Kim 277*ff879b07SJung-uk Kim } ACPI_TABLE_SPCR; 2783f0275a0SJung-uk Kim 279*ff879b07SJung-uk Kim /* Masks for PciFlags field above */ 2803f0275a0SJung-uk Kim 281*ff879b07SJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE (1) 282*ff879b07SJung-uk Kim 283*ff879b07SJung-uk Kim /* Values for Interface Type: See the definition of the DBG2 table */ 2843f0275a0SJung-uk Kim 2853f0275a0SJung-uk Kim 286*ff879b07SJung-uk Kim /******************************************************************************* 287*ff879b07SJung-uk Kim * 288*ff879b07SJung-uk Kim * SPMI - Server Platform Management Interface table 289*ff879b07SJung-uk Kim * Version 5 290*ff879b07SJung-uk Kim * 291*ff879b07SJung-uk Kim * Conforms to "Intelligent Platform Management Interface Specification 292*ff879b07SJung-uk Kim * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 293*ff879b07SJung-uk Kim * June 12, 2009 markup. 294*ff879b07SJung-uk Kim * 295*ff879b07SJung-uk Kim ******************************************************************************/ 296313a0c13SJung-uk Kim 297*ff879b07SJung-uk Kim typedef struct acpi_table_spmi 298313a0c13SJung-uk Kim { 299*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 300*ff879b07SJung-uk Kim UINT8 InterfaceType; 301*ff879b07SJung-uk Kim UINT8 Reserved; /* Must be 1 */ 302*ff879b07SJung-uk Kim UINT16 SpecRevision; /* Version of IPMI */ 303*ff879b07SJung-uk Kim UINT8 InterruptType; 304*ff879b07SJung-uk Kim UINT8 GpeNumber; /* GPE assigned */ 305*ff879b07SJung-uk Kim UINT8 Reserved1; 306*ff879b07SJung-uk Kim UINT8 PciDeviceFlag; 307*ff879b07SJung-uk Kim UINT32 Interrupt; 308*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS IpmiRegister; 309*ff879b07SJung-uk Kim UINT8 PciSegment; 310*ff879b07SJung-uk Kim UINT8 PciBus; 311*ff879b07SJung-uk Kim UINT8 PciDevice; 312*ff879b07SJung-uk Kim UINT8 PciFunction; 313*ff879b07SJung-uk Kim UINT8 Reserved2; 314313a0c13SJung-uk Kim 315*ff879b07SJung-uk Kim } ACPI_TABLE_SPMI; 316313a0c13SJung-uk Kim 317*ff879b07SJung-uk Kim /* Values for InterfaceType above */ 318313a0c13SJung-uk Kim 319*ff879b07SJung-uk Kim enum AcpiSpmiInterfaceTypes 320313a0c13SJung-uk Kim { 321*ff879b07SJung-uk Kim ACPI_SPMI_NOT_USED = 0, 322*ff879b07SJung-uk Kim ACPI_SPMI_KEYBOARD = 1, 323*ff879b07SJung-uk Kim ACPI_SPMI_SMI = 2, 324*ff879b07SJung-uk Kim ACPI_SPMI_BLOCK_TRANSFER = 3, 325*ff879b07SJung-uk Kim ACPI_SPMI_SMBUS = 4, 326*ff879b07SJung-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 * 332*ff879b07SJung-uk Kim * SRAT - System Resource Affinity Table 333*ff879b07SJung-uk Kim * Version 3 3343f0275a0SJung-uk Kim * 3353f0275a0SJung-uk Kim ******************************************************************************/ 3363f0275a0SJung-uk Kim 337*ff879b07SJung-uk Kim typedef struct acpi_table_srat 3383f0275a0SJung-uk Kim { 3393f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 340*ff879b07SJung-uk Kim UINT32 TableRevision; /* Must be value '1' */ 341*ff879b07SJung-uk Kim UINT64 Reserved; /* Reserved, must be zero */ 3423f0275a0SJung-uk Kim 343*ff879b07SJung-uk Kim } ACPI_TABLE_SRAT; 3443f0275a0SJung-uk Kim 345313a0c13SJung-uk Kim /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 346313a0c13SJung-uk Kim 347*ff879b07SJung-uk Kim enum AcpiSratType 348313a0c13SJung-uk Kim { 349*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 350*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 351*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 352*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_GICC_AFFINITY = 3, 353*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ 354*ff879b07SJung-uk Kim ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 355313a0c13SJung-uk Kim }; 356313a0c13SJung-uk Kim 3573f0275a0SJung-uk Kim /* 358*ff879b07SJung-uk Kim * SRAT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 3593f0275a0SJung-uk Kim */ 3603f0275a0SJung-uk Kim 361*ff879b07SJung-uk Kim /* 0: Processor Local APIC/SAPIC Affinity */ 3623f0275a0SJung-uk Kim 363*ff879b07SJung-uk Kim typedef struct acpi_srat_cpu_affinity 3643f0275a0SJung-uk Kim { 3653f0275a0SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 366*ff879b07SJung-uk Kim UINT8 ProximityDomainLo; 367*ff879b07SJung-uk Kim UINT8 ApicId; 368af051161SJung-uk Kim UINT32 Flags; 369*ff879b07SJung-uk Kim UINT8 LocalSapicEid; 370*ff879b07SJung-uk Kim UINT8 ProximityDomainHi[3]; 371*ff879b07SJung-uk Kim UINT32 ClockDomain; 372af051161SJung-uk Kim 373*ff879b07SJung-uk Kim } ACPI_SRAT_CPU_AFFINITY; 374*ff879b07SJung-uk Kim 375*ff879b07SJung-uk Kim /* Flags */ 376*ff879b07SJung-uk Kim 377*ff879b07SJung-uk Kim #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 378af051161SJung-uk Kim 379af051161SJung-uk Kim 380*ff879b07SJung-uk Kim /* 1: Memory Affinity */ 3813f0275a0SJung-uk Kim 382*ff879b07SJung-uk Kim typedef struct acpi_srat_mem_affinity 3833f0275a0SJung-uk Kim { 384*ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 3853f0275a0SJung-uk Kim UINT32 ProximityDomain; 386*ff879b07SJung-uk Kim UINT16 Reserved; /* Reserved, must be zero */ 387*ff879b07SJung-uk Kim UINT64 BaseAddress; 388*ff879b07SJung-uk Kim UINT64 Length; 389*ff879b07SJung-uk Kim UINT32 Reserved1; 390*ff879b07SJung-uk Kim UINT32 Flags; 391*ff879b07SJung-uk Kim UINT64 Reserved2; /* Reserved, must be zero */ 3923f0275a0SJung-uk Kim 393*ff879b07SJung-uk Kim } ACPI_SRAT_MEM_AFFINITY; 394*ff879b07SJung-uk Kim 395*ff879b07SJung-uk Kim /* Flags */ 396*ff879b07SJung-uk Kim 397*ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 398*ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 399*ff879b07SJung-uk Kim #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 4003f0275a0SJung-uk Kim 4013f0275a0SJung-uk Kim 402*ff879b07SJung-uk Kim /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 4033f0275a0SJung-uk Kim 404*ff879b07SJung-uk Kim typedef struct acpi_srat_x2apic_cpu_affinity 4053f0275a0SJung-uk Kim { 406*ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 407*ff879b07SJung-uk Kim UINT16 Reserved; /* Reserved, must be zero */ 408*ff879b07SJung-uk Kim UINT32 ProximityDomain; 409*ff879b07SJung-uk Kim UINT32 ApicId; 410*ff879b07SJung-uk Kim UINT32 Flags; 411*ff879b07SJung-uk Kim UINT32 ClockDomain; 412*ff879b07SJung-uk Kim UINT32 Reserved2; 413*ff879b07SJung-uk Kim 414*ff879b07SJung-uk Kim } ACPI_SRAT_X2APIC_CPU_AFFINITY; 415*ff879b07SJung-uk Kim 416*ff879b07SJung-uk Kim /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 417*ff879b07SJung-uk Kim 418*ff879b07SJung-uk Kim #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 419*ff879b07SJung-uk Kim 420*ff879b07SJung-uk Kim 421*ff879b07SJung-uk Kim /* 3: GICC Affinity (ACPI 5.1) */ 422*ff879b07SJung-uk Kim 423*ff879b07SJung-uk Kim typedef struct acpi_srat_gicc_affinity 424*ff879b07SJung-uk Kim { 425*ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 426*ff879b07SJung-uk Kim UINT32 ProximityDomain; 427*ff879b07SJung-uk Kim UINT32 AcpiProcessorUid; 428*ff879b07SJung-uk Kim UINT32 Flags; 429*ff879b07SJung-uk Kim UINT32 ClockDomain; 430*ff879b07SJung-uk Kim 431*ff879b07SJung-uk Kim } ACPI_SRAT_GICC_AFFINITY; 432*ff879b07SJung-uk Kim 433*ff879b07SJung-uk Kim /* Flags for ACPI_SRAT_GICC_AFFINITY */ 434*ff879b07SJung-uk Kim 435*ff879b07SJung-uk Kim #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ 436*ff879b07SJung-uk Kim 437*ff879b07SJung-uk Kim 438*ff879b07SJung-uk Kim /* 4: GCC ITS Affinity (ACPI 6.2) */ 439*ff879b07SJung-uk Kim 440*ff879b07SJung-uk Kim typedef struct acpi_srat_gic_its_affinity 441*ff879b07SJung-uk Kim { 442*ff879b07SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 443*ff879b07SJung-uk Kim UINT32 ProximityDomain; 4443f0275a0SJung-uk Kim UINT16 Reserved; 445*ff879b07SJung-uk Kim UINT32 ItsId; 4463f0275a0SJung-uk Kim 447*ff879b07SJung-uk Kim } ACPI_SRAT_GIC_ITS_AFFINITY; 4483f0275a0SJung-uk Kim 4493f0275a0SJung-uk Kim 450efcc2a30SJung-uk Kim /******************************************************************************* 451efcc2a30SJung-uk Kim * 452a371a5fdSJung-uk Kim * STAO - Status Override Table (_STA override) - ACPI 6.0 453a371a5fdSJung-uk Kim * Version 1 454a371a5fdSJung-uk Kim * 455a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Status Override Table" 456a371a5fdSJung-uk Kim * 6 January 2015 457a371a5fdSJung-uk Kim * 458a371a5fdSJung-uk Kim ******************************************************************************/ 459a371a5fdSJung-uk Kim 460a371a5fdSJung-uk Kim typedef struct acpi_table_stao 461a371a5fdSJung-uk Kim { 462a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 463a371a5fdSJung-uk Kim UINT8 IgnoreUart; 464a371a5fdSJung-uk Kim 465a371a5fdSJung-uk Kim } ACPI_TABLE_STAO; 466a371a5fdSJung-uk Kim 467a371a5fdSJung-uk Kim 468a371a5fdSJung-uk Kim /******************************************************************************* 469a371a5fdSJung-uk Kim * 470*ff879b07SJung-uk Kim * TCPA - Trusted Computing Platform Alliance table 471*ff879b07SJung-uk Kim * Version 2 472*ff879b07SJung-uk Kim * 473*ff879b07SJung-uk Kim * TCG Hardware Interface Table for TPM 1.2 Clients and Servers 474*ff879b07SJung-uk Kim * 475*ff879b07SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 476*ff879b07SJung-uk Kim * Version 1.2, Revision 8 477*ff879b07SJung-uk Kim * February 27, 2017 478*ff879b07SJung-uk Kim * 479*ff879b07SJung-uk Kim * NOTE: There are two versions of the table with the same signature -- 480*ff879b07SJung-uk Kim * the client version and the server version. The common PlatformClass 481*ff879b07SJung-uk Kim * field is used to differentiate the two types of tables. 482*ff879b07SJung-uk Kim * 483*ff879b07SJung-uk Kim ******************************************************************************/ 484*ff879b07SJung-uk Kim 485*ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_hdr 486*ff879b07SJung-uk Kim { 487*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 488*ff879b07SJung-uk Kim UINT16 PlatformClass; 489*ff879b07SJung-uk Kim 490*ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_HDR; 491*ff879b07SJung-uk Kim 492*ff879b07SJung-uk Kim /* 493*ff879b07SJung-uk Kim * Values for PlatformClass above. 494*ff879b07SJung-uk Kim * This is how the client and server subtables are differentiated 495*ff879b07SJung-uk Kim */ 496*ff879b07SJung-uk Kim #define ACPI_TCPA_CLIENT_TABLE 0 497*ff879b07SJung-uk Kim #define ACPI_TCPA_SERVER_TABLE 1 498*ff879b07SJung-uk Kim 499*ff879b07SJung-uk Kim 500*ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_client 501*ff879b07SJung-uk Kim { 502*ff879b07SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 503*ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 504*ff879b07SJung-uk Kim 505*ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_CLIENT; 506*ff879b07SJung-uk Kim 507*ff879b07SJung-uk Kim typedef struct acpi_table_tcpa_server 508*ff879b07SJung-uk Kim { 509*ff879b07SJung-uk Kim UINT16 Reserved; 510*ff879b07SJung-uk Kim UINT64 MinimumLogLength; /* Minimum length for the event log area */ 511*ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 512*ff879b07SJung-uk Kim UINT16 SpecRevision; 513*ff879b07SJung-uk Kim UINT8 DeviceFlags; 514*ff879b07SJung-uk Kim UINT8 InterruptFlags; 515*ff879b07SJung-uk Kim UINT8 GpeNumber; 516*ff879b07SJung-uk Kim UINT8 Reserved2[3]; 517*ff879b07SJung-uk Kim UINT32 GlobalInterrupt; 518*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 519*ff879b07SJung-uk Kim UINT32 Reserved3; 520*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS ConfigAddress; 521*ff879b07SJung-uk Kim UINT8 Group; 522*ff879b07SJung-uk Kim UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 523*ff879b07SJung-uk Kim UINT8 Device; 524*ff879b07SJung-uk Kim UINT8 Function; 525*ff879b07SJung-uk Kim 526*ff879b07SJung-uk Kim } ACPI_TABLE_TCPA_SERVER; 527*ff879b07SJung-uk Kim 528*ff879b07SJung-uk Kim /* Values for DeviceFlags above */ 529*ff879b07SJung-uk Kim 530*ff879b07SJung-uk Kim #define ACPI_TCPA_PCI_DEVICE (1) 531*ff879b07SJung-uk Kim #define ACPI_TCPA_BUS_PNP (1<<1) 532*ff879b07SJung-uk Kim #define ACPI_TCPA_ADDRESS_VALID (1<<2) 533*ff879b07SJung-uk Kim 534*ff879b07SJung-uk Kim /* Values for InterruptFlags above */ 535*ff879b07SJung-uk Kim 536*ff879b07SJung-uk Kim #define ACPI_TCPA_INTERRUPT_MODE (1) 537*ff879b07SJung-uk Kim #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 538*ff879b07SJung-uk Kim #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 539*ff879b07SJung-uk Kim #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 540*ff879b07SJung-uk Kim 541*ff879b07SJung-uk Kim 542*ff879b07SJung-uk Kim /******************************************************************************* 543*ff879b07SJung-uk Kim * 544*ff879b07SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 545*ff879b07SJung-uk Kim * Version 4 546*ff879b07SJung-uk Kim * 547*ff879b07SJung-uk Kim * TCG Hardware Interface Table for TPM 2.0 Clients and Servers 548*ff879b07SJung-uk Kim * 549*ff879b07SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 550*ff879b07SJung-uk Kim * Version 1.2, Revision 8 551*ff879b07SJung-uk Kim * February 27, 2017 552*ff879b07SJung-uk Kim * 553*ff879b07SJung-uk Kim ******************************************************************************/ 554*ff879b07SJung-uk Kim 555*ff879b07SJung-uk Kim typedef struct acpi_table_tpm2 556*ff879b07SJung-uk Kim { 557*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 558*ff879b07SJung-uk Kim UINT16 PlatformClass; 559*ff879b07SJung-uk Kim UINT16 Reserved; 560*ff879b07SJung-uk Kim UINT64 ControlAddress; 561*ff879b07SJung-uk Kim UINT32 StartMethod; 562*ff879b07SJung-uk Kim 563*ff879b07SJung-uk Kim /* Platform-specific data follows */ 564*ff879b07SJung-uk Kim 565*ff879b07SJung-uk Kim } ACPI_TABLE_TPM2; 566*ff879b07SJung-uk Kim 567*ff879b07SJung-uk Kim /* Values for StartMethod above */ 568*ff879b07SJung-uk Kim 569*ff879b07SJung-uk Kim #define ACPI_TPM2_NOT_ALLOWED 0 570*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED1 1 571*ff879b07SJung-uk Kim #define ACPI_TPM2_START_METHOD 2 572*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED3 3 573*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED4 4 574*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED5 5 575*ff879b07SJung-uk Kim #define ACPI_TPM2_MEMORY_MAPPED 6 576*ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER 7 577*ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 578*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED9 9 579*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED10 10 580*ff879b07SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 581*ff879b07SJung-uk Kim #define ACPI_TPM2_RESERVED 12 582*ff879b07SJung-uk Kim 583*ff879b07SJung-uk Kim 584*ff879b07SJung-uk Kim /* Optional trailer appears after any StartMethod subtables */ 585*ff879b07SJung-uk Kim 586*ff879b07SJung-uk Kim typedef struct acpi_tpm2_trailer 587*ff879b07SJung-uk Kim { 588*ff879b07SJung-uk Kim UINT8 MethodParameters[12]; 589*ff879b07SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 590*ff879b07SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 591*ff879b07SJung-uk Kim 592*ff879b07SJung-uk Kim } ACPI_TPM2_TRAILER; 593*ff879b07SJung-uk Kim 594*ff879b07SJung-uk Kim 595*ff879b07SJung-uk Kim /* 596*ff879b07SJung-uk Kim * Subtables (StartMethod-specific) 597*ff879b07SJung-uk Kim */ 598*ff879b07SJung-uk Kim 599*ff879b07SJung-uk Kim /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 600*ff879b07SJung-uk Kim 601*ff879b07SJung-uk Kim typedef struct acpi_tpm2_arm_smc 602*ff879b07SJung-uk Kim { 603*ff879b07SJung-uk Kim UINT32 GlobalInterrupt; 604*ff879b07SJung-uk Kim UINT8 InterruptFlags; 605*ff879b07SJung-uk Kim UINT8 OperationFlags; 606*ff879b07SJung-uk Kim UINT16 Reserved; 607*ff879b07SJung-uk Kim UINT32 FunctionId; 608*ff879b07SJung-uk Kim 609*ff879b07SJung-uk Kim } ACPI_TPM2_ARM_SMC; 610*ff879b07SJung-uk Kim 611*ff879b07SJung-uk Kim /* Values for InterruptFlags above */ 612*ff879b07SJung-uk Kim 613*ff879b07SJung-uk Kim #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 614*ff879b07SJung-uk Kim 615*ff879b07SJung-uk Kim /* Values for OperationFlags above */ 616*ff879b07SJung-uk Kim 617*ff879b07SJung-uk Kim #define ACPI_TPM2_IDLE_SUPPORT (1) 618*ff879b07SJung-uk Kim 619*ff879b07SJung-uk Kim 620*ff879b07SJung-uk Kim /******************************************************************************* 621*ff879b07SJung-uk Kim * 622*ff879b07SJung-uk Kim * UEFI - UEFI Boot optimization Table 623*ff879b07SJung-uk Kim * Version 1 624*ff879b07SJung-uk Kim * 625*ff879b07SJung-uk Kim * Conforms to "Unified Extensible Firmware Interface Specification", 626*ff879b07SJung-uk Kim * Version 2.3, May 8, 2009 627*ff879b07SJung-uk Kim * 628*ff879b07SJung-uk Kim ******************************************************************************/ 629*ff879b07SJung-uk Kim 630*ff879b07SJung-uk Kim typedef struct acpi_table_uefi 631*ff879b07SJung-uk Kim { 632*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 633*ff879b07SJung-uk Kim UINT8 Identifier[16]; /* UUID identifier */ 634*ff879b07SJung-uk Kim UINT16 DataOffset; /* Offset of remaining data in table */ 635*ff879b07SJung-uk Kim 636*ff879b07SJung-uk Kim } ACPI_TABLE_UEFI; 637*ff879b07SJung-uk Kim 638*ff879b07SJung-uk Kim 639*ff879b07SJung-uk Kim /******************************************************************************* 640*ff879b07SJung-uk Kim * 641*ff879b07SJung-uk Kim * VRTC - Virtual Real Time Clock Table 642*ff879b07SJung-uk Kim * Version 1 643*ff879b07SJung-uk Kim * 644*ff879b07SJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 645*ff879b07SJung-uk Kim * Draft 0.8.2, Oct 19, 2010 646*ff879b07SJung-uk Kim * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 647*ff879b07SJung-uk Kim * 648*ff879b07SJung-uk Kim ******************************************************************************/ 649*ff879b07SJung-uk Kim 650*ff879b07SJung-uk Kim typedef struct acpi_table_vrtc 651*ff879b07SJung-uk Kim { 652*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 653*ff879b07SJung-uk Kim 654*ff879b07SJung-uk Kim } ACPI_TABLE_VRTC; 655*ff879b07SJung-uk Kim 656*ff879b07SJung-uk Kim /* VRTC entry */ 657*ff879b07SJung-uk Kim 658*ff879b07SJung-uk Kim typedef struct acpi_vrtc_entry 659*ff879b07SJung-uk Kim { 660*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 661*ff879b07SJung-uk Kim UINT32 Irq; 662*ff879b07SJung-uk Kim 663*ff879b07SJung-uk Kim } ACPI_VRTC_ENTRY; 664*ff879b07SJung-uk Kim 665*ff879b07SJung-uk Kim 666*ff879b07SJung-uk Kim /******************************************************************************* 667*ff879b07SJung-uk Kim * 668*ff879b07SJung-uk Kim * WAET - Windows ACPI Emulated devices Table 669*ff879b07SJung-uk Kim * Version 1 670*ff879b07SJung-uk Kim * 671*ff879b07SJung-uk Kim * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 672*ff879b07SJung-uk Kim * 673*ff879b07SJung-uk Kim ******************************************************************************/ 674*ff879b07SJung-uk Kim 675*ff879b07SJung-uk Kim typedef struct acpi_table_waet 676*ff879b07SJung-uk Kim { 677*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 678*ff879b07SJung-uk Kim UINT32 Flags; 679*ff879b07SJung-uk Kim 680*ff879b07SJung-uk Kim } ACPI_TABLE_WAET; 681*ff879b07SJung-uk Kim 682*ff879b07SJung-uk Kim /* Masks for Flags field above */ 683*ff879b07SJung-uk Kim 684*ff879b07SJung-uk Kim #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 685*ff879b07SJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 686*ff879b07SJung-uk Kim 687*ff879b07SJung-uk Kim 688*ff879b07SJung-uk Kim /******************************************************************************* 689*ff879b07SJung-uk Kim * 690*ff879b07SJung-uk Kim * WDAT - Watchdog Action Table 691*ff879b07SJung-uk Kim * Version 1 692*ff879b07SJung-uk Kim * 693*ff879b07SJung-uk Kim * Conforms to "Hardware Watchdog Timers Design Specification", 694*ff879b07SJung-uk Kim * Copyright 2006 Microsoft Corporation. 695*ff879b07SJung-uk Kim * 696*ff879b07SJung-uk Kim ******************************************************************************/ 697*ff879b07SJung-uk Kim 698*ff879b07SJung-uk Kim typedef struct acpi_table_wdat 699*ff879b07SJung-uk Kim { 700*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 701*ff879b07SJung-uk Kim UINT32 HeaderLength; /* Watchdog Header Length */ 702*ff879b07SJung-uk Kim UINT16 PciSegment; /* PCI Segment number */ 703*ff879b07SJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 704*ff879b07SJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 705*ff879b07SJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 706*ff879b07SJung-uk Kim UINT8 Reserved[3]; 707*ff879b07SJung-uk Kim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 708*ff879b07SJung-uk Kim UINT32 MaxCount; /* Maximum counter value supported */ 709*ff879b07SJung-uk Kim UINT32 MinCount; /* Minimum counter value */ 710*ff879b07SJung-uk Kim UINT8 Flags; 711*ff879b07SJung-uk Kim UINT8 Reserved2[3]; 712*ff879b07SJung-uk Kim UINT32 Entries; /* Number of watchdog entries that follow */ 713*ff879b07SJung-uk Kim 714*ff879b07SJung-uk Kim } ACPI_TABLE_WDAT; 715*ff879b07SJung-uk Kim 716*ff879b07SJung-uk Kim /* Masks for Flags field above */ 717*ff879b07SJung-uk Kim 718*ff879b07SJung-uk Kim #define ACPI_WDAT_ENABLED (1) 719*ff879b07SJung-uk Kim #define ACPI_WDAT_STOPPED 0x80 720*ff879b07SJung-uk Kim 721*ff879b07SJung-uk Kim 722*ff879b07SJung-uk Kim /* WDAT Instruction Entries (actions) */ 723*ff879b07SJung-uk Kim 724*ff879b07SJung-uk Kim typedef struct acpi_wdat_entry 725*ff879b07SJung-uk Kim { 726*ff879b07SJung-uk Kim UINT8 Action; 727*ff879b07SJung-uk Kim UINT8 Instruction; 728*ff879b07SJung-uk Kim UINT16 Reserved; 729*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS RegisterRegion; 730*ff879b07SJung-uk Kim UINT32 Value; /* Value used with Read/Write register */ 731*ff879b07SJung-uk Kim UINT32 Mask; /* Bitmask required for this register instruction */ 732*ff879b07SJung-uk Kim 733*ff879b07SJung-uk Kim } ACPI_WDAT_ENTRY; 734*ff879b07SJung-uk Kim 735*ff879b07SJung-uk Kim /* Values for Action field above */ 736*ff879b07SJung-uk Kim 737*ff879b07SJung-uk Kim enum AcpiWdatActions 738*ff879b07SJung-uk Kim { 739*ff879b07SJung-uk Kim ACPI_WDAT_RESET = 1, 740*ff879b07SJung-uk Kim ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 741*ff879b07SJung-uk Kim ACPI_WDAT_GET_COUNTDOWN = 5, 742*ff879b07SJung-uk Kim ACPI_WDAT_SET_COUNTDOWN = 6, 743*ff879b07SJung-uk Kim ACPI_WDAT_GET_RUNNING_STATE = 8, 744*ff879b07SJung-uk Kim ACPI_WDAT_SET_RUNNING_STATE = 9, 745*ff879b07SJung-uk Kim ACPI_WDAT_GET_STOPPED_STATE = 10, 746*ff879b07SJung-uk Kim ACPI_WDAT_SET_STOPPED_STATE = 11, 747*ff879b07SJung-uk Kim ACPI_WDAT_GET_REBOOT = 16, 748*ff879b07SJung-uk Kim ACPI_WDAT_SET_REBOOT = 17, 749*ff879b07SJung-uk Kim ACPI_WDAT_GET_SHUTDOWN = 18, 750*ff879b07SJung-uk Kim ACPI_WDAT_SET_SHUTDOWN = 19, 751*ff879b07SJung-uk Kim ACPI_WDAT_GET_STATUS = 32, 752*ff879b07SJung-uk Kim ACPI_WDAT_SET_STATUS = 33, 753*ff879b07SJung-uk Kim ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 754*ff879b07SJung-uk Kim }; 755*ff879b07SJung-uk Kim 756*ff879b07SJung-uk Kim /* Values for Instruction field above */ 757*ff879b07SJung-uk Kim 758*ff879b07SJung-uk Kim enum AcpiWdatInstructions 759*ff879b07SJung-uk Kim { 760*ff879b07SJung-uk Kim ACPI_WDAT_READ_VALUE = 0, 761*ff879b07SJung-uk Kim ACPI_WDAT_READ_COUNTDOWN = 1, 762*ff879b07SJung-uk Kim ACPI_WDAT_WRITE_VALUE = 2, 763*ff879b07SJung-uk Kim ACPI_WDAT_WRITE_COUNTDOWN = 3, 764*ff879b07SJung-uk Kim ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 765*ff879b07SJung-uk Kim ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 766*ff879b07SJung-uk Kim }; 767*ff879b07SJung-uk Kim 768*ff879b07SJung-uk Kim 769*ff879b07SJung-uk Kim /******************************************************************************* 770*ff879b07SJung-uk Kim * 771*ff879b07SJung-uk Kim * WDDT - Watchdog Descriptor Table 772*ff879b07SJung-uk Kim * Version 1 773*ff879b07SJung-uk Kim * 774*ff879b07SJung-uk Kim * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 775*ff879b07SJung-uk Kim * Version 001, September 2002 776*ff879b07SJung-uk Kim * 777*ff879b07SJung-uk Kim ******************************************************************************/ 778*ff879b07SJung-uk Kim 779*ff879b07SJung-uk Kim typedef struct acpi_table_wddt 780*ff879b07SJung-uk Kim { 781*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 782*ff879b07SJung-uk Kim UINT16 SpecVersion; 783*ff879b07SJung-uk Kim UINT16 TableVersion; 784*ff879b07SJung-uk Kim UINT16 PciVendorId; 785*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 786*ff879b07SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 787*ff879b07SJung-uk Kim UINT16 MinCount; /* Minimum counter value supported */ 788*ff879b07SJung-uk Kim UINT16 Period; 789*ff879b07SJung-uk Kim UINT16 Status; 790*ff879b07SJung-uk Kim UINT16 Capability; 791*ff879b07SJung-uk Kim 792*ff879b07SJung-uk Kim } ACPI_TABLE_WDDT; 793*ff879b07SJung-uk Kim 794*ff879b07SJung-uk Kim /* Flags for Status field above */ 795*ff879b07SJung-uk Kim 796*ff879b07SJung-uk Kim #define ACPI_WDDT_AVAILABLE (1) 797*ff879b07SJung-uk Kim #define ACPI_WDDT_ACTIVE (1<<1) 798*ff879b07SJung-uk Kim #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 799*ff879b07SJung-uk Kim #define ACPI_WDDT_USER_RESET (1<<11) 800*ff879b07SJung-uk Kim #define ACPI_WDDT_WDT_RESET (1<<12) 801*ff879b07SJung-uk Kim #define ACPI_WDDT_POWER_FAIL (1<<13) 802*ff879b07SJung-uk Kim #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 803*ff879b07SJung-uk Kim 804*ff879b07SJung-uk Kim /* Flags for Capability field above */ 805*ff879b07SJung-uk Kim 806*ff879b07SJung-uk Kim #define ACPI_WDDT_AUTO_RESET (1) 807*ff879b07SJung-uk Kim #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 808*ff879b07SJung-uk Kim 809*ff879b07SJung-uk Kim 810*ff879b07SJung-uk Kim /******************************************************************************* 811*ff879b07SJung-uk Kim * 812*ff879b07SJung-uk Kim * WDRT - Watchdog Resource Table 813*ff879b07SJung-uk Kim * Version 1 814*ff879b07SJung-uk Kim * 815*ff879b07SJung-uk Kim * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 816*ff879b07SJung-uk Kim * Version 1.01, August 28, 2006 817*ff879b07SJung-uk Kim * 818*ff879b07SJung-uk Kim ******************************************************************************/ 819*ff879b07SJung-uk Kim 820*ff879b07SJung-uk Kim typedef struct acpi_table_wdrt 821*ff879b07SJung-uk Kim { 822*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 823*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 824*ff879b07SJung-uk Kim ACPI_GENERIC_ADDRESS CountRegister; 825*ff879b07SJung-uk Kim UINT16 PciDeviceId; 826*ff879b07SJung-uk Kim UINT16 PciVendorId; 827*ff879b07SJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 828*ff879b07SJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 829*ff879b07SJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 830*ff879b07SJung-uk Kim UINT8 PciSegment; /* PCI Segment number */ 831*ff879b07SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 832*ff879b07SJung-uk Kim UINT8 Units; 833*ff879b07SJung-uk Kim 834*ff879b07SJung-uk Kim } ACPI_TABLE_WDRT; 835*ff879b07SJung-uk Kim 836*ff879b07SJung-uk Kim 837*ff879b07SJung-uk Kim /******************************************************************************* 838*ff879b07SJung-uk Kim * 839a371a5fdSJung-uk Kim * WPBT - Windows Platform Environment Table (ACPI 6.0) 840a371a5fdSJung-uk Kim * Version 1 841a371a5fdSJung-uk Kim * 842a371a5fdSJung-uk Kim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 843a371a5fdSJung-uk Kim * 844a371a5fdSJung-uk Kim ******************************************************************************/ 845a371a5fdSJung-uk Kim 846a371a5fdSJung-uk Kim typedef struct acpi_table_wpbt 847a371a5fdSJung-uk Kim { 848a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 849a371a5fdSJung-uk Kim UINT32 HandoffSize; 850a371a5fdSJung-uk Kim UINT64 HandoffAddress; 851a371a5fdSJung-uk Kim UINT8 Layout; 852a371a5fdSJung-uk Kim UINT8 Type; 853a371a5fdSJung-uk Kim UINT16 ArgumentsLength; 854a371a5fdSJung-uk Kim 855a371a5fdSJung-uk Kim } ACPI_TABLE_WPBT; 856a371a5fdSJung-uk Kim 857a371a5fdSJung-uk Kim 858a371a5fdSJung-uk Kim /******************************************************************************* 859a371a5fdSJung-uk Kim * 860*ff879b07SJung-uk Kim * WSMT - Windows SMM Security Migrations Table 861*ff879b07SJung-uk Kim * Version 1 862*ff879b07SJung-uk Kim * 863*ff879b07SJung-uk Kim * Conforms to "Windows SMM Security Migrations Table", 864*ff879b07SJung-uk Kim * Version 1.0, April 18, 2016 865*ff879b07SJung-uk Kim * 866*ff879b07SJung-uk Kim ******************************************************************************/ 867*ff879b07SJung-uk Kim 868*ff879b07SJung-uk Kim typedef struct acpi_table_wsmt 869*ff879b07SJung-uk Kim { 870*ff879b07SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 871*ff879b07SJung-uk Kim UINT32 ProtectionFlags; 872*ff879b07SJung-uk Kim 873*ff879b07SJung-uk Kim } ACPI_TABLE_WSMT; 874*ff879b07SJung-uk Kim 875*ff879b07SJung-uk Kim /* Flags for ProtectionFlags field above */ 876*ff879b07SJung-uk Kim 877*ff879b07SJung-uk Kim #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 878*ff879b07SJung-uk Kim #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 879*ff879b07SJung-uk Kim #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 880*ff879b07SJung-uk Kim 881*ff879b07SJung-uk Kim 882*ff879b07SJung-uk Kim /******************************************************************************* 883*ff879b07SJung-uk Kim * 884a371a5fdSJung-uk Kim * XENV - Xen Environment Table (ACPI 6.0) 885a371a5fdSJung-uk Kim * Version 1 886a371a5fdSJung-uk Kim * 887a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 888a371a5fdSJung-uk Kim * 889a371a5fdSJung-uk Kim ******************************************************************************/ 890a371a5fdSJung-uk Kim 891a371a5fdSJung-uk Kim typedef struct acpi_table_xenv 892a371a5fdSJung-uk Kim { 893a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 894a371a5fdSJung-uk Kim UINT64 GrantTableAddress; 895a371a5fdSJung-uk Kim UINT64 GrantTableSize; 896a371a5fdSJung-uk Kim UINT32 EventInterrupt; 897a371a5fdSJung-uk Kim UINT8 EventFlags; 898a371a5fdSJung-uk Kim 899a371a5fdSJung-uk Kim } ACPI_TABLE_XENV; 900a371a5fdSJung-uk Kim 901a371a5fdSJung-uk Kim 9023f0275a0SJung-uk Kim /* Reset to default packing */ 9033f0275a0SJung-uk Kim 9043f0275a0SJung-uk Kim #pragma pack() 9053f0275a0SJung-uk Kim 9063f0275a0SJung-uk Kim #endif /* __ACTBL3_H__ */ 907