xref: /illumos-gate/usr/src/uts/intel/sys/acpi/actbl3.h (revision 35786f68)
17b1019a6SJerry Jelinek /******************************************************************************
27b1019a6SJerry Jelinek  *
37b1019a6SJerry Jelinek  * Name: actbl3.h - ACPI Table Definitions
47b1019a6SJerry Jelinek  *
57b1019a6SJerry Jelinek  *****************************************************************************/
67b1019a6SJerry Jelinek 
7*35786f68SRobert Mustacchi /******************************************************************************
8*35786f68SRobert Mustacchi  *
9*35786f68SRobert Mustacchi  * 1. Copyright Notice
10*35786f68SRobert Mustacchi  *
11*35786f68SRobert Mustacchi  * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
127b1019a6SJerry Jelinek  * All rights reserved.
137b1019a6SJerry Jelinek  *
14*35786f68SRobert Mustacchi  * 2. License
15*35786f68SRobert Mustacchi  *
16*35786f68SRobert Mustacchi  * 2.1. This is your license from Intel Corp. under its intellectual property
17*35786f68SRobert Mustacchi  * rights. You may have additional license terms from the party that provided
18*35786f68SRobert Mustacchi  * you this software, covering your right to use that party's intellectual
19*35786f68SRobert Mustacchi  * property rights.
20*35786f68SRobert Mustacchi  *
21*35786f68SRobert Mustacchi  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22*35786f68SRobert Mustacchi  * copy of the source code appearing in this file ("Covered Code") an
23*35786f68SRobert Mustacchi  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24*35786f68SRobert Mustacchi  * base code distributed originally by Intel ("Original Intel Code") to copy,
25*35786f68SRobert Mustacchi  * make derivatives, distribute, use and display any portion of the Covered
26*35786f68SRobert Mustacchi  * Code in any form, with the right to sublicense such rights; and
27*35786f68SRobert Mustacchi  *
28*35786f68SRobert Mustacchi  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29*35786f68SRobert Mustacchi  * license (with the right to sublicense), under only those claims of Intel
30*35786f68SRobert Mustacchi  * patents that are infringed by the Original Intel Code, to make, use, sell,
31*35786f68SRobert Mustacchi  * offer to sell, and import the Covered Code and derivative works thereof
32*35786f68SRobert Mustacchi  * solely to the minimum extent necessary to exercise the above copyright
33*35786f68SRobert Mustacchi  * license, and in no event shall the patent license extend to any additions
34*35786f68SRobert Mustacchi  * to or modifications of the Original Intel Code. No other license or right
35*35786f68SRobert Mustacchi  * is granted directly or by implication, estoppel or otherwise;
36*35786f68SRobert Mustacchi  *
37*35786f68SRobert Mustacchi  * The above copyright and patent license is granted only if the following
38*35786f68SRobert Mustacchi  * conditions are met:
39*35786f68SRobert Mustacchi  *
40*35786f68SRobert Mustacchi  * 3. Conditions
41*35786f68SRobert Mustacchi  *
42*35786f68SRobert Mustacchi  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
44*35786f68SRobert Mustacchi  * Code or modification with rights to further distribute source must include
45*35786f68SRobert Mustacchi  * the above Copyright Notice, the above License, this list of Conditions,
46*35786f68SRobert Mustacchi  * and the following Disclaimer and Export Compliance provision. In addition,
47*35786f68SRobert Mustacchi  * Licensee must cause all Covered Code to which Licensee contributes to
48*35786f68SRobert Mustacchi  * contain a file documenting the changes Licensee made to create that Covered
49*35786f68SRobert Mustacchi  * Code and the date of any change. Licensee must include in that file the
50*35786f68SRobert Mustacchi  * documentation of any changes made by any predecessor Licensee. Licensee
51*35786f68SRobert Mustacchi  * must include a prominent statement that the modification is derived,
52*35786f68SRobert Mustacchi  * directly or indirectly, from Original Intel Code.
53*35786f68SRobert Mustacchi  *
54*35786f68SRobert Mustacchi  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
56*35786f68SRobert Mustacchi  * Code or modification without rights to further distribute source must
57*35786f68SRobert Mustacchi  * include the following Disclaimer and Export Compliance provision in the
58*35786f68SRobert Mustacchi  * documentation and/or other materials provided with distribution. In
59*35786f68SRobert Mustacchi  * addition, Licensee may not authorize further sublicense of source of any
60*35786f68SRobert Mustacchi  * portion of the Covered Code, and must include terms to the effect that the
61*35786f68SRobert Mustacchi  * license from Licensee to its licensee is limited to the intellectual
62*35786f68SRobert Mustacchi  * property embodied in the software Licensee provides to its licensee, and
63*35786f68SRobert Mustacchi  * not to intellectual property embodied in modifications its licensee may
64*35786f68SRobert Mustacchi  * make.
65*35786f68SRobert Mustacchi  *
66*35786f68SRobert Mustacchi  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67*35786f68SRobert Mustacchi  * substantial portion of the Covered Code or modification must reproduce the
68*35786f68SRobert Mustacchi  * above Copyright Notice, and the following Disclaimer and Export Compliance
69*35786f68SRobert Mustacchi  * provision in the documentation and/or other materials provided with the
70*35786f68SRobert Mustacchi  * distribution.
71*35786f68SRobert Mustacchi  *
72*35786f68SRobert Mustacchi  * 3.4. Intel retains all right, title, and interest in and to the Original
73*35786f68SRobert Mustacchi  * Intel Code.
74*35786f68SRobert Mustacchi  *
75*35786f68SRobert Mustacchi  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76*35786f68SRobert Mustacchi  * Intel shall be used in advertising or otherwise to promote the sale, use or
77*35786f68SRobert Mustacchi  * other dealings in products derived from or relating to the Covered Code
78*35786f68SRobert Mustacchi  * without prior written authorization from Intel.
79*35786f68SRobert Mustacchi  *
80*35786f68SRobert Mustacchi  * 4. Disclaimer and Export Compliance
81*35786f68SRobert Mustacchi  *
82*35786f68SRobert Mustacchi  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83*35786f68SRobert Mustacchi  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84*35786f68SRobert Mustacchi  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85*35786f68SRobert Mustacchi  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86*35786f68SRobert Mustacchi  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87*35786f68SRobert Mustacchi  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88*35786f68SRobert Mustacchi  * PARTICULAR PURPOSE.
89*35786f68SRobert Mustacchi  *
90*35786f68SRobert Mustacchi  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91*35786f68SRobert Mustacchi  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92*35786f68SRobert Mustacchi  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93*35786f68SRobert Mustacchi  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94*35786f68SRobert Mustacchi  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95*35786f68SRobert Mustacchi  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96*35786f68SRobert Mustacchi  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97*35786f68SRobert Mustacchi  * LIMITED REMEDY.
98*35786f68SRobert Mustacchi  *
99*35786f68SRobert Mustacchi  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100*35786f68SRobert Mustacchi  * software or system incorporating such software without first obtaining any
101*35786f68SRobert Mustacchi  * required license or other approval from the U. S. Department of Commerce or
102*35786f68SRobert Mustacchi  * any other agency or department of the United States Government. In the
103*35786f68SRobert Mustacchi  * event Licensee exports any such software from the United States or
104*35786f68SRobert Mustacchi  * re-exports any such software from a foreign destination, Licensee shall
105*35786f68SRobert Mustacchi  * ensure that the distribution and export/re-export of the software is in
106*35786f68SRobert Mustacchi  * compliance with all laws, regulations, orders, or other restrictions of the
107*35786f68SRobert Mustacchi  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108*35786f68SRobert Mustacchi  * any of its subsidiaries will export/re-export any technical data, process,
109*35786f68SRobert Mustacchi  * software, or service, directly or indirectly, to any country for which the
110*35786f68SRobert Mustacchi  * United States government or any agency thereof requires an export license,
111*35786f68SRobert Mustacchi  * other governmental approval, or letter of assurance, without first obtaining
112*35786f68SRobert Mustacchi  * such license, approval or letter.
113*35786f68SRobert Mustacchi  *
114*35786f68SRobert Mustacchi  *****************************************************************************
115*35786f68SRobert Mustacchi  *
116*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
117*35786f68SRobert Mustacchi  * following license:
118*35786f68SRobert Mustacchi  *
1197b1019a6SJerry Jelinek  * Redistribution and use in source and binary forms, with or without
1207b1019a6SJerry Jelinek  * modification, are permitted provided that the following conditions
1217b1019a6SJerry Jelinek  * are met:
1227b1019a6SJerry Jelinek  * 1. Redistributions of source code must retain the above copyright
1237b1019a6SJerry Jelinek  *    notice, this list of conditions, and the following disclaimer,
1247b1019a6SJerry Jelinek  *    without modification.
1257b1019a6SJerry Jelinek  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1267b1019a6SJerry Jelinek  *    substantially similar to the "NO WARRANTY" disclaimer below
1277b1019a6SJerry Jelinek  *    ("Disclaimer") and any redistribution must be conditioned upon
1287b1019a6SJerry Jelinek  *    including a substantially similar Disclaimer requirement for further
1297b1019a6SJerry Jelinek  *    binary redistribution.
1307b1019a6SJerry Jelinek  * 3. Neither the names of the above-listed copyright holders nor the names
1317b1019a6SJerry Jelinek  *    of any contributors may be used to endorse or promote products derived
1327b1019a6SJerry Jelinek  *    from this software without specific prior written permission.
1337b1019a6SJerry Jelinek  *
1347b1019a6SJerry Jelinek  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1357b1019a6SJerry Jelinek  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136*35786f68SRobert Mustacchi  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1377b1019a6SJerry Jelinek  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138*35786f68SRobert Mustacchi  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139*35786f68SRobert Mustacchi  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140*35786f68SRobert Mustacchi  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141*35786f68SRobert Mustacchi  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142*35786f68SRobert Mustacchi  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143*35786f68SRobert Mustacchi  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144*35786f68SRobert Mustacchi  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145*35786f68SRobert Mustacchi  *
146*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
147*35786f68SRobert Mustacchi  * GNU General Public License ("GPL") version 2 as published by the Free
148*35786f68SRobert Mustacchi  * Software Foundation.
149*35786f68SRobert Mustacchi  *
150*35786f68SRobert Mustacchi  *****************************************************************************/
1517b1019a6SJerry Jelinek 
1527b1019a6SJerry Jelinek #ifndef __ACTBL3_H__
1537b1019a6SJerry Jelinek #define __ACTBL3_H__
1547b1019a6SJerry Jelinek 
1557b1019a6SJerry Jelinek 
1567b1019a6SJerry Jelinek /*******************************************************************************
1577b1019a6SJerry Jelinek  *
158*35786f68SRobert Mustacchi  * Additional ACPI Tables
1597b1019a6SJerry Jelinek  *
1607b1019a6SJerry Jelinek  * These tables are not consumed directly by the ACPICA subsystem, but are
1617b1019a6SJerry Jelinek  * included here to support device drivers and the AML disassembler.
1627b1019a6SJerry Jelinek  *
1637b1019a6SJerry Jelinek  ******************************************************************************/
1647b1019a6SJerry Jelinek 
1657b1019a6SJerry Jelinek 
1667b1019a6SJerry Jelinek /*
1677b1019a6SJerry Jelinek  * Values for description table header signatures for tables defined in this
1687b1019a6SJerry Jelinek  * file. Useful because they make it more difficult to inadvertently type in
1697b1019a6SJerry Jelinek  * the wrong signature.
1707b1019a6SJerry Jelinek  */
171*35786f68SRobert Mustacchi #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
172*35786f68SRobert Mustacchi #define ACPI_SIG_SLIT           "SLIT"      /* System Locality Distance Information Table */
173*35786f68SRobert Mustacchi #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
174*35786f68SRobert Mustacchi #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
175*35786f68SRobert Mustacchi #define ACPI_SIG_SRAT           "SRAT"      /* System Resource Affinity Table */
1767b1019a6SJerry Jelinek #define ACPI_SIG_STAO           "STAO"      /* Status Override table */
177*35786f68SRobert Mustacchi #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
178*35786f68SRobert Mustacchi #define ACPI_SIG_TPM2           "TPM2"      /* Trusted Platform Module 2.0 H/W interface table */
179*35786f68SRobert Mustacchi #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
180*35786f68SRobert Mustacchi #define ACPI_SIG_VRTC           "VRTC"      /* Virtual Real Time Clock Table */
181*35786f68SRobert Mustacchi #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
182*35786f68SRobert Mustacchi #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
183*35786f68SRobert Mustacchi #define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
184*35786f68SRobert Mustacchi #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
1857b1019a6SJerry Jelinek #define ACPI_SIG_WPBT           "WPBT"      /* Windows Platform Binary Table */
186*35786f68SRobert Mustacchi #define ACPI_SIG_WSMT           "WSMT"      /* Windows SMM Security Migrations Table */
1877b1019a6SJerry Jelinek #define ACPI_SIG_XENV           "XENV"      /* Xen Environment table */
188*35786f68SRobert Mustacchi #define ACPI_SIG_XXXX           "XXXX"      /* Intermediate AML header for ASL/ASL+ converter */
1897b1019a6SJerry Jelinek 
1907b1019a6SJerry Jelinek /*
1917b1019a6SJerry Jelinek  * All tables must be byte-packed to match the ACPI specification, since
1927b1019a6SJerry Jelinek  * the tables are provided by the system BIOS.
1937b1019a6SJerry Jelinek  */
1947b1019a6SJerry Jelinek #pragma pack(1)
1957b1019a6SJerry Jelinek 
1967b1019a6SJerry Jelinek /*
1977b1019a6SJerry Jelinek  * Note: C bitfields are not used for this reason:
1987b1019a6SJerry Jelinek  *
1997b1019a6SJerry Jelinek  * "Bitfields are great and easy to read, but unfortunately the C language
2007b1019a6SJerry Jelinek  * does not specify the layout of bitfields in memory, which means they are
2017b1019a6SJerry Jelinek  * essentially useless for dealing with packed data in on-disk formats or
2027b1019a6SJerry Jelinek  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
2037b1019a6SJerry Jelinek  * this decision was a design error in C. Ritchie could have picked an order
2047b1019a6SJerry Jelinek  * and stuck with it." Norman Ramsey.
2057b1019a6SJerry Jelinek  * See http://stackoverflow.com/a/1053662/41661
2067b1019a6SJerry Jelinek  */
2077b1019a6SJerry Jelinek 
2087b1019a6SJerry Jelinek 
2097b1019a6SJerry Jelinek /*******************************************************************************
2107b1019a6SJerry Jelinek  *
211*35786f68SRobert Mustacchi  * SLIC - Software Licensing Description Table
212*35786f68SRobert Mustacchi  *
213*35786f68SRobert Mustacchi  * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
214*35786f68SRobert Mustacchi  * November 29, 2011. Copyright 2011 Microsoft
2157b1019a6SJerry Jelinek  *
2167b1019a6SJerry Jelinek  ******************************************************************************/
2177b1019a6SJerry Jelinek 
218*35786f68SRobert Mustacchi /* Basic SLIC table is only the common ACPI header */
219*35786f68SRobert Mustacchi 
220*35786f68SRobert Mustacchi typedef struct acpi_table_slic
2217b1019a6SJerry Jelinek {
2227b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
2237b1019a6SJerry Jelinek 
224*35786f68SRobert Mustacchi } ACPI_TABLE_SLIC;
2257b1019a6SJerry Jelinek 
2267b1019a6SJerry Jelinek 
2277b1019a6SJerry Jelinek /*******************************************************************************
2287b1019a6SJerry Jelinek  *
229*35786f68SRobert Mustacchi  * SLIT - System Locality Distance Information Table
230*35786f68SRobert Mustacchi  *        Version 1
2317b1019a6SJerry Jelinek  *
2327b1019a6SJerry Jelinek  ******************************************************************************/
2337b1019a6SJerry Jelinek 
234*35786f68SRobert Mustacchi typedef struct acpi_table_slit
2357b1019a6SJerry Jelinek {
2367b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
237*35786f68SRobert Mustacchi     UINT64                  LocalityCount;
238*35786f68SRobert Mustacchi     UINT8                   Entry[1];           /* Real size = localities^2 */
2397b1019a6SJerry Jelinek 
240*35786f68SRobert Mustacchi } ACPI_TABLE_SLIT;
2417b1019a6SJerry Jelinek 
2427b1019a6SJerry Jelinek 
2437b1019a6SJerry Jelinek /*******************************************************************************
2447b1019a6SJerry Jelinek  *
245*35786f68SRobert Mustacchi  * SPCR - Serial Port Console Redirection table
246*35786f68SRobert Mustacchi  *        Version 2
247*35786f68SRobert Mustacchi  *
248*35786f68SRobert Mustacchi  * Conforms to "Serial Port Console Redirection Table",
249*35786f68SRobert Mustacchi  * Version 1.03, August 10, 2015
2507b1019a6SJerry Jelinek  *
2517b1019a6SJerry Jelinek  ******************************************************************************/
2527b1019a6SJerry Jelinek 
253*35786f68SRobert Mustacchi typedef struct acpi_table_spcr
2547b1019a6SJerry Jelinek {
2557b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
256*35786f68SRobert Mustacchi     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
257*35786f68SRobert Mustacchi     UINT8                   Reserved[3];
258*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    SerialPort;
259*35786f68SRobert Mustacchi     UINT8                   InterruptType;
260*35786f68SRobert Mustacchi     UINT8                   PcInterrupt;
261*35786f68SRobert Mustacchi     UINT32                  Interrupt;
262*35786f68SRobert Mustacchi     UINT8                   BaudRate;
263*35786f68SRobert Mustacchi     UINT8                   Parity;
264*35786f68SRobert Mustacchi     UINT8                   StopBits;
265*35786f68SRobert Mustacchi     UINT8                   FlowControl;
266*35786f68SRobert Mustacchi     UINT8                   TerminalType;
267*35786f68SRobert Mustacchi     UINT8                   Reserved1;
268*35786f68SRobert Mustacchi     UINT16                  PciDeviceId;
269*35786f68SRobert Mustacchi     UINT16                  PciVendorId;
270*35786f68SRobert Mustacchi     UINT8                   PciBus;
271*35786f68SRobert Mustacchi     UINT8                   PciDevice;
272*35786f68SRobert Mustacchi     UINT8                   PciFunction;
273*35786f68SRobert Mustacchi     UINT32                  PciFlags;
274*35786f68SRobert Mustacchi     UINT8                   PciSegment;
275*35786f68SRobert Mustacchi     UINT32                  Reserved2;
2767b1019a6SJerry Jelinek 
277*35786f68SRobert Mustacchi } ACPI_TABLE_SPCR;
2787b1019a6SJerry Jelinek 
279*35786f68SRobert Mustacchi /* Masks for PciFlags field above */
2807b1019a6SJerry Jelinek 
281*35786f68SRobert Mustacchi #define ACPI_SPCR_DO_NOT_DISABLE    (1)
2827b1019a6SJerry Jelinek 
283*35786f68SRobert Mustacchi /* Values for Interface Type: See the definition of the DBG2 table */
2847b1019a6SJerry Jelinek 
2857b1019a6SJerry Jelinek 
286*35786f68SRobert Mustacchi /*******************************************************************************
287*35786f68SRobert Mustacchi  *
288*35786f68SRobert Mustacchi  * SPMI - Server Platform Management Interface table
289*35786f68SRobert Mustacchi  *        Version 5
290*35786f68SRobert Mustacchi  *
291*35786f68SRobert Mustacchi  * Conforms to "Intelligent Platform Management Interface Specification
292*35786f68SRobert Mustacchi  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
293*35786f68SRobert Mustacchi  * June 12, 2009 markup.
294*35786f68SRobert Mustacchi  *
295*35786f68SRobert Mustacchi  ******************************************************************************/
2967b1019a6SJerry Jelinek 
297*35786f68SRobert Mustacchi typedef struct acpi_table_spmi
2987b1019a6SJerry Jelinek {
299*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
300*35786f68SRobert Mustacchi     UINT8                   InterfaceType;
301*35786f68SRobert Mustacchi     UINT8                   Reserved;           /* Must be 1 */
302*35786f68SRobert Mustacchi     UINT16                  SpecRevision;       /* Version of IPMI */
303*35786f68SRobert Mustacchi     UINT8                   InterruptType;
304*35786f68SRobert Mustacchi     UINT8                   GpeNumber;          /* GPE assigned */
305*35786f68SRobert Mustacchi     UINT8                   Reserved1;
306*35786f68SRobert Mustacchi     UINT8                   PciDeviceFlag;
307*35786f68SRobert Mustacchi     UINT32                  Interrupt;
308*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    IpmiRegister;
309*35786f68SRobert Mustacchi     UINT8                   PciSegment;
310*35786f68SRobert Mustacchi     UINT8                   PciBus;
311*35786f68SRobert Mustacchi     UINT8                   PciDevice;
312*35786f68SRobert Mustacchi     UINT8                   PciFunction;
313*35786f68SRobert Mustacchi     UINT8                   Reserved2;
314*35786f68SRobert Mustacchi 
315*35786f68SRobert Mustacchi } ACPI_TABLE_SPMI;
316*35786f68SRobert Mustacchi 
317*35786f68SRobert Mustacchi /* Values for InterfaceType above */
318*35786f68SRobert Mustacchi 
319*35786f68SRobert Mustacchi enum AcpiSpmiInterfaceTypes
320*35786f68SRobert Mustacchi {
321*35786f68SRobert Mustacchi     ACPI_SPMI_NOT_USED              = 0,
322*35786f68SRobert Mustacchi     ACPI_SPMI_KEYBOARD              = 1,
323*35786f68SRobert Mustacchi     ACPI_SPMI_SMI                   = 2,
324*35786f68SRobert Mustacchi     ACPI_SPMI_BLOCK_TRANSFER        = 3,
325*35786f68SRobert Mustacchi     ACPI_SPMI_SMBUS                 = 4,
326*35786f68SRobert Mustacchi     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
3277b1019a6SJerry Jelinek };
3287b1019a6SJerry Jelinek 
3297b1019a6SJerry Jelinek 
330*35786f68SRobert Mustacchi /*******************************************************************************
331*35786f68SRobert Mustacchi  *
332*35786f68SRobert Mustacchi  * SRAT - System Resource Affinity Table
333*35786f68SRobert Mustacchi  *        Version 3
334*35786f68SRobert Mustacchi  *
335*35786f68SRobert Mustacchi  ******************************************************************************/
3367b1019a6SJerry Jelinek 
337*35786f68SRobert Mustacchi typedef struct acpi_table_srat
3387b1019a6SJerry Jelinek {
339*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
340*35786f68SRobert Mustacchi     UINT32                  TableRevision;      /* Must be value '1' */
341*35786f68SRobert Mustacchi     UINT64                  Reserved;           /* Reserved, must be zero */
3427b1019a6SJerry Jelinek 
343*35786f68SRobert Mustacchi } ACPI_TABLE_SRAT;
3447b1019a6SJerry Jelinek 
345*35786f68SRobert Mustacchi /* Values for subtable type in ACPI_SUBTABLE_HEADER */
3467b1019a6SJerry Jelinek 
347*35786f68SRobert Mustacchi enum AcpiSratType
3487b1019a6SJerry Jelinek {
349*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_CPU_AFFINITY         = 0,
350*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_MEMORY_AFFINITY      = 1,
351*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY  = 2,
352*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_GICC_AFFINITY        = 3,
353*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4,    /* ACPI 6.2 */
354*35786f68SRobert Mustacchi     ACPI_SRAT_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
355*35786f68SRobert Mustacchi };
3567b1019a6SJerry Jelinek 
3577b1019a6SJerry Jelinek /*
358*35786f68SRobert Mustacchi  * SRAT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
3597b1019a6SJerry Jelinek  */
3607b1019a6SJerry Jelinek 
361*35786f68SRobert Mustacchi /* 0: Processor Local APIC/SAPIC Affinity */
3627b1019a6SJerry Jelinek 
363*35786f68SRobert Mustacchi typedef struct acpi_srat_cpu_affinity
3647b1019a6SJerry Jelinek {
365*35786f68SRobert Mustacchi     ACPI_SUBTABLE_HEADER    Header;
366*35786f68SRobert Mustacchi     UINT8                   ProximityDomainLo;
367*35786f68SRobert Mustacchi     UINT8                   ApicId;
368*35786f68SRobert Mustacchi     UINT32                  Flags;
369*35786f68SRobert Mustacchi     UINT8                   LocalSapicEid;
370*35786f68SRobert Mustacchi     UINT8                   ProximityDomainHi[3];
371*35786f68SRobert Mustacchi     UINT32                  ClockDomain;
3727b1019a6SJerry Jelinek 
373*35786f68SRobert Mustacchi } ACPI_SRAT_CPU_AFFINITY;
3747b1019a6SJerry Jelinek 
375*35786f68SRobert Mustacchi /* Flags */
3767b1019a6SJerry Jelinek 
377*35786f68SRobert Mustacchi #define ACPI_SRAT_CPU_USE_AFFINITY  (1)         /* 00: Use affinity structure */
3787b1019a6SJerry Jelinek 
3797b1019a6SJerry Jelinek 
380*35786f68SRobert Mustacchi /* 1: Memory Affinity */
3817b1019a6SJerry Jelinek 
382*35786f68SRobert Mustacchi typedef struct acpi_srat_mem_affinity
3837b1019a6SJerry Jelinek {
384*35786f68SRobert Mustacchi     ACPI_SUBTABLE_HEADER    Header;
385*35786f68SRobert Mustacchi     UINT32                  ProximityDomain;
386*35786f68SRobert Mustacchi     UINT16                  Reserved;           /* Reserved, must be zero */
387*35786f68SRobert Mustacchi     UINT64                  BaseAddress;
388*35786f68SRobert Mustacchi     UINT64                  Length;
389*35786f68SRobert Mustacchi     UINT32                  Reserved1;
390*35786f68SRobert Mustacchi     UINT32                  Flags;
391*35786f68SRobert Mustacchi     UINT64                  Reserved2;          /* Reserved, must be zero */
3927b1019a6SJerry Jelinek 
393*35786f68SRobert Mustacchi } ACPI_SRAT_MEM_AFFINITY;
3947b1019a6SJerry Jelinek 
395*35786f68SRobert Mustacchi /* Flags */
3967b1019a6SJerry Jelinek 
397*35786f68SRobert Mustacchi #define ACPI_SRAT_MEM_ENABLED       (1)         /* 00: Use affinity structure */
398*35786f68SRobert Mustacchi #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)      /* 01: Memory region is hot pluggable */
399*35786f68SRobert Mustacchi #define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)      /* 02: Memory region is non-volatile */
4007b1019a6SJerry Jelinek 
4017b1019a6SJerry Jelinek 
402*35786f68SRobert Mustacchi /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
4037b1019a6SJerry Jelinek 
404*35786f68SRobert Mustacchi typedef struct acpi_srat_x2apic_cpu_affinity
4057b1019a6SJerry Jelinek {
406*35786f68SRobert Mustacchi     ACPI_SUBTABLE_HEADER    Header;
407*35786f68SRobert Mustacchi     UINT16                  Reserved;           /* Reserved, must be zero */
408*35786f68SRobert Mustacchi     UINT32                  ProximityDomain;
409*35786f68SRobert Mustacchi     UINT32                  ApicId;
410*35786f68SRobert Mustacchi     UINT32                  Flags;
411*35786f68SRobert Mustacchi     UINT32                  ClockDomain;
412*35786f68SRobert Mustacchi     UINT32                  Reserved2;
4137b1019a6SJerry Jelinek 
414*35786f68SRobert Mustacchi } ACPI_SRAT_X2APIC_CPU_AFFINITY;
4157b1019a6SJerry Jelinek 
416*35786f68SRobert Mustacchi /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */
4177b1019a6SJerry Jelinek 
418*35786f68SRobert Mustacchi #define ACPI_SRAT_CPU_ENABLED       (1)         /* 00: Use affinity structure */
4197b1019a6SJerry Jelinek 
4207b1019a6SJerry Jelinek 
421*35786f68SRobert Mustacchi /* 3: GICC Affinity (ACPI 5.1) */
4227b1019a6SJerry Jelinek 
423*35786f68SRobert Mustacchi typedef struct acpi_srat_gicc_affinity
4247b1019a6SJerry Jelinek {
425*35786f68SRobert Mustacchi     ACPI_SUBTABLE_HEADER    Header;
426*35786f68SRobert Mustacchi     UINT32                  ProximityDomain;
427*35786f68SRobert Mustacchi     UINT32                  AcpiProcessorUid;
428*35786f68SRobert Mustacchi     UINT32                  Flags;
429*35786f68SRobert Mustacchi     UINT32                  ClockDomain;
4307b1019a6SJerry Jelinek 
431*35786f68SRobert Mustacchi } ACPI_SRAT_GICC_AFFINITY;
4327b1019a6SJerry Jelinek 
433*35786f68SRobert Mustacchi /* Flags for ACPI_SRAT_GICC_AFFINITY */
4347b1019a6SJerry Jelinek 
435*35786f68SRobert Mustacchi #define ACPI_SRAT_GICC_ENABLED     (1)         /* 00: Use affinity structure */
4367b1019a6SJerry Jelinek 
4377b1019a6SJerry Jelinek 
438*35786f68SRobert Mustacchi /* 4: GCC ITS Affinity (ACPI 6.2) */
4397b1019a6SJerry Jelinek 
440*35786f68SRobert Mustacchi typedef struct acpi_srat_gic_its_affinity
4417b1019a6SJerry Jelinek {
442*35786f68SRobert Mustacchi     ACPI_SUBTABLE_HEADER    Header;
443*35786f68SRobert Mustacchi     UINT32                  ProximityDomain;
444*35786f68SRobert Mustacchi     UINT16                  Reserved;
445*35786f68SRobert Mustacchi     UINT32                  ItsId;
4467b1019a6SJerry Jelinek 
447*35786f68SRobert Mustacchi } ACPI_SRAT_GIC_ITS_AFFINITY;
4487b1019a6SJerry Jelinek 
4497b1019a6SJerry Jelinek 
4507b1019a6SJerry Jelinek /*******************************************************************************
4517b1019a6SJerry Jelinek  *
452*35786f68SRobert Mustacchi  * STAO - Status Override Table (_STA override) - ACPI 6.0
4537b1019a6SJerry Jelinek  *        Version 1
4547b1019a6SJerry Jelinek  *
455*35786f68SRobert Mustacchi  * Conforms to "ACPI Specification for Status Override Table"
456*35786f68SRobert Mustacchi  * 6 January 2015
457*35786f68SRobert Mustacchi  *
4587b1019a6SJerry Jelinek  ******************************************************************************/
4597b1019a6SJerry Jelinek 
460*35786f68SRobert Mustacchi typedef struct acpi_table_stao
4617b1019a6SJerry Jelinek {
4627b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
463*35786f68SRobert Mustacchi     UINT8                   IgnoreUart;
4647b1019a6SJerry Jelinek 
465*35786f68SRobert Mustacchi } ACPI_TABLE_STAO;
4667b1019a6SJerry Jelinek 
4677b1019a6SJerry Jelinek 
468*35786f68SRobert Mustacchi /*******************************************************************************
469*35786f68SRobert Mustacchi  *
470*35786f68SRobert Mustacchi  * TCPA - Trusted Computing Platform Alliance table
471*35786f68SRobert Mustacchi  *        Version 2
472*35786f68SRobert Mustacchi  *
473*35786f68SRobert Mustacchi  * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
474*35786f68SRobert Mustacchi  *
475*35786f68SRobert Mustacchi  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
476*35786f68SRobert Mustacchi  * Version 1.2, Revision 8
477*35786f68SRobert Mustacchi  * February 27, 2017
478*35786f68SRobert Mustacchi  *
479*35786f68SRobert Mustacchi  * NOTE: There are two versions of the table with the same signature --
480*35786f68SRobert Mustacchi  * the client version and the server version. The common PlatformClass
481*35786f68SRobert Mustacchi  * field is used to differentiate the two types of tables.
482*35786f68SRobert Mustacchi  *
483*35786f68SRobert Mustacchi  ******************************************************************************/
4847b1019a6SJerry Jelinek 
485*35786f68SRobert Mustacchi typedef struct acpi_table_tcpa_hdr
4867b1019a6SJerry Jelinek {
487*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
488*35786f68SRobert Mustacchi     UINT16                  PlatformClass;
4897b1019a6SJerry Jelinek 
490*35786f68SRobert Mustacchi } ACPI_TABLE_TCPA_HDR;
4917b1019a6SJerry Jelinek 
492*35786f68SRobert Mustacchi /*
493*35786f68SRobert Mustacchi  * Values for PlatformClass above.
494*35786f68SRobert Mustacchi  * This is how the client and server subtables are differentiated
495*35786f68SRobert Mustacchi  */
496*35786f68SRobert Mustacchi #define ACPI_TCPA_CLIENT_TABLE          0
497*35786f68SRobert Mustacchi #define ACPI_TCPA_SERVER_TABLE          1
4987b1019a6SJerry Jelinek 
4997b1019a6SJerry Jelinek 
500*35786f68SRobert Mustacchi typedef struct acpi_table_tcpa_client
5017b1019a6SJerry Jelinek {
502*35786f68SRobert Mustacchi     UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
503*35786f68SRobert Mustacchi     UINT64                  LogAddress;         /* Address of the event log area */
5047b1019a6SJerry Jelinek 
505*35786f68SRobert Mustacchi } ACPI_TABLE_TCPA_CLIENT;
5067b1019a6SJerry Jelinek 
507*35786f68SRobert Mustacchi typedef struct acpi_table_tcpa_server
5087b1019a6SJerry Jelinek {
5097b1019a6SJerry Jelinek     UINT16                  Reserved;
510*35786f68SRobert Mustacchi     UINT64                  MinimumLogLength;   /* Minimum length for the event log area */
511*35786f68SRobert Mustacchi     UINT64                  LogAddress;         /* Address of the event log area */
512*35786f68SRobert Mustacchi     UINT16                  SpecRevision;
513*35786f68SRobert Mustacchi     UINT8                   DeviceFlags;
514*35786f68SRobert Mustacchi     UINT8                   InterruptFlags;
515*35786f68SRobert Mustacchi     UINT8                   GpeNumber;
516*35786f68SRobert Mustacchi     UINT8                   Reserved2[3];
517*35786f68SRobert Mustacchi     UINT32                  GlobalInterrupt;
518*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    Address;
519*35786f68SRobert Mustacchi     UINT32                  Reserved3;
520*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    ConfigAddress;
521*35786f68SRobert Mustacchi     UINT8                   Group;
522*35786f68SRobert Mustacchi     UINT8                   Bus;                /* PCI Bus/Segment/Function numbers */
523*35786f68SRobert Mustacchi     UINT8                   Device;
524*35786f68SRobert Mustacchi     UINT8                   Function;
525*35786f68SRobert Mustacchi 
526*35786f68SRobert Mustacchi } ACPI_TABLE_TCPA_SERVER;
527*35786f68SRobert Mustacchi 
528*35786f68SRobert Mustacchi /* Values for DeviceFlags above */
529*35786f68SRobert Mustacchi 
530*35786f68SRobert Mustacchi #define ACPI_TCPA_PCI_DEVICE            (1)
531*35786f68SRobert Mustacchi #define ACPI_TCPA_BUS_PNP               (1<<1)
532*35786f68SRobert Mustacchi #define ACPI_TCPA_ADDRESS_VALID         (1<<2)
533*35786f68SRobert Mustacchi 
534*35786f68SRobert Mustacchi /* Values for InterruptFlags above */
535*35786f68SRobert Mustacchi 
536*35786f68SRobert Mustacchi #define ACPI_TCPA_INTERRUPT_MODE        (1)
537*35786f68SRobert Mustacchi #define ACPI_TCPA_INTERRUPT_POLARITY    (1<<1)
538*35786f68SRobert Mustacchi #define ACPI_TCPA_SCI_VIA_GPE           (1<<2)
539*35786f68SRobert Mustacchi #define ACPI_TCPA_GLOBAL_INTERRUPT      (1<<3)
5407b1019a6SJerry Jelinek 
5417b1019a6SJerry Jelinek 
5427b1019a6SJerry Jelinek /*******************************************************************************
5437b1019a6SJerry Jelinek  *
544*35786f68SRobert Mustacchi  * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
545*35786f68SRobert Mustacchi  *        Version 4
546*35786f68SRobert Mustacchi  *
547*35786f68SRobert Mustacchi  * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
548*35786f68SRobert Mustacchi  *
549*35786f68SRobert Mustacchi  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
550*35786f68SRobert Mustacchi  * Version 1.2, Revision 8
551*35786f68SRobert Mustacchi  * February 27, 2017
5527b1019a6SJerry Jelinek  *
5537b1019a6SJerry Jelinek  ******************************************************************************/
5547b1019a6SJerry Jelinek 
555*35786f68SRobert Mustacchi typedef struct acpi_table_tpm2
5567b1019a6SJerry Jelinek {
5577b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
558*35786f68SRobert Mustacchi     UINT16                  PlatformClass;
559*35786f68SRobert Mustacchi     UINT16                  Reserved;
560*35786f68SRobert Mustacchi     UINT64                  ControlAddress;
561*35786f68SRobert Mustacchi     UINT32                  StartMethod;
5627b1019a6SJerry Jelinek 
563*35786f68SRobert Mustacchi     /* Platform-specific data follows */
5647b1019a6SJerry Jelinek 
565*35786f68SRobert Mustacchi } ACPI_TABLE_TPM2;
5667b1019a6SJerry Jelinek 
567*35786f68SRobert Mustacchi /* Values for StartMethod above */
5687b1019a6SJerry Jelinek 
569*35786f68SRobert Mustacchi #define ACPI_TPM2_NOT_ALLOWED                       0
570*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED1                         1
571*35786f68SRobert Mustacchi #define ACPI_TPM2_START_METHOD                      2
572*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED3                         3
573*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED4                         4
574*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED5                         5
575*35786f68SRobert Mustacchi #define ACPI_TPM2_MEMORY_MAPPED                     6
576*35786f68SRobert Mustacchi #define ACPI_TPM2_COMMAND_BUFFER                    7
577*35786f68SRobert Mustacchi #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8
578*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED9                         9
579*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED10                        10
580*35786f68SRobert Mustacchi #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11  /* V1.2 Rev 8 */
581*35786f68SRobert Mustacchi #define ACPI_TPM2_RESERVED                          12
5827b1019a6SJerry Jelinek 
5837b1019a6SJerry Jelinek 
584*35786f68SRobert Mustacchi /* Optional trailer appears after any StartMethod subtables */
5857b1019a6SJerry Jelinek 
586*35786f68SRobert Mustacchi typedef struct acpi_tpm2_trailer
5877b1019a6SJerry Jelinek {
588*35786f68SRobert Mustacchi     UINT8                   MethodParameters[12];
589*35786f68SRobert Mustacchi     UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
590*35786f68SRobert Mustacchi     UINT64                  LogAddress;         /* Address of the event log area */
5917b1019a6SJerry Jelinek 
592*35786f68SRobert Mustacchi } ACPI_TPM2_TRAILER;
5937b1019a6SJerry Jelinek 
5947b1019a6SJerry Jelinek 
595*35786f68SRobert Mustacchi /*
596*35786f68SRobert Mustacchi  * Subtables (StartMethod-specific)
597*35786f68SRobert Mustacchi  */
5987b1019a6SJerry Jelinek 
599*35786f68SRobert Mustacchi /* 11: Start Method for ARM SMC (V1.2 Rev 8) */
6007b1019a6SJerry Jelinek 
601*35786f68SRobert Mustacchi typedef struct acpi_tpm2_arm_smc
6027b1019a6SJerry Jelinek {
603*35786f68SRobert Mustacchi     UINT32                  GlobalInterrupt;
604*35786f68SRobert Mustacchi     UINT8                   InterruptFlags;
605*35786f68SRobert Mustacchi     UINT8                   OperationFlags;
606*35786f68SRobert Mustacchi     UINT16                  Reserved;
607*35786f68SRobert Mustacchi     UINT32                  FunctionId;
6087b1019a6SJerry Jelinek 
609*35786f68SRobert Mustacchi } ACPI_TPM2_ARM_SMC;
6107b1019a6SJerry Jelinek 
611*35786f68SRobert Mustacchi /* Values for InterruptFlags above */
6127b1019a6SJerry Jelinek 
613*35786f68SRobert Mustacchi #define ACPI_TPM2_INTERRUPT_SUPPORT     (1)
6147b1019a6SJerry Jelinek 
615*35786f68SRobert Mustacchi /* Values for OperationFlags above */
6167b1019a6SJerry Jelinek 
617*35786f68SRobert Mustacchi #define ACPI_TPM2_IDLE_SUPPORT          (1)
6187b1019a6SJerry Jelinek 
6197b1019a6SJerry Jelinek 
6207b1019a6SJerry Jelinek /*******************************************************************************
6217b1019a6SJerry Jelinek  *
622*35786f68SRobert Mustacchi  * UEFI - UEFI Boot optimization Table
6237b1019a6SJerry Jelinek  *        Version 1
6247b1019a6SJerry Jelinek  *
625*35786f68SRobert Mustacchi  * Conforms to "Unified Extensible Firmware Interface Specification",
626*35786f68SRobert Mustacchi  * Version 2.3, May 8, 2009
627*35786f68SRobert Mustacchi  *
6287b1019a6SJerry Jelinek  ******************************************************************************/
6297b1019a6SJerry Jelinek 
630*35786f68SRobert Mustacchi typedef struct acpi_table_uefi
6317b1019a6SJerry Jelinek {
6327b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
633*35786f68SRobert Mustacchi     UINT8                   Identifier[16];     /* UUID identifier */
634*35786f68SRobert Mustacchi     UINT16                  DataOffset;         /* Offset of remaining data in table */
6357b1019a6SJerry Jelinek 
636*35786f68SRobert Mustacchi } ACPI_TABLE_UEFI;
6377b1019a6SJerry Jelinek 
6387b1019a6SJerry Jelinek 
639*35786f68SRobert Mustacchi /*******************************************************************************
640*35786f68SRobert Mustacchi  *
641*35786f68SRobert Mustacchi  * VRTC - Virtual Real Time Clock Table
642*35786f68SRobert Mustacchi  *        Version 1
643*35786f68SRobert Mustacchi  *
644*35786f68SRobert Mustacchi  * Conforms to "Simple Firmware Interface Specification",
645*35786f68SRobert Mustacchi  * Draft 0.8.2, Oct 19, 2010
646*35786f68SRobert Mustacchi  * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
647*35786f68SRobert Mustacchi  *
648*35786f68SRobert Mustacchi  ******************************************************************************/
6497b1019a6SJerry Jelinek 
650*35786f68SRobert Mustacchi typedef struct acpi_table_vrtc
6517b1019a6SJerry Jelinek {
652*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
6537b1019a6SJerry Jelinek 
654*35786f68SRobert Mustacchi } ACPI_TABLE_VRTC;
6557b1019a6SJerry Jelinek 
656*35786f68SRobert Mustacchi /* VRTC entry */
6577b1019a6SJerry Jelinek 
658*35786f68SRobert Mustacchi typedef struct acpi_vrtc_entry
6597b1019a6SJerry Jelinek {
660*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    PhysicalAddress;
661*35786f68SRobert Mustacchi     UINT32                  Irq;
6627b1019a6SJerry Jelinek 
663*35786f68SRobert Mustacchi } ACPI_VRTC_ENTRY;
6647b1019a6SJerry Jelinek 
6657b1019a6SJerry Jelinek 
6667b1019a6SJerry Jelinek /*******************************************************************************
6677b1019a6SJerry Jelinek  *
668*35786f68SRobert Mustacchi  * WAET - Windows ACPI Emulated devices Table
6697b1019a6SJerry Jelinek  *        Version 1
6707b1019a6SJerry Jelinek  *
671*35786f68SRobert Mustacchi  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
672*35786f68SRobert Mustacchi  *
6737b1019a6SJerry Jelinek  ******************************************************************************/
6747b1019a6SJerry Jelinek 
675*35786f68SRobert Mustacchi typedef struct acpi_table_waet
6767b1019a6SJerry Jelinek {
6777b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
678*35786f68SRobert Mustacchi     UINT32                  Flags;
6797b1019a6SJerry Jelinek 
680*35786f68SRobert Mustacchi } ACPI_TABLE_WAET;
6817b1019a6SJerry Jelinek 
682*35786f68SRobert Mustacchi /* Masks for Flags field above */
6837b1019a6SJerry Jelinek 
684*35786f68SRobert Mustacchi #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
685*35786f68SRobert Mustacchi #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
6867b1019a6SJerry Jelinek 
6877b1019a6SJerry Jelinek 
688*35786f68SRobert Mustacchi /*******************************************************************************
689*35786f68SRobert Mustacchi  *
690*35786f68SRobert Mustacchi  * WDAT - Watchdog Action Table
691*35786f68SRobert Mustacchi  *        Version 1
692*35786f68SRobert Mustacchi  *
693*35786f68SRobert Mustacchi  * Conforms to "Hardware Watchdog Timers Design Specification",
694*35786f68SRobert Mustacchi  * Copyright 2006 Microsoft Corporation.
695*35786f68SRobert Mustacchi  *
696*35786f68SRobert Mustacchi  ******************************************************************************/
6977b1019a6SJerry Jelinek 
698*35786f68SRobert Mustacchi typedef struct acpi_table_wdat
6997b1019a6SJerry Jelinek {
700*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
701*35786f68SRobert Mustacchi     UINT32                  HeaderLength;       /* Watchdog Header Length */
702*35786f68SRobert Mustacchi     UINT16                  PciSegment;         /* PCI Segment number */
703*35786f68SRobert Mustacchi     UINT8                   PciBus;             /* PCI Bus number */
704*35786f68SRobert Mustacchi     UINT8                   PciDevice;          /* PCI Device number */
705*35786f68SRobert Mustacchi     UINT8                   PciFunction;        /* PCI Function number */
706*35786f68SRobert Mustacchi     UINT8                   Reserved[3];
707*35786f68SRobert Mustacchi     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
708*35786f68SRobert Mustacchi     UINT32                  MaxCount;           /* Maximum counter value supported */
709*35786f68SRobert Mustacchi     UINT32                  MinCount;           /* Minimum counter value */
710*35786f68SRobert Mustacchi     UINT8                   Flags;
711*35786f68SRobert Mustacchi     UINT8                   Reserved2[3];
712*35786f68SRobert Mustacchi     UINT32                  Entries;            /* Number of watchdog entries that follow */
7137b1019a6SJerry Jelinek 
714*35786f68SRobert Mustacchi } ACPI_TABLE_WDAT;
7157b1019a6SJerry Jelinek 
716*35786f68SRobert Mustacchi /* Masks for Flags field above */
7177b1019a6SJerry Jelinek 
718*35786f68SRobert Mustacchi #define ACPI_WDAT_ENABLED           (1)
719*35786f68SRobert Mustacchi #define ACPI_WDAT_STOPPED           0x80
7207b1019a6SJerry Jelinek 
7217b1019a6SJerry Jelinek 
722*35786f68SRobert Mustacchi /* WDAT Instruction Entries (actions) */
7237b1019a6SJerry Jelinek 
724*35786f68SRobert Mustacchi typedef struct acpi_wdat_entry
7257b1019a6SJerry Jelinek {
726*35786f68SRobert Mustacchi     UINT8                   Action;
727*35786f68SRobert Mustacchi     UINT8                   Instruction;
728*35786f68SRobert Mustacchi     UINT16                  Reserved;
729*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    RegisterRegion;
730*35786f68SRobert Mustacchi     UINT32                  Value;              /* Value used with Read/Write register */
731*35786f68SRobert Mustacchi     UINT32                  Mask;               /* Bitmask required for this register instruction */
732*35786f68SRobert Mustacchi 
733*35786f68SRobert Mustacchi } ACPI_WDAT_ENTRY;
734*35786f68SRobert Mustacchi 
735*35786f68SRobert Mustacchi /* Values for Action field above */
736*35786f68SRobert Mustacchi 
737*35786f68SRobert Mustacchi enum AcpiWdatActions
738*35786f68SRobert Mustacchi {
739*35786f68SRobert Mustacchi     ACPI_WDAT_RESET                 = 1,
740*35786f68SRobert Mustacchi     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
741*35786f68SRobert Mustacchi     ACPI_WDAT_GET_COUNTDOWN         = 5,
742*35786f68SRobert Mustacchi     ACPI_WDAT_SET_COUNTDOWN         = 6,
743*35786f68SRobert Mustacchi     ACPI_WDAT_GET_RUNNING_STATE     = 8,
744*35786f68SRobert Mustacchi     ACPI_WDAT_SET_RUNNING_STATE     = 9,
745*35786f68SRobert Mustacchi     ACPI_WDAT_GET_STOPPED_STATE     = 10,
746*35786f68SRobert Mustacchi     ACPI_WDAT_SET_STOPPED_STATE     = 11,
747*35786f68SRobert Mustacchi     ACPI_WDAT_GET_REBOOT            = 16,
748*35786f68SRobert Mustacchi     ACPI_WDAT_SET_REBOOT            = 17,
749*35786f68SRobert Mustacchi     ACPI_WDAT_GET_SHUTDOWN          = 18,
750*35786f68SRobert Mustacchi     ACPI_WDAT_SET_SHUTDOWN          = 19,
751*35786f68SRobert Mustacchi     ACPI_WDAT_GET_STATUS            = 32,
752*35786f68SRobert Mustacchi     ACPI_WDAT_SET_STATUS            = 33,
753*35786f68SRobert Mustacchi     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
7547b1019a6SJerry Jelinek };
7557b1019a6SJerry Jelinek 
756*35786f68SRobert Mustacchi /* Values for Instruction field above */
7577b1019a6SJerry Jelinek 
758*35786f68SRobert Mustacchi enum AcpiWdatInstructions
7597b1019a6SJerry Jelinek {
760*35786f68SRobert Mustacchi     ACPI_WDAT_READ_VALUE            = 0,
761*35786f68SRobert Mustacchi     ACPI_WDAT_READ_COUNTDOWN        = 1,
762*35786f68SRobert Mustacchi     ACPI_WDAT_WRITE_VALUE           = 2,
763*35786f68SRobert Mustacchi     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
764*35786f68SRobert Mustacchi     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
765*35786f68SRobert Mustacchi     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
7667b1019a6SJerry Jelinek };
7677b1019a6SJerry Jelinek 
7687b1019a6SJerry Jelinek 
769*35786f68SRobert Mustacchi /*******************************************************************************
770*35786f68SRobert Mustacchi  *
771*35786f68SRobert Mustacchi  * WDDT - Watchdog Descriptor Table
772*35786f68SRobert Mustacchi  *        Version 1
773*35786f68SRobert Mustacchi  *
774*35786f68SRobert Mustacchi  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
775*35786f68SRobert Mustacchi  * Version 001, September 2002
776*35786f68SRobert Mustacchi  *
777*35786f68SRobert Mustacchi  ******************************************************************************/
7787b1019a6SJerry Jelinek 
779*35786f68SRobert Mustacchi typedef struct acpi_table_wddt
780*35786f68SRobert Mustacchi {
781*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
782*35786f68SRobert Mustacchi     UINT16                  SpecVersion;
783*35786f68SRobert Mustacchi     UINT16                  TableVersion;
784*35786f68SRobert Mustacchi     UINT16                  PciVendorId;
785*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    Address;
786*35786f68SRobert Mustacchi     UINT16                  MaxCount;           /* Maximum counter value supported */
787*35786f68SRobert Mustacchi     UINT16                  MinCount;           /* Minimum counter value supported */
788*35786f68SRobert Mustacchi     UINT16                  Period;
789*35786f68SRobert Mustacchi     UINT16                  Status;
790*35786f68SRobert Mustacchi     UINT16                  Capability;
7917b1019a6SJerry Jelinek 
792*35786f68SRobert Mustacchi } ACPI_TABLE_WDDT;
7937b1019a6SJerry Jelinek 
794*35786f68SRobert Mustacchi /* Flags for Status field above */
7957b1019a6SJerry Jelinek 
796*35786f68SRobert Mustacchi #define ACPI_WDDT_AVAILABLE     (1)
797*35786f68SRobert Mustacchi #define ACPI_WDDT_ACTIVE        (1<<1)
798*35786f68SRobert Mustacchi #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
799*35786f68SRobert Mustacchi #define ACPI_WDDT_USER_RESET    (1<<11)
800*35786f68SRobert Mustacchi #define ACPI_WDDT_WDT_RESET     (1<<12)
801*35786f68SRobert Mustacchi #define ACPI_WDDT_POWER_FAIL    (1<<13)
802*35786f68SRobert Mustacchi #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
8037b1019a6SJerry Jelinek 
804*35786f68SRobert Mustacchi /* Flags for Capability field above */
8057b1019a6SJerry Jelinek 
806*35786f68SRobert Mustacchi #define ACPI_WDDT_AUTO_RESET    (1)
807*35786f68SRobert Mustacchi #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
8087b1019a6SJerry Jelinek 
8097b1019a6SJerry Jelinek 
8107b1019a6SJerry Jelinek /*******************************************************************************
8117b1019a6SJerry Jelinek  *
812*35786f68SRobert Mustacchi  * WDRT - Watchdog Resource Table
8137b1019a6SJerry Jelinek  *        Version 1
8147b1019a6SJerry Jelinek  *
815*35786f68SRobert Mustacchi  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
816*35786f68SRobert Mustacchi  * Version 1.01, August 28, 2006
8177b1019a6SJerry Jelinek  *
8187b1019a6SJerry Jelinek  ******************************************************************************/
8197b1019a6SJerry Jelinek 
820*35786f68SRobert Mustacchi typedef struct acpi_table_wdrt
8217b1019a6SJerry Jelinek {
8227b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
823*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    ControlRegister;
824*35786f68SRobert Mustacchi     ACPI_GENERIC_ADDRESS    CountRegister;
825*35786f68SRobert Mustacchi     UINT16                  PciDeviceId;
826*35786f68SRobert Mustacchi     UINT16                  PciVendorId;
827*35786f68SRobert Mustacchi     UINT8                   PciBus;             /* PCI Bus number */
828*35786f68SRobert Mustacchi     UINT8                   PciDevice;          /* PCI Device number */
829*35786f68SRobert Mustacchi     UINT8                   PciFunction;        /* PCI Function number */
830*35786f68SRobert Mustacchi     UINT8                   PciSegment;         /* PCI Segment number */
831*35786f68SRobert Mustacchi     UINT16                  MaxCount;           /* Maximum counter value supported */
832*35786f68SRobert Mustacchi     UINT8                   Units;
8337b1019a6SJerry Jelinek 
834*35786f68SRobert Mustacchi } ACPI_TABLE_WDRT;
8357b1019a6SJerry Jelinek 
8367b1019a6SJerry Jelinek 
8377b1019a6SJerry Jelinek /*******************************************************************************
8387b1019a6SJerry Jelinek  *
8397b1019a6SJerry Jelinek  * WPBT - Windows Platform Environment Table (ACPI 6.0)
8407b1019a6SJerry Jelinek  *        Version 1
8417b1019a6SJerry Jelinek  *
8427b1019a6SJerry Jelinek  * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
8437b1019a6SJerry Jelinek  *
8447b1019a6SJerry Jelinek  ******************************************************************************/
8457b1019a6SJerry Jelinek 
8467b1019a6SJerry Jelinek typedef struct acpi_table_wpbt
8477b1019a6SJerry Jelinek {
8487b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
8497b1019a6SJerry Jelinek     UINT32                  HandoffSize;
8507b1019a6SJerry Jelinek     UINT64                  HandoffAddress;
8517b1019a6SJerry Jelinek     UINT8                   Layout;
8527b1019a6SJerry Jelinek     UINT8                   Type;
8537b1019a6SJerry Jelinek     UINT16                  ArgumentsLength;
8547b1019a6SJerry Jelinek 
8557b1019a6SJerry Jelinek } ACPI_TABLE_WPBT;
8567b1019a6SJerry Jelinek 
8577b1019a6SJerry Jelinek 
858*35786f68SRobert Mustacchi /*******************************************************************************
859*35786f68SRobert Mustacchi  *
860*35786f68SRobert Mustacchi  * WSMT - Windows SMM Security Migrations Table
861*35786f68SRobert Mustacchi  *        Version 1
862*35786f68SRobert Mustacchi  *
863*35786f68SRobert Mustacchi  * Conforms to "Windows SMM Security Migrations Table",
864*35786f68SRobert Mustacchi  * Version 1.0, April 18, 2016
865*35786f68SRobert Mustacchi  *
866*35786f68SRobert Mustacchi  ******************************************************************************/
867*35786f68SRobert Mustacchi 
868*35786f68SRobert Mustacchi typedef struct acpi_table_wsmt
869*35786f68SRobert Mustacchi {
870*35786f68SRobert Mustacchi     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
871*35786f68SRobert Mustacchi     UINT32                  ProtectionFlags;
872*35786f68SRobert Mustacchi 
873*35786f68SRobert Mustacchi } ACPI_TABLE_WSMT;
874*35786f68SRobert Mustacchi 
875*35786f68SRobert Mustacchi /* Flags for ProtectionFlags field above */
876*35786f68SRobert Mustacchi 
877*35786f68SRobert Mustacchi #define ACPI_WSMT_FIXED_COMM_BUFFERS                (1)
878*35786f68SRobert Mustacchi #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
879*35786f68SRobert Mustacchi #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION        (4)
880*35786f68SRobert Mustacchi 
881*35786f68SRobert Mustacchi 
8827b1019a6SJerry Jelinek /*******************************************************************************
8837b1019a6SJerry Jelinek  *
8847b1019a6SJerry Jelinek  * XENV - Xen Environment Table (ACPI 6.0)
8857b1019a6SJerry Jelinek  *        Version 1
8867b1019a6SJerry Jelinek  *
8877b1019a6SJerry Jelinek  * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
8887b1019a6SJerry Jelinek  *
8897b1019a6SJerry Jelinek  ******************************************************************************/
8907b1019a6SJerry Jelinek 
8917b1019a6SJerry Jelinek typedef struct acpi_table_xenv
8927b1019a6SJerry Jelinek {
8937b1019a6SJerry Jelinek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
8947b1019a6SJerry Jelinek     UINT64                  GrantTableAddress;
8957b1019a6SJerry Jelinek     UINT64                  GrantTableSize;
8967b1019a6SJerry Jelinek     UINT32                  EventInterrupt;
8977b1019a6SJerry Jelinek     UINT8                   EventFlags;
8987b1019a6SJerry Jelinek 
8997b1019a6SJerry Jelinek } ACPI_TABLE_XENV;
9007b1019a6SJerry Jelinek 
9017b1019a6SJerry Jelinek 
9027b1019a6SJerry Jelinek /* Reset to default packing */
9037b1019a6SJerry Jelinek 
9047b1019a6SJerry Jelinek #pragma pack()
9057b1019a6SJerry Jelinek 
9067b1019a6SJerry Jelinek #endif /* __ACTBL3_H__ */
907