xref: /minix3/minix/drivers/power/acpi/include/actbl2.h (revision 29492bb71c7148a089a5afafa0c99409161218df)
1433d6423SLionel Sambuc /******************************************************************************
2433d6423SLionel Sambuc  *
3*29492bb7SDavid van Moolenbroek  * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
4433d6423SLionel Sambuc  *
5433d6423SLionel Sambuc  *****************************************************************************/
6433d6423SLionel Sambuc 
7*29492bb7SDavid van Moolenbroek /*
8*29492bb7SDavid van Moolenbroek  * Copyright (C) 2000 - 2014, Intel Corp.
9433d6423SLionel Sambuc  * All rights reserved.
10433d6423SLionel Sambuc  *
11*29492bb7SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
12*29492bb7SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
13*29492bb7SDavid van Moolenbroek  * are met:
14*29492bb7SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
15*29492bb7SDavid van Moolenbroek  *    notice, this list of conditions, and the following disclaimer,
16*29492bb7SDavid van Moolenbroek  *    without modification.
17*29492bb7SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*29492bb7SDavid van Moolenbroek  *    substantially similar to the "NO WARRANTY" disclaimer below
19*29492bb7SDavid van Moolenbroek  *    ("Disclaimer") and any redistribution must be conditioned upon
20*29492bb7SDavid van Moolenbroek  *    including a substantially similar Disclaimer requirement for further
21*29492bb7SDavid van Moolenbroek  *    binary redistribution.
22*29492bb7SDavid van Moolenbroek  * 3. Neither the names of the above-listed copyright holders nor the names
23*29492bb7SDavid van Moolenbroek  *    of any contributors may be used to endorse or promote products derived
24*29492bb7SDavid van Moolenbroek  *    from this software without specific prior written permission.
25433d6423SLionel Sambuc  *
26*29492bb7SDavid van Moolenbroek  * Alternatively, this software may be distributed under the terms of the
27*29492bb7SDavid van Moolenbroek  * GNU General Public License ("GPL") version 2 as published by the Free
28*29492bb7SDavid van Moolenbroek  * Software Foundation.
29433d6423SLionel Sambuc  *
30*29492bb7SDavid van Moolenbroek  * NO WARRANTY
31*29492bb7SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*29492bb7SDavid van Moolenbroek  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*29492bb7SDavid van Moolenbroek  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*29492bb7SDavid van Moolenbroek  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*29492bb7SDavid van Moolenbroek  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*29492bb7SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*29492bb7SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*29492bb7SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*29492bb7SDavid van Moolenbroek  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*29492bb7SDavid van Moolenbroek  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*29492bb7SDavid van Moolenbroek  * POSSIBILITY OF SUCH DAMAGES.
42*29492bb7SDavid van Moolenbroek  */
43433d6423SLionel Sambuc 
44433d6423SLionel Sambuc #ifndef __ACTBL2_H__
45433d6423SLionel Sambuc #define __ACTBL2_H__
46433d6423SLionel Sambuc 
47433d6423SLionel Sambuc 
48433d6423SLionel Sambuc /*******************************************************************************
49433d6423SLionel Sambuc  *
50433d6423SLionel Sambuc  * Additional ACPI Tables (2)
51433d6423SLionel Sambuc  *
52433d6423SLionel Sambuc  * These tables are not consumed directly by the ACPICA subsystem, but are
53433d6423SLionel Sambuc  * included here to support device drivers and the AML disassembler.
54433d6423SLionel Sambuc  *
55433d6423SLionel Sambuc  * The tables in this file are defined by third-party specifications, and are
56433d6423SLionel Sambuc  * not defined directly by the ACPI specification itself.
57433d6423SLionel Sambuc  *
58433d6423SLionel Sambuc  ******************************************************************************/
59433d6423SLionel Sambuc 
60433d6423SLionel Sambuc 
61433d6423SLionel Sambuc /*
62433d6423SLionel Sambuc  * Values for description table header signatures for tables defined in this
63433d6423SLionel Sambuc  * file. Useful because they make it more difficult to inadvertently type in
64433d6423SLionel Sambuc  * the wrong signature.
65433d6423SLionel Sambuc  */
66433d6423SLionel Sambuc #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
67433d6423SLionel Sambuc #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
68*29492bb7SDavid van Moolenbroek #define ACPI_SIG_CSRT           "CSRT"      /* Core System Resource Table */
69*29492bb7SDavid van Moolenbroek #define ACPI_SIG_DBG2           "DBG2"      /* Debug Port table type 2 */
70433d6423SLionel Sambuc #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
71433d6423SLionel Sambuc #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
72433d6423SLionel Sambuc #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
73433d6423SLionel Sambuc #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
74433d6423SLionel Sambuc #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
75*29492bb7SDavid van Moolenbroek #define ACPI_SIG_LPIT           "LPIT"      /* Low Power Idle Table */
76433d6423SLionel Sambuc #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
77433d6423SLionel Sambuc #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
78*29492bb7SDavid van Moolenbroek #define ACPI_SIG_MTMR           "MTMR"      /* MID Timer table */
79433d6423SLionel Sambuc #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
80433d6423SLionel Sambuc #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
81433d6423SLionel Sambuc #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
82433d6423SLionel Sambuc #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
83433d6423SLionel Sambuc #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
84*29492bb7SDavid van Moolenbroek #define ACPI_SIG_VRTC           "VRTC"      /* Virtual Real Time Clock Table */
85433d6423SLionel Sambuc #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
86433d6423SLionel Sambuc #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
87433d6423SLionel Sambuc #define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
88433d6423SLionel Sambuc #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
89433d6423SLionel Sambuc 
90433d6423SLionel Sambuc #ifdef ACPI_UNDEFINED_TABLES
91433d6423SLionel Sambuc /*
92433d6423SLionel Sambuc  * These tables have been seen in the field, but no definition has been found
93433d6423SLionel Sambuc  */
94433d6423SLionel Sambuc #define ACPI_SIG_ATKG           "ATKG"
95433d6423SLionel Sambuc #define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
96433d6423SLionel Sambuc #define ACPI_SIG_IEIT           "IEIT"
97433d6423SLionel Sambuc #endif
98433d6423SLionel Sambuc 
99433d6423SLionel Sambuc /*
100433d6423SLionel Sambuc  * All tables must be byte-packed to match the ACPI specification, since
101433d6423SLionel Sambuc  * the tables are provided by the system BIOS.
102433d6423SLionel Sambuc  */
103433d6423SLionel Sambuc #pragma pack(1)
104433d6423SLionel Sambuc 
105433d6423SLionel Sambuc /*
106*29492bb7SDavid van Moolenbroek  * Note: C bitfields are not used for this reason:
107*29492bb7SDavid van Moolenbroek  *
108*29492bb7SDavid van Moolenbroek  * "Bitfields are great and easy to read, but unfortunately the C language
109*29492bb7SDavid van Moolenbroek  * does not specify the layout of bitfields in memory, which means they are
110*29492bb7SDavid van Moolenbroek  * essentially useless for dealing with packed data in on-disk formats or
111*29492bb7SDavid van Moolenbroek  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
112*29492bb7SDavid van Moolenbroek  * this decision was a design error in C. Ritchie could have picked an order
113*29492bb7SDavid van Moolenbroek  * and stuck with it." Norman Ramsey.
114*29492bb7SDavid van Moolenbroek  * See http://stackoverflow.com/a/1053662/41661
115433d6423SLionel Sambuc  */
116433d6423SLionel Sambuc 
117433d6423SLionel Sambuc 
118433d6423SLionel Sambuc /*******************************************************************************
119433d6423SLionel Sambuc  *
120433d6423SLionel Sambuc  * ASF - Alert Standard Format table (Signature "ASF!")
121433d6423SLionel Sambuc  *       Revision 0x10
122433d6423SLionel Sambuc  *
123433d6423SLionel Sambuc  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
124433d6423SLionel Sambuc  *
125433d6423SLionel Sambuc  ******************************************************************************/
126433d6423SLionel Sambuc 
127433d6423SLionel Sambuc typedef struct acpi_table_asf
128433d6423SLionel Sambuc {
129433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
130433d6423SLionel Sambuc 
131433d6423SLionel Sambuc } ACPI_TABLE_ASF;
132433d6423SLionel Sambuc 
133433d6423SLionel Sambuc 
134433d6423SLionel Sambuc /* ASF subtable header */
135433d6423SLionel Sambuc 
136433d6423SLionel Sambuc typedef struct acpi_asf_header
137433d6423SLionel Sambuc {
138433d6423SLionel Sambuc     UINT8                   Type;
139433d6423SLionel Sambuc     UINT8                   Reserved;
140433d6423SLionel Sambuc     UINT16                  Length;
141433d6423SLionel Sambuc 
142433d6423SLionel Sambuc } ACPI_ASF_HEADER;
143433d6423SLionel Sambuc 
144433d6423SLionel Sambuc 
145433d6423SLionel Sambuc /* Values for Type field above */
146433d6423SLionel Sambuc 
147433d6423SLionel Sambuc enum AcpiAsfType
148433d6423SLionel Sambuc {
149433d6423SLionel Sambuc     ACPI_ASF_TYPE_INFO          = 0,
150433d6423SLionel Sambuc     ACPI_ASF_TYPE_ALERT         = 1,
151433d6423SLionel Sambuc     ACPI_ASF_TYPE_CONTROL       = 2,
152433d6423SLionel Sambuc     ACPI_ASF_TYPE_BOOT          = 3,
153433d6423SLionel Sambuc     ACPI_ASF_TYPE_ADDRESS       = 4,
154433d6423SLionel Sambuc     ACPI_ASF_TYPE_RESERVED      = 5
155433d6423SLionel Sambuc };
156433d6423SLionel Sambuc 
157433d6423SLionel Sambuc /*
158433d6423SLionel Sambuc  * ASF subtables
159433d6423SLionel Sambuc  */
160433d6423SLionel Sambuc 
161433d6423SLionel Sambuc /* 0: ASF Information */
162433d6423SLionel Sambuc 
163433d6423SLionel Sambuc typedef struct acpi_asf_info
164433d6423SLionel Sambuc {
165433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
166433d6423SLionel Sambuc     UINT8                   MinResetValue;
167433d6423SLionel Sambuc     UINT8                   MinPollInterval;
168433d6423SLionel Sambuc     UINT16                  SystemId;
169433d6423SLionel Sambuc     UINT32                  MfgId;
170433d6423SLionel Sambuc     UINT8                   Flags;
171433d6423SLionel Sambuc     UINT8                   Reserved2[3];
172433d6423SLionel Sambuc 
173433d6423SLionel Sambuc } ACPI_ASF_INFO;
174433d6423SLionel Sambuc 
175433d6423SLionel Sambuc /* Masks for Flags field above */
176433d6423SLionel Sambuc 
177433d6423SLionel Sambuc #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
178433d6423SLionel Sambuc 
179433d6423SLionel Sambuc 
180433d6423SLionel Sambuc /* 1: ASF Alerts */
181433d6423SLionel Sambuc 
182433d6423SLionel Sambuc typedef struct acpi_asf_alert
183433d6423SLionel Sambuc {
184433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
185433d6423SLionel Sambuc     UINT8                   AssertMask;
186433d6423SLionel Sambuc     UINT8                   DeassertMask;
187433d6423SLionel Sambuc     UINT8                   Alerts;
188433d6423SLionel Sambuc     UINT8                   DataLength;
189433d6423SLionel Sambuc 
190433d6423SLionel Sambuc } ACPI_ASF_ALERT;
191433d6423SLionel Sambuc 
192433d6423SLionel Sambuc typedef struct acpi_asf_alert_data
193433d6423SLionel Sambuc {
194433d6423SLionel Sambuc     UINT8                   Address;
195433d6423SLionel Sambuc     UINT8                   Command;
196433d6423SLionel Sambuc     UINT8                   Mask;
197433d6423SLionel Sambuc     UINT8                   Value;
198433d6423SLionel Sambuc     UINT8                   SensorType;
199433d6423SLionel Sambuc     UINT8                   Type;
200433d6423SLionel Sambuc     UINT8                   Offset;
201433d6423SLionel Sambuc     UINT8                   SourceType;
202433d6423SLionel Sambuc     UINT8                   Severity;
203433d6423SLionel Sambuc     UINT8                   SensorNumber;
204433d6423SLionel Sambuc     UINT8                   Entity;
205433d6423SLionel Sambuc     UINT8                   Instance;
206433d6423SLionel Sambuc 
207433d6423SLionel Sambuc } ACPI_ASF_ALERT_DATA;
208433d6423SLionel Sambuc 
209433d6423SLionel Sambuc 
210433d6423SLionel Sambuc /* 2: ASF Remote Control */
211433d6423SLionel Sambuc 
212433d6423SLionel Sambuc typedef struct acpi_asf_remote
213433d6423SLionel Sambuc {
214433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
215433d6423SLionel Sambuc     UINT8                   Controls;
216433d6423SLionel Sambuc     UINT8                   DataLength;
217433d6423SLionel Sambuc     UINT16                  Reserved2;
218433d6423SLionel Sambuc 
219433d6423SLionel Sambuc } ACPI_ASF_REMOTE;
220433d6423SLionel Sambuc 
221433d6423SLionel Sambuc typedef struct acpi_asf_control_data
222433d6423SLionel Sambuc {
223433d6423SLionel Sambuc     UINT8                   Function;
224433d6423SLionel Sambuc     UINT8                   Address;
225433d6423SLionel Sambuc     UINT8                   Command;
226433d6423SLionel Sambuc     UINT8                   Value;
227433d6423SLionel Sambuc 
228433d6423SLionel Sambuc } ACPI_ASF_CONTROL_DATA;
229433d6423SLionel Sambuc 
230433d6423SLionel Sambuc 
231433d6423SLionel Sambuc /* 3: ASF RMCP Boot Options */
232433d6423SLionel Sambuc 
233433d6423SLionel Sambuc typedef struct acpi_asf_rmcp
234433d6423SLionel Sambuc {
235433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
236433d6423SLionel Sambuc     UINT8                   Capabilities[7];
237433d6423SLionel Sambuc     UINT8                   CompletionCode;
238433d6423SLionel Sambuc     UINT32                  EnterpriseId;
239433d6423SLionel Sambuc     UINT8                   Command;
240433d6423SLionel Sambuc     UINT16                  Parameter;
241433d6423SLionel Sambuc     UINT16                  BootOptions;
242433d6423SLionel Sambuc     UINT16                  OemParameters;
243433d6423SLionel Sambuc 
244433d6423SLionel Sambuc } ACPI_ASF_RMCP;
245433d6423SLionel Sambuc 
246433d6423SLionel Sambuc 
247433d6423SLionel Sambuc /* 4: ASF Address */
248433d6423SLionel Sambuc 
249433d6423SLionel Sambuc typedef struct acpi_asf_address
250433d6423SLionel Sambuc {
251433d6423SLionel Sambuc     ACPI_ASF_HEADER         Header;
252433d6423SLionel Sambuc     UINT8                   EpromAddress;
253433d6423SLionel Sambuc     UINT8                   Devices;
254433d6423SLionel Sambuc 
255433d6423SLionel Sambuc } ACPI_ASF_ADDRESS;
256433d6423SLionel Sambuc 
257433d6423SLionel Sambuc 
258433d6423SLionel Sambuc /*******************************************************************************
259433d6423SLionel Sambuc  *
260433d6423SLionel Sambuc  * BOOT - Simple Boot Flag Table
261433d6423SLionel Sambuc  *        Version 1
262433d6423SLionel Sambuc  *
263433d6423SLionel Sambuc  * Conforms to the "Simple Boot Flag Specification", Version 2.1
264433d6423SLionel Sambuc  *
265433d6423SLionel Sambuc  ******************************************************************************/
266433d6423SLionel Sambuc 
267433d6423SLionel Sambuc typedef struct acpi_table_boot
268433d6423SLionel Sambuc {
269433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
270433d6423SLionel Sambuc     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
271433d6423SLionel Sambuc     UINT8                   Reserved[3];
272433d6423SLionel Sambuc 
273433d6423SLionel Sambuc } ACPI_TABLE_BOOT;
274433d6423SLionel Sambuc 
275433d6423SLionel Sambuc 
276433d6423SLionel Sambuc /*******************************************************************************
277433d6423SLionel Sambuc  *
278*29492bb7SDavid van Moolenbroek  * CSRT - Core System Resource Table
279*29492bb7SDavid van Moolenbroek  *        Version 0
280*29492bb7SDavid van Moolenbroek  *
281*29492bb7SDavid van Moolenbroek  * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
282*29492bb7SDavid van Moolenbroek  *
283*29492bb7SDavid van Moolenbroek  ******************************************************************************/
284*29492bb7SDavid van Moolenbroek 
285*29492bb7SDavid van Moolenbroek typedef struct acpi_table_csrt
286*29492bb7SDavid van Moolenbroek {
287*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
288*29492bb7SDavid van Moolenbroek 
289*29492bb7SDavid van Moolenbroek } ACPI_TABLE_CSRT;
290*29492bb7SDavid van Moolenbroek 
291*29492bb7SDavid van Moolenbroek 
292*29492bb7SDavid van Moolenbroek /* Resource Group subtable */
293*29492bb7SDavid van Moolenbroek 
294*29492bb7SDavid van Moolenbroek typedef struct acpi_csrt_group
295*29492bb7SDavid van Moolenbroek {
296*29492bb7SDavid van Moolenbroek     UINT32                  Length;
297*29492bb7SDavid van Moolenbroek     UINT32                  VendorId;
298*29492bb7SDavid van Moolenbroek     UINT32                  SubvendorId;
299*29492bb7SDavid van Moolenbroek     UINT16                  DeviceId;
300*29492bb7SDavid van Moolenbroek     UINT16                  SubdeviceId;
301*29492bb7SDavid van Moolenbroek     UINT16                  Revision;
302*29492bb7SDavid van Moolenbroek     UINT16                  Reserved;
303*29492bb7SDavid van Moolenbroek     UINT32                  SharedInfoLength;
304*29492bb7SDavid van Moolenbroek 
305*29492bb7SDavid van Moolenbroek     /* Shared data immediately follows (Length = SharedInfoLength) */
306*29492bb7SDavid van Moolenbroek 
307*29492bb7SDavid van Moolenbroek } ACPI_CSRT_GROUP;
308*29492bb7SDavid van Moolenbroek 
309*29492bb7SDavid van Moolenbroek /* Shared Info subtable */
310*29492bb7SDavid van Moolenbroek 
311*29492bb7SDavid van Moolenbroek typedef struct acpi_csrt_shared_info
312*29492bb7SDavid van Moolenbroek {
313*29492bb7SDavid van Moolenbroek     UINT16                  MajorVersion;
314*29492bb7SDavid van Moolenbroek     UINT16                  MinorVersion;
315*29492bb7SDavid van Moolenbroek     UINT32                  MmioBaseLow;
316*29492bb7SDavid van Moolenbroek     UINT32                  MmioBaseHigh;
317*29492bb7SDavid van Moolenbroek     UINT32                  GsiInterrupt;
318*29492bb7SDavid van Moolenbroek     UINT8                   InterruptPolarity;
319*29492bb7SDavid van Moolenbroek     UINT8                   InterruptMode;
320*29492bb7SDavid van Moolenbroek     UINT8                   NumChannels;
321*29492bb7SDavid van Moolenbroek     UINT8                   DmaAddressWidth;
322*29492bb7SDavid van Moolenbroek     UINT16                  BaseRequestLine;
323*29492bb7SDavid van Moolenbroek     UINT16                  NumHandshakeSignals;
324*29492bb7SDavid van Moolenbroek     UINT32                  MaxBlockSize;
325*29492bb7SDavid van Moolenbroek 
326*29492bb7SDavid van Moolenbroek     /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
327*29492bb7SDavid van Moolenbroek 
328*29492bb7SDavid van Moolenbroek } ACPI_CSRT_SHARED_INFO;
329*29492bb7SDavid van Moolenbroek 
330*29492bb7SDavid van Moolenbroek /* Resource Descriptor subtable */
331*29492bb7SDavid van Moolenbroek 
332*29492bb7SDavid van Moolenbroek typedef struct acpi_csrt_descriptor
333*29492bb7SDavid van Moolenbroek {
334*29492bb7SDavid van Moolenbroek     UINT32                  Length;
335*29492bb7SDavid van Moolenbroek     UINT16                  Type;
336*29492bb7SDavid van Moolenbroek     UINT16                  Subtype;
337*29492bb7SDavid van Moolenbroek     UINT32                  Uid;
338*29492bb7SDavid van Moolenbroek 
339*29492bb7SDavid van Moolenbroek     /* Resource-specific information immediately follows */
340*29492bb7SDavid van Moolenbroek 
341*29492bb7SDavid van Moolenbroek } ACPI_CSRT_DESCRIPTOR;
342*29492bb7SDavid van Moolenbroek 
343*29492bb7SDavid van Moolenbroek 
344*29492bb7SDavid van Moolenbroek /* Resource Types */
345*29492bb7SDavid van Moolenbroek 
346*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_TYPE_INTERRUPT    0x0001
347*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_TYPE_TIMER        0x0002
348*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_TYPE_DMA          0x0003
349*29492bb7SDavid van Moolenbroek 
350*29492bb7SDavid van Moolenbroek /* Resource Subtypes */
351*29492bb7SDavid van Moolenbroek 
352*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_XRUPT_LINE        0x0000
353*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
354*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_TIMER             0x0000
355*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_DMA_CHANNEL       0x0000
356*29492bb7SDavid van Moolenbroek #define ACPI_CSRT_DMA_CONTROLLER    0x0001
357*29492bb7SDavid van Moolenbroek 
358*29492bb7SDavid van Moolenbroek 
359*29492bb7SDavid van Moolenbroek /*******************************************************************************
360*29492bb7SDavid van Moolenbroek  *
361*29492bb7SDavid van Moolenbroek  * DBG2 - Debug Port Table 2
362*29492bb7SDavid van Moolenbroek  *        Version 0 (Both main table and subtables)
363*29492bb7SDavid van Moolenbroek  *
364*29492bb7SDavid van Moolenbroek  * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012.
365*29492bb7SDavid van Moolenbroek  *
366*29492bb7SDavid van Moolenbroek  ******************************************************************************/
367*29492bb7SDavid van Moolenbroek 
368*29492bb7SDavid van Moolenbroek typedef struct acpi_table_dbg2
369*29492bb7SDavid van Moolenbroek {
370*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
371*29492bb7SDavid van Moolenbroek     UINT32                  InfoOffset;
372*29492bb7SDavid van Moolenbroek     UINT32                  InfoCount;
373*29492bb7SDavid van Moolenbroek 
374*29492bb7SDavid van Moolenbroek } ACPI_TABLE_DBG2;
375*29492bb7SDavid van Moolenbroek 
376*29492bb7SDavid van Moolenbroek 
377*29492bb7SDavid van Moolenbroek typedef struct acpi_dbg2_header
378*29492bb7SDavid van Moolenbroek {
379*29492bb7SDavid van Moolenbroek     UINT32                  InfoOffset;
380*29492bb7SDavid van Moolenbroek     UINT32                  InfoCount;
381*29492bb7SDavid van Moolenbroek 
382*29492bb7SDavid van Moolenbroek } ACPI_DBG2_HEADER;
383*29492bb7SDavid van Moolenbroek 
384*29492bb7SDavid van Moolenbroek 
385*29492bb7SDavid van Moolenbroek /* Debug Device Information Subtable */
386*29492bb7SDavid van Moolenbroek 
387*29492bb7SDavid van Moolenbroek typedef struct acpi_dbg2_device
388*29492bb7SDavid van Moolenbroek {
389*29492bb7SDavid van Moolenbroek     UINT8                   Revision;
390*29492bb7SDavid van Moolenbroek     UINT16                  Length;
391*29492bb7SDavid van Moolenbroek     UINT8                   RegisterCount;      /* Number of BaseAddress registers */
392*29492bb7SDavid van Moolenbroek     UINT16                  NamepathLength;
393*29492bb7SDavid van Moolenbroek     UINT16                  NamepathOffset;
394*29492bb7SDavid van Moolenbroek     UINT16                  OemDataLength;
395*29492bb7SDavid van Moolenbroek     UINT16                  OemDataOffset;
396*29492bb7SDavid van Moolenbroek     UINT16                  PortType;
397*29492bb7SDavid van Moolenbroek     UINT16                  PortSubtype;
398*29492bb7SDavid van Moolenbroek     UINT16                  Reserved;
399*29492bb7SDavid van Moolenbroek     UINT16                  BaseAddressOffset;
400*29492bb7SDavid van Moolenbroek     UINT16                  AddressSizeOffset;
401*29492bb7SDavid van Moolenbroek     /*
402*29492bb7SDavid van Moolenbroek      * Data that follows:
403*29492bb7SDavid van Moolenbroek      *    BaseAddress (required) - Each in 12-byte Generic Address Structure format.
404*29492bb7SDavid van Moolenbroek      *    AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
405*29492bb7SDavid van Moolenbroek      *    Namepath    (required) - Null terminated string. Single dot if not supported.
406*29492bb7SDavid van Moolenbroek      *    OemData     (optional) - Length is OemDataLength.
407*29492bb7SDavid van Moolenbroek      */
408*29492bb7SDavid van Moolenbroek } ACPI_DBG2_DEVICE;
409*29492bb7SDavid van Moolenbroek 
410*29492bb7SDavid van Moolenbroek /* Types for PortType field above */
411*29492bb7SDavid van Moolenbroek 
412*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_SERIAL_PORT       0x8000
413*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_1394_PORT         0x8001
414*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_USB_PORT          0x8002
415*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_NET_PORT          0x8003
416*29492bb7SDavid van Moolenbroek 
417*29492bb7SDavid van Moolenbroek /* Subtypes for PortSubtype field above */
418*29492bb7SDavid van Moolenbroek 
419*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_16550_COMPATIBLE  0x0000
420*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_16550_SUBSET      0x0001
421*29492bb7SDavid van Moolenbroek 
422*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_1394_STANDARD     0x0000
423*29492bb7SDavid van Moolenbroek 
424*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_USB_XHCI          0x0000
425*29492bb7SDavid van Moolenbroek #define ACPI_DBG2_USB_EHCI          0x0001
426*29492bb7SDavid van Moolenbroek 
427*29492bb7SDavid van Moolenbroek 
428*29492bb7SDavid van Moolenbroek /*******************************************************************************
429*29492bb7SDavid van Moolenbroek  *
430433d6423SLionel Sambuc  * DBGP - Debug Port table
431433d6423SLionel Sambuc  *        Version 1
432433d6423SLionel Sambuc  *
433433d6423SLionel Sambuc  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
434433d6423SLionel Sambuc  *
435433d6423SLionel Sambuc  ******************************************************************************/
436433d6423SLionel Sambuc 
437433d6423SLionel Sambuc typedef struct acpi_table_dbgp
438433d6423SLionel Sambuc {
439433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
440433d6423SLionel Sambuc     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
441433d6423SLionel Sambuc     UINT8                   Reserved[3];
442433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    DebugPort;
443433d6423SLionel Sambuc 
444433d6423SLionel Sambuc } ACPI_TABLE_DBGP;
445433d6423SLionel Sambuc 
446433d6423SLionel Sambuc 
447433d6423SLionel Sambuc /*******************************************************************************
448433d6423SLionel Sambuc  *
449433d6423SLionel Sambuc  * DMAR - DMA Remapping table
450433d6423SLionel Sambuc  *        Version 1
451433d6423SLionel Sambuc  *
452433d6423SLionel Sambuc  * Conforms to "Intel Virtualization Technology for Directed I/O",
453*29492bb7SDavid van Moolenbroek  * Version 2.2, Sept. 2013
454433d6423SLionel Sambuc  *
455433d6423SLionel Sambuc  ******************************************************************************/
456433d6423SLionel Sambuc 
457433d6423SLionel Sambuc typedef struct acpi_table_dmar
458433d6423SLionel Sambuc {
459433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
460433d6423SLionel Sambuc     UINT8                   Width;              /* Host Address Width */
461433d6423SLionel Sambuc     UINT8                   Flags;
462433d6423SLionel Sambuc     UINT8                   Reserved[10];
463433d6423SLionel Sambuc 
464433d6423SLionel Sambuc } ACPI_TABLE_DMAR;
465433d6423SLionel Sambuc 
466433d6423SLionel Sambuc /* Masks for Flags field above */
467433d6423SLionel Sambuc 
468433d6423SLionel Sambuc #define ACPI_DMAR_INTR_REMAP        (1)
469433d6423SLionel Sambuc 
470433d6423SLionel Sambuc 
471433d6423SLionel Sambuc /* DMAR subtable header */
472433d6423SLionel Sambuc 
473433d6423SLionel Sambuc typedef struct acpi_dmar_header
474433d6423SLionel Sambuc {
475433d6423SLionel Sambuc     UINT16                  Type;
476433d6423SLionel Sambuc     UINT16                  Length;
477433d6423SLionel Sambuc 
478433d6423SLionel Sambuc } ACPI_DMAR_HEADER;
479433d6423SLionel Sambuc 
480433d6423SLionel Sambuc /* Values for subtable type in ACPI_DMAR_HEADER */
481433d6423SLionel Sambuc 
482433d6423SLionel Sambuc enum AcpiDmarType
483433d6423SLionel Sambuc {
484433d6423SLionel Sambuc     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
485433d6423SLionel Sambuc     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
486*29492bb7SDavid van Moolenbroek     ACPI_DMAR_TYPE_ROOT_ATS             = 2,
487*29492bb7SDavid van Moolenbroek     ACPI_DMAR_TYPE_HARDWARE_AFFINITY    = 3,
488*29492bb7SDavid van Moolenbroek     ACPI_DMAR_TYPE_NAMESPACE            = 4,
489*29492bb7SDavid van Moolenbroek     ACPI_DMAR_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
490433d6423SLionel Sambuc };
491433d6423SLionel Sambuc 
492433d6423SLionel Sambuc 
493433d6423SLionel Sambuc /* DMAR Device Scope structure */
494433d6423SLionel Sambuc 
495433d6423SLionel Sambuc typedef struct acpi_dmar_device_scope
496433d6423SLionel Sambuc {
497433d6423SLionel Sambuc     UINT8                   EntryType;
498433d6423SLionel Sambuc     UINT8                   Length;
499433d6423SLionel Sambuc     UINT16                  Reserved;
500433d6423SLionel Sambuc     UINT8                   EnumerationId;
501433d6423SLionel Sambuc     UINT8                   Bus;
502433d6423SLionel Sambuc 
503433d6423SLionel Sambuc } ACPI_DMAR_DEVICE_SCOPE;
504433d6423SLionel Sambuc 
505*29492bb7SDavid van Moolenbroek /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
506433d6423SLionel Sambuc 
507433d6423SLionel Sambuc enum AcpiDmarScopeType
508433d6423SLionel Sambuc {
509433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
510433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
511433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
512433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
513433d6423SLionel Sambuc     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
514*29492bb7SDavid van Moolenbroek     ACPI_DMAR_SCOPE_TYPE_NAMESPACE      = 5,
515*29492bb7SDavid van Moolenbroek     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 6     /* 6 and greater are reserved */
516433d6423SLionel Sambuc };
517433d6423SLionel Sambuc 
518433d6423SLionel Sambuc typedef struct acpi_dmar_pci_path
519433d6423SLionel Sambuc {
520433d6423SLionel Sambuc     UINT8                   Device;
521433d6423SLionel Sambuc     UINT8                   Function;
522433d6423SLionel Sambuc 
523433d6423SLionel Sambuc } ACPI_DMAR_PCI_PATH;
524433d6423SLionel Sambuc 
525433d6423SLionel Sambuc 
526433d6423SLionel Sambuc /*
527*29492bb7SDavid van Moolenbroek  * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
528433d6423SLionel Sambuc  */
529433d6423SLionel Sambuc 
530433d6423SLionel Sambuc /* 0: Hardware Unit Definition */
531433d6423SLionel Sambuc 
532433d6423SLionel Sambuc typedef struct acpi_dmar_hardware_unit
533433d6423SLionel Sambuc {
534433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
535433d6423SLionel Sambuc     UINT8                   Flags;
536433d6423SLionel Sambuc     UINT8                   Reserved;
537433d6423SLionel Sambuc     UINT16                  Segment;
538433d6423SLionel Sambuc     UINT64                  Address;            /* Register Base Address */
539433d6423SLionel Sambuc 
540433d6423SLionel Sambuc } ACPI_DMAR_HARDWARE_UNIT;
541433d6423SLionel Sambuc 
542433d6423SLionel Sambuc /* Masks for Flags field above */
543433d6423SLionel Sambuc 
544433d6423SLionel Sambuc #define ACPI_DMAR_INCLUDE_ALL       (1)
545433d6423SLionel Sambuc 
546433d6423SLionel Sambuc 
547433d6423SLionel Sambuc /* 1: Reserved Memory Defininition */
548433d6423SLionel Sambuc 
549433d6423SLionel Sambuc typedef struct acpi_dmar_reserved_memory
550433d6423SLionel Sambuc {
551433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
552433d6423SLionel Sambuc     UINT16                  Reserved;
553433d6423SLionel Sambuc     UINT16                  Segment;
554433d6423SLionel Sambuc     UINT64                  BaseAddress;        /* 4K aligned base address */
555433d6423SLionel Sambuc     UINT64                  EndAddress;         /* 4K aligned limit address */
556433d6423SLionel Sambuc 
557433d6423SLionel Sambuc } ACPI_DMAR_RESERVED_MEMORY;
558433d6423SLionel Sambuc 
559433d6423SLionel Sambuc /* Masks for Flags field above */
560433d6423SLionel Sambuc 
561433d6423SLionel Sambuc #define ACPI_DMAR_ALLOW_ALL         (1)
562433d6423SLionel Sambuc 
563433d6423SLionel Sambuc 
564433d6423SLionel Sambuc /* 2: Root Port ATS Capability Reporting Structure */
565433d6423SLionel Sambuc 
566433d6423SLionel Sambuc typedef struct acpi_dmar_atsr
567433d6423SLionel Sambuc {
568433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
569433d6423SLionel Sambuc     UINT8                   Flags;
570433d6423SLionel Sambuc     UINT8                   Reserved;
571433d6423SLionel Sambuc     UINT16                  Segment;
572433d6423SLionel Sambuc 
573433d6423SLionel Sambuc } ACPI_DMAR_ATSR;
574433d6423SLionel Sambuc 
575433d6423SLionel Sambuc /* Masks for Flags field above */
576433d6423SLionel Sambuc 
577433d6423SLionel Sambuc #define ACPI_DMAR_ALL_PORTS         (1)
578433d6423SLionel Sambuc 
579433d6423SLionel Sambuc 
580433d6423SLionel Sambuc /* 3: Remapping Hardware Static Affinity Structure */
581433d6423SLionel Sambuc 
582433d6423SLionel Sambuc typedef struct acpi_dmar_rhsa
583433d6423SLionel Sambuc {
584433d6423SLionel Sambuc     ACPI_DMAR_HEADER        Header;
585433d6423SLionel Sambuc     UINT32                  Reserved;
586433d6423SLionel Sambuc     UINT64                  BaseAddress;
587433d6423SLionel Sambuc     UINT32                  ProximityDomain;
588433d6423SLionel Sambuc 
589433d6423SLionel Sambuc } ACPI_DMAR_RHSA;
590433d6423SLionel Sambuc 
591433d6423SLionel Sambuc 
592*29492bb7SDavid van Moolenbroek /* 4: ACPI Namespace Device Declaration Structure */
593*29492bb7SDavid van Moolenbroek 
594*29492bb7SDavid van Moolenbroek typedef struct acpi_dmar_andd
595*29492bb7SDavid van Moolenbroek {
596*29492bb7SDavid van Moolenbroek     ACPI_DMAR_HEADER        Header;
597*29492bb7SDavid van Moolenbroek     UINT8                   Reserved[3];
598*29492bb7SDavid van Moolenbroek     UINT8                   DeviceNumber;
599*29492bb7SDavid van Moolenbroek     char                    DeviceName[1];
600*29492bb7SDavid van Moolenbroek 
601*29492bb7SDavid van Moolenbroek } ACPI_DMAR_ANDD;
602*29492bb7SDavid van Moolenbroek 
603*29492bb7SDavid van Moolenbroek 
604433d6423SLionel Sambuc /*******************************************************************************
605433d6423SLionel Sambuc  *
606433d6423SLionel Sambuc  * HPET - High Precision Event Timer table
607433d6423SLionel Sambuc  *        Version 1
608433d6423SLionel Sambuc  *
609433d6423SLionel Sambuc  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
610433d6423SLionel Sambuc  * Version 1.0a, October 2004
611433d6423SLionel Sambuc  *
612433d6423SLionel Sambuc  ******************************************************************************/
613433d6423SLionel Sambuc 
614433d6423SLionel Sambuc typedef struct acpi_table_hpet
615433d6423SLionel Sambuc {
616433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
617433d6423SLionel Sambuc     UINT32                  Id;                 /* Hardware ID of event timer block */
618433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
619433d6423SLionel Sambuc     UINT8                   Sequence;           /* HPET sequence number */
620433d6423SLionel Sambuc     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
621433d6423SLionel Sambuc     UINT8                   Flags;
622433d6423SLionel Sambuc 
623433d6423SLionel Sambuc } ACPI_TABLE_HPET;
624433d6423SLionel Sambuc 
625433d6423SLionel Sambuc /* Masks for Flags field above */
626433d6423SLionel Sambuc 
627433d6423SLionel Sambuc #define ACPI_HPET_PAGE_PROTECT_MASK (3)
628433d6423SLionel Sambuc 
629433d6423SLionel Sambuc /* Values for Page Protect flags */
630433d6423SLionel Sambuc 
631433d6423SLionel Sambuc enum AcpiHpetPageProtect
632433d6423SLionel Sambuc {
633433d6423SLionel Sambuc     ACPI_HPET_NO_PAGE_PROTECT       = 0,
634433d6423SLionel Sambuc     ACPI_HPET_PAGE_PROTECT4         = 1,
635433d6423SLionel Sambuc     ACPI_HPET_PAGE_PROTECT64        = 2
636433d6423SLionel Sambuc };
637433d6423SLionel Sambuc 
638433d6423SLionel Sambuc 
639433d6423SLionel Sambuc /*******************************************************************************
640433d6423SLionel Sambuc  *
641433d6423SLionel Sambuc  * IBFT - Boot Firmware Table
642433d6423SLionel Sambuc  *        Version 1
643433d6423SLionel Sambuc  *
644433d6423SLionel Sambuc  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
645433d6423SLionel Sambuc  * Specification", Version 1.01, March 1, 2007
646433d6423SLionel Sambuc  *
647433d6423SLionel Sambuc  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
648433d6423SLionel Sambuc  * Therefore, it is not currently supported by the disassembler.
649433d6423SLionel Sambuc  *
650433d6423SLionel Sambuc  ******************************************************************************/
651433d6423SLionel Sambuc 
652433d6423SLionel Sambuc typedef struct acpi_table_ibft
653433d6423SLionel Sambuc {
654433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
655433d6423SLionel Sambuc     UINT8                   Reserved[12];
656433d6423SLionel Sambuc 
657433d6423SLionel Sambuc } ACPI_TABLE_IBFT;
658433d6423SLionel Sambuc 
659433d6423SLionel Sambuc 
660433d6423SLionel Sambuc /* IBFT common subtable header */
661433d6423SLionel Sambuc 
662433d6423SLionel Sambuc typedef struct acpi_ibft_header
663433d6423SLionel Sambuc {
664433d6423SLionel Sambuc     UINT8                   Type;
665433d6423SLionel Sambuc     UINT8                   Version;
666433d6423SLionel Sambuc     UINT16                  Length;
667433d6423SLionel Sambuc     UINT8                   Index;
668433d6423SLionel Sambuc     UINT8                   Flags;
669433d6423SLionel Sambuc 
670433d6423SLionel Sambuc } ACPI_IBFT_HEADER;
671433d6423SLionel Sambuc 
672433d6423SLionel Sambuc /* Values for Type field above */
673433d6423SLionel Sambuc 
674433d6423SLionel Sambuc enum AcpiIbftType
675433d6423SLionel Sambuc {
676433d6423SLionel Sambuc     ACPI_IBFT_TYPE_NOT_USED         = 0,
677433d6423SLionel Sambuc     ACPI_IBFT_TYPE_CONTROL          = 1,
678433d6423SLionel Sambuc     ACPI_IBFT_TYPE_INITIATOR        = 2,
679433d6423SLionel Sambuc     ACPI_IBFT_TYPE_NIC              = 3,
680433d6423SLionel Sambuc     ACPI_IBFT_TYPE_TARGET           = 4,
681433d6423SLionel Sambuc     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
682433d6423SLionel Sambuc     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
683433d6423SLionel Sambuc };
684433d6423SLionel Sambuc 
685433d6423SLionel Sambuc 
686433d6423SLionel Sambuc /* IBFT subtables */
687433d6423SLionel Sambuc 
688433d6423SLionel Sambuc typedef struct acpi_ibft_control
689433d6423SLionel Sambuc {
690433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
691433d6423SLionel Sambuc     UINT16                  Extensions;
692433d6423SLionel Sambuc     UINT16                  InitiatorOffset;
693433d6423SLionel Sambuc     UINT16                  Nic0Offset;
694433d6423SLionel Sambuc     UINT16                  Target0Offset;
695433d6423SLionel Sambuc     UINT16                  Nic1Offset;
696433d6423SLionel Sambuc     UINT16                  Target1Offset;
697433d6423SLionel Sambuc 
698433d6423SLionel Sambuc } ACPI_IBFT_CONTROL;
699433d6423SLionel Sambuc 
700433d6423SLionel Sambuc typedef struct acpi_ibft_initiator
701433d6423SLionel Sambuc {
702433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
703433d6423SLionel Sambuc     UINT8                   SnsServer[16];
704433d6423SLionel Sambuc     UINT8                   SlpServer[16];
705433d6423SLionel Sambuc     UINT8                   PrimaryServer[16];
706433d6423SLionel Sambuc     UINT8                   SecondaryServer[16];
707433d6423SLionel Sambuc     UINT16                  NameLength;
708433d6423SLionel Sambuc     UINT16                  NameOffset;
709433d6423SLionel Sambuc 
710433d6423SLionel Sambuc } ACPI_IBFT_INITIATOR;
711433d6423SLionel Sambuc 
712433d6423SLionel Sambuc typedef struct acpi_ibft_nic
713433d6423SLionel Sambuc {
714433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
715433d6423SLionel Sambuc     UINT8                   IpAddress[16];
716433d6423SLionel Sambuc     UINT8                   SubnetMaskPrefix;
717433d6423SLionel Sambuc     UINT8                   Origin;
718433d6423SLionel Sambuc     UINT8                   Gateway[16];
719433d6423SLionel Sambuc     UINT8                   PrimaryDns[16];
720433d6423SLionel Sambuc     UINT8                   SecondaryDns[16];
721433d6423SLionel Sambuc     UINT8                   Dhcp[16];
722433d6423SLionel Sambuc     UINT16                  Vlan;
723433d6423SLionel Sambuc     UINT8                   MacAddress[6];
724433d6423SLionel Sambuc     UINT16                  PciAddress;
725433d6423SLionel Sambuc     UINT16                  NameLength;
726433d6423SLionel Sambuc     UINT16                  NameOffset;
727433d6423SLionel Sambuc 
728433d6423SLionel Sambuc } ACPI_IBFT_NIC;
729433d6423SLionel Sambuc 
730433d6423SLionel Sambuc typedef struct acpi_ibft_target
731433d6423SLionel Sambuc {
732433d6423SLionel Sambuc     ACPI_IBFT_HEADER        Header;
733433d6423SLionel Sambuc     UINT8                   TargetIpAddress[16];
734433d6423SLionel Sambuc     UINT16                  TargetIpSocket;
735433d6423SLionel Sambuc     UINT8                   TargetBootLun[8];
736433d6423SLionel Sambuc     UINT8                   ChapType;
737433d6423SLionel Sambuc     UINT8                   NicAssociation;
738433d6423SLionel Sambuc     UINT16                  TargetNameLength;
739433d6423SLionel Sambuc     UINT16                  TargetNameOffset;
740433d6423SLionel Sambuc     UINT16                  ChapNameLength;
741433d6423SLionel Sambuc     UINT16                  ChapNameOffset;
742433d6423SLionel Sambuc     UINT16                  ChapSecretLength;
743433d6423SLionel Sambuc     UINT16                  ChapSecretOffset;
744433d6423SLionel Sambuc     UINT16                  ReverseChapNameLength;
745433d6423SLionel Sambuc     UINT16                  ReverseChapNameOffset;
746433d6423SLionel Sambuc     UINT16                  ReverseChapSecretLength;
747433d6423SLionel Sambuc     UINT16                  ReverseChapSecretOffset;
748433d6423SLionel Sambuc 
749433d6423SLionel Sambuc } ACPI_IBFT_TARGET;
750433d6423SLionel Sambuc 
751433d6423SLionel Sambuc 
752433d6423SLionel Sambuc /*******************************************************************************
753433d6423SLionel Sambuc  *
754433d6423SLionel Sambuc  * IVRS - I/O Virtualization Reporting Structure
755433d6423SLionel Sambuc  *        Version 1
756433d6423SLionel Sambuc  *
757433d6423SLionel Sambuc  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
758433d6423SLionel Sambuc  * Revision 1.26, February 2009.
759433d6423SLionel Sambuc  *
760433d6423SLionel Sambuc  ******************************************************************************/
761433d6423SLionel Sambuc 
762433d6423SLionel Sambuc typedef struct acpi_table_ivrs
763433d6423SLionel Sambuc {
764433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
765433d6423SLionel Sambuc     UINT32                  Info;               /* Common virtualization info */
766433d6423SLionel Sambuc     UINT64                  Reserved;
767433d6423SLionel Sambuc 
768433d6423SLionel Sambuc } ACPI_TABLE_IVRS;
769433d6423SLionel Sambuc 
770433d6423SLionel Sambuc /* Values for Info field above */
771433d6423SLionel Sambuc 
772433d6423SLionel Sambuc #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
773433d6423SLionel Sambuc #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
774433d6423SLionel Sambuc #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
775433d6423SLionel Sambuc 
776433d6423SLionel Sambuc 
777433d6423SLionel Sambuc /* IVRS subtable header */
778433d6423SLionel Sambuc 
779433d6423SLionel Sambuc typedef struct acpi_ivrs_header
780433d6423SLionel Sambuc {
781433d6423SLionel Sambuc     UINT8                   Type;               /* Subtable type */
782433d6423SLionel Sambuc     UINT8                   Flags;
783433d6423SLionel Sambuc     UINT16                  Length;             /* Subtable length */
784433d6423SLionel Sambuc     UINT16                  DeviceId;           /* ID of IOMMU */
785433d6423SLionel Sambuc 
786433d6423SLionel Sambuc } ACPI_IVRS_HEADER;
787433d6423SLionel Sambuc 
788433d6423SLionel Sambuc /* Values for subtable Type above */
789433d6423SLionel Sambuc 
790433d6423SLionel Sambuc enum AcpiIvrsType
791433d6423SLionel Sambuc {
792433d6423SLionel Sambuc     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
793433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
794433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
795433d6423SLionel Sambuc     ACPI_IVRS_TYPE_MEMORY3          = 0x22
796433d6423SLionel Sambuc };
797433d6423SLionel Sambuc 
798433d6423SLionel Sambuc /* Masks for Flags field above for IVHD subtable */
799433d6423SLionel Sambuc 
800433d6423SLionel Sambuc #define ACPI_IVHD_TT_ENABLE         (1)
801433d6423SLionel Sambuc #define ACPI_IVHD_PASS_PW           (1<<1)
802433d6423SLionel Sambuc #define ACPI_IVHD_RES_PASS_PW       (1<<2)
803433d6423SLionel Sambuc #define ACPI_IVHD_ISOC              (1<<3)
804433d6423SLionel Sambuc #define ACPI_IVHD_IOTLB             (1<<4)
805433d6423SLionel Sambuc 
806433d6423SLionel Sambuc /* Masks for Flags field above for IVMD subtable */
807433d6423SLionel Sambuc 
808433d6423SLionel Sambuc #define ACPI_IVMD_UNITY             (1)
809433d6423SLionel Sambuc #define ACPI_IVMD_READ              (1<<1)
810433d6423SLionel Sambuc #define ACPI_IVMD_WRITE             (1<<2)
811433d6423SLionel Sambuc #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
812433d6423SLionel Sambuc 
813433d6423SLionel Sambuc 
814433d6423SLionel Sambuc /*
815433d6423SLionel Sambuc  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
816433d6423SLionel Sambuc  */
817433d6423SLionel Sambuc 
818433d6423SLionel Sambuc /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
819433d6423SLionel Sambuc 
820433d6423SLionel Sambuc typedef struct acpi_ivrs_hardware
821433d6423SLionel Sambuc {
822433d6423SLionel Sambuc     ACPI_IVRS_HEADER        Header;
823433d6423SLionel Sambuc     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
824433d6423SLionel Sambuc     UINT64                  BaseAddress;        /* IOMMU control registers */
825433d6423SLionel Sambuc     UINT16                  PciSegmentGroup;
826433d6423SLionel Sambuc     UINT16                  Info;               /* MSI number and unit ID */
827433d6423SLionel Sambuc     UINT32                  Reserved;
828433d6423SLionel Sambuc 
829433d6423SLionel Sambuc } ACPI_IVRS_HARDWARE;
830433d6423SLionel Sambuc 
831433d6423SLionel Sambuc /* Masks for Info field above */
832433d6423SLionel Sambuc 
833433d6423SLionel Sambuc #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
834433d6423SLionel Sambuc #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
835433d6423SLionel Sambuc 
836433d6423SLionel Sambuc 
837433d6423SLionel Sambuc /*
838433d6423SLionel Sambuc  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
839433d6423SLionel Sambuc  * Upper two bits of the Type field are the (encoded) length of the structure.
840433d6423SLionel Sambuc  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
841433d6423SLionel Sambuc  * are reserved for future use but not defined.
842433d6423SLionel Sambuc  */
843433d6423SLionel Sambuc typedef struct acpi_ivrs_de_header
844433d6423SLionel Sambuc {
845433d6423SLionel Sambuc     UINT8                   Type;
846433d6423SLionel Sambuc     UINT16                  Id;
847433d6423SLionel Sambuc     UINT8                   DataSetting;
848433d6423SLionel Sambuc 
849433d6423SLionel Sambuc } ACPI_IVRS_DE_HEADER;
850433d6423SLionel Sambuc 
851433d6423SLionel Sambuc /* Length of device entry is in the top two bits of Type field above */
852433d6423SLionel Sambuc 
853433d6423SLionel Sambuc #define ACPI_IVHD_ENTRY_LENGTH      0xC0
854433d6423SLionel Sambuc 
855433d6423SLionel Sambuc /* Values for device entry Type field above */
856433d6423SLionel Sambuc 
857433d6423SLionel Sambuc enum AcpiIvrsDeviceEntryType
858433d6423SLionel Sambuc {
859433d6423SLionel Sambuc     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
860433d6423SLionel Sambuc 
861433d6423SLionel Sambuc     ACPI_IVRS_TYPE_PAD4             = 0,
862433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALL              = 1,
863433d6423SLionel Sambuc     ACPI_IVRS_TYPE_SELECT           = 2,
864433d6423SLionel Sambuc     ACPI_IVRS_TYPE_START            = 3,
865433d6423SLionel Sambuc     ACPI_IVRS_TYPE_END              = 4,
866433d6423SLionel Sambuc 
867433d6423SLionel Sambuc     /* 8-byte device entries */
868433d6423SLionel Sambuc 
869433d6423SLionel Sambuc     ACPI_IVRS_TYPE_PAD8             = 64,
870433d6423SLionel Sambuc     ACPI_IVRS_TYPE_NOT_USED         = 65,
871433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
872433d6423SLionel Sambuc     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
873433d6423SLionel Sambuc     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
874433d6423SLionel Sambuc     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
875433d6423SLionel Sambuc     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
876433d6423SLionel Sambuc };
877433d6423SLionel Sambuc 
878433d6423SLionel Sambuc /* Values for Data field above */
879433d6423SLionel Sambuc 
880433d6423SLionel Sambuc #define ACPI_IVHD_INIT_PASS         (1)
881433d6423SLionel Sambuc #define ACPI_IVHD_EINT_PASS         (1<<1)
882433d6423SLionel Sambuc #define ACPI_IVHD_NMI_PASS          (1<<2)
883433d6423SLionel Sambuc #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
884433d6423SLionel Sambuc #define ACPI_IVHD_LINT0_PASS        (1<<6)
885433d6423SLionel Sambuc #define ACPI_IVHD_LINT1_PASS        (1<<7)
886433d6423SLionel Sambuc 
887433d6423SLionel Sambuc 
888433d6423SLionel Sambuc /* Types 0-4: 4-byte device entry */
889433d6423SLionel Sambuc 
890433d6423SLionel Sambuc typedef struct acpi_ivrs_device4
891433d6423SLionel Sambuc {
892433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
893433d6423SLionel Sambuc 
894433d6423SLionel Sambuc } ACPI_IVRS_DEVICE4;
895433d6423SLionel Sambuc 
896433d6423SLionel Sambuc /* Types 66-67: 8-byte device entry */
897433d6423SLionel Sambuc 
898433d6423SLionel Sambuc typedef struct acpi_ivrs_device8a
899433d6423SLionel Sambuc {
900433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
901433d6423SLionel Sambuc     UINT8                   Reserved1;
902433d6423SLionel Sambuc     UINT16                  UsedId;
903433d6423SLionel Sambuc     UINT8                   Reserved2;
904433d6423SLionel Sambuc 
905433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8A;
906433d6423SLionel Sambuc 
907433d6423SLionel Sambuc /* Types 70-71: 8-byte device entry */
908433d6423SLionel Sambuc 
909433d6423SLionel Sambuc typedef struct acpi_ivrs_device8b
910433d6423SLionel Sambuc {
911433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
912433d6423SLionel Sambuc     UINT32                  ExtendedData;
913433d6423SLionel Sambuc 
914433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8B;
915433d6423SLionel Sambuc 
916433d6423SLionel Sambuc /* Values for ExtendedData above */
917433d6423SLionel Sambuc 
918433d6423SLionel Sambuc #define ACPI_IVHD_ATS_DISABLED      (1<<31)
919433d6423SLionel Sambuc 
920433d6423SLionel Sambuc /* Type 72: 8-byte device entry */
921433d6423SLionel Sambuc 
922433d6423SLionel Sambuc typedef struct acpi_ivrs_device8c
923433d6423SLionel Sambuc {
924433d6423SLionel Sambuc     ACPI_IVRS_DE_HEADER     Header;
925433d6423SLionel Sambuc     UINT8                   Handle;
926433d6423SLionel Sambuc     UINT16                  UsedId;
927433d6423SLionel Sambuc     UINT8                   Variety;
928433d6423SLionel Sambuc 
929433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8C;
930433d6423SLionel Sambuc 
931433d6423SLionel Sambuc /* Values for Variety field above */
932433d6423SLionel Sambuc 
933433d6423SLionel Sambuc #define ACPI_IVHD_IOAPIC            1
934433d6423SLionel Sambuc #define ACPI_IVHD_HPET              2
935433d6423SLionel Sambuc 
936433d6423SLionel Sambuc 
937433d6423SLionel Sambuc /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
938433d6423SLionel Sambuc 
939433d6423SLionel Sambuc typedef struct acpi_ivrs_memory
940433d6423SLionel Sambuc {
941433d6423SLionel Sambuc     ACPI_IVRS_HEADER        Header;
942433d6423SLionel Sambuc     UINT16                  AuxData;
943433d6423SLionel Sambuc     UINT64                  Reserved;
944433d6423SLionel Sambuc     UINT64                  StartAddress;
945433d6423SLionel Sambuc     UINT64                  MemoryLength;
946433d6423SLionel Sambuc 
947433d6423SLionel Sambuc } ACPI_IVRS_MEMORY;
948433d6423SLionel Sambuc 
949433d6423SLionel Sambuc 
950433d6423SLionel Sambuc /*******************************************************************************
951433d6423SLionel Sambuc  *
952*29492bb7SDavid van Moolenbroek  * LPIT - Low Power Idle Table
953*29492bb7SDavid van Moolenbroek  *
954*29492bb7SDavid van Moolenbroek  * Conforms to "ACPI Low Power Idle Table (LPIT) and _LPD Proposal (DRAFT)"
955*29492bb7SDavid van Moolenbroek  *
956*29492bb7SDavid van Moolenbroek  ******************************************************************************/
957*29492bb7SDavid van Moolenbroek 
958*29492bb7SDavid van Moolenbroek typedef struct acpi_table_lpit
959*29492bb7SDavid van Moolenbroek {
960*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
961*29492bb7SDavid van Moolenbroek 
962*29492bb7SDavid van Moolenbroek } ACPI_TABLE_LPIT;
963*29492bb7SDavid van Moolenbroek 
964*29492bb7SDavid van Moolenbroek 
965*29492bb7SDavid van Moolenbroek /* LPIT subtable header */
966*29492bb7SDavid van Moolenbroek 
967*29492bb7SDavid van Moolenbroek typedef struct acpi_lpit_header
968*29492bb7SDavid van Moolenbroek {
969*29492bb7SDavid van Moolenbroek     UINT32                  Type;               /* Subtable type */
970*29492bb7SDavid van Moolenbroek     UINT32                  Length;             /* Subtable length */
971*29492bb7SDavid van Moolenbroek     UINT16                  UniqueId;
972*29492bb7SDavid van Moolenbroek     UINT16                  Reserved;
973*29492bb7SDavid van Moolenbroek     UINT32                  Flags;
974*29492bb7SDavid van Moolenbroek 
975*29492bb7SDavid van Moolenbroek } ACPI_LPIT_HEADER;
976*29492bb7SDavid van Moolenbroek 
977*29492bb7SDavid van Moolenbroek /* Values for subtable Type above */
978*29492bb7SDavid van Moolenbroek 
979*29492bb7SDavid van Moolenbroek enum AcpiLpitType
980*29492bb7SDavid van Moolenbroek {
981*29492bb7SDavid van Moolenbroek     ACPI_LPIT_TYPE_NATIVE_CSTATE    = 0x00,
982*29492bb7SDavid van Moolenbroek     ACPI_LPIT_TYPE_SIMPLE_IO        = 0x01
983*29492bb7SDavid van Moolenbroek };
984*29492bb7SDavid van Moolenbroek 
985*29492bb7SDavid van Moolenbroek /* Masks for Flags field above  */
986*29492bb7SDavid van Moolenbroek 
987*29492bb7SDavid van Moolenbroek #define ACPI_LPIT_STATE_DISABLED    (1)
988*29492bb7SDavid van Moolenbroek #define ACPI_LPIT_NO_COUNTER        (1<<1)
989*29492bb7SDavid van Moolenbroek 
990*29492bb7SDavid van Moolenbroek /*
991*29492bb7SDavid van Moolenbroek  * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER
992*29492bb7SDavid van Moolenbroek  */
993*29492bb7SDavid van Moolenbroek 
994*29492bb7SDavid van Moolenbroek /* 0x00: Native C-state instruction based LPI structure */
995*29492bb7SDavid van Moolenbroek 
996*29492bb7SDavid van Moolenbroek typedef struct acpi_lpit_native
997*29492bb7SDavid van Moolenbroek {
998*29492bb7SDavid van Moolenbroek     ACPI_LPIT_HEADER        Header;
999*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    EntryTrigger;
1000*29492bb7SDavid van Moolenbroek     UINT32                  Residency;
1001*29492bb7SDavid van Moolenbroek     UINT32                  Latency;
1002*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    ResidencyCounter;
1003*29492bb7SDavid van Moolenbroek     UINT64                  CounterFrequency;
1004*29492bb7SDavid van Moolenbroek 
1005*29492bb7SDavid van Moolenbroek } ACPI_LPIT_NATIVE;
1006*29492bb7SDavid van Moolenbroek 
1007*29492bb7SDavid van Moolenbroek 
1008*29492bb7SDavid van Moolenbroek /* 0x01: Simple I/O based LPI structure */
1009*29492bb7SDavid van Moolenbroek 
1010*29492bb7SDavid van Moolenbroek typedef struct acpi_lpit_io
1011*29492bb7SDavid van Moolenbroek {
1012*29492bb7SDavid van Moolenbroek     ACPI_LPIT_HEADER        Header;
1013*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    EntryTrigger;
1014*29492bb7SDavid van Moolenbroek     UINT32                  TriggerAction;
1015*29492bb7SDavid van Moolenbroek     UINT64                  TriggerValue;
1016*29492bb7SDavid van Moolenbroek     UINT64                  TriggerMask;
1017*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    MinimumIdleState;
1018*29492bb7SDavid van Moolenbroek     UINT32                  Residency;
1019*29492bb7SDavid van Moolenbroek     UINT32                  Latency;
1020*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    ResidencyCounter;
1021*29492bb7SDavid van Moolenbroek     UINT64                  CounterFrequency;
1022*29492bb7SDavid van Moolenbroek 
1023*29492bb7SDavid van Moolenbroek } ACPI_LPIT_IO;
1024*29492bb7SDavid van Moolenbroek 
1025*29492bb7SDavid van Moolenbroek 
1026*29492bb7SDavid van Moolenbroek /*******************************************************************************
1027*29492bb7SDavid van Moolenbroek  *
1028*29492bb7SDavid van Moolenbroek  * MCFG - PCI Memory Mapped Configuration table and subtable
1029433d6423SLionel Sambuc  *        Version 1
1030433d6423SLionel Sambuc  *
1031433d6423SLionel Sambuc  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
1032433d6423SLionel Sambuc  *
1033433d6423SLionel Sambuc  ******************************************************************************/
1034433d6423SLionel Sambuc 
1035433d6423SLionel Sambuc typedef struct acpi_table_mcfg
1036433d6423SLionel Sambuc {
1037433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1038433d6423SLionel Sambuc     UINT8                   Reserved[8];
1039433d6423SLionel Sambuc 
1040433d6423SLionel Sambuc } ACPI_TABLE_MCFG;
1041433d6423SLionel Sambuc 
1042433d6423SLionel Sambuc 
1043433d6423SLionel Sambuc /* Subtable */
1044433d6423SLionel Sambuc 
1045433d6423SLionel Sambuc typedef struct acpi_mcfg_allocation
1046433d6423SLionel Sambuc {
1047433d6423SLionel Sambuc     UINT64                  Address;            /* Base address, processor-relative */
1048433d6423SLionel Sambuc     UINT16                  PciSegment;         /* PCI segment group number */
1049433d6423SLionel Sambuc     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
1050433d6423SLionel Sambuc     UINT8                   EndBusNumber;       /* Final PCI Bus number */
1051433d6423SLionel Sambuc     UINT32                  Reserved;
1052433d6423SLionel Sambuc 
1053433d6423SLionel Sambuc } ACPI_MCFG_ALLOCATION;
1054433d6423SLionel Sambuc 
1055433d6423SLionel Sambuc 
1056433d6423SLionel Sambuc /*******************************************************************************
1057433d6423SLionel Sambuc  *
1058433d6423SLionel Sambuc  * MCHI - Management Controller Host Interface Table
1059433d6423SLionel Sambuc  *        Version 1
1060433d6423SLionel Sambuc  *
1061433d6423SLionel Sambuc  * Conforms to "Management Component Transport Protocol (MCTP) Host
1062433d6423SLionel Sambuc  * Interface Specification", Revision 1.0.0a, October 13, 2009
1063433d6423SLionel Sambuc  *
1064433d6423SLionel Sambuc  ******************************************************************************/
1065433d6423SLionel Sambuc 
1066433d6423SLionel Sambuc typedef struct acpi_table_mchi
1067433d6423SLionel Sambuc {
1068433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1069433d6423SLionel Sambuc     UINT8                   InterfaceType;
1070433d6423SLionel Sambuc     UINT8                   Protocol;
1071433d6423SLionel Sambuc     UINT64                  ProtocolData;
1072433d6423SLionel Sambuc     UINT8                   InterruptType;
1073433d6423SLionel Sambuc     UINT8                   Gpe;
1074433d6423SLionel Sambuc     UINT8                   PciDeviceFlag;
1075433d6423SLionel Sambuc     UINT32                  GlobalInterrupt;
1076433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    ControlRegister;
1077433d6423SLionel Sambuc     UINT8                   PciSegment;
1078433d6423SLionel Sambuc     UINT8                   PciBus;
1079433d6423SLionel Sambuc     UINT8                   PciDevice;
1080433d6423SLionel Sambuc     UINT8                   PciFunction;
1081433d6423SLionel Sambuc 
1082433d6423SLionel Sambuc } ACPI_TABLE_MCHI;
1083433d6423SLionel Sambuc 
1084433d6423SLionel Sambuc 
1085433d6423SLionel Sambuc /*******************************************************************************
1086433d6423SLionel Sambuc  *
1087*29492bb7SDavid van Moolenbroek  * MTMR - MID Timer Table
1088*29492bb7SDavid van Moolenbroek  *        Version 1
1089*29492bb7SDavid van Moolenbroek  *
1090*29492bb7SDavid van Moolenbroek  * Conforms to "Simple Firmware Interface Specification",
1091*29492bb7SDavid van Moolenbroek  * Draft 0.8.2, Oct 19, 2010
1092*29492bb7SDavid van Moolenbroek  * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table.
1093*29492bb7SDavid van Moolenbroek  *
1094*29492bb7SDavid van Moolenbroek  ******************************************************************************/
1095*29492bb7SDavid van Moolenbroek 
1096*29492bb7SDavid van Moolenbroek typedef struct acpi_table_mtmr
1097*29492bb7SDavid van Moolenbroek {
1098*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1099*29492bb7SDavid van Moolenbroek 
1100*29492bb7SDavid van Moolenbroek } ACPI_TABLE_MTMR;
1101*29492bb7SDavid van Moolenbroek 
1102*29492bb7SDavid van Moolenbroek /* MTMR entry */
1103*29492bb7SDavid van Moolenbroek 
1104*29492bb7SDavid van Moolenbroek typedef struct acpi_mtmr_entry
1105*29492bb7SDavid van Moolenbroek {
1106*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    PhysicalAddress;
1107*29492bb7SDavid van Moolenbroek     UINT32                  Frequency;
1108*29492bb7SDavid van Moolenbroek     UINT32                  Irq;
1109*29492bb7SDavid van Moolenbroek 
1110*29492bb7SDavid van Moolenbroek } ACPI_MTMR_ENTRY;
1111*29492bb7SDavid van Moolenbroek 
1112*29492bb7SDavid van Moolenbroek 
1113*29492bb7SDavid van Moolenbroek /*******************************************************************************
1114*29492bb7SDavid van Moolenbroek  *
1115*29492bb7SDavid van Moolenbroek  * SLIC - Software Licensing Description Table
1116*29492bb7SDavid van Moolenbroek  *        Version 1
1117*29492bb7SDavid van Moolenbroek  *
1118*29492bb7SDavid van Moolenbroek  * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems",
1119*29492bb7SDavid van Moolenbroek  * Copyright 2006
1120*29492bb7SDavid van Moolenbroek  *
1121*29492bb7SDavid van Moolenbroek  ******************************************************************************/
1122*29492bb7SDavid van Moolenbroek 
1123*29492bb7SDavid van Moolenbroek /* Basic SLIC table is only the common ACPI header */
1124*29492bb7SDavid van Moolenbroek 
1125*29492bb7SDavid van Moolenbroek typedef struct acpi_table_slic
1126*29492bb7SDavid van Moolenbroek {
1127*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1128*29492bb7SDavid van Moolenbroek 
1129*29492bb7SDavid van Moolenbroek } ACPI_TABLE_SLIC;
1130*29492bb7SDavid van Moolenbroek 
1131*29492bb7SDavid van Moolenbroek 
1132*29492bb7SDavid van Moolenbroek /* Common SLIC subtable header */
1133*29492bb7SDavid van Moolenbroek 
1134*29492bb7SDavid van Moolenbroek typedef struct acpi_slic_header
1135*29492bb7SDavid van Moolenbroek {
1136*29492bb7SDavid van Moolenbroek     UINT32                  Type;
1137*29492bb7SDavid van Moolenbroek     UINT32                  Length;
1138*29492bb7SDavid van Moolenbroek 
1139*29492bb7SDavid van Moolenbroek } ACPI_SLIC_HEADER;
1140*29492bb7SDavid van Moolenbroek 
1141*29492bb7SDavid van Moolenbroek /* Values for Type field above */
1142*29492bb7SDavid van Moolenbroek 
1143*29492bb7SDavid van Moolenbroek enum AcpiSlicType
1144*29492bb7SDavid van Moolenbroek {
1145*29492bb7SDavid van Moolenbroek     ACPI_SLIC_TYPE_PUBLIC_KEY           = 0,
1146*29492bb7SDavid van Moolenbroek     ACPI_SLIC_TYPE_WINDOWS_MARKER       = 1,
1147*29492bb7SDavid van Moolenbroek     ACPI_SLIC_TYPE_RESERVED             = 2    /* 2 and greater are reserved */
1148*29492bb7SDavid van Moolenbroek };
1149*29492bb7SDavid van Moolenbroek 
1150*29492bb7SDavid van Moolenbroek 
1151*29492bb7SDavid van Moolenbroek /*
1152*29492bb7SDavid van Moolenbroek  * SLIC Subtables, correspond to Type in ACPI_SLIC_HEADER
1153*29492bb7SDavid van Moolenbroek  */
1154*29492bb7SDavid van Moolenbroek 
1155*29492bb7SDavid van Moolenbroek /* 0: Public Key Structure */
1156*29492bb7SDavid van Moolenbroek 
1157*29492bb7SDavid van Moolenbroek typedef struct acpi_slic_key
1158*29492bb7SDavid van Moolenbroek {
1159*29492bb7SDavid van Moolenbroek     ACPI_SLIC_HEADER        Header;
1160*29492bb7SDavid van Moolenbroek     UINT8                   KeyType;
1161*29492bb7SDavid van Moolenbroek     UINT8                   Version;
1162*29492bb7SDavid van Moolenbroek     UINT16                  Reserved;
1163*29492bb7SDavid van Moolenbroek     UINT32                  Algorithm;
1164*29492bb7SDavid van Moolenbroek     char                    Magic[4];
1165*29492bb7SDavid van Moolenbroek     UINT32                  BitLength;
1166*29492bb7SDavid van Moolenbroek     UINT32                  Exponent;
1167*29492bb7SDavid van Moolenbroek     UINT8                   Modulus[128];
1168*29492bb7SDavid van Moolenbroek 
1169*29492bb7SDavid van Moolenbroek } ACPI_SLIC_KEY;
1170*29492bb7SDavid van Moolenbroek 
1171*29492bb7SDavid van Moolenbroek 
1172*29492bb7SDavid van Moolenbroek /* 1: Windows Marker Structure */
1173*29492bb7SDavid van Moolenbroek 
1174*29492bb7SDavid van Moolenbroek typedef struct acpi_slic_marker
1175*29492bb7SDavid van Moolenbroek {
1176*29492bb7SDavid van Moolenbroek     ACPI_SLIC_HEADER        Header;
1177*29492bb7SDavid van Moolenbroek     UINT32                  Version;
1178*29492bb7SDavid van Moolenbroek     char                    OemId[ACPI_OEM_ID_SIZE];            /* ASCII OEM identification */
1179*29492bb7SDavid van Moolenbroek     char                    OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */
1180*29492bb7SDavid van Moolenbroek     char                    WindowsFlag[8];
1181*29492bb7SDavid van Moolenbroek     UINT32                  SlicVersion;
1182*29492bb7SDavid van Moolenbroek     UINT8                   Reserved[16];
1183*29492bb7SDavid van Moolenbroek     UINT8                   Signature[128];
1184*29492bb7SDavid van Moolenbroek 
1185*29492bb7SDavid van Moolenbroek } ACPI_SLIC_MARKER;
1186*29492bb7SDavid van Moolenbroek 
1187*29492bb7SDavid van Moolenbroek 
1188*29492bb7SDavid van Moolenbroek /*******************************************************************************
1189*29492bb7SDavid van Moolenbroek  *
1190433d6423SLionel Sambuc  * SPCR - Serial Port Console Redirection table
1191433d6423SLionel Sambuc  *        Version 1
1192433d6423SLionel Sambuc  *
1193433d6423SLionel Sambuc  * Conforms to "Serial Port Console Redirection Table",
1194433d6423SLionel Sambuc  * Version 1.00, January 11, 2002
1195433d6423SLionel Sambuc  *
1196433d6423SLionel Sambuc  ******************************************************************************/
1197433d6423SLionel Sambuc 
1198433d6423SLionel Sambuc typedef struct acpi_table_spcr
1199433d6423SLionel Sambuc {
1200433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1201433d6423SLionel Sambuc     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
1202433d6423SLionel Sambuc     UINT8                   Reserved[3];
1203433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    SerialPort;
1204433d6423SLionel Sambuc     UINT8                   InterruptType;
1205433d6423SLionel Sambuc     UINT8                   PcInterrupt;
1206433d6423SLionel Sambuc     UINT32                  Interrupt;
1207433d6423SLionel Sambuc     UINT8                   BaudRate;
1208433d6423SLionel Sambuc     UINT8                   Parity;
1209433d6423SLionel Sambuc     UINT8                   StopBits;
1210433d6423SLionel Sambuc     UINT8                   FlowControl;
1211433d6423SLionel Sambuc     UINT8                   TerminalType;
1212433d6423SLionel Sambuc     UINT8                   Reserved1;
1213433d6423SLionel Sambuc     UINT16                  PciDeviceId;
1214433d6423SLionel Sambuc     UINT16                  PciVendorId;
1215433d6423SLionel Sambuc     UINT8                   PciBus;
1216433d6423SLionel Sambuc     UINT8                   PciDevice;
1217433d6423SLionel Sambuc     UINT8                   PciFunction;
1218433d6423SLionel Sambuc     UINT32                  PciFlags;
1219433d6423SLionel Sambuc     UINT8                   PciSegment;
1220433d6423SLionel Sambuc     UINT32                  Reserved2;
1221433d6423SLionel Sambuc 
1222433d6423SLionel Sambuc } ACPI_TABLE_SPCR;
1223433d6423SLionel Sambuc 
1224433d6423SLionel Sambuc /* Masks for PciFlags field above */
1225433d6423SLionel Sambuc 
1226433d6423SLionel Sambuc #define ACPI_SPCR_DO_NOT_DISABLE    (1)
1227433d6423SLionel Sambuc 
1228433d6423SLionel Sambuc 
1229433d6423SLionel Sambuc /*******************************************************************************
1230433d6423SLionel Sambuc  *
1231433d6423SLionel Sambuc  * SPMI - Server Platform Management Interface table
1232433d6423SLionel Sambuc  *        Version 5
1233433d6423SLionel Sambuc  *
1234433d6423SLionel Sambuc  * Conforms to "Intelligent Platform Management Interface Specification
1235433d6423SLionel Sambuc  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
1236433d6423SLionel Sambuc  * June 12, 2009 markup.
1237433d6423SLionel Sambuc  *
1238433d6423SLionel Sambuc  ******************************************************************************/
1239433d6423SLionel Sambuc 
1240433d6423SLionel Sambuc typedef struct acpi_table_spmi
1241433d6423SLionel Sambuc {
1242433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1243433d6423SLionel Sambuc     UINT8                   InterfaceType;
1244433d6423SLionel Sambuc     UINT8                   Reserved;           /* Must be 1 */
1245433d6423SLionel Sambuc     UINT16                  SpecRevision;       /* Version of IPMI */
1246433d6423SLionel Sambuc     UINT8                   InterruptType;
1247433d6423SLionel Sambuc     UINT8                   GpeNumber;          /* GPE assigned */
1248433d6423SLionel Sambuc     UINT8                   Reserved1;
1249433d6423SLionel Sambuc     UINT8                   PciDeviceFlag;
1250433d6423SLionel Sambuc     UINT32                  Interrupt;
1251433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    IpmiRegister;
1252433d6423SLionel Sambuc     UINT8                   PciSegment;
1253433d6423SLionel Sambuc     UINT8                   PciBus;
1254433d6423SLionel Sambuc     UINT8                   PciDevice;
1255433d6423SLionel Sambuc     UINT8                   PciFunction;
1256433d6423SLionel Sambuc     UINT8                   Reserved2;
1257433d6423SLionel Sambuc 
1258433d6423SLionel Sambuc } ACPI_TABLE_SPMI;
1259433d6423SLionel Sambuc 
1260433d6423SLionel Sambuc /* Values for InterfaceType above */
1261433d6423SLionel Sambuc 
1262433d6423SLionel Sambuc enum AcpiSpmiInterfaceTypes
1263433d6423SLionel Sambuc {
1264433d6423SLionel Sambuc     ACPI_SPMI_NOT_USED              = 0,
1265433d6423SLionel Sambuc     ACPI_SPMI_KEYBOARD              = 1,
1266433d6423SLionel Sambuc     ACPI_SPMI_SMI                   = 2,
1267433d6423SLionel Sambuc     ACPI_SPMI_BLOCK_TRANSFER        = 3,
1268433d6423SLionel Sambuc     ACPI_SPMI_SMBUS                 = 4,
1269433d6423SLionel Sambuc     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
1270433d6423SLionel Sambuc };
1271433d6423SLionel Sambuc 
1272433d6423SLionel Sambuc 
1273433d6423SLionel Sambuc /*******************************************************************************
1274433d6423SLionel Sambuc  *
1275433d6423SLionel Sambuc  * TCPA - Trusted Computing Platform Alliance table
1276433d6423SLionel Sambuc  *        Version 1
1277433d6423SLionel Sambuc  *
1278433d6423SLionel Sambuc  * Conforms to "TCG PC Specific Implementation Specification",
1279433d6423SLionel Sambuc  * Version 1.1, August 18, 2003
1280433d6423SLionel Sambuc  *
1281433d6423SLionel Sambuc  ******************************************************************************/
1282433d6423SLionel Sambuc 
1283433d6423SLionel Sambuc typedef struct acpi_table_tcpa
1284433d6423SLionel Sambuc {
1285433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1286433d6423SLionel Sambuc     UINT16                  Reserved;
1287433d6423SLionel Sambuc     UINT32                  MaxLogLength;       /* Maximum length for the event log area */
1288433d6423SLionel Sambuc     UINT64                  LogAddress;         /* Address of the event log area */
1289433d6423SLionel Sambuc 
1290433d6423SLionel Sambuc } ACPI_TABLE_TCPA;
1291433d6423SLionel Sambuc 
1292433d6423SLionel Sambuc 
1293433d6423SLionel Sambuc /*******************************************************************************
1294433d6423SLionel Sambuc  *
1295433d6423SLionel Sambuc  * UEFI - UEFI Boot optimization Table
1296433d6423SLionel Sambuc  *        Version 1
1297433d6423SLionel Sambuc  *
1298433d6423SLionel Sambuc  * Conforms to "Unified Extensible Firmware Interface Specification",
1299433d6423SLionel Sambuc  * Version 2.3, May 8, 2009
1300433d6423SLionel Sambuc  *
1301433d6423SLionel Sambuc  ******************************************************************************/
1302433d6423SLionel Sambuc 
1303433d6423SLionel Sambuc typedef struct acpi_table_uefi
1304433d6423SLionel Sambuc {
1305433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1306433d6423SLionel Sambuc     UINT8                   Identifier[16];     /* UUID identifier */
1307433d6423SLionel Sambuc     UINT16                  DataOffset;         /* Offset of remaining data in table */
1308433d6423SLionel Sambuc 
1309433d6423SLionel Sambuc } ACPI_TABLE_UEFI;
1310433d6423SLionel Sambuc 
1311433d6423SLionel Sambuc 
1312433d6423SLionel Sambuc /*******************************************************************************
1313433d6423SLionel Sambuc  *
1314*29492bb7SDavid van Moolenbroek  * VRTC - Virtual Real Time Clock Table
1315*29492bb7SDavid van Moolenbroek  *        Version 1
1316*29492bb7SDavid van Moolenbroek  *
1317*29492bb7SDavid van Moolenbroek  * Conforms to "Simple Firmware Interface Specification",
1318*29492bb7SDavid van Moolenbroek  * Draft 0.8.2, Oct 19, 2010
1319*29492bb7SDavid van Moolenbroek  * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
1320*29492bb7SDavid van Moolenbroek  *
1321*29492bb7SDavid van Moolenbroek  ******************************************************************************/
1322*29492bb7SDavid van Moolenbroek 
1323*29492bb7SDavid van Moolenbroek typedef struct acpi_table_vrtc
1324*29492bb7SDavid van Moolenbroek {
1325*29492bb7SDavid van Moolenbroek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1326*29492bb7SDavid van Moolenbroek 
1327*29492bb7SDavid van Moolenbroek } ACPI_TABLE_VRTC;
1328*29492bb7SDavid van Moolenbroek 
1329*29492bb7SDavid van Moolenbroek /* VRTC entry */
1330*29492bb7SDavid van Moolenbroek 
1331*29492bb7SDavid van Moolenbroek typedef struct acpi_vrtc_entry
1332*29492bb7SDavid van Moolenbroek {
1333*29492bb7SDavid van Moolenbroek     ACPI_GENERIC_ADDRESS    PhysicalAddress;
1334*29492bb7SDavid van Moolenbroek     UINT32                  Irq;
1335*29492bb7SDavid van Moolenbroek 
1336*29492bb7SDavid van Moolenbroek } ACPI_VRTC_ENTRY;
1337*29492bb7SDavid van Moolenbroek 
1338*29492bb7SDavid van Moolenbroek 
1339*29492bb7SDavid van Moolenbroek /*******************************************************************************
1340*29492bb7SDavid van Moolenbroek  *
1341433d6423SLionel Sambuc  * WAET - Windows ACPI Emulated devices Table
1342433d6423SLionel Sambuc  *        Version 1
1343433d6423SLionel Sambuc  *
1344433d6423SLionel Sambuc  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
1345433d6423SLionel Sambuc  *
1346433d6423SLionel Sambuc  ******************************************************************************/
1347433d6423SLionel Sambuc 
1348433d6423SLionel Sambuc typedef struct acpi_table_waet
1349433d6423SLionel Sambuc {
1350433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1351433d6423SLionel Sambuc     UINT32                  Flags;
1352433d6423SLionel Sambuc 
1353433d6423SLionel Sambuc } ACPI_TABLE_WAET;
1354433d6423SLionel Sambuc 
1355433d6423SLionel Sambuc /* Masks for Flags field above */
1356433d6423SLionel Sambuc 
1357433d6423SLionel Sambuc #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
1358433d6423SLionel Sambuc #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
1359433d6423SLionel Sambuc 
1360433d6423SLionel Sambuc 
1361433d6423SLionel Sambuc /*******************************************************************************
1362433d6423SLionel Sambuc  *
1363433d6423SLionel Sambuc  * WDAT - Watchdog Action Table
1364433d6423SLionel Sambuc  *        Version 1
1365433d6423SLionel Sambuc  *
1366433d6423SLionel Sambuc  * Conforms to "Hardware Watchdog Timers Design Specification",
1367433d6423SLionel Sambuc  * Copyright 2006 Microsoft Corporation.
1368433d6423SLionel Sambuc  *
1369433d6423SLionel Sambuc  ******************************************************************************/
1370433d6423SLionel Sambuc 
1371433d6423SLionel Sambuc typedef struct acpi_table_wdat
1372433d6423SLionel Sambuc {
1373433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1374433d6423SLionel Sambuc     UINT32                  HeaderLength;       /* Watchdog Header Length */
1375433d6423SLionel Sambuc     UINT16                  PciSegment;         /* PCI Segment number */
1376433d6423SLionel Sambuc     UINT8                   PciBus;             /* PCI Bus number */
1377433d6423SLionel Sambuc     UINT8                   PciDevice;          /* PCI Device number */
1378433d6423SLionel Sambuc     UINT8                   PciFunction;        /* PCI Function number */
1379433d6423SLionel Sambuc     UINT8                   Reserved[3];
1380433d6423SLionel Sambuc     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
1381433d6423SLionel Sambuc     UINT32                  MaxCount;           /* Maximum counter value supported */
1382433d6423SLionel Sambuc     UINT32                  MinCount;           /* Minimum counter value */
1383433d6423SLionel Sambuc     UINT8                   Flags;
1384433d6423SLionel Sambuc     UINT8                   Reserved2[3];
1385433d6423SLionel Sambuc     UINT32                  Entries;            /* Number of watchdog entries that follow */
1386433d6423SLionel Sambuc 
1387433d6423SLionel Sambuc } ACPI_TABLE_WDAT;
1388433d6423SLionel Sambuc 
1389433d6423SLionel Sambuc /* Masks for Flags field above */
1390433d6423SLionel Sambuc 
1391433d6423SLionel Sambuc #define ACPI_WDAT_ENABLED           (1)
1392433d6423SLionel Sambuc #define ACPI_WDAT_STOPPED           0x80
1393433d6423SLionel Sambuc 
1394433d6423SLionel Sambuc 
1395433d6423SLionel Sambuc /* WDAT Instruction Entries (actions) */
1396433d6423SLionel Sambuc 
1397433d6423SLionel Sambuc typedef struct acpi_wdat_entry
1398433d6423SLionel Sambuc {
1399433d6423SLionel Sambuc     UINT8                   Action;
1400433d6423SLionel Sambuc     UINT8                   Instruction;
1401433d6423SLionel Sambuc     UINT16                  Reserved;
1402433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    RegisterRegion;
1403433d6423SLionel Sambuc     UINT32                  Value;              /* Value used with Read/Write register */
1404433d6423SLionel Sambuc     UINT32                  Mask;               /* Bitmask required for this register instruction */
1405433d6423SLionel Sambuc 
1406433d6423SLionel Sambuc } ACPI_WDAT_ENTRY;
1407433d6423SLionel Sambuc 
1408433d6423SLionel Sambuc /* Values for Action field above */
1409433d6423SLionel Sambuc 
1410433d6423SLionel Sambuc enum AcpiWdatActions
1411433d6423SLionel Sambuc {
1412433d6423SLionel Sambuc     ACPI_WDAT_RESET                 = 1,
1413433d6423SLionel Sambuc     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1414433d6423SLionel Sambuc     ACPI_WDAT_GET_COUNTDOWN         = 5,
1415433d6423SLionel Sambuc     ACPI_WDAT_SET_COUNTDOWN         = 6,
1416433d6423SLionel Sambuc     ACPI_WDAT_GET_RUNNING_STATE     = 8,
1417433d6423SLionel Sambuc     ACPI_WDAT_SET_RUNNING_STATE     = 9,
1418433d6423SLionel Sambuc     ACPI_WDAT_GET_STOPPED_STATE     = 10,
1419433d6423SLionel Sambuc     ACPI_WDAT_SET_STOPPED_STATE     = 11,
1420433d6423SLionel Sambuc     ACPI_WDAT_GET_REBOOT            = 16,
1421433d6423SLionel Sambuc     ACPI_WDAT_SET_REBOOT            = 17,
1422433d6423SLionel Sambuc     ACPI_WDAT_GET_SHUTDOWN          = 18,
1423433d6423SLionel Sambuc     ACPI_WDAT_SET_SHUTDOWN          = 19,
1424433d6423SLionel Sambuc     ACPI_WDAT_GET_STATUS            = 32,
1425433d6423SLionel Sambuc     ACPI_WDAT_SET_STATUS            = 33,
1426433d6423SLionel Sambuc     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
1427433d6423SLionel Sambuc };
1428433d6423SLionel Sambuc 
1429433d6423SLionel Sambuc /* Values for Instruction field above */
1430433d6423SLionel Sambuc 
1431433d6423SLionel Sambuc enum AcpiWdatInstructions
1432433d6423SLionel Sambuc {
1433433d6423SLionel Sambuc     ACPI_WDAT_READ_VALUE            = 0,
1434433d6423SLionel Sambuc     ACPI_WDAT_READ_COUNTDOWN        = 1,
1435433d6423SLionel Sambuc     ACPI_WDAT_WRITE_VALUE           = 2,
1436433d6423SLionel Sambuc     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
1437433d6423SLionel Sambuc     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
1438433d6423SLionel Sambuc     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
1439433d6423SLionel Sambuc };
1440433d6423SLionel Sambuc 
1441433d6423SLionel Sambuc 
1442433d6423SLionel Sambuc /*******************************************************************************
1443433d6423SLionel Sambuc  *
1444433d6423SLionel Sambuc  * WDDT - Watchdog Descriptor Table
1445433d6423SLionel Sambuc  *        Version 1
1446433d6423SLionel Sambuc  *
1447433d6423SLionel Sambuc  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
1448433d6423SLionel Sambuc  * Version 001, September 2002
1449433d6423SLionel Sambuc  *
1450433d6423SLionel Sambuc  ******************************************************************************/
1451433d6423SLionel Sambuc 
1452433d6423SLionel Sambuc typedef struct acpi_table_wddt
1453433d6423SLionel Sambuc {
1454433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1455433d6423SLionel Sambuc     UINT16                  SpecVersion;
1456433d6423SLionel Sambuc     UINT16                  TableVersion;
1457433d6423SLionel Sambuc     UINT16                  PciVendorId;
1458433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    Address;
1459433d6423SLionel Sambuc     UINT16                  MaxCount;           /* Maximum counter value supported */
1460433d6423SLionel Sambuc     UINT16                  MinCount;           /* Minimum counter value supported */
1461433d6423SLionel Sambuc     UINT16                  Period;
1462433d6423SLionel Sambuc     UINT16                  Status;
1463433d6423SLionel Sambuc     UINT16                  Capability;
1464433d6423SLionel Sambuc 
1465433d6423SLionel Sambuc } ACPI_TABLE_WDDT;
1466433d6423SLionel Sambuc 
1467433d6423SLionel Sambuc /* Flags for Status field above */
1468433d6423SLionel Sambuc 
1469433d6423SLionel Sambuc #define ACPI_WDDT_AVAILABLE     (1)
1470433d6423SLionel Sambuc #define ACPI_WDDT_ACTIVE        (1<<1)
1471433d6423SLionel Sambuc #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
1472433d6423SLionel Sambuc #define ACPI_WDDT_USER_RESET    (1<<11)
1473433d6423SLionel Sambuc #define ACPI_WDDT_WDT_RESET     (1<<12)
1474433d6423SLionel Sambuc #define ACPI_WDDT_POWER_FAIL    (1<<13)
1475433d6423SLionel Sambuc #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
1476433d6423SLionel Sambuc 
1477433d6423SLionel Sambuc /* Flags for Capability field above */
1478433d6423SLionel Sambuc 
1479433d6423SLionel Sambuc #define ACPI_WDDT_AUTO_RESET    (1)
1480433d6423SLionel Sambuc #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
1481433d6423SLionel Sambuc 
1482433d6423SLionel Sambuc 
1483433d6423SLionel Sambuc /*******************************************************************************
1484433d6423SLionel Sambuc  *
1485433d6423SLionel Sambuc  * WDRT - Watchdog Resource Table
1486433d6423SLionel Sambuc  *        Version 1
1487433d6423SLionel Sambuc  *
1488433d6423SLionel Sambuc  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
1489433d6423SLionel Sambuc  * Version 1.01, August 28, 2006
1490433d6423SLionel Sambuc  *
1491433d6423SLionel Sambuc  ******************************************************************************/
1492433d6423SLionel Sambuc 
1493433d6423SLionel Sambuc typedef struct acpi_table_wdrt
1494433d6423SLionel Sambuc {
1495433d6423SLionel Sambuc     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1496433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    ControlRegister;
1497433d6423SLionel Sambuc     ACPI_GENERIC_ADDRESS    CountRegister;
1498433d6423SLionel Sambuc     UINT16                  PciDeviceId;
1499433d6423SLionel Sambuc     UINT16                  PciVendorId;
1500433d6423SLionel Sambuc     UINT8                   PciBus;             /* PCI Bus number */
1501433d6423SLionel Sambuc     UINT8                   PciDevice;          /* PCI Device number */
1502433d6423SLionel Sambuc     UINT8                   PciFunction;        /* PCI Function number */
1503433d6423SLionel Sambuc     UINT8                   PciSegment;         /* PCI Segment number */
1504433d6423SLionel Sambuc     UINT16                  MaxCount;           /* Maximum counter value supported */
1505433d6423SLionel Sambuc     UINT8                   Units;
1506433d6423SLionel Sambuc 
1507433d6423SLionel Sambuc } ACPI_TABLE_WDRT;
1508433d6423SLionel Sambuc 
1509433d6423SLionel Sambuc 
1510433d6423SLionel Sambuc /* Reset to default packing */
1511433d6423SLionel Sambuc 
1512433d6423SLionel Sambuc #pragma pack()
1513433d6423SLionel Sambuc 
1514433d6423SLionel Sambuc #endif /* __ACTBL2_H__ */
1515