xref: /openbmc/linux/include/acpi/actbl2.h (revision 6e2d5ebd)
1b24aad44SBob Moore #ifndef __ACTBL2_H__
2b24aad44SBob Moore #define __ACTBL2_H__
3b24aad44SBob Moore 
4b24aad44SBob Moore /*******************************************************************************
5b24aad44SBob Moore  *
6b24aad44SBob Moore  * Additional ACPI Tables (2)
7b24aad44SBob Moore  *
8b24aad44SBob Moore  * These tables are not consumed directly by the ACPICA subsystem, but are
9b24aad44SBob Moore  * included here to support device drivers and the AML disassembler.
10b24aad44SBob Moore  *
11b24aad44SBob Moore  * The tables in this file are defined by third-party specifications, and are
12b24aad44SBob Moore  * not defined directly by the ACPI specification itself.
13b24aad44SBob Moore  *
14b24aad44SBob Moore  ******************************************************************************/
15b24aad44SBob Moore 
16b24aad44SBob Moore /*
176e2d5ebdSBob Moore  * Values for description table header signatures for tables defined in this
186e2d5ebdSBob Moore  * file. Useful because they make it more difficult to inadvertently type in
196e2d5ebdSBob Moore  * the wrong signature.
20b24aad44SBob Moore  */
21b24aad44SBob Moore #define ACPI_SIG_ASF            "ASF!"	/* Alert Standard Format table */
22b24aad44SBob Moore #define ACPI_SIG_BOOT           "BOOT"	/* Simple Boot Flag Table */
23b24aad44SBob Moore #define ACPI_SIG_DBGP           "DBGP"	/* Debug Port table */
24b24aad44SBob Moore #define ACPI_SIG_DMAR           "DMAR"	/* DMA Remapping table */
25b24aad44SBob Moore #define ACPI_SIG_HPET           "HPET"	/* High Precision Event Timer table */
26b24aad44SBob Moore #define ACPI_SIG_IBFT           "IBFT"	/* i_sCSI Boot Firmware Table */
276e2d5ebdSBob Moore #define ACPI_SIG_IVRS           "IVRS"	/* I/O Virtualization Reporting Structure */
28b24aad44SBob Moore #define ACPI_SIG_MCFG           "MCFG"	/* PCI Memory Mapped Configuration table */
29b24aad44SBob Moore #define ACPI_SIG_SLIC           "SLIC"	/* Software Licensing Description Table */
30b24aad44SBob Moore #define ACPI_SIG_SPCR           "SPCR"	/* Serial Port Console Redirection table */
31b24aad44SBob Moore #define ACPI_SIG_SPMI           "SPMI"	/* Server Platform Management Interface table */
32b24aad44SBob Moore #define ACPI_SIG_TCPA           "TCPA"	/* Trusted Computing Platform Alliance table */
33b24aad44SBob Moore #define ACPI_SIG_UEFI           "UEFI"	/* Uefi Boot Optimization Table */
346e2d5ebdSBob Moore #define ACPI_SIG_WAET           "WAET"	/* Windows ACPI Emulated devices Table */
35b24aad44SBob Moore #define ACPI_SIG_WDAT           "WDAT"	/* Watchdog Action Table */
36b24aad44SBob Moore #define ACPI_SIG_WDRT           "WDRT"	/* Watchdog Resource Table */
37b24aad44SBob Moore 
38b24aad44SBob Moore /*
39b24aad44SBob Moore  * All tables must be byte-packed to match the ACPI specification, since
40b24aad44SBob Moore  * the tables are provided by the system BIOS.
41b24aad44SBob Moore  */
42b24aad44SBob Moore #pragma pack(1)
43b24aad44SBob Moore 
44b24aad44SBob Moore /*
45b24aad44SBob Moore  * Note about bitfields: The u8 type is used for bitfields in ACPI tables.
46b24aad44SBob Moore  * This is the only type that is even remotely portable. Anything else is not
47b24aad44SBob Moore  * portable, so do not use any other bitfield types.
48b24aad44SBob Moore  */
49b24aad44SBob Moore 
50b24aad44SBob Moore /*******************************************************************************
51b24aad44SBob Moore  *
52b24aad44SBob Moore  * ASF - Alert Standard Format table (Signature "ASF!")
536e2d5ebdSBob Moore  *       Revision 0x10
54b24aad44SBob Moore  *
55b24aad44SBob Moore  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
56b24aad44SBob Moore  *
57b24aad44SBob Moore  ******************************************************************************/
58b24aad44SBob Moore 
59b24aad44SBob Moore struct acpi_table_asf {
60b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
61b24aad44SBob Moore };
62b24aad44SBob Moore 
63b24aad44SBob Moore /* ASF subtable header */
64b24aad44SBob Moore 
65b24aad44SBob Moore struct acpi_asf_header {
66b24aad44SBob Moore 	u8 type;
67b24aad44SBob Moore 	u8 reserved;
68b24aad44SBob Moore 	u16 length;
69b24aad44SBob Moore };
70b24aad44SBob Moore 
71b24aad44SBob Moore /* Values for Type field above */
72b24aad44SBob Moore 
73b24aad44SBob Moore enum acpi_asf_type {
74b24aad44SBob Moore 	ACPI_ASF_TYPE_INFO = 0,
75b24aad44SBob Moore 	ACPI_ASF_TYPE_ALERT = 1,
76b24aad44SBob Moore 	ACPI_ASF_TYPE_CONTROL = 2,
77b24aad44SBob Moore 	ACPI_ASF_TYPE_BOOT = 3,
78b24aad44SBob Moore 	ACPI_ASF_TYPE_ADDRESS = 4,
79b24aad44SBob Moore 	ACPI_ASF_TYPE_RESERVED = 5
80b24aad44SBob Moore };
81b24aad44SBob Moore 
82b24aad44SBob Moore /*
83b24aad44SBob Moore  * ASF subtables
84b24aad44SBob Moore  */
85b24aad44SBob Moore 
86b24aad44SBob Moore /* 0: ASF Information */
87b24aad44SBob Moore 
88b24aad44SBob Moore struct acpi_asf_info {
89b24aad44SBob Moore 	struct acpi_asf_header header;
90b24aad44SBob Moore 	u8 min_reset_value;
91b24aad44SBob Moore 	u8 min_poll_interval;
92b24aad44SBob Moore 	u16 system_id;
93b24aad44SBob Moore 	u32 mfg_id;
94b24aad44SBob Moore 	u8 flags;
95b24aad44SBob Moore 	u8 reserved2[3];
96b24aad44SBob Moore };
97b24aad44SBob Moore 
986e2d5ebdSBob Moore /* Masks for Flags field above */
996e2d5ebdSBob Moore 
1006e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
1016e2d5ebdSBob Moore 
102b24aad44SBob Moore /* 1: ASF Alerts */
103b24aad44SBob Moore 
104b24aad44SBob Moore struct acpi_asf_alert {
105b24aad44SBob Moore 	struct acpi_asf_header header;
106b24aad44SBob Moore 	u8 assert_mask;
107b24aad44SBob Moore 	u8 deassert_mask;
108b24aad44SBob Moore 	u8 alerts;
109b24aad44SBob Moore 	u8 data_length;
110b24aad44SBob Moore };
111b24aad44SBob Moore 
112b24aad44SBob Moore struct acpi_asf_alert_data {
113b24aad44SBob Moore 	u8 address;
114b24aad44SBob Moore 	u8 command;
115b24aad44SBob Moore 	u8 mask;
116b24aad44SBob Moore 	u8 value;
117b24aad44SBob Moore 	u8 sensor_type;
118b24aad44SBob Moore 	u8 type;
119b24aad44SBob Moore 	u8 offset;
120b24aad44SBob Moore 	u8 source_type;
121b24aad44SBob Moore 	u8 severity;
122b24aad44SBob Moore 	u8 sensor_number;
123b24aad44SBob Moore 	u8 entity;
124b24aad44SBob Moore 	u8 instance;
125b24aad44SBob Moore };
126b24aad44SBob Moore 
127b24aad44SBob Moore /* 2: ASF Remote Control */
128b24aad44SBob Moore 
129b24aad44SBob Moore struct acpi_asf_remote {
130b24aad44SBob Moore 	struct acpi_asf_header header;
131b24aad44SBob Moore 	u8 controls;
132b24aad44SBob Moore 	u8 data_length;
133b24aad44SBob Moore 	u16 reserved2;
134b24aad44SBob Moore };
135b24aad44SBob Moore 
136b24aad44SBob Moore struct acpi_asf_control_data {
137b24aad44SBob Moore 	u8 function;
138b24aad44SBob Moore 	u8 address;
139b24aad44SBob Moore 	u8 command;
140b24aad44SBob Moore 	u8 value;
141b24aad44SBob Moore };
142b24aad44SBob Moore 
143b24aad44SBob Moore /* 3: ASF RMCP Boot Options */
144b24aad44SBob Moore 
145b24aad44SBob Moore struct acpi_asf_rmcp {
146b24aad44SBob Moore 	struct acpi_asf_header header;
147b24aad44SBob Moore 	u8 capabilities[7];
148b24aad44SBob Moore 	u8 completion_code;
149b24aad44SBob Moore 	u32 enterprise_id;
150b24aad44SBob Moore 	u8 command;
151b24aad44SBob Moore 	u16 parameter;
152b24aad44SBob Moore 	u16 boot_options;
153b24aad44SBob Moore 	u16 oem_parameters;
154b24aad44SBob Moore };
155b24aad44SBob Moore 
156b24aad44SBob Moore /* 4: ASF Address */
157b24aad44SBob Moore 
158b24aad44SBob Moore struct acpi_asf_address {
159b24aad44SBob Moore 	struct acpi_asf_header header;
160b24aad44SBob Moore 	u8 eprom_address;
161b24aad44SBob Moore 	u8 devices;
162b24aad44SBob Moore };
163b24aad44SBob Moore 
164b24aad44SBob Moore /*******************************************************************************
165b24aad44SBob Moore  *
166b24aad44SBob Moore  * BOOT - Simple Boot Flag Table
1676e2d5ebdSBob Moore  *        Version 1
1686e2d5ebdSBob Moore  *
1696e2d5ebdSBob Moore  * Conforms to the "Simple Boot Flag Specification", Version 2.1
170b24aad44SBob Moore  *
171b24aad44SBob Moore  ******************************************************************************/
172b24aad44SBob Moore 
173b24aad44SBob Moore struct acpi_table_boot {
174b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
175b24aad44SBob Moore 	u8 cmos_index;		/* Index in CMOS RAM for the boot register */
176b24aad44SBob Moore 	u8 reserved[3];
177b24aad44SBob Moore };
178b24aad44SBob Moore 
179b24aad44SBob Moore /*******************************************************************************
180b24aad44SBob Moore  *
181b24aad44SBob Moore  * DBGP - Debug Port table
1826e2d5ebdSBob Moore  *        Version 1
1836e2d5ebdSBob Moore  *
1846e2d5ebdSBob Moore  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
185b24aad44SBob Moore  *
186b24aad44SBob Moore  ******************************************************************************/
187b24aad44SBob Moore 
188b24aad44SBob Moore struct acpi_table_dbgp {
189b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
190b24aad44SBob Moore 	u8 type;		/* 0=full 16550, 1=subset of 16550 */
191b24aad44SBob Moore 	u8 reserved[3];
192b24aad44SBob Moore 	struct acpi_generic_address debug_port;
193b24aad44SBob Moore };
194b24aad44SBob Moore 
195b24aad44SBob Moore /*******************************************************************************
196b24aad44SBob Moore  *
197b24aad44SBob Moore  * DMAR - DMA Remapping table
1986e2d5ebdSBob Moore  *        Version 1
1996e2d5ebdSBob Moore  *
2006e2d5ebdSBob Moore  * Conforms to "Intel Virtualization Technology for Directed I/O",
2016e2d5ebdSBob Moore  * Version 1.2, Sept. 2008
202b24aad44SBob Moore  *
203b24aad44SBob Moore  ******************************************************************************/
204b24aad44SBob Moore 
205b24aad44SBob Moore struct acpi_table_dmar {
206b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
207b24aad44SBob Moore 	u8 width;		/* Host Address Width */
208b24aad44SBob Moore 	u8 flags;
209b24aad44SBob Moore 	u8 reserved[10];
210b24aad44SBob Moore };
211b24aad44SBob Moore 
2126e2d5ebdSBob Moore /* Masks for Flags field above */
213b24aad44SBob Moore 
214b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP        (1)
215b24aad44SBob Moore 
216b24aad44SBob Moore /* DMAR subtable header */
217b24aad44SBob Moore 
218b24aad44SBob Moore struct acpi_dmar_header {
219b24aad44SBob Moore 	u16 type;
220b24aad44SBob Moore 	u16 length;
221b24aad44SBob Moore };
222b24aad44SBob Moore 
223b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */
224b24aad44SBob Moore 
225b24aad44SBob Moore enum acpi_dmar_type {
226b24aad44SBob Moore 	ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
227b24aad44SBob Moore 	ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
228b24aad44SBob Moore 	ACPI_DMAR_TYPE_ATSR = 2,
2296e2d5ebdSBob Moore 	ACPI_DMAR_HARDWARE_AFFINITY = 3,
2306e2d5ebdSBob Moore 	ACPI_DMAR_TYPE_RESERVED = 4	/* 4 and greater are reserved */
231b24aad44SBob Moore };
232b24aad44SBob Moore 
2336e2d5ebdSBob Moore /* DMAR Device Scope structure */
2346e2d5ebdSBob Moore 
235b24aad44SBob Moore struct acpi_dmar_device_scope {
236b24aad44SBob Moore 	u8 entry_type;
237b24aad44SBob Moore 	u8 length;
238b24aad44SBob Moore 	u16 reserved;
239b24aad44SBob Moore 	u8 enumeration_id;
240b24aad44SBob Moore 	u8 bus;
241b24aad44SBob Moore };
242b24aad44SBob Moore 
243b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */
244b24aad44SBob Moore 
245b24aad44SBob Moore enum acpi_dmar_scope_type {
246b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
247b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
248b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
249b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
250b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_HPET = 4,
251b24aad44SBob Moore 	ACPI_DMAR_SCOPE_TYPE_RESERVED = 5	/* 5 and greater are reserved */
252b24aad44SBob Moore };
253b24aad44SBob Moore 
254b24aad44SBob Moore struct acpi_dmar_pci_path {
255b24aad44SBob Moore 	u8 dev;
256b24aad44SBob Moore 	u8 fn;
257b24aad44SBob Moore };
258b24aad44SBob Moore 
259b24aad44SBob Moore /*
260b24aad44SBob Moore  * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
261b24aad44SBob Moore  */
262b24aad44SBob Moore 
263b24aad44SBob Moore /* 0: Hardware Unit Definition */
264b24aad44SBob Moore 
265b24aad44SBob Moore struct acpi_dmar_hardware_unit {
266b24aad44SBob Moore 	struct acpi_dmar_header header;
267b24aad44SBob Moore 	u8 flags;
268b24aad44SBob Moore 	u8 reserved;
269b24aad44SBob Moore 	u16 segment;
270b24aad44SBob Moore 	u64 address;		/* Register Base Address */
271b24aad44SBob Moore };
272b24aad44SBob Moore 
2736e2d5ebdSBob Moore /* Masks for Flags field above */
274b24aad44SBob Moore 
275b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL       (1)
276b24aad44SBob Moore 
277b24aad44SBob Moore /* 1: Reserved Memory Defininition */
278b24aad44SBob Moore 
279b24aad44SBob Moore struct acpi_dmar_reserved_memory {
280b24aad44SBob Moore 	struct acpi_dmar_header header;
281b24aad44SBob Moore 	u16 reserved;
282b24aad44SBob Moore 	u16 segment;
283b24aad44SBob Moore 	u64 base_address;	/* 4_k aligned base address */
284b24aad44SBob Moore 	u64 end_address;	/* 4_k aligned limit address */
285b24aad44SBob Moore };
286b24aad44SBob Moore 
2876e2d5ebdSBob Moore /* Masks for Flags field above */
288b24aad44SBob Moore 
289b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL         (1)
290b24aad44SBob Moore 
291b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */
292b24aad44SBob Moore 
293b24aad44SBob Moore struct acpi_dmar_atsr {
294b24aad44SBob Moore 	struct acpi_dmar_header header;
295b24aad44SBob Moore 	u8 flags;
296b24aad44SBob Moore 	u8 reserved;
297b24aad44SBob Moore 	u16 segment;
298b24aad44SBob Moore };
299b24aad44SBob Moore 
3006e2d5ebdSBob Moore /* Masks for Flags field above */
301b24aad44SBob Moore 
302b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS         (1)
303b24aad44SBob Moore 
3046e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */
3056e2d5ebdSBob Moore 
3066e2d5ebdSBob Moore struct acpi_dmar_rhsa {
3076e2d5ebdSBob Moore 	struct acpi_dmar_header header;
3086e2d5ebdSBob Moore 	u32 reserved;
3096e2d5ebdSBob Moore 	u64 base_address;
3106e2d5ebdSBob Moore 	u32 proximity_domain;
3116e2d5ebdSBob Moore };
3126e2d5ebdSBob Moore 
313b24aad44SBob Moore /*******************************************************************************
314b24aad44SBob Moore  *
315b24aad44SBob Moore  * HPET - High Precision Event Timer table
3166e2d5ebdSBob Moore  *        Version 1
3176e2d5ebdSBob Moore  *
3186e2d5ebdSBob Moore  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
3196e2d5ebdSBob Moore  * Version 1.0a, October 2004
320b24aad44SBob Moore  *
321b24aad44SBob Moore  ******************************************************************************/
322b24aad44SBob Moore 
323b24aad44SBob Moore struct acpi_table_hpet {
324b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
325b24aad44SBob Moore 	u32 id;			/* Hardware ID of event timer block */
326b24aad44SBob Moore 	struct acpi_generic_address address;	/* Address of event timer block */
327b24aad44SBob Moore 	u8 sequence;		/* HPET sequence number */
328b24aad44SBob Moore 	u16 minimum_tick;	/* Main counter min tick, periodic mode */
329b24aad44SBob Moore 	u8 flags;
330b24aad44SBob Moore };
331b24aad44SBob Moore 
3326e2d5ebdSBob Moore /* Masks for Flags field above */
333b24aad44SBob Moore 
3346e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3)
335b24aad44SBob Moore 
3366e2d5ebdSBob Moore /* Values for Page Protect flags */
3376e2d5ebdSBob Moore 
3386e2d5ebdSBob Moore enum acpi_hpet_page_protect {
3396e2d5ebdSBob Moore 	ACPI_HPET_NO_PAGE_PROTECT = 0,
3406e2d5ebdSBob Moore 	ACPI_HPET_PAGE_PROTECT4 = 1,
3416e2d5ebdSBob Moore 	ACPI_HPET_PAGE_PROTECT64 = 2
3426e2d5ebdSBob Moore };
343b24aad44SBob Moore 
344b24aad44SBob Moore /*******************************************************************************
345b24aad44SBob Moore  *
346b24aad44SBob Moore  * IBFT - Boot Firmware Table
3476e2d5ebdSBob Moore  *        Version 1
3486e2d5ebdSBob Moore  *
3496e2d5ebdSBob Moore  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
3506e2d5ebdSBob Moore  * Specification", Version 1.01, March 1, 2007
3516e2d5ebdSBob Moore  *
3526e2d5ebdSBob Moore  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
3536e2d5ebdSBob Moore  * Therefore, it is not currently supported by the disassembler.
354b24aad44SBob Moore  *
355b24aad44SBob Moore  ******************************************************************************/
356b24aad44SBob Moore 
357b24aad44SBob Moore struct acpi_table_ibft {
358b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
359b24aad44SBob Moore 	u8 reserved[12];
360b24aad44SBob Moore };
361b24aad44SBob Moore 
362b24aad44SBob Moore /* IBFT common subtable header */
363b24aad44SBob Moore 
364b24aad44SBob Moore struct acpi_ibft_header {
365b24aad44SBob Moore 	u8 type;
366b24aad44SBob Moore 	u8 version;
367b24aad44SBob Moore 	u16 length;
368b24aad44SBob Moore 	u8 index;
369b24aad44SBob Moore 	u8 flags;
370b24aad44SBob Moore };
371b24aad44SBob Moore 
372b24aad44SBob Moore /* Values for Type field above */
373b24aad44SBob Moore 
374b24aad44SBob Moore enum acpi_ibft_type {
375b24aad44SBob Moore 	ACPI_IBFT_TYPE_NOT_USED = 0,
376b24aad44SBob Moore 	ACPI_IBFT_TYPE_CONTROL = 1,
377b24aad44SBob Moore 	ACPI_IBFT_TYPE_INITIATOR = 2,
378b24aad44SBob Moore 	ACPI_IBFT_TYPE_NIC = 3,
379b24aad44SBob Moore 	ACPI_IBFT_TYPE_TARGET = 4,
380b24aad44SBob Moore 	ACPI_IBFT_TYPE_EXTENSIONS = 5,
381b24aad44SBob Moore 	ACPI_IBFT_TYPE_RESERVED = 6	/* 6 and greater are reserved */
382b24aad44SBob Moore };
383b24aad44SBob Moore 
384b24aad44SBob Moore /* IBFT subtables */
385b24aad44SBob Moore 
386b24aad44SBob Moore struct acpi_ibft_control {
387b24aad44SBob Moore 	struct acpi_ibft_header header;
388b24aad44SBob Moore 	u16 extensions;
389b24aad44SBob Moore 	u16 initiator_offset;
390b24aad44SBob Moore 	u16 nic0_offset;
391b24aad44SBob Moore 	u16 target0_offset;
392b24aad44SBob Moore 	u16 nic1_offset;
393b24aad44SBob Moore 	u16 target1_offset;
394b24aad44SBob Moore };
395b24aad44SBob Moore 
396b24aad44SBob Moore struct acpi_ibft_initiator {
397b24aad44SBob Moore 	struct acpi_ibft_header header;
398b24aad44SBob Moore 	u8 sns_server[16];
399b24aad44SBob Moore 	u8 slp_server[16];
400b24aad44SBob Moore 	u8 primary_server[16];
401b24aad44SBob Moore 	u8 secondary_server[16];
402b24aad44SBob Moore 	u16 name_length;
403b24aad44SBob Moore 	u16 name_offset;
404b24aad44SBob Moore };
405b24aad44SBob Moore 
406b24aad44SBob Moore struct acpi_ibft_nic {
407b24aad44SBob Moore 	struct acpi_ibft_header header;
408b24aad44SBob Moore 	u8 ip_address[16];
409b24aad44SBob Moore 	u8 subnet_mask_prefix;
410b24aad44SBob Moore 	u8 origin;
411b24aad44SBob Moore 	u8 gateway[16];
412b24aad44SBob Moore 	u8 primary_dns[16];
413b24aad44SBob Moore 	u8 secondary_dns[16];
414b24aad44SBob Moore 	u8 dhcp[16];
415b24aad44SBob Moore 	u16 vlan;
416b24aad44SBob Moore 	u8 mac_address[6];
417b24aad44SBob Moore 	u16 pci_address;
418b24aad44SBob Moore 	u16 name_length;
419b24aad44SBob Moore 	u16 name_offset;
420b24aad44SBob Moore };
421b24aad44SBob Moore 
422b24aad44SBob Moore struct acpi_ibft_target {
423b24aad44SBob Moore 	struct acpi_ibft_header header;
424b24aad44SBob Moore 	u8 target_ip_address[16];
425b24aad44SBob Moore 	u16 target_ip_socket;
426b24aad44SBob Moore 	u8 target_boot_lun[8];
427b24aad44SBob Moore 	u8 chap_type;
428b24aad44SBob Moore 	u8 nic_association;
429b24aad44SBob Moore 	u16 target_name_length;
430b24aad44SBob Moore 	u16 target_name_offset;
431b24aad44SBob Moore 	u16 chap_name_length;
432b24aad44SBob Moore 	u16 chap_name_offset;
433b24aad44SBob Moore 	u16 chap_secret_length;
434b24aad44SBob Moore 	u16 chap_secret_offset;
435b24aad44SBob Moore 	u16 reverse_chap_name_length;
436b24aad44SBob Moore 	u16 reverse_chap_name_offset;
437b24aad44SBob Moore 	u16 reverse_chap_secret_length;
438b24aad44SBob Moore 	u16 reverse_chap_secret_offset;
439b24aad44SBob Moore };
440b24aad44SBob Moore 
441b24aad44SBob Moore /*******************************************************************************
442b24aad44SBob Moore  *
4436e2d5ebdSBob Moore  * IVRS - I/O Virtualization Reporting Structure
4446e2d5ebdSBob Moore  *        Version 1
4456e2d5ebdSBob Moore  *
4466e2d5ebdSBob Moore  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
4476e2d5ebdSBob Moore  * Revision 1.26, February 2009.
4486e2d5ebdSBob Moore  *
4496e2d5ebdSBob Moore  ******************************************************************************/
4506e2d5ebdSBob Moore 
4516e2d5ebdSBob Moore struct acpi_table_ivrs {
4526e2d5ebdSBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
4536e2d5ebdSBob Moore 	u32 info;		/* Common virtualization info */
4546e2d5ebdSBob Moore 	u64 reserved;
4556e2d5ebdSBob Moore };
4566e2d5ebdSBob Moore 
4576e2d5ebdSBob Moore /* Values for Info field above */
4586e2d5ebdSBob Moore 
4596e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00	/* 7 bits, physical address size */
4606e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000	/* 7 bits, virtual address size */
4616e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED      0x00400000	/* ATS address translation range reserved */
4626e2d5ebdSBob Moore 
4636e2d5ebdSBob Moore /* IVRS subtable header */
4646e2d5ebdSBob Moore 
4656e2d5ebdSBob Moore struct acpi_ivrs_header {
4666e2d5ebdSBob Moore 	u8 type;		/* Subtable type */
4676e2d5ebdSBob Moore 	u8 flags;
4686e2d5ebdSBob Moore 	u16 length;		/* Subtable length */
4696e2d5ebdSBob Moore 	u16 device_id;		/* ID of IOMMU */
4706e2d5ebdSBob Moore };
4716e2d5ebdSBob Moore 
4726e2d5ebdSBob Moore /* Values for subtable Type above */
4736e2d5ebdSBob Moore 
4746e2d5ebdSBob Moore enum acpi_ivrs_type {
4756e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_HARDWARE = 0x10,
4766e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_MEMORY1 = 0x20,
4776e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_MEMORY2 = 0x21,
4786e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_MEMORY3 = 0x22
4796e2d5ebdSBob Moore };
4806e2d5ebdSBob Moore 
4816e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */
4826e2d5ebdSBob Moore 
4836e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE         (1)
4846e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW           (1<<1)
4856e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW       (1<<2)
4866e2d5ebdSBob Moore #define ACPI_IVHD_ISOC              (1<<3)
4876e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB             (1<<4)
4886e2d5ebdSBob Moore 
4896e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */
4906e2d5ebdSBob Moore 
4916e2d5ebdSBob Moore #define ACPI_IVMD_UNITY             (1)
4926e2d5ebdSBob Moore #define ACPI_IVMD_READ              (1<<1)
4936e2d5ebdSBob Moore #define ACPI_IVMD_WRITE             (1<<2)
4946e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
4956e2d5ebdSBob Moore 
4966e2d5ebdSBob Moore /*
4976e2d5ebdSBob Moore  * IVRS subtables, correspond to Type in struct acpi_ivrs_header
4986e2d5ebdSBob Moore  */
4996e2d5ebdSBob Moore 
5006e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
5016e2d5ebdSBob Moore 
5026e2d5ebdSBob Moore struct acpi_ivrs_hardware {
5036e2d5ebdSBob Moore 	struct acpi_ivrs_header header;
5046e2d5ebdSBob Moore 	u16 capability_offset;	/* Offset for IOMMU control fields */
5056e2d5ebdSBob Moore 	u64 base_address;	/* IOMMU control registers */
5066e2d5ebdSBob Moore 	u16 pci_segment_group;
5076e2d5ebdSBob Moore 	u16 info;		/* MSI number and unit ID */
5086e2d5ebdSBob Moore 	u32 reserved;
5096e2d5ebdSBob Moore };
5106e2d5ebdSBob Moore 
5116e2d5ebdSBob Moore /* Masks for Info field above */
5126e2d5ebdSBob Moore 
5136e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F	/* 5 bits, MSI message number */
5146e2d5ebdSBob Moore #define ACPI_IVHD_UNIT_ID_MASK      0x1F00	/* 5 bits, unit_iD */
5156e2d5ebdSBob Moore 
5166e2d5ebdSBob Moore /*
5176e2d5ebdSBob Moore  * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
5186e2d5ebdSBob Moore  * Upper two bits of the Type field are the (encoded) length of the structure.
5196e2d5ebdSBob Moore  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
5206e2d5ebdSBob Moore  * are reserved for future use but not defined.
5216e2d5ebdSBob Moore  */
5226e2d5ebdSBob Moore struct acpi_ivrs_de_header {
5236e2d5ebdSBob Moore 	u8 type;
5246e2d5ebdSBob Moore 	u16 id;
5256e2d5ebdSBob Moore 	u8 data_setting;
5266e2d5ebdSBob Moore };
5276e2d5ebdSBob Moore 
5286e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */
5296e2d5ebdSBob Moore 
5306e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH      0xC0
5316e2d5ebdSBob Moore 
5326e2d5ebdSBob Moore /* Values for device entry Type field above */
5336e2d5ebdSBob Moore 
5346e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type {
5356e2d5ebdSBob Moore 	/* 4-byte device entries, all use struct acpi_ivrs_device4 */
5366e2d5ebdSBob Moore 
5376e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_PAD4 = 0,
5386e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_ALL = 1,
5396e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_SELECT = 2,
5406e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_START = 3,
5416e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_END = 4,
5426e2d5ebdSBob Moore 
5436e2d5ebdSBob Moore 	/* 8-byte device entries */
5446e2d5ebdSBob Moore 
5456e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_PAD8 = 64,
5466e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_NOT_USED = 65,
5476e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_ALIAS_SELECT = 66,	/* Uses struct acpi_ivrs_device8a */
5486e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_ALIAS_START = 67,	/* Uses struct acpi_ivrs_device8a */
5496e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_EXT_SELECT = 70,	/* Uses struct acpi_ivrs_device8b */
5506e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_EXT_START = 71,	/* Uses struct acpi_ivrs_device8b */
5516e2d5ebdSBob Moore 	ACPI_IVRS_TYPE_SPECIAL = 72	/* Uses struct acpi_ivrs_device8c */
5526e2d5ebdSBob Moore };
5536e2d5ebdSBob Moore 
5546e2d5ebdSBob Moore /* Values for Data field above */
5556e2d5ebdSBob Moore 
5566e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS         (1)
5576e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS         (1<<1)
5586e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS          (1<<2)
5596e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
5606e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS        (1<<6)
5616e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS        (1<<7)
5626e2d5ebdSBob Moore 
5636e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */
5646e2d5ebdSBob Moore 
5656e2d5ebdSBob Moore struct acpi_ivrs_device4 {
5666e2d5ebdSBob Moore 	struct acpi_ivrs_de_header header;
5676e2d5ebdSBob Moore };
5686e2d5ebdSBob Moore 
5696e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */
5706e2d5ebdSBob Moore 
5716e2d5ebdSBob Moore struct acpi_ivrs_device8a {
5726e2d5ebdSBob Moore 	struct acpi_ivrs_de_header header;
5736e2d5ebdSBob Moore 	u8 reserved1;
5746e2d5ebdSBob Moore 	u16 used_id;
5756e2d5ebdSBob Moore 	u8 reserved2;
5766e2d5ebdSBob Moore };
5776e2d5ebdSBob Moore 
5786e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */
5796e2d5ebdSBob Moore 
5806e2d5ebdSBob Moore struct acpi_ivrs_device8b {
5816e2d5ebdSBob Moore 	struct acpi_ivrs_de_header header;
5826e2d5ebdSBob Moore 	u32 extended_data;
5836e2d5ebdSBob Moore };
5846e2d5ebdSBob Moore 
5856e2d5ebdSBob Moore /* Values for extended_data above */
5866e2d5ebdSBob Moore 
5876e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED      (1<<31)
5886e2d5ebdSBob Moore 
5896e2d5ebdSBob Moore /* Type 72: 8-byte device entry */
5906e2d5ebdSBob Moore 
5916e2d5ebdSBob Moore struct acpi_ivrs_device8c {
5926e2d5ebdSBob Moore 	struct acpi_ivrs_de_header header;
5936e2d5ebdSBob Moore 	u8 handle;
5946e2d5ebdSBob Moore 	u16 used_id;
5956e2d5ebdSBob Moore 	u8 variety;
5966e2d5ebdSBob Moore };
5976e2d5ebdSBob Moore 
5986e2d5ebdSBob Moore /* Values for Variety field above */
5996e2d5ebdSBob Moore 
6006e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC            1
6016e2d5ebdSBob Moore #define ACPI_IVHD_HPET              2
6026e2d5ebdSBob Moore 
6036e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
6046e2d5ebdSBob Moore 
6056e2d5ebdSBob Moore struct acpi_ivrs_memory {
6066e2d5ebdSBob Moore 	struct acpi_ivrs_header header;
6076e2d5ebdSBob Moore 	u16 aux_data;
6086e2d5ebdSBob Moore 	u64 reserved;
6096e2d5ebdSBob Moore 	u64 start_address;
6106e2d5ebdSBob Moore 	u64 memory_length;
6116e2d5ebdSBob Moore };
6126e2d5ebdSBob Moore 
6136e2d5ebdSBob Moore /*******************************************************************************
6146e2d5ebdSBob Moore  *
615b24aad44SBob Moore  * MCFG - PCI Memory Mapped Configuration table and sub-table
6166e2d5ebdSBob Moore  *        Version 1
6176e2d5ebdSBob Moore  *
6186e2d5ebdSBob Moore  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
619b24aad44SBob Moore  *
620b24aad44SBob Moore  ******************************************************************************/
621b24aad44SBob Moore 
622b24aad44SBob Moore struct acpi_table_mcfg {
623b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
624b24aad44SBob Moore 	u8 reserved[8];
625b24aad44SBob Moore };
626b24aad44SBob Moore 
627b24aad44SBob Moore /* Subtable */
628b24aad44SBob Moore 
629b24aad44SBob Moore struct acpi_mcfg_allocation {
630b24aad44SBob Moore 	u64 address;		/* Base address, processor-relative */
631b24aad44SBob Moore 	u16 pci_segment;	/* PCI segment group number */
632b24aad44SBob Moore 	u8 start_bus_number;	/* Starting PCI Bus number */
633b24aad44SBob Moore 	u8 end_bus_number;	/* Final PCI Bus number */
634b24aad44SBob Moore 	u32 reserved;
635b24aad44SBob Moore };
636b24aad44SBob Moore 
637b24aad44SBob Moore /*******************************************************************************
638b24aad44SBob Moore  *
639b24aad44SBob Moore  * SPCR - Serial Port Console Redirection table
6406e2d5ebdSBob Moore  *        Version 1
6416e2d5ebdSBob Moore  *
6426e2d5ebdSBob Moore  * Conforms to "Serial Port Console Redirection Table",
6436e2d5ebdSBob Moore  * Version 1.00, January 11, 2002
644b24aad44SBob Moore  *
645b24aad44SBob Moore  ******************************************************************************/
646b24aad44SBob Moore 
647b24aad44SBob Moore struct acpi_table_spcr {
648b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
649b24aad44SBob Moore 	u8 interface_type;	/* 0=full 16550, 1=subset of 16550 */
650b24aad44SBob Moore 	u8 reserved[3];
651b24aad44SBob Moore 	struct acpi_generic_address serial_port;
652b24aad44SBob Moore 	u8 interrupt_type;
653b24aad44SBob Moore 	u8 pc_interrupt;
654b24aad44SBob Moore 	u32 interrupt;
655b24aad44SBob Moore 	u8 baud_rate;
656b24aad44SBob Moore 	u8 parity;
657b24aad44SBob Moore 	u8 stop_bits;
658b24aad44SBob Moore 	u8 flow_control;
659b24aad44SBob Moore 	u8 terminal_type;
660b24aad44SBob Moore 	u8 reserved1;
661b24aad44SBob Moore 	u16 pci_device_id;
662b24aad44SBob Moore 	u16 pci_vendor_id;
663b24aad44SBob Moore 	u8 pci_bus;
664b24aad44SBob Moore 	u8 pci_device;
665b24aad44SBob Moore 	u8 pci_function;
666b24aad44SBob Moore 	u32 pci_flags;
667b24aad44SBob Moore 	u8 pci_segment;
668b24aad44SBob Moore 	u32 reserved2;
669b24aad44SBob Moore };
670b24aad44SBob Moore 
6716e2d5ebdSBob Moore /* Masks for pci_flags field above */
6726e2d5ebdSBob Moore 
6736e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE    (1)
6746e2d5ebdSBob Moore 
675b24aad44SBob Moore /*******************************************************************************
676b24aad44SBob Moore  *
677b24aad44SBob Moore  * SPMI - Server Platform Management Interface table
6786e2d5ebdSBob Moore  *        Version 5
6796e2d5ebdSBob Moore  *
6806e2d5ebdSBob Moore  * Conforms to "Intelligent Platform Management Interface Specification
6816e2d5ebdSBob Moore  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
6826e2d5ebdSBob Moore  * June 12, 2009 markup.
683b24aad44SBob Moore  *
684b24aad44SBob Moore  ******************************************************************************/
685b24aad44SBob Moore 
686b24aad44SBob Moore struct acpi_table_spmi {
687b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
688b24aad44SBob Moore 	u8 interface_type;
6896e2d5ebdSBob Moore 	u8 reserved;		/* Must be 1 */
690b24aad44SBob Moore 	u16 spec_revision;	/* Version of IPMI */
691b24aad44SBob Moore 	u8 interrupt_type;
692b24aad44SBob Moore 	u8 gpe_number;		/* GPE assigned */
693b24aad44SBob Moore 	u8 reserved1;
694b24aad44SBob Moore 	u8 pci_device_flag;
695b24aad44SBob Moore 	u32 interrupt;
696b24aad44SBob Moore 	struct acpi_generic_address ipmi_register;
697b24aad44SBob Moore 	u8 pci_segment;
698b24aad44SBob Moore 	u8 pci_bus;
699b24aad44SBob Moore 	u8 pci_device;
700b24aad44SBob Moore 	u8 pci_function;
7016e2d5ebdSBob Moore 	u8 reserved2;
7026e2d5ebdSBob Moore };
7036e2d5ebdSBob Moore 
7046e2d5ebdSBob Moore /* Values for interface_type above */
7056e2d5ebdSBob Moore 
7066e2d5ebdSBob Moore enum acpi_spmi_interface_types {
7076e2d5ebdSBob Moore 	ACPI_SPMI_NOT_USED = 0,
7086e2d5ebdSBob Moore 	ACPI_SPMI_KEYBOARD = 1,
7096e2d5ebdSBob Moore 	ACPI_SPMI_SMI = 2,
7106e2d5ebdSBob Moore 	ACPI_SPMI_BLOCK_TRANSFER = 3,
7116e2d5ebdSBob Moore 	ACPI_SPMI_SMBUS = 4,
7126e2d5ebdSBob Moore 	ACPI_SPMI_RESERVED = 5	/* 5 and above are reserved */
713b24aad44SBob Moore };
714b24aad44SBob Moore 
715b24aad44SBob Moore /*******************************************************************************
716b24aad44SBob Moore  *
717b24aad44SBob Moore  * TCPA - Trusted Computing Platform Alliance table
7186e2d5ebdSBob Moore  *        Version 1
7196e2d5ebdSBob Moore  *
7206e2d5ebdSBob Moore  * Conforms to "TCG PC Specific Implementation Specification",
7216e2d5ebdSBob Moore  * Version 1.1, August 18, 2003
722b24aad44SBob Moore  *
723b24aad44SBob Moore  ******************************************************************************/
724b24aad44SBob Moore 
725b24aad44SBob Moore struct acpi_table_tcpa {
726b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
727b24aad44SBob Moore 	u16 reserved;
728b24aad44SBob Moore 	u32 max_log_length;	/* Maximum length for the event log area */
729b24aad44SBob Moore 	u64 log_address;	/* Address of the event log area */
730b24aad44SBob Moore };
731b24aad44SBob Moore 
732b24aad44SBob Moore /*******************************************************************************
733b24aad44SBob Moore  *
734b24aad44SBob Moore  * UEFI - UEFI Boot optimization Table
7356e2d5ebdSBob Moore  *        Version 1
7366e2d5ebdSBob Moore  *
7376e2d5ebdSBob Moore  * Conforms to "Unified Extensible Firmware Interface Specification",
7386e2d5ebdSBob Moore  * Version 2.3, May 8, 2009
739b24aad44SBob Moore  *
740b24aad44SBob Moore  ******************************************************************************/
741b24aad44SBob Moore 
742b24aad44SBob Moore struct acpi_table_uefi {
743b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
744b24aad44SBob Moore 	u8 identifier[16];	/* UUID identifier */
745b24aad44SBob Moore 	u16 data_offset;	/* Offset of remaining data in table */
746b24aad44SBob Moore };
747b24aad44SBob Moore 
748b24aad44SBob Moore /*******************************************************************************
749b24aad44SBob Moore  *
7506e2d5ebdSBob Moore  * WAET - Windows ACPI Emulated devices Table
7516e2d5ebdSBob Moore  *        Version 1
7526e2d5ebdSBob Moore  *
7536e2d5ebdSBob Moore  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
7546e2d5ebdSBob Moore  *
7556e2d5ebdSBob Moore  ******************************************************************************/
7566e2d5ebdSBob Moore 
7576e2d5ebdSBob Moore struct acpi_table_waet {
7586e2d5ebdSBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
7596e2d5ebdSBob Moore 	u32 flags;
7606e2d5ebdSBob Moore };
7616e2d5ebdSBob Moore 
7626e2d5ebdSBob Moore /* Masks for Flags field above */
7636e2d5ebdSBob Moore 
7646e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK        (1)	/* RTC requires no int acknowledge */
7656e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ    (1<<1)	/* PM timer requires only one read */
7666e2d5ebdSBob Moore 
7676e2d5ebdSBob Moore /*******************************************************************************
7686e2d5ebdSBob Moore  *
769b24aad44SBob Moore  * WDAT - Watchdog Action Table
7706e2d5ebdSBob Moore  *        Version 1
7716e2d5ebdSBob Moore  *
7726e2d5ebdSBob Moore  * Conforms to "Hardware Watchdog Timers Design Specification",
7736e2d5ebdSBob Moore  * Copyright 2006 Microsoft Corporation.
774b24aad44SBob Moore  *
775b24aad44SBob Moore  ******************************************************************************/
776b24aad44SBob Moore 
777b24aad44SBob Moore struct acpi_table_wdat {
778b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
779b24aad44SBob Moore 	u32 header_length;	/* Watchdog Header Length */
780b24aad44SBob Moore 	u16 pci_segment;	/* PCI Segment number */
781b24aad44SBob Moore 	u8 pci_bus;		/* PCI Bus number */
782b24aad44SBob Moore 	u8 pci_device;		/* PCI Device number */
783b24aad44SBob Moore 	u8 pci_function;	/* PCI Function number */
784b24aad44SBob Moore 	u8 reserved[3];
785b24aad44SBob Moore 	u32 timer_period;	/* Period of one timer count (msec) */
786b24aad44SBob Moore 	u32 max_count;		/* Maximum counter value supported */
787b24aad44SBob Moore 	u32 min_count;		/* Minimum counter value */
788b24aad44SBob Moore 	u8 flags;
789b24aad44SBob Moore 	u8 reserved2[3];
790b24aad44SBob Moore 	u32 entries;		/* Number of watchdog entries that follow */
791b24aad44SBob Moore };
792b24aad44SBob Moore 
7936e2d5ebdSBob Moore /* Masks for Flags field above */
7946e2d5ebdSBob Moore 
7956e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED           (1)
7966e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED           0x80
7976e2d5ebdSBob Moore 
798b24aad44SBob Moore /* WDAT Instruction Entries (actions) */
799b24aad44SBob Moore 
800b24aad44SBob Moore struct acpi_wdat_entry {
8016e2d5ebdSBob Moore 	u8 action;
8026e2d5ebdSBob Moore 	u8 instruction;
8036e2d5ebdSBob Moore 	u16 reserved;
8046e2d5ebdSBob Moore 	struct acpi_generic_address register_region;
8056e2d5ebdSBob Moore 	u32 value;		/* Value used with Read/Write register */
8066e2d5ebdSBob Moore 	u32 mask;		/* Bitmask required for this register instruction */
807b24aad44SBob Moore };
808b24aad44SBob Moore 
809b24aad44SBob Moore /* Values for Action field above */
810b24aad44SBob Moore 
811b24aad44SBob Moore enum acpi_wdat_actions {
812b24aad44SBob Moore 	ACPI_WDAT_RESET = 1,
813b24aad44SBob Moore 	ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
814b24aad44SBob Moore 	ACPI_WDAT_GET_COUNTDOWN = 5,
815b24aad44SBob Moore 	ACPI_WDAT_SET_COUNTDOWN = 6,
816b24aad44SBob Moore 	ACPI_WDAT_GET_RUNNING_STATE = 8,
817b24aad44SBob Moore 	ACPI_WDAT_SET_RUNNING_STATE = 9,
818b24aad44SBob Moore 	ACPI_WDAT_GET_STOPPED_STATE = 10,
819b24aad44SBob Moore 	ACPI_WDAT_SET_STOPPED_STATE = 11,
820b24aad44SBob Moore 	ACPI_WDAT_GET_REBOOT = 16,
821b24aad44SBob Moore 	ACPI_WDAT_SET_REBOOT = 17,
822b24aad44SBob Moore 	ACPI_WDAT_GET_SHUTDOWN = 18,
823b24aad44SBob Moore 	ACPI_WDAT_SET_SHUTDOWN = 19,
824b24aad44SBob Moore 	ACPI_WDAT_GET_STATUS = 32,
825b24aad44SBob Moore 	ACPI_WDAT_SET_STATUS = 33,
826b24aad44SBob Moore 	ACPI_WDAT_ACTION_RESERVED = 34	/* 34 and greater are reserved */
827b24aad44SBob Moore };
828b24aad44SBob Moore 
829b24aad44SBob Moore /* Values for Instruction field above */
830b24aad44SBob Moore 
831b24aad44SBob Moore enum acpi_wdat_instructions {
832b24aad44SBob Moore 	ACPI_WDAT_READ_VALUE = 0,
833b24aad44SBob Moore 	ACPI_WDAT_READ_COUNTDOWN = 1,
834b24aad44SBob Moore 	ACPI_WDAT_WRITE_VALUE = 2,
835b24aad44SBob Moore 	ACPI_WDAT_WRITE_COUNTDOWN = 3,
836b24aad44SBob Moore 	ACPI_WDAT_INSTRUCTION_RESERVED = 4,	/* 4 and greater are reserved */
837b24aad44SBob Moore 	ACPI_WDAT_PRESERVE_REGISTER = 0x80	/* Except for this value */
838b24aad44SBob Moore };
839b24aad44SBob Moore 
840b24aad44SBob Moore /*******************************************************************************
841b24aad44SBob Moore  *
842b24aad44SBob Moore  * WDRT - Watchdog Resource Table
8436e2d5ebdSBob Moore  *        Version 1
8446e2d5ebdSBob Moore  *
8456e2d5ebdSBob Moore  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
8466e2d5ebdSBob Moore  * Version 1.01, August 28, 2006
847b24aad44SBob Moore  *
848b24aad44SBob Moore  ******************************************************************************/
849b24aad44SBob Moore 
850b24aad44SBob Moore struct acpi_table_wdrt {
851b24aad44SBob Moore 	struct acpi_table_header header;	/* Common ACPI table header */
8526e2d5ebdSBob Moore 	struct acpi_generic_address control_register;
8536e2d5ebdSBob Moore 	struct acpi_generic_address count_register;
8546e2d5ebdSBob Moore 	u16 pci_device_id;
8556e2d5ebdSBob Moore 	u16 pci_vendor_id;
856b24aad44SBob Moore 	u8 pci_bus;		/* PCI Bus number */
857b24aad44SBob Moore 	u8 pci_device;		/* PCI Device number */
858b24aad44SBob Moore 	u8 pci_function;	/* PCI Function number */
8596e2d5ebdSBob Moore 	u8 pci_segment;		/* PCI Segment number */
8606e2d5ebdSBob Moore 	u16 max_count;		/* Maximum counter value supported */
8616e2d5ebdSBob Moore 	u8 units;
862b24aad44SBob Moore };
863b24aad44SBob Moore 
864b24aad44SBob Moore /* Reset to default packing */
865b24aad44SBob Moore 
866b24aad44SBob Moore #pragma pack()
867b24aad44SBob Moore 
868b24aad44SBob Moore #endif				/* __ACTBL2_H__ */
869