xref: /freebsd/sys/contrib/dev/acpica/include/actbl3.h (revision ff879b07996ba2a08ddcc37091c2636f1be8354c)
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