xref: /minix3/minix/drivers/power/acpi/include/actbl2.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1*433d6423SLionel Sambuc /******************************************************************************
2*433d6423SLionel Sambuc  *
3*433d6423SLionel Sambuc  * Name: actbl2.h - ACPI Specification Revision 2.0 Tables
4*433d6423SLionel Sambuc  *
5*433d6423SLionel Sambuc  *****************************************************************************/
6*433d6423SLionel Sambuc 
7*433d6423SLionel Sambuc /******************************************************************************
8*433d6423SLionel Sambuc  *
9*433d6423SLionel Sambuc  * 1. Copyright Notice
10*433d6423SLionel Sambuc  *
11*433d6423SLionel Sambuc  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
12*433d6423SLionel Sambuc  * All rights reserved.
13*433d6423SLionel Sambuc  *
14*433d6423SLionel Sambuc  * 2. License
15*433d6423SLionel Sambuc  *
16*433d6423SLionel Sambuc  * 2.1. This is your license from Intel Corp. under its intellectual property
17*433d6423SLionel Sambuc  * rights.  You may have additional license terms from the party that provided
18*433d6423SLionel Sambuc  * you this software, covering your right to use that party's intellectual
19*433d6423SLionel Sambuc  * property rights.
20*433d6423SLionel Sambuc  *
21*433d6423SLionel Sambuc  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22*433d6423SLionel Sambuc  * copy of the source code appearing in this file ("Covered Code") an
23*433d6423SLionel Sambuc  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24*433d6423SLionel Sambuc  * base code distributed originally by Intel ("Original Intel Code") to copy,
25*433d6423SLionel Sambuc  * make derivatives, distribute, use and display any portion of the Covered
26*433d6423SLionel Sambuc  * Code in any form, with the right to sublicense such rights; and
27*433d6423SLionel Sambuc  *
28*433d6423SLionel Sambuc  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29*433d6423SLionel Sambuc  * license (with the right to sublicense), under only those claims of Intel
30*433d6423SLionel Sambuc  * patents that are infringed by the Original Intel Code, to make, use, sell,
31*433d6423SLionel Sambuc  * offer to sell, and import the Covered Code and derivative works thereof
32*433d6423SLionel Sambuc  * solely to the minimum extent necessary to exercise the above copyright
33*433d6423SLionel Sambuc  * license, and in no event shall the patent license extend to any additions
34*433d6423SLionel Sambuc  * to or modifications of the Original Intel Code.  No other license or right
35*433d6423SLionel Sambuc  * is granted directly or by implication, estoppel or otherwise;
36*433d6423SLionel Sambuc  *
37*433d6423SLionel Sambuc  * The above copyright and patent license is granted only if the following
38*433d6423SLionel Sambuc  * conditions are met:
39*433d6423SLionel Sambuc  *
40*433d6423SLionel Sambuc  * 3. Conditions
41*433d6423SLionel Sambuc  *
42*433d6423SLionel Sambuc  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43*433d6423SLionel Sambuc  * Redistribution of source code of any substantial portion of the Covered
44*433d6423SLionel Sambuc  * Code or modification with rights to further distribute source must include
45*433d6423SLionel Sambuc  * the above Copyright Notice, the above License, this list of Conditions,
46*433d6423SLionel Sambuc  * and the following Disclaimer and Export Compliance provision.  In addition,
47*433d6423SLionel Sambuc  * Licensee must cause all Covered Code to which Licensee contributes to
48*433d6423SLionel Sambuc  * contain a file documenting the changes Licensee made to create that Covered
49*433d6423SLionel Sambuc  * Code and the date of any change.  Licensee must include in that file the
50*433d6423SLionel Sambuc  * documentation of any changes made by any predecessor Licensee.  Licensee
51*433d6423SLionel Sambuc  * must include a prominent statement that the modification is derived,
52*433d6423SLionel Sambuc  * directly or indirectly, from Original Intel Code.
53*433d6423SLionel Sambuc  *
54*433d6423SLionel Sambuc  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55*433d6423SLionel Sambuc  * Redistribution of source code of any substantial portion of the Covered
56*433d6423SLionel Sambuc  * Code or modification without rights to further distribute source must
57*433d6423SLionel Sambuc  * include the following Disclaimer and Export Compliance provision in the
58*433d6423SLionel Sambuc  * documentation and/or other materials provided with distribution.  In
59*433d6423SLionel Sambuc  * addition, Licensee may not authorize further sublicense of source of any
60*433d6423SLionel Sambuc  * portion of the Covered Code, and must include terms to the effect that the
61*433d6423SLionel Sambuc  * license from Licensee to its licensee is limited to the intellectual
62*433d6423SLionel Sambuc  * property embodied in the software Licensee provides to its licensee, and
63*433d6423SLionel Sambuc  * not to intellectual property embodied in modifications its licensee may
64*433d6423SLionel Sambuc  * make.
65*433d6423SLionel Sambuc  *
66*433d6423SLionel Sambuc  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67*433d6423SLionel Sambuc  * substantial portion of the Covered Code or modification must reproduce the
68*433d6423SLionel Sambuc  * above Copyright Notice, and the following Disclaimer and Export Compliance
69*433d6423SLionel Sambuc  * provision in the documentation and/or other materials provided with the
70*433d6423SLionel Sambuc  * distribution.
71*433d6423SLionel Sambuc  *
72*433d6423SLionel Sambuc  * 3.4. Intel retains all right, title, and interest in and to the Original
73*433d6423SLionel Sambuc  * Intel Code.
74*433d6423SLionel Sambuc  *
75*433d6423SLionel Sambuc  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76*433d6423SLionel Sambuc  * Intel shall be used in advertising or otherwise to promote the sale, use or
77*433d6423SLionel Sambuc  * other dealings in products derived from or relating to the Covered Code
78*433d6423SLionel Sambuc  * without prior written authorization from Intel.
79*433d6423SLionel Sambuc  *
80*433d6423SLionel Sambuc  * 4. Disclaimer and Export Compliance
81*433d6423SLionel Sambuc  *
82*433d6423SLionel Sambuc  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83*433d6423SLionel Sambuc  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84*433d6423SLionel Sambuc  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
85*433d6423SLionel Sambuc  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
86*433d6423SLionel Sambuc  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
87*433d6423SLionel Sambuc  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88*433d6423SLionel Sambuc  * PARTICULAR PURPOSE.
89*433d6423SLionel Sambuc  *
90*433d6423SLionel Sambuc  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91*433d6423SLionel Sambuc  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92*433d6423SLionel Sambuc  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93*433d6423SLionel Sambuc  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94*433d6423SLionel Sambuc  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95*433d6423SLionel Sambuc  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
96*433d6423SLionel Sambuc  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97*433d6423SLionel Sambuc  * LIMITED REMEDY.
98*433d6423SLionel Sambuc  *
99*433d6423SLionel Sambuc  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100*433d6423SLionel Sambuc  * software or system incorporating such software without first obtaining any
101*433d6423SLionel Sambuc  * required license or other approval from the U. S. Department of Commerce or
102*433d6423SLionel Sambuc  * any other agency or department of the United States Government.  In the
103*433d6423SLionel Sambuc  * event Licensee exports any such software from the United States or
104*433d6423SLionel Sambuc  * re-exports any such software from a foreign destination, Licensee shall
105*433d6423SLionel Sambuc  * ensure that the distribution and export/re-export of the software is in
106*433d6423SLionel Sambuc  * compliance with all laws, regulations, orders, or other restrictions of the
107*433d6423SLionel Sambuc  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108*433d6423SLionel Sambuc  * any of its subsidiaries will export/re-export any technical data, process,
109*433d6423SLionel Sambuc  * software, or service, directly or indirectly, to any country for which the
110*433d6423SLionel Sambuc  * United States government or any agency thereof requires an export license,
111*433d6423SLionel Sambuc  * other governmental approval, or letter of assurance, without first obtaining
112*433d6423SLionel Sambuc  * such license, approval or letter.
113*433d6423SLionel Sambuc  *
114*433d6423SLionel Sambuc  *****************************************************************************/
115*433d6423SLionel Sambuc 
116*433d6423SLionel Sambuc #ifndef __ACTBL2_H__
117*433d6423SLionel Sambuc #define __ACTBL2_H__
118*433d6423SLionel Sambuc 
119*433d6423SLionel Sambuc 
120*433d6423SLionel Sambuc /*******************************************************************************
121*433d6423SLionel Sambuc  *
122*433d6423SLionel Sambuc  * Additional ACPI Tables (2)
123*433d6423SLionel Sambuc  *
124*433d6423SLionel Sambuc  * These tables are not consumed directly by the ACPICA subsystem, but are
125*433d6423SLionel Sambuc  * included here to support device drivers and the AML disassembler.
126*433d6423SLionel Sambuc  *
127*433d6423SLionel Sambuc  * The tables in this file are defined by third-party specifications, and are
128*433d6423SLionel Sambuc  * not defined directly by the ACPI specification itself.
129*433d6423SLionel Sambuc  *
130*433d6423SLionel Sambuc  ******************************************************************************/
131*433d6423SLionel Sambuc 
132*433d6423SLionel Sambuc 
133*433d6423SLionel Sambuc /*
134*433d6423SLionel Sambuc  * Values for description table header signatures for tables defined in this
135*433d6423SLionel Sambuc  * file. Useful because they make it more difficult to inadvertently type in
136*433d6423SLionel Sambuc  * the wrong signature.
137*433d6423SLionel Sambuc  */
138*433d6423SLionel Sambuc #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
139*433d6423SLionel Sambuc #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
140*433d6423SLionel Sambuc #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
141*433d6423SLionel Sambuc #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
142*433d6423SLionel Sambuc #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
143*433d6423SLionel Sambuc #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
144*433d6423SLionel Sambuc #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
145*433d6423SLionel Sambuc #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
146*433d6423SLionel Sambuc #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
147*433d6423SLionel Sambuc #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
148*433d6423SLionel Sambuc #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
149*433d6423SLionel Sambuc #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
150*433d6423SLionel Sambuc #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
151*433d6423SLionel Sambuc #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
152*433d6423SLionel Sambuc #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
153*433d6423SLionel Sambuc #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
154*433d6423SLionel Sambuc #define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
155*433d6423SLionel Sambuc #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
156*433d6423SLionel Sambuc 
157*433d6423SLionel Sambuc #ifdef ACPI_UNDEFINED_TABLES
158*433d6423SLionel Sambuc /*
159*433d6423SLionel Sambuc  * These tables have been seen in the field, but no definition has been found
160*433d6423SLionel Sambuc  */
161*433d6423SLionel Sambuc #define ACPI_SIG_ATKG           "ATKG"
162*433d6423SLionel Sambuc #define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
163*433d6423SLionel Sambuc #define ACPI_SIG_IEIT           "IEIT"
164*433d6423SLionel Sambuc #endif
165*433d6423SLionel Sambuc 
166*433d6423SLionel Sambuc /*
167*433d6423SLionel Sambuc  * All tables must be byte-packed to match the ACPI specification, since
168*433d6423SLionel Sambuc  * the tables are provided by the system BIOS.
169*433d6423SLionel Sambuc  */
170*433d6423SLionel Sambuc #pragma pack(1)
171*433d6423SLionel Sambuc 
172*433d6423SLionel Sambuc /*
173*433d6423SLionel Sambuc  * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
174*433d6423SLionel Sambuc  * This is the only type that is even remotely portable. Anything else is not
175*433d6423SLionel Sambuc  * portable, so do not use any other bitfield types.
176*433d6423SLionel Sambuc  */
177*433d6423SLionel Sambuc 
178*433d6423SLionel Sambuc 
179*433d6423SLionel Sambuc /*******************************************************************************
180*433d6423SLionel Sambuc  *
181*433d6423SLionel Sambuc  * ASF - Alert Standard Format table (Signature "ASF!")
182*433d6423SLionel Sambuc  *       Revision 0x10
183*433d6423SLionel Sambuc  *
184*433d6423SLionel Sambuc  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
185*433d6423SLionel Sambuc  *
186*433d6423SLionel Sambuc  ******************************************************************************/
187*433d6423SLionel Sambuc 
188*433d6423SLionel Sambuc typedef struct acpi_table_asf
189*433d6423SLionel Sambuc {
190*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
191*433d6423SLionel Sambuc 
192*433d6423SLionel Sambuc } ACPI_TABLE_ASF;
193*433d6423SLionel Sambuc 
194*433d6423SLionel Sambuc 
195*433d6423SLionel Sambuc /* ASF subtable header */
196*433d6423SLionel Sambuc 
197*433d6423SLionel Sambuc typedef struct acpi_asf_header
198*433d6423SLionel Sambuc {
199*433d6423SLionel Sambuc     UINT8                   Type;
200*433d6423SLionel Sambuc     UINT8                   Reserved;
201*433d6423SLionel Sambuc     UINT16                  Length;
202*433d6423SLionel Sambuc 
203*433d6423SLionel Sambuc } ACPI_ASF_HEADER;
204*433d6423SLionel Sambuc 
205*433d6423SLionel Sambuc 
206*433d6423SLionel Sambuc /* Values for Type field above */
207*433d6423SLionel Sambuc 
208*433d6423SLionel Sambuc enum AcpiAsfType
209*433d6423SLionel Sambuc {
210*433d6423SLionel Sambuc     ACPI_ASF_TYPE_INFO          = 0,
211*433d6423SLionel Sambuc     ACPI_ASF_TYPE_ALERT         = 1,
212*433d6423SLionel Sambuc     ACPI_ASF_TYPE_CONTROL       = 2,
213*433d6423SLionel Sambuc     ACPI_ASF_TYPE_BOOT          = 3,
214*433d6423SLionel Sambuc     ACPI_ASF_TYPE_ADDRESS       = 4,
215*433d6423SLionel Sambuc     ACPI_ASF_TYPE_RESERVED      = 5
216*433d6423SLionel Sambuc };
217*433d6423SLionel Sambuc 
218*433d6423SLionel Sambuc /*
219*433d6423SLionel Sambuc  * ASF subtables
220*433d6423SLionel Sambuc  */
221*433d6423SLionel Sambuc 
222*433d6423SLionel Sambuc /* 0: ASF Information */
223*433d6423SLionel Sambuc 
224*433d6423SLionel Sambuc typedef struct acpi_asf_info
225*433d6423SLionel Sambuc {
226*433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
227*433d6423SLionel Sambuc     UINT8                   MinResetValue;
228*433d6423SLionel Sambuc     UINT8                   MinPollInterval;
229*433d6423SLionel Sambuc     UINT16                  SystemId;
230*433d6423SLionel Sambuc     UINT32                  MfgId;
231*433d6423SLionel Sambuc     UINT8                   Flags;
232*433d6423SLionel Sambuc     UINT8                   Reserved2[3];
233*433d6423SLionel Sambuc 
234*433d6423SLionel Sambuc } ACPI_ASF_INFO;
235*433d6423SLionel Sambuc 
236*433d6423SLionel Sambuc /* Masks for Flags field above */
237*433d6423SLionel Sambuc 
238*433d6423SLionel Sambuc #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
239*433d6423SLionel Sambuc 
240*433d6423SLionel Sambuc 
241*433d6423SLionel Sambuc /* 1: ASF Alerts */
242*433d6423SLionel Sambuc 
243*433d6423SLionel Sambuc typedef struct acpi_asf_alert
244*433d6423SLionel Sambuc {
245*433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
246*433d6423SLionel Sambuc     UINT8                   AssertMask;
247*433d6423SLionel Sambuc     UINT8                   DeassertMask;
248*433d6423SLionel Sambuc     UINT8                   Alerts;
249*433d6423SLionel Sambuc     UINT8                   DataLength;
250*433d6423SLionel Sambuc 
251*433d6423SLionel Sambuc } ACPI_ASF_ALERT;
252*433d6423SLionel Sambuc 
253*433d6423SLionel Sambuc typedef struct acpi_asf_alert_data
254*433d6423SLionel Sambuc {
255*433d6423SLionel Sambuc     UINT8                   Address;
256*433d6423SLionel Sambuc     UINT8                   Command;
257*433d6423SLionel Sambuc     UINT8                   Mask;
258*433d6423SLionel Sambuc     UINT8                   Value;
259*433d6423SLionel Sambuc     UINT8                   SensorType;
260*433d6423SLionel Sambuc     UINT8                   Type;
261*433d6423SLionel Sambuc     UINT8                   Offset;
262*433d6423SLionel Sambuc     UINT8                   SourceType;
263*433d6423SLionel Sambuc     UINT8                   Severity;
264*433d6423SLionel Sambuc     UINT8                   SensorNumber;
265*433d6423SLionel Sambuc     UINT8                   Entity;
266*433d6423SLionel Sambuc     UINT8                   Instance;
267*433d6423SLionel Sambuc 
268*433d6423SLionel Sambuc } ACPI_ASF_ALERT_DATA;
269*433d6423SLionel Sambuc 
270*433d6423SLionel Sambuc 
271*433d6423SLionel Sambuc /* 2: ASF Remote Control */
272*433d6423SLionel Sambuc 
273*433d6423SLionel Sambuc typedef struct acpi_asf_remote
274*433d6423SLionel Sambuc {
275*433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
276*433d6423SLionel Sambuc     UINT8                   Controls;
277*433d6423SLionel Sambuc     UINT8                   DataLength;
278*433d6423SLionel Sambuc     UINT16                  Reserved2;
279*433d6423SLionel Sambuc 
280*433d6423SLionel Sambuc } ACPI_ASF_REMOTE;
281*433d6423SLionel Sambuc 
282*433d6423SLionel Sambuc typedef struct acpi_asf_control_data
283*433d6423SLionel Sambuc {
284*433d6423SLionel Sambuc     UINT8                   Function;
285*433d6423SLionel Sambuc     UINT8                   Address;
286*433d6423SLionel Sambuc     UINT8                   Command;
287*433d6423SLionel Sambuc     UINT8                   Value;
288*433d6423SLionel Sambuc 
289*433d6423SLionel Sambuc } ACPI_ASF_CONTROL_DATA;
290*433d6423SLionel Sambuc 
291*433d6423SLionel Sambuc 
292*433d6423SLionel Sambuc /* 3: ASF RMCP Boot Options */
293*433d6423SLionel Sambuc 
294*433d6423SLionel Sambuc typedef struct acpi_asf_rmcp
295*433d6423SLionel Sambuc {
296*433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
297*433d6423SLionel Sambuc     UINT8                   Capabilities[7];
298*433d6423SLionel Sambuc     UINT8                   CompletionCode;
299*433d6423SLionel Sambuc     UINT32                  EnterpriseId;
300*433d6423SLionel Sambuc     UINT8                   Command;
301*433d6423SLionel Sambuc     UINT16                  Parameter;
302*433d6423SLionel Sambuc     UINT16                  BootOptions;
303*433d6423SLionel Sambuc     UINT16                  OemParameters;
304*433d6423SLionel Sambuc 
305*433d6423SLionel Sambuc } ACPI_ASF_RMCP;
306*433d6423SLionel Sambuc 
307*433d6423SLionel Sambuc 
308*433d6423SLionel Sambuc /* 4: ASF Address */
309*433d6423SLionel Sambuc 
310*433d6423SLionel Sambuc typedef struct acpi_asf_address
311*433d6423SLionel Sambuc {
312*433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
313*433d6423SLionel Sambuc     UINT8                   EpromAddress;
314*433d6423SLionel Sambuc     UINT8                   Devices;
315*433d6423SLionel Sambuc 
316*433d6423SLionel Sambuc } ACPI_ASF_ADDRESS;
317*433d6423SLionel Sambuc 
318*433d6423SLionel Sambuc 
319*433d6423SLionel Sambuc /*******************************************************************************
320*433d6423SLionel Sambuc  *
321*433d6423SLionel Sambuc  * BOOT - Simple Boot Flag Table
322*433d6423SLionel Sambuc  *        Version 1
323*433d6423SLionel Sambuc  *
324*433d6423SLionel Sambuc  * Conforms to the "Simple Boot Flag Specification", Version 2.1
325*433d6423SLionel Sambuc  *
326*433d6423SLionel Sambuc  ******************************************************************************/
327*433d6423SLionel Sambuc 
328*433d6423SLionel Sambuc typedef struct acpi_table_boot
329*433d6423SLionel Sambuc {
330*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
331*433d6423SLionel Sambuc     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
332*433d6423SLionel Sambuc     UINT8                   Reserved[3];
333*433d6423SLionel Sambuc 
334*433d6423SLionel Sambuc } ACPI_TABLE_BOOT;
335*433d6423SLionel Sambuc 
336*433d6423SLionel Sambuc 
337*433d6423SLionel Sambuc /*******************************************************************************
338*433d6423SLionel Sambuc  *
339*433d6423SLionel Sambuc  * DBGP - Debug Port table
340*433d6423SLionel Sambuc  *        Version 1
341*433d6423SLionel Sambuc  *
342*433d6423SLionel Sambuc  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
343*433d6423SLionel Sambuc  *
344*433d6423SLionel Sambuc  ******************************************************************************/
345*433d6423SLionel Sambuc 
346*433d6423SLionel Sambuc typedef struct acpi_table_dbgp
347*433d6423SLionel Sambuc {
348*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
349*433d6423SLionel Sambuc     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
350*433d6423SLionel Sambuc     UINT8                   Reserved[3];
351*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    DebugPort;
352*433d6423SLionel Sambuc 
353*433d6423SLionel Sambuc } ACPI_TABLE_DBGP;
354*433d6423SLionel Sambuc 
355*433d6423SLionel Sambuc 
356*433d6423SLionel Sambuc /*******************************************************************************
357*433d6423SLionel Sambuc  *
358*433d6423SLionel Sambuc  * DMAR - DMA Remapping table
359*433d6423SLionel Sambuc  *        Version 1
360*433d6423SLionel Sambuc  *
361*433d6423SLionel Sambuc  * Conforms to "Intel Virtualization Technology for Directed I/O",
362*433d6423SLionel Sambuc  * Version 1.2, Sept. 2008
363*433d6423SLionel Sambuc  *
364*433d6423SLionel Sambuc  ******************************************************************************/
365*433d6423SLionel Sambuc 
366*433d6423SLionel Sambuc typedef struct acpi_table_dmar
367*433d6423SLionel Sambuc {
368*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
369*433d6423SLionel Sambuc     UINT8                   Width;              /* Host Address Width */
370*433d6423SLionel Sambuc     UINT8                   Flags;
371*433d6423SLionel Sambuc     UINT8                   Reserved[10];
372*433d6423SLionel Sambuc 
373*433d6423SLionel Sambuc } ACPI_TABLE_DMAR;
374*433d6423SLionel Sambuc 
375*433d6423SLionel Sambuc /* Masks for Flags field above */
376*433d6423SLionel Sambuc 
377*433d6423SLionel Sambuc #define ACPI_DMAR_INTR_REMAP        (1)
378*433d6423SLionel Sambuc 
379*433d6423SLionel Sambuc 
380*433d6423SLionel Sambuc /* DMAR subtable header */
381*433d6423SLionel Sambuc 
382*433d6423SLionel Sambuc typedef struct acpi_dmar_header
383*433d6423SLionel Sambuc {
384*433d6423SLionel Sambuc     UINT16                  Type;
385*433d6423SLionel Sambuc     UINT16                  Length;
386*433d6423SLionel Sambuc 
387*433d6423SLionel Sambuc } ACPI_DMAR_HEADER;
388*433d6423SLionel Sambuc 
389*433d6423SLionel Sambuc /* Values for subtable type in ACPI_DMAR_HEADER */
390*433d6423SLionel Sambuc 
391*433d6423SLionel Sambuc enum AcpiDmarType
392*433d6423SLionel Sambuc {
393*433d6423SLionel Sambuc     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
394*433d6423SLionel Sambuc     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
395*433d6423SLionel Sambuc     ACPI_DMAR_TYPE_ATSR                 = 2,
396*433d6423SLionel Sambuc     ACPI_DMAR_HARDWARE_AFFINITY         = 3,
397*433d6423SLionel Sambuc     ACPI_DMAR_TYPE_RESERVED             = 4     /* 4 and greater are reserved */
398*433d6423SLionel Sambuc };
399*433d6423SLionel Sambuc 
400*433d6423SLionel Sambuc 
401*433d6423SLionel Sambuc /* DMAR Device Scope structure */
402*433d6423SLionel Sambuc 
403*433d6423SLionel Sambuc typedef struct acpi_dmar_device_scope
404*433d6423SLionel Sambuc {
405*433d6423SLionel Sambuc     UINT8                   EntryType;
406*433d6423SLionel Sambuc     UINT8                   Length;
407*433d6423SLionel Sambuc     UINT16                  Reserved;
408*433d6423SLionel Sambuc     UINT8                   EnumerationId;
409*433d6423SLionel Sambuc     UINT8                   Bus;
410*433d6423SLionel Sambuc 
411*433d6423SLionel Sambuc } ACPI_DMAR_DEVICE_SCOPE;
412*433d6423SLionel Sambuc 
413*433d6423SLionel Sambuc /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */
414*433d6423SLionel Sambuc 
415*433d6423SLionel Sambuc enum AcpiDmarScopeType
416*433d6423SLionel Sambuc {
417*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
418*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
419*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
420*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
421*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
422*433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 5     /* 5 and greater are reserved */
423*433d6423SLionel Sambuc };
424*433d6423SLionel Sambuc 
425*433d6423SLionel Sambuc typedef struct acpi_dmar_pci_path
426*433d6423SLionel Sambuc {
427*433d6423SLionel Sambuc     UINT8                   Device;
428*433d6423SLionel Sambuc     UINT8                   Function;
429*433d6423SLionel Sambuc 
430*433d6423SLionel Sambuc } ACPI_DMAR_PCI_PATH;
431*433d6423SLionel Sambuc 
432*433d6423SLionel Sambuc 
433*433d6423SLionel Sambuc /*
434*433d6423SLionel Sambuc  * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER
435*433d6423SLionel Sambuc  */
436*433d6423SLionel Sambuc 
437*433d6423SLionel Sambuc /* 0: Hardware Unit Definition */
438*433d6423SLionel Sambuc 
439*433d6423SLionel Sambuc typedef struct acpi_dmar_hardware_unit
440*433d6423SLionel Sambuc {
441*433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
442*433d6423SLionel Sambuc     UINT8                   Flags;
443*433d6423SLionel Sambuc     UINT8                   Reserved;
444*433d6423SLionel Sambuc     UINT16                  Segment;
445*433d6423SLionel Sambuc     UINT64                  Address;            /* Register Base Address */
446*433d6423SLionel Sambuc 
447*433d6423SLionel Sambuc } ACPI_DMAR_HARDWARE_UNIT;
448*433d6423SLionel Sambuc 
449*433d6423SLionel Sambuc /* Masks for Flags field above */
450*433d6423SLionel Sambuc 
451*433d6423SLionel Sambuc #define ACPI_DMAR_INCLUDE_ALL       (1)
452*433d6423SLionel Sambuc 
453*433d6423SLionel Sambuc 
454*433d6423SLionel Sambuc /* 1: Reserved Memory Defininition */
455*433d6423SLionel Sambuc 
456*433d6423SLionel Sambuc typedef struct acpi_dmar_reserved_memory
457*433d6423SLionel Sambuc {
458*433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
459*433d6423SLionel Sambuc     UINT16                  Reserved;
460*433d6423SLionel Sambuc     UINT16                  Segment;
461*433d6423SLionel Sambuc     UINT64                  BaseAddress;        /* 4K aligned base address */
462*433d6423SLionel Sambuc     UINT64                  EndAddress;         /* 4K aligned limit address */
463*433d6423SLionel Sambuc 
464*433d6423SLionel Sambuc } ACPI_DMAR_RESERVED_MEMORY;
465*433d6423SLionel Sambuc 
466*433d6423SLionel Sambuc /* Masks for Flags field above */
467*433d6423SLionel Sambuc 
468*433d6423SLionel Sambuc #define ACPI_DMAR_ALLOW_ALL         (1)
469*433d6423SLionel Sambuc 
470*433d6423SLionel Sambuc 
471*433d6423SLionel Sambuc /* 2: Root Port ATS Capability Reporting Structure */
472*433d6423SLionel Sambuc 
473*433d6423SLionel Sambuc typedef struct acpi_dmar_atsr
474*433d6423SLionel Sambuc {
475*433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
476*433d6423SLionel Sambuc     UINT8                   Flags;
477*433d6423SLionel Sambuc     UINT8                   Reserved;
478*433d6423SLionel Sambuc     UINT16                  Segment;
479*433d6423SLionel Sambuc 
480*433d6423SLionel Sambuc } ACPI_DMAR_ATSR;
481*433d6423SLionel Sambuc 
482*433d6423SLionel Sambuc /* Masks for Flags field above */
483*433d6423SLionel Sambuc 
484*433d6423SLionel Sambuc #define ACPI_DMAR_ALL_PORTS         (1)
485*433d6423SLionel Sambuc 
486*433d6423SLionel Sambuc 
487*433d6423SLionel Sambuc /* 3: Remapping Hardware Static Affinity Structure */
488*433d6423SLionel Sambuc 
489*433d6423SLionel Sambuc typedef struct acpi_dmar_rhsa
490*433d6423SLionel Sambuc {
491*433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
492*433d6423SLionel Sambuc     UINT32                  Reserved;
493*433d6423SLionel Sambuc     UINT64                  BaseAddress;
494*433d6423SLionel Sambuc     UINT32                  ProximityDomain;
495*433d6423SLionel Sambuc 
496*433d6423SLionel Sambuc } ACPI_DMAR_RHSA;
497*433d6423SLionel Sambuc 
498*433d6423SLionel Sambuc 
499*433d6423SLionel Sambuc /*******************************************************************************
500*433d6423SLionel Sambuc  *
501*433d6423SLionel Sambuc  * HPET - High Precision Event Timer table
502*433d6423SLionel Sambuc  *        Version 1
503*433d6423SLionel Sambuc  *
504*433d6423SLionel Sambuc  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
505*433d6423SLionel Sambuc  * Version 1.0a, October 2004
506*433d6423SLionel Sambuc  *
507*433d6423SLionel Sambuc  ******************************************************************************/
508*433d6423SLionel Sambuc 
509*433d6423SLionel Sambuc typedef struct acpi_table_hpet
510*433d6423SLionel Sambuc {
511*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
512*433d6423SLionel Sambuc     UINT32                  Id;                 /* Hardware ID of event timer block */
513*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
514*433d6423SLionel Sambuc     UINT8                   Sequence;           /* HPET sequence number */
515*433d6423SLionel Sambuc     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
516*433d6423SLionel Sambuc     UINT8                   Flags;
517*433d6423SLionel Sambuc 
518*433d6423SLionel Sambuc } ACPI_TABLE_HPET;
519*433d6423SLionel Sambuc 
520*433d6423SLionel Sambuc /* Masks for Flags field above */
521*433d6423SLionel Sambuc 
522*433d6423SLionel Sambuc #define ACPI_HPET_PAGE_PROTECT_MASK (3)
523*433d6423SLionel Sambuc 
524*433d6423SLionel Sambuc /* Values for Page Protect flags */
525*433d6423SLionel Sambuc 
526*433d6423SLionel Sambuc enum AcpiHpetPageProtect
527*433d6423SLionel Sambuc {
528*433d6423SLionel Sambuc     ACPI_HPET_NO_PAGE_PROTECT       = 0,
529*433d6423SLionel Sambuc     ACPI_HPET_PAGE_PROTECT4         = 1,
530*433d6423SLionel Sambuc     ACPI_HPET_PAGE_PROTECT64        = 2
531*433d6423SLionel Sambuc };
532*433d6423SLionel Sambuc 
533*433d6423SLionel Sambuc 
534*433d6423SLionel Sambuc /*******************************************************************************
535*433d6423SLionel Sambuc  *
536*433d6423SLionel Sambuc  * IBFT - Boot Firmware Table
537*433d6423SLionel Sambuc  *        Version 1
538*433d6423SLionel Sambuc  *
539*433d6423SLionel Sambuc  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
540*433d6423SLionel Sambuc  * Specification", Version 1.01, March 1, 2007
541*433d6423SLionel Sambuc  *
542*433d6423SLionel Sambuc  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
543*433d6423SLionel Sambuc  * Therefore, it is not currently supported by the disassembler.
544*433d6423SLionel Sambuc  *
545*433d6423SLionel Sambuc  ******************************************************************************/
546*433d6423SLionel Sambuc 
547*433d6423SLionel Sambuc typedef struct acpi_table_ibft
548*433d6423SLionel Sambuc {
549*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
550*433d6423SLionel Sambuc     UINT8                   Reserved[12];
551*433d6423SLionel Sambuc 
552*433d6423SLionel Sambuc } ACPI_TABLE_IBFT;
553*433d6423SLionel Sambuc 
554*433d6423SLionel Sambuc 
555*433d6423SLionel Sambuc /* IBFT common subtable header */
556*433d6423SLionel Sambuc 
557*433d6423SLionel Sambuc typedef struct acpi_ibft_header
558*433d6423SLionel Sambuc {
559*433d6423SLionel Sambuc     UINT8                   Type;
560*433d6423SLionel Sambuc     UINT8                   Version;
561*433d6423SLionel Sambuc     UINT16                  Length;
562*433d6423SLionel Sambuc     UINT8                   Index;
563*433d6423SLionel Sambuc     UINT8                   Flags;
564*433d6423SLionel Sambuc 
565*433d6423SLionel Sambuc } ACPI_IBFT_HEADER;
566*433d6423SLionel Sambuc 
567*433d6423SLionel Sambuc /* Values for Type field above */
568*433d6423SLionel Sambuc 
569*433d6423SLionel Sambuc enum AcpiIbftType
570*433d6423SLionel Sambuc {
571*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_NOT_USED         = 0,
572*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_CONTROL          = 1,
573*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_INITIATOR        = 2,
574*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_NIC              = 3,
575*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_TARGET           = 4,
576*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
577*433d6423SLionel Sambuc     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
578*433d6423SLionel Sambuc };
579*433d6423SLionel Sambuc 
580*433d6423SLionel Sambuc 
581*433d6423SLionel Sambuc /* IBFT subtables */
582*433d6423SLionel Sambuc 
583*433d6423SLionel Sambuc typedef struct acpi_ibft_control
584*433d6423SLionel Sambuc {
585*433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
586*433d6423SLionel Sambuc     UINT16                  Extensions;
587*433d6423SLionel Sambuc     UINT16                  InitiatorOffset;
588*433d6423SLionel Sambuc     UINT16                  Nic0Offset;
589*433d6423SLionel Sambuc     UINT16                  Target0Offset;
590*433d6423SLionel Sambuc     UINT16                  Nic1Offset;
591*433d6423SLionel Sambuc     UINT16                  Target1Offset;
592*433d6423SLionel Sambuc 
593*433d6423SLionel Sambuc } ACPI_IBFT_CONTROL;
594*433d6423SLionel Sambuc 
595*433d6423SLionel Sambuc typedef struct acpi_ibft_initiator
596*433d6423SLionel Sambuc {
597*433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
598*433d6423SLionel Sambuc     UINT8                   SnsServer[16];
599*433d6423SLionel Sambuc     UINT8                   SlpServer[16];
600*433d6423SLionel Sambuc     UINT8                   PrimaryServer[16];
601*433d6423SLionel Sambuc     UINT8                   SecondaryServer[16];
602*433d6423SLionel Sambuc     UINT16                  NameLength;
603*433d6423SLionel Sambuc     UINT16                  NameOffset;
604*433d6423SLionel Sambuc 
605*433d6423SLionel Sambuc } ACPI_IBFT_INITIATOR;
606*433d6423SLionel Sambuc 
607*433d6423SLionel Sambuc typedef struct acpi_ibft_nic
608*433d6423SLionel Sambuc {
609*433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
610*433d6423SLionel Sambuc     UINT8                   IpAddress[16];
611*433d6423SLionel Sambuc     UINT8                   SubnetMaskPrefix;
612*433d6423SLionel Sambuc     UINT8                   Origin;
613*433d6423SLionel Sambuc     UINT8                   Gateway[16];
614*433d6423SLionel Sambuc     UINT8                   PrimaryDns[16];
615*433d6423SLionel Sambuc     UINT8                   SecondaryDns[16];
616*433d6423SLionel Sambuc     UINT8                   Dhcp[16];
617*433d6423SLionel Sambuc     UINT16                  Vlan;
618*433d6423SLionel Sambuc     UINT8                   MacAddress[6];
619*433d6423SLionel Sambuc     UINT16                  PciAddress;
620*433d6423SLionel Sambuc     UINT16                  NameLength;
621*433d6423SLionel Sambuc     UINT16                  NameOffset;
622*433d6423SLionel Sambuc 
623*433d6423SLionel Sambuc } ACPI_IBFT_NIC;
624*433d6423SLionel Sambuc 
625*433d6423SLionel Sambuc typedef struct acpi_ibft_target
626*433d6423SLionel Sambuc {
627*433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
628*433d6423SLionel Sambuc     UINT8                   TargetIpAddress[16];
629*433d6423SLionel Sambuc     UINT16                  TargetIpSocket;
630*433d6423SLionel Sambuc     UINT8                   TargetBootLun[8];
631*433d6423SLionel Sambuc     UINT8                   ChapType;
632*433d6423SLionel Sambuc     UINT8                   NicAssociation;
633*433d6423SLionel Sambuc     UINT16                  TargetNameLength;
634*433d6423SLionel Sambuc     UINT16                  TargetNameOffset;
635*433d6423SLionel Sambuc     UINT16                  ChapNameLength;
636*433d6423SLionel Sambuc     UINT16                  ChapNameOffset;
637*433d6423SLionel Sambuc     UINT16                  ChapSecretLength;
638*433d6423SLionel Sambuc     UINT16                  ChapSecretOffset;
639*433d6423SLionel Sambuc     UINT16                  ReverseChapNameLength;
640*433d6423SLionel Sambuc     UINT16                  ReverseChapNameOffset;
641*433d6423SLionel Sambuc     UINT16                  ReverseChapSecretLength;
642*433d6423SLionel Sambuc     UINT16                  ReverseChapSecretOffset;
643*433d6423SLionel Sambuc 
644*433d6423SLionel Sambuc } ACPI_IBFT_TARGET;
645*433d6423SLionel Sambuc 
646*433d6423SLionel Sambuc 
647*433d6423SLionel Sambuc /*******************************************************************************
648*433d6423SLionel Sambuc  *
649*433d6423SLionel Sambuc  * IVRS - I/O Virtualization Reporting Structure
650*433d6423SLionel Sambuc  *        Version 1
651*433d6423SLionel Sambuc  *
652*433d6423SLionel Sambuc  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
653*433d6423SLionel Sambuc  * Revision 1.26, February 2009.
654*433d6423SLionel Sambuc  *
655*433d6423SLionel Sambuc  ******************************************************************************/
656*433d6423SLionel Sambuc 
657*433d6423SLionel Sambuc typedef struct acpi_table_ivrs
658*433d6423SLionel Sambuc {
659*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
660*433d6423SLionel Sambuc     UINT32                  Info;               /* Common virtualization info */
661*433d6423SLionel Sambuc     UINT64                  Reserved;
662*433d6423SLionel Sambuc 
663*433d6423SLionel Sambuc } ACPI_TABLE_IVRS;
664*433d6423SLionel Sambuc 
665*433d6423SLionel Sambuc /* Values for Info field above */
666*433d6423SLionel Sambuc 
667*433d6423SLionel Sambuc #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
668*433d6423SLionel Sambuc #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
669*433d6423SLionel Sambuc #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
670*433d6423SLionel Sambuc 
671*433d6423SLionel Sambuc 
672*433d6423SLionel Sambuc /* IVRS subtable header */
673*433d6423SLionel Sambuc 
674*433d6423SLionel Sambuc typedef struct acpi_ivrs_header
675*433d6423SLionel Sambuc {
676*433d6423SLionel Sambuc     UINT8                   Type;               /* Subtable type */
677*433d6423SLionel Sambuc     UINT8                   Flags;
678*433d6423SLionel Sambuc     UINT16                  Length;             /* Subtable length */
679*433d6423SLionel Sambuc     UINT16                  DeviceId;           /* ID of IOMMU */
680*433d6423SLionel Sambuc 
681*433d6423SLionel Sambuc } ACPI_IVRS_HEADER;
682*433d6423SLionel Sambuc 
683*433d6423SLionel Sambuc /* Values for subtable Type above */
684*433d6423SLionel Sambuc 
685*433d6423SLionel Sambuc enum AcpiIvrsType
686*433d6423SLionel Sambuc {
687*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
688*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
689*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
690*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY3          = 0x22
691*433d6423SLionel Sambuc };
692*433d6423SLionel Sambuc 
693*433d6423SLionel Sambuc /* Masks for Flags field above for IVHD subtable */
694*433d6423SLionel Sambuc 
695*433d6423SLionel Sambuc #define ACPI_IVHD_TT_ENABLE         (1)
696*433d6423SLionel Sambuc #define ACPI_IVHD_PASS_PW           (1<<1)
697*433d6423SLionel Sambuc #define ACPI_IVHD_RES_PASS_PW       (1<<2)
698*433d6423SLionel Sambuc #define ACPI_IVHD_ISOC              (1<<3)
699*433d6423SLionel Sambuc #define ACPI_IVHD_IOTLB             (1<<4)
700*433d6423SLionel Sambuc 
701*433d6423SLionel Sambuc /* Masks for Flags field above for IVMD subtable */
702*433d6423SLionel Sambuc 
703*433d6423SLionel Sambuc #define ACPI_IVMD_UNITY             (1)
704*433d6423SLionel Sambuc #define ACPI_IVMD_READ              (1<<1)
705*433d6423SLionel Sambuc #define ACPI_IVMD_WRITE             (1<<2)
706*433d6423SLionel Sambuc #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
707*433d6423SLionel Sambuc 
708*433d6423SLionel Sambuc 
709*433d6423SLionel Sambuc /*
710*433d6423SLionel Sambuc  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
711*433d6423SLionel Sambuc  */
712*433d6423SLionel Sambuc 
713*433d6423SLionel Sambuc /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
714*433d6423SLionel Sambuc 
715*433d6423SLionel Sambuc typedef struct acpi_ivrs_hardware
716*433d6423SLionel Sambuc {
717*433d6423SLionel Sambuc     ACPI_IVRS_HEADER        Header;
718*433d6423SLionel Sambuc     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
719*433d6423SLionel Sambuc     UINT64                  BaseAddress;        /* IOMMU control registers */
720*433d6423SLionel Sambuc     UINT16                  PciSegmentGroup;
721*433d6423SLionel Sambuc     UINT16                  Info;               /* MSI number and unit ID */
722*433d6423SLionel Sambuc     UINT32                  Reserved;
723*433d6423SLionel Sambuc 
724*433d6423SLionel Sambuc } ACPI_IVRS_HARDWARE;
725*433d6423SLionel Sambuc 
726*433d6423SLionel Sambuc /* Masks for Info field above */
727*433d6423SLionel Sambuc 
728*433d6423SLionel Sambuc #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
729*433d6423SLionel Sambuc #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
730*433d6423SLionel Sambuc 
731*433d6423SLionel Sambuc 
732*433d6423SLionel Sambuc /*
733*433d6423SLionel Sambuc  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
734*433d6423SLionel Sambuc  * Upper two bits of the Type field are the (encoded) length of the structure.
735*433d6423SLionel Sambuc  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
736*433d6423SLionel Sambuc  * are reserved for future use but not defined.
737*433d6423SLionel Sambuc  */
738*433d6423SLionel Sambuc typedef struct acpi_ivrs_de_header
739*433d6423SLionel Sambuc {
740*433d6423SLionel Sambuc     UINT8                   Type;
741*433d6423SLionel Sambuc     UINT16                  Id;
742*433d6423SLionel Sambuc     UINT8                   DataSetting;
743*433d6423SLionel Sambuc 
744*433d6423SLionel Sambuc } ACPI_IVRS_DE_HEADER;
745*433d6423SLionel Sambuc 
746*433d6423SLionel Sambuc /* Length of device entry is in the top two bits of Type field above */
747*433d6423SLionel Sambuc 
748*433d6423SLionel Sambuc #define ACPI_IVHD_ENTRY_LENGTH      0xC0
749*433d6423SLionel Sambuc 
750*433d6423SLionel Sambuc /* Values for device entry Type field above */
751*433d6423SLionel Sambuc 
752*433d6423SLionel Sambuc enum AcpiIvrsDeviceEntryType
753*433d6423SLionel Sambuc {
754*433d6423SLionel Sambuc     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
755*433d6423SLionel Sambuc 
756*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_PAD4             = 0,
757*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALL              = 1,
758*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_SELECT           = 2,
759*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_START            = 3,
760*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_END              = 4,
761*433d6423SLionel Sambuc 
762*433d6423SLionel Sambuc     /* 8-byte device entries */
763*433d6423SLionel Sambuc 
764*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_PAD8             = 64,
765*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_NOT_USED         = 65,
766*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
767*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
768*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
769*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
770*433d6423SLionel Sambuc     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
771*433d6423SLionel Sambuc };
772*433d6423SLionel Sambuc 
773*433d6423SLionel Sambuc /* Values for Data field above */
774*433d6423SLionel Sambuc 
775*433d6423SLionel Sambuc #define ACPI_IVHD_INIT_PASS         (1)
776*433d6423SLionel Sambuc #define ACPI_IVHD_EINT_PASS         (1<<1)
777*433d6423SLionel Sambuc #define ACPI_IVHD_NMI_PASS          (1<<2)
778*433d6423SLionel Sambuc #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
779*433d6423SLionel Sambuc #define ACPI_IVHD_LINT0_PASS        (1<<6)
780*433d6423SLionel Sambuc #define ACPI_IVHD_LINT1_PASS        (1<<7)
781*433d6423SLionel Sambuc 
782*433d6423SLionel Sambuc 
783*433d6423SLionel Sambuc /* Types 0-4: 4-byte device entry */
784*433d6423SLionel Sambuc 
785*433d6423SLionel Sambuc typedef struct acpi_ivrs_device4
786*433d6423SLionel Sambuc {
787*433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
788*433d6423SLionel Sambuc 
789*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE4;
790*433d6423SLionel Sambuc 
791*433d6423SLionel Sambuc /* Types 66-67: 8-byte device entry */
792*433d6423SLionel Sambuc 
793*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8a
794*433d6423SLionel Sambuc {
795*433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
796*433d6423SLionel Sambuc     UINT8                   Reserved1;
797*433d6423SLionel Sambuc     UINT16                  UsedId;
798*433d6423SLionel Sambuc     UINT8                   Reserved2;
799*433d6423SLionel Sambuc 
800*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8A;
801*433d6423SLionel Sambuc 
802*433d6423SLionel Sambuc /* Types 70-71: 8-byte device entry */
803*433d6423SLionel Sambuc 
804*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8b
805*433d6423SLionel Sambuc {
806*433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
807*433d6423SLionel Sambuc     UINT32                  ExtendedData;
808*433d6423SLionel Sambuc 
809*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8B;
810*433d6423SLionel Sambuc 
811*433d6423SLionel Sambuc /* Values for ExtendedData above */
812*433d6423SLionel Sambuc 
813*433d6423SLionel Sambuc #define ACPI_IVHD_ATS_DISABLED      (1<<31)
814*433d6423SLionel Sambuc 
815*433d6423SLionel Sambuc /* Type 72: 8-byte device entry */
816*433d6423SLionel Sambuc 
817*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8c
818*433d6423SLionel Sambuc {
819*433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
820*433d6423SLionel Sambuc     UINT8                   Handle;
821*433d6423SLionel Sambuc     UINT16                  UsedId;
822*433d6423SLionel Sambuc     UINT8                   Variety;
823*433d6423SLionel Sambuc 
824*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8C;
825*433d6423SLionel Sambuc 
826*433d6423SLionel Sambuc /* Values for Variety field above */
827*433d6423SLionel Sambuc 
828*433d6423SLionel Sambuc #define ACPI_IVHD_IOAPIC            1
829*433d6423SLionel Sambuc #define ACPI_IVHD_HPET              2
830*433d6423SLionel Sambuc 
831*433d6423SLionel Sambuc 
832*433d6423SLionel Sambuc /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
833*433d6423SLionel Sambuc 
834*433d6423SLionel Sambuc typedef struct acpi_ivrs_memory
835*433d6423SLionel Sambuc {
836*433d6423SLionel Sambuc     ACPI_IVRS_HEADER        Header;
837*433d6423SLionel Sambuc     UINT16                  AuxData;
838*433d6423SLionel Sambuc     UINT64                  Reserved;
839*433d6423SLionel Sambuc     UINT64                  StartAddress;
840*433d6423SLionel Sambuc     UINT64                  MemoryLength;
841*433d6423SLionel Sambuc 
842*433d6423SLionel Sambuc } ACPI_IVRS_MEMORY;
843*433d6423SLionel Sambuc 
844*433d6423SLionel Sambuc 
845*433d6423SLionel Sambuc /*******************************************************************************
846*433d6423SLionel Sambuc  *
847*433d6423SLionel Sambuc  * MCFG - PCI Memory Mapped Configuration table and sub-table
848*433d6423SLionel Sambuc  *        Version 1
849*433d6423SLionel Sambuc  *
850*433d6423SLionel Sambuc  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
851*433d6423SLionel Sambuc  *
852*433d6423SLionel Sambuc  ******************************************************************************/
853*433d6423SLionel Sambuc 
854*433d6423SLionel Sambuc typedef struct acpi_table_mcfg
855*433d6423SLionel Sambuc {
856*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
857*433d6423SLionel Sambuc     UINT8                   Reserved[8];
858*433d6423SLionel Sambuc 
859*433d6423SLionel Sambuc } ACPI_TABLE_MCFG;
860*433d6423SLionel Sambuc 
861*433d6423SLionel Sambuc 
862*433d6423SLionel Sambuc /* Subtable */
863*433d6423SLionel Sambuc 
864*433d6423SLionel Sambuc typedef struct acpi_mcfg_allocation
865*433d6423SLionel Sambuc {
866*433d6423SLionel Sambuc     UINT64                  Address;            /* Base address, processor-relative */
867*433d6423SLionel Sambuc     UINT16                  PciSegment;         /* PCI segment group number */
868*433d6423SLionel Sambuc     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
869*433d6423SLionel Sambuc     UINT8                   EndBusNumber;       /* Final PCI Bus number */
870*433d6423SLionel Sambuc     UINT32                  Reserved;
871*433d6423SLionel Sambuc 
872*433d6423SLionel Sambuc } ACPI_MCFG_ALLOCATION;
873*433d6423SLionel Sambuc 
874*433d6423SLionel Sambuc 
875*433d6423SLionel Sambuc /*******************************************************************************
876*433d6423SLionel Sambuc  *
877*433d6423SLionel Sambuc  * MCHI - Management Controller Host Interface Table
878*433d6423SLionel Sambuc  *        Version 1
879*433d6423SLionel Sambuc  *
880*433d6423SLionel Sambuc  * Conforms to "Management Component Transport Protocol (MCTP) Host
881*433d6423SLionel Sambuc  * Interface Specification", Revision 1.0.0a, October 13, 2009
882*433d6423SLionel Sambuc  *
883*433d6423SLionel Sambuc  ******************************************************************************/
884*433d6423SLionel Sambuc 
885*433d6423SLionel Sambuc typedef struct acpi_table_mchi
886*433d6423SLionel Sambuc {
887*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
888*433d6423SLionel Sambuc     UINT8                   InterfaceType;
889*433d6423SLionel Sambuc     UINT8                   Protocol;
890*433d6423SLionel Sambuc     UINT64                  ProtocolData;
891*433d6423SLionel Sambuc     UINT8                   InterruptType;
892*433d6423SLionel Sambuc     UINT8                   Gpe;
893*433d6423SLionel Sambuc     UINT8                   PciDeviceFlag;
894*433d6423SLionel Sambuc     UINT32                  GlobalInterrupt;
895*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    ControlRegister;
896*433d6423SLionel Sambuc     UINT8                   PciSegment;
897*433d6423SLionel Sambuc     UINT8                   PciBus;
898*433d6423SLionel Sambuc     UINT8                   PciDevice;
899*433d6423SLionel Sambuc     UINT8                   PciFunction;
900*433d6423SLionel Sambuc 
901*433d6423SLionel Sambuc } ACPI_TABLE_MCHI;
902*433d6423SLionel Sambuc 
903*433d6423SLionel Sambuc 
904*433d6423SLionel Sambuc /*******************************************************************************
905*433d6423SLionel Sambuc  *
906*433d6423SLionel Sambuc  * SPCR - Serial Port Console Redirection table
907*433d6423SLionel Sambuc  *        Version 1
908*433d6423SLionel Sambuc  *
909*433d6423SLionel Sambuc  * Conforms to "Serial Port Console Redirection Table",
910*433d6423SLionel Sambuc  * Version 1.00, January 11, 2002
911*433d6423SLionel Sambuc  *
912*433d6423SLionel Sambuc  ******************************************************************************/
913*433d6423SLionel Sambuc 
914*433d6423SLionel Sambuc typedef struct acpi_table_spcr
915*433d6423SLionel Sambuc {
916*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
917*433d6423SLionel Sambuc     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
918*433d6423SLionel Sambuc     UINT8                   Reserved[3];
919*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    SerialPort;
920*433d6423SLionel Sambuc     UINT8                   InterruptType;
921*433d6423SLionel Sambuc     UINT8                   PcInterrupt;
922*433d6423SLionel Sambuc     UINT32                  Interrupt;
923*433d6423SLionel Sambuc     UINT8                   BaudRate;
924*433d6423SLionel Sambuc     UINT8                   Parity;
925*433d6423SLionel Sambuc     UINT8                   StopBits;
926*433d6423SLionel Sambuc     UINT8                   FlowControl;
927*433d6423SLionel Sambuc     UINT8                   TerminalType;
928*433d6423SLionel Sambuc     UINT8                   Reserved1;
929*433d6423SLionel Sambuc     UINT16                  PciDeviceId;
930*433d6423SLionel Sambuc     UINT16                  PciVendorId;
931*433d6423SLionel Sambuc     UINT8                   PciBus;
932*433d6423SLionel Sambuc     UINT8                   PciDevice;
933*433d6423SLionel Sambuc     UINT8                   PciFunction;
934*433d6423SLionel Sambuc     UINT32                  PciFlags;
935*433d6423SLionel Sambuc     UINT8                   PciSegment;
936*433d6423SLionel Sambuc     UINT32                  Reserved2;
937*433d6423SLionel Sambuc 
938*433d6423SLionel Sambuc } ACPI_TABLE_SPCR;
939*433d6423SLionel Sambuc 
940*433d6423SLionel Sambuc /* Masks for PciFlags field above */
941*433d6423SLionel Sambuc 
942*433d6423SLionel Sambuc #define ACPI_SPCR_DO_NOT_DISABLE    (1)
943*433d6423SLionel Sambuc 
944*433d6423SLionel Sambuc 
945*433d6423SLionel Sambuc /*******************************************************************************
946*433d6423SLionel Sambuc  *
947*433d6423SLionel Sambuc  * SPMI - Server Platform Management Interface table
948*433d6423SLionel Sambuc  *        Version 5
949*433d6423SLionel Sambuc  *
950*433d6423SLionel Sambuc  * Conforms to "Intelligent Platform Management Interface Specification
951*433d6423SLionel Sambuc  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
952*433d6423SLionel Sambuc  * June 12, 2009 markup.
953*433d6423SLionel Sambuc  *
954*433d6423SLionel Sambuc  ******************************************************************************/
955*433d6423SLionel Sambuc 
956*433d6423SLionel Sambuc typedef struct acpi_table_spmi
957*433d6423SLionel Sambuc {
958*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
959*433d6423SLionel Sambuc     UINT8                   InterfaceType;
960*433d6423SLionel Sambuc     UINT8                   Reserved;           /* Must be 1 */
961*433d6423SLionel Sambuc     UINT16                  SpecRevision;       /* Version of IPMI */
962*433d6423SLionel Sambuc     UINT8                   InterruptType;
963*433d6423SLionel Sambuc     UINT8                   GpeNumber;          /* GPE assigned */
964*433d6423SLionel Sambuc     UINT8                   Reserved1;
965*433d6423SLionel Sambuc     UINT8                   PciDeviceFlag;
966*433d6423SLionel Sambuc     UINT32                  Interrupt;
967*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    IpmiRegister;
968*433d6423SLionel Sambuc     UINT8                   PciSegment;
969*433d6423SLionel Sambuc     UINT8                   PciBus;
970*433d6423SLionel Sambuc     UINT8                   PciDevice;
971*433d6423SLionel Sambuc     UINT8                   PciFunction;
972*433d6423SLionel Sambuc     UINT8                   Reserved2;
973*433d6423SLionel Sambuc 
974*433d6423SLionel Sambuc } ACPI_TABLE_SPMI;
975*433d6423SLionel Sambuc 
976*433d6423SLionel Sambuc /* Values for InterfaceType above */
977*433d6423SLionel Sambuc 
978*433d6423SLionel Sambuc enum AcpiSpmiInterfaceTypes
979*433d6423SLionel Sambuc {
980*433d6423SLionel Sambuc     ACPI_SPMI_NOT_USED              = 0,
981*433d6423SLionel Sambuc     ACPI_SPMI_KEYBOARD              = 1,
982*433d6423SLionel Sambuc     ACPI_SPMI_SMI                   = 2,
983*433d6423SLionel Sambuc     ACPI_SPMI_BLOCK_TRANSFER        = 3,
984*433d6423SLionel Sambuc     ACPI_SPMI_SMBUS                 = 4,
985*433d6423SLionel Sambuc     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
986*433d6423SLionel Sambuc };
987*433d6423SLionel Sambuc 
988*433d6423SLionel Sambuc 
989*433d6423SLionel Sambuc /*******************************************************************************
990*433d6423SLionel Sambuc  *
991*433d6423SLionel Sambuc  * TCPA - Trusted Computing Platform Alliance table
992*433d6423SLionel Sambuc  *        Version 1
993*433d6423SLionel Sambuc  *
994*433d6423SLionel Sambuc  * Conforms to "TCG PC Specific Implementation Specification",
995*433d6423SLionel Sambuc  * Version 1.1, August 18, 2003
996*433d6423SLionel Sambuc  *
997*433d6423SLionel Sambuc  ******************************************************************************/
998*433d6423SLionel Sambuc 
999*433d6423SLionel Sambuc typedef struct acpi_table_tcpa
1000*433d6423SLionel Sambuc {
1001*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1002*433d6423SLionel Sambuc     UINT16                  Reserved;
1003*433d6423SLionel Sambuc     UINT32                  MaxLogLength;       /* Maximum length for the event log area */
1004*433d6423SLionel Sambuc     UINT64                  LogAddress;         /* Address of the event log area */
1005*433d6423SLionel Sambuc 
1006*433d6423SLionel Sambuc } ACPI_TABLE_TCPA;
1007*433d6423SLionel Sambuc 
1008*433d6423SLionel Sambuc 
1009*433d6423SLionel Sambuc /*******************************************************************************
1010*433d6423SLionel Sambuc  *
1011*433d6423SLionel Sambuc  * UEFI - UEFI Boot optimization Table
1012*433d6423SLionel Sambuc  *        Version 1
1013*433d6423SLionel Sambuc  *
1014*433d6423SLionel Sambuc  * Conforms to "Unified Extensible Firmware Interface Specification",
1015*433d6423SLionel Sambuc  * Version 2.3, May 8, 2009
1016*433d6423SLionel Sambuc  *
1017*433d6423SLionel Sambuc  ******************************************************************************/
1018*433d6423SLionel Sambuc 
1019*433d6423SLionel Sambuc typedef struct acpi_table_uefi
1020*433d6423SLionel Sambuc {
1021*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1022*433d6423SLionel Sambuc     UINT8                   Identifier[16];     /* UUID identifier */
1023*433d6423SLionel Sambuc     UINT16                  DataOffset;         /* Offset of remaining data in table */
1024*433d6423SLionel Sambuc 
1025*433d6423SLionel Sambuc } ACPI_TABLE_UEFI;
1026*433d6423SLionel Sambuc 
1027*433d6423SLionel Sambuc 
1028*433d6423SLionel Sambuc /*******************************************************************************
1029*433d6423SLionel Sambuc  *
1030*433d6423SLionel Sambuc  * WAET - Windows ACPI Emulated devices Table
1031*433d6423SLionel Sambuc  *        Version 1
1032*433d6423SLionel Sambuc  *
1033*433d6423SLionel Sambuc  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1034*433d6423SLionel Sambuc  *
1035*433d6423SLionel Sambuc  ******************************************************************************/
1036*433d6423SLionel Sambuc 
1037*433d6423SLionel Sambuc typedef struct acpi_table_waet
1038*433d6423SLionel Sambuc {
1039*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1040*433d6423SLionel Sambuc     UINT32                  Flags;
1041*433d6423SLionel Sambuc 
1042*433d6423SLionel Sambuc } ACPI_TABLE_WAET;
1043*433d6423SLionel Sambuc 
1044*433d6423SLionel Sambuc /* Masks for Flags field above */
1045*433d6423SLionel Sambuc 
1046*433d6423SLionel Sambuc #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1047*433d6423SLionel Sambuc #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1048*433d6423SLionel Sambuc 
1049*433d6423SLionel Sambuc 
1050*433d6423SLionel Sambuc /*******************************************************************************
1051*433d6423SLionel Sambuc  *
1052*433d6423SLionel Sambuc  * WDAT - Watchdog Action Table
1053*433d6423SLionel Sambuc  *        Version 1
1054*433d6423SLionel Sambuc  *
1055*433d6423SLionel Sambuc  * Conforms to "Hardware Watchdog Timers Design Specification",
1056*433d6423SLionel Sambuc  * Copyright 2006 Microsoft Corporation.
1057*433d6423SLionel Sambuc  *
1058*433d6423SLionel Sambuc  ******************************************************************************/
1059*433d6423SLionel Sambuc 
1060*433d6423SLionel Sambuc typedef struct acpi_table_wdat
1061*433d6423SLionel Sambuc {
1062*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1063*433d6423SLionel Sambuc     UINT32                  HeaderLength;       /* Watchdog Header Length */
1064*433d6423SLionel Sambuc     UINT16                  PciSegment;         /* PCI Segment number */
1065*433d6423SLionel Sambuc     UINT8                   PciBus;             /* PCI Bus number */
1066*433d6423SLionel Sambuc     UINT8                   PciDevice;          /* PCI Device number */
1067*433d6423SLionel Sambuc     UINT8                   PciFunction;        /* PCI Function number */
1068*433d6423SLionel Sambuc     UINT8                   Reserved[3];
1069*433d6423SLionel Sambuc     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1070*433d6423SLionel Sambuc     UINT32                  MaxCount;           /* Maximum counter value supported */
1071*433d6423SLionel Sambuc     UINT32                  MinCount;           /* Minimum counter value */
1072*433d6423SLionel Sambuc     UINT8                   Flags;
1073*433d6423SLionel Sambuc     UINT8                   Reserved2[3];
1074*433d6423SLionel Sambuc     UINT32                  Entries;            /* Number of watchdog entries that follow */
1075*433d6423SLionel Sambuc 
1076*433d6423SLionel Sambuc } ACPI_TABLE_WDAT;
1077*433d6423SLionel Sambuc 
1078*433d6423SLionel Sambuc /* Masks for Flags field above */
1079*433d6423SLionel Sambuc 
1080*433d6423SLionel Sambuc #define ACPI_WDAT_ENABLED           (1)
1081*433d6423SLionel Sambuc #define ACPI_WDAT_STOPPED           0x80
1082*433d6423SLionel Sambuc 
1083*433d6423SLionel Sambuc 
1084*433d6423SLionel Sambuc /* WDAT Instruction Entries (actions) */
1085*433d6423SLionel Sambuc 
1086*433d6423SLionel Sambuc typedef struct acpi_wdat_entry
1087*433d6423SLionel Sambuc {
1088*433d6423SLionel Sambuc     UINT8                   Action;
1089*433d6423SLionel Sambuc     UINT8                   Instruction;
1090*433d6423SLionel Sambuc     UINT16                  Reserved;
1091*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    RegisterRegion;
1092*433d6423SLionel Sambuc     UINT32                  Value;              /* Value used with Read/Write register */
1093*433d6423SLionel Sambuc     UINT32                  Mask;               /* Bitmask required for this register instruction */
1094*433d6423SLionel Sambuc 
1095*433d6423SLionel Sambuc } ACPI_WDAT_ENTRY;
1096*433d6423SLionel Sambuc 
1097*433d6423SLionel Sambuc /* Values for Action field above */
1098*433d6423SLionel Sambuc 
1099*433d6423SLionel Sambuc enum AcpiWdatActions
1100*433d6423SLionel Sambuc {
1101*433d6423SLionel Sambuc     ACPI_WDAT_RESET                 = 1,
1102*433d6423SLionel Sambuc     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1103*433d6423SLionel Sambuc     ACPI_WDAT_GET_COUNTDOWN         = 5,
1104*433d6423SLionel Sambuc     ACPI_WDAT_SET_COUNTDOWN         = 6,
1105*433d6423SLionel Sambuc     ACPI_WDAT_GET_RUNNING_STATE     = 8,
1106*433d6423SLionel Sambuc     ACPI_WDAT_SET_RUNNING_STATE     = 9,
1107*433d6423SLionel Sambuc     ACPI_WDAT_GET_STOPPED_STATE     = 10,
1108*433d6423SLionel Sambuc     ACPI_WDAT_SET_STOPPED_STATE     = 11,
1109*433d6423SLionel Sambuc     ACPI_WDAT_GET_REBOOT            = 16,
1110*433d6423SLionel Sambuc     ACPI_WDAT_SET_REBOOT            = 17,
1111*433d6423SLionel Sambuc     ACPI_WDAT_GET_SHUTDOWN          = 18,
1112*433d6423SLionel Sambuc     ACPI_WDAT_SET_SHUTDOWN          = 19,
1113*433d6423SLionel Sambuc     ACPI_WDAT_GET_STATUS            = 32,
1114*433d6423SLionel Sambuc     ACPI_WDAT_SET_STATUS            = 33,
1115*433d6423SLionel Sambuc     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1116*433d6423SLionel Sambuc };
1117*433d6423SLionel Sambuc 
1118*433d6423SLionel Sambuc /* Values for Instruction field above */
1119*433d6423SLionel Sambuc 
1120*433d6423SLionel Sambuc enum AcpiWdatInstructions
1121*433d6423SLionel Sambuc {
1122*433d6423SLionel Sambuc     ACPI_WDAT_READ_VALUE            = 0,
1123*433d6423SLionel Sambuc     ACPI_WDAT_READ_COUNTDOWN        = 1,
1124*433d6423SLionel Sambuc     ACPI_WDAT_WRITE_VALUE           = 2,
1125*433d6423SLionel Sambuc     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1126*433d6423SLionel Sambuc     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1127*433d6423SLionel Sambuc     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1128*433d6423SLionel Sambuc };
1129*433d6423SLionel Sambuc 
1130*433d6423SLionel Sambuc 
1131*433d6423SLionel Sambuc /*******************************************************************************
1132*433d6423SLionel Sambuc  *
1133*433d6423SLionel Sambuc  * WDDT - Watchdog Descriptor Table
1134*433d6423SLionel Sambuc  *        Version 1
1135*433d6423SLionel Sambuc  *
1136*433d6423SLionel Sambuc  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
1137*433d6423SLionel Sambuc  * Version 001, September 2002
1138*433d6423SLionel Sambuc  *
1139*433d6423SLionel Sambuc  ******************************************************************************/
1140*433d6423SLionel Sambuc 
1141*433d6423SLionel Sambuc typedef struct acpi_table_wddt
1142*433d6423SLionel Sambuc {
1143*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1144*433d6423SLionel Sambuc     UINT16                  SpecVersion;
1145*433d6423SLionel Sambuc     UINT16                  TableVersion;
1146*433d6423SLionel Sambuc     UINT16                  PciVendorId;
1147*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    Address;
1148*433d6423SLionel Sambuc     UINT16                  MaxCount;           /* Maximum counter value supported */
1149*433d6423SLionel Sambuc     UINT16                  MinCount;           /* Minimum counter value supported */
1150*433d6423SLionel Sambuc     UINT16                  Period;
1151*433d6423SLionel Sambuc     UINT16                  Status;
1152*433d6423SLionel Sambuc     UINT16                  Capability;
1153*433d6423SLionel Sambuc 
1154*433d6423SLionel Sambuc } ACPI_TABLE_WDDT;
1155*433d6423SLionel Sambuc 
1156*433d6423SLionel Sambuc /* Flags for Status field above */
1157*433d6423SLionel Sambuc 
1158*433d6423SLionel Sambuc #define ACPI_WDDT_AVAILABLE     (1)
1159*433d6423SLionel Sambuc #define ACPI_WDDT_ACTIVE        (1<<1)
1160*433d6423SLionel Sambuc #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
1161*433d6423SLionel Sambuc #define ACPI_WDDT_USER_RESET    (1<<11)
1162*433d6423SLionel Sambuc #define ACPI_WDDT_WDT_RESET     (1<<12)
1163*433d6423SLionel Sambuc #define ACPI_WDDT_POWER_FAIL    (1<<13)
1164*433d6423SLionel Sambuc #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1165*433d6423SLionel Sambuc 
1166*433d6423SLionel Sambuc /* Flags for Capability field above */
1167*433d6423SLionel Sambuc 
1168*433d6423SLionel Sambuc #define ACPI_WDDT_AUTO_RESET    (1)
1169*433d6423SLionel Sambuc #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1170*433d6423SLionel Sambuc 
1171*433d6423SLionel Sambuc 
1172*433d6423SLionel Sambuc /*******************************************************************************
1173*433d6423SLionel Sambuc  *
1174*433d6423SLionel Sambuc  * WDRT - Watchdog Resource Table
1175*433d6423SLionel Sambuc  *        Version 1
1176*433d6423SLionel Sambuc  *
1177*433d6423SLionel Sambuc  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1178*433d6423SLionel Sambuc  * Version 1.01, August 28, 2006
1179*433d6423SLionel Sambuc  *
1180*433d6423SLionel Sambuc  ******************************************************************************/
1181*433d6423SLionel Sambuc 
1182*433d6423SLionel Sambuc typedef struct acpi_table_wdrt
1183*433d6423SLionel Sambuc {
1184*433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1185*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    ControlRegister;
1186*433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    CountRegister;
1187*433d6423SLionel Sambuc     UINT16                  PciDeviceId;
1188*433d6423SLionel Sambuc     UINT16                  PciVendorId;
1189*433d6423SLionel Sambuc     UINT8                   PciBus;             /* PCI Bus number */
1190*433d6423SLionel Sambuc     UINT8                   PciDevice;          /* PCI Device number */
1191*433d6423SLionel Sambuc     UINT8                   PciFunction;        /* PCI Function number */
1192*433d6423SLionel Sambuc     UINT8                   PciSegment;         /* PCI Segment number */
1193*433d6423SLionel Sambuc     UINT16                  MaxCount;           /* Maximum counter value supported */
1194*433d6423SLionel Sambuc     UINT8                   Units;
1195*433d6423SLionel Sambuc 
1196*433d6423SLionel Sambuc } ACPI_TABLE_WDRT;
1197*433d6423SLionel Sambuc 
1198*433d6423SLionel Sambuc 
1199*433d6423SLionel Sambuc /* Reset to default packing */
1200*433d6423SLionel Sambuc 
1201*433d6423SLionel Sambuc #pragma pack()
1202*433d6423SLionel Sambuc 
1203*433d6423SLionel Sambuc #endif /* __ACTBL2_H__ */
1204*433d6423SLionel Sambuc 
1205