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