aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/actbl1.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/acpi/actbl1.h')
-rw-r--r--include/acpi/actbl1.h872
1 files changed, 222 insertions, 650 deletions
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 59ade0752473..0b9b430b092b 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -46,41 +46,31 @@
46 46
47/******************************************************************************* 47/*******************************************************************************
48 * 48 *
49 * Additional ACPI Tables 49 * Additional ACPI Tables (1)
50 * 50 *
51 * These tables are not consumed directly by the ACPICA subsystem, but are 51 * These tables are not consumed directly by the ACPICA subsystem, but are
52 * included here to support device drivers and the AML disassembler. 52 * included here to support device drivers and the AML disassembler.
53 * 53 *
54 * The tables in this file are fully defined within the ACPI specification.
55 *
54 ******************************************************************************/ 56 ******************************************************************************/
55 57
56/* 58/*
57 * Values for description table header signatures. Useful because they make 59 * Values for description table header signatures for tables defined in this
58 * it more difficult to inadvertently type in the wrong signature. 60 * file. Useful because they make it more difficult to inadvertently type in
61 * the wrong signature.
59 */ 62 */
60#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
61#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 63#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
62#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
63#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 64#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
64#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
65#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
66#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 65#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
67#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 66#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
68#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 67#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
69#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 68#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
70#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
71#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */
72#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 69#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 70#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */
74#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 71#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
75#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
76#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 72#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
77#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
78#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
79#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 73#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
80#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
81#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
82#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
83#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
84 74
85/* 75/*
86 * All tables must be byte-packed to match the ACPI specification, since 76 * All tables must be byte-packed to match the ACPI specification, since
@@ -94,14 +84,20 @@
94 * portable, so do not use any other bitfield types. 84 * portable, so do not use any other bitfield types.
95 */ 85 */
96 86
97/* Common Subtable header (used in MADT, SRAT, etc.) */ 87/*******************************************************************************
88 *
89 * Common subtable headers
90 *
91 ******************************************************************************/
92
93/* Generic subtable header (used in MADT, SRAT, etc.) */
98 94
99struct acpi_subtable_header { 95struct acpi_subtable_header {
100 u8 type; 96 u8 type;
101 u8 length; 97 u8 length;
102}; 98};
103 99
104/* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 100/* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
105 101
106struct acpi_whea_header { 102struct acpi_whea_header {
107 u8 action; 103 u8 action;
@@ -115,116 +111,8 @@ struct acpi_whea_header {
115 111
116/******************************************************************************* 112/*******************************************************************************
117 * 113 *
118 * ASF - Alert Standard Format table (Signature "ASF!") 114 * BERT - Boot Error Record Table (ACPI 4.0)
119 * 115 * Version 1
120 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
121 *
122 ******************************************************************************/
123
124struct acpi_table_asf {
125 struct acpi_table_header header; /* Common ACPI table header */
126};
127
128/* ASF subtable header */
129
130struct acpi_asf_header {
131 u8 type;
132 u8 reserved;
133 u16 length;
134};
135
136/* Values for Type field above */
137
138enum acpi_asf_type {
139 ACPI_ASF_TYPE_INFO = 0,
140 ACPI_ASF_TYPE_ALERT = 1,
141 ACPI_ASF_TYPE_CONTROL = 2,
142 ACPI_ASF_TYPE_BOOT = 3,
143 ACPI_ASF_TYPE_ADDRESS = 4,
144 ACPI_ASF_TYPE_RESERVED = 5
145};
146
147/*
148 * ASF subtables
149 */
150
151/* 0: ASF Information */
152
153struct acpi_asf_info {
154 struct acpi_asf_header header;
155 u8 min_reset_value;
156 u8 min_poll_interval;
157 u16 system_id;
158 u32 mfg_id;
159 u8 flags;
160 u8 reserved2[3];
161};
162
163/* 1: ASF Alerts */
164
165struct acpi_asf_alert {
166 struct acpi_asf_header header;
167 u8 assert_mask;
168 u8 deassert_mask;
169 u8 alerts;
170 u8 data_length;
171};
172
173struct acpi_asf_alert_data {
174 u8 address;
175 u8 command;
176 u8 mask;
177 u8 value;
178 u8 sensor_type;
179 u8 type;
180 u8 offset;
181 u8 source_type;
182 u8 severity;
183 u8 sensor_number;
184 u8 entity;
185 u8 instance;
186};
187
188/* 2: ASF Remote Control */
189
190struct acpi_asf_remote {
191 struct acpi_asf_header header;
192 u8 controls;
193 u8 data_length;
194 u16 reserved2;
195};
196
197struct acpi_asf_control_data {
198 u8 function;
199 u8 address;
200 u8 command;
201 u8 value;
202};
203
204/* 3: ASF RMCP Boot Options */
205
206struct acpi_asf_rmcp {
207 struct acpi_asf_header header;
208 u8 capabilities[7];
209 u8 completion_code;
210 u32 enterprise_id;
211 u8 command;
212 u16 parameter;
213 u16 boot_options;
214 u16 oem_parameters;
215};
216
217/* 4: ASF Address */
218
219struct acpi_asf_address {
220 struct acpi_asf_header header;
221 u8 eprom_address;
222 u8 devices;
223};
224
225/*******************************************************************************
226 *
227 * BERT - Boot Error Record Table
228 * 116 *
229 ******************************************************************************/ 117 ******************************************************************************/
230 118
@@ -234,38 +122,43 @@ struct acpi_table_bert {
234 u64 address; /* Physical addresss of the error region */ 122 u64 address; /* Physical addresss of the error region */
235}; 123};
236 124
237/* Boot Error Region */ 125/* Boot Error Region (not a subtable, pointed to by Address field above) */
238 126
239struct acpi_bert_region { 127struct acpi_bert_region {
240 u32 block_status; 128 u32 block_status; /* Type of error information */
241 u32 raw_data_offset; 129 u32 raw_data_offset; /* Offset to raw error data */
242 u32 raw_data_length; 130 u32 raw_data_length; /* Length of raw error data */
243 u32 data_length; 131 u32 data_length; /* Length of generic error data */
244 u32 error_severity; 132 u32 error_severity; /* Severity code */
245}; 133};
246 134
247/* block_status Flags */ 135/* Values for block_status flags above */
248 136
249#define ACPI_BERT_UNCORRECTABLE (1) 137#define ACPI_BERT_UNCORRECTABLE (1)
250#define ACPI_BERT_CORRECTABLE (2) 138#define ACPI_BERT_CORRECTABLE (1<<1)
251#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) 139#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
252#define ACPI_BERT_MULTIPLE_CORRECTABLE (8) 140#define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
141#define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
253 142
254/******************************************************************************* 143/* Values for error_severity above */
255 *
256 * BOOT - Simple Boot Flag Table
257 *
258 ******************************************************************************/
259 144
260struct acpi_table_boot { 145enum acpi_bert_error_severity {
261 struct acpi_table_header header; /* Common ACPI table header */ 146 ACPI_BERT_ERROR_CORRECTABLE = 0,
262 u8 cmos_index; /* Index in CMOS RAM for the boot register */ 147 ACPI_BERT_ERROR_FATAL = 1,
263 u8 reserved[3]; 148 ACPI_BERT_ERROR_CORRECTED = 2,
149 ACPI_BERT_ERROR_NONE = 3,
150 ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */
264}; 151};
265 152
153/*
154 * Note: The generic error data that follows the error_severity field above
155 * uses the struct acpi_hest_generic_data defined under the HEST table below
156 */
157
266/******************************************************************************* 158/*******************************************************************************
267 * 159 *
268 * CPEP - Corrected Platform Error Polling table 160 * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
161 * Version 1
269 * 162 *
270 ******************************************************************************/ 163 ******************************************************************************/
271 164
@@ -277,8 +170,7 @@ struct acpi_table_cpep {
277/* Subtable */ 170/* Subtable */
278 171
279struct acpi_cpep_polling { 172struct acpi_cpep_polling {
280 u8 type; 173 struct acpi_subtable_header header;
281 u8 length;
282 u8 id; /* Processor ID */ 174 u8 id; /* Processor ID */
283 u8 eid; /* Processor EID */ 175 u8 eid; /* Processor EID */
284 u32 interval; /* Polling interval (msec) */ 176 u32 interval; /* Polling interval (msec) */
@@ -286,124 +178,8 @@ struct acpi_cpep_polling {
286 178
287/******************************************************************************* 179/*******************************************************************************
288 * 180 *
289 * DBGP - Debug Port table
290 *
291 ******************************************************************************/
292
293struct acpi_table_dbgp {
294 struct acpi_table_header header; /* Common ACPI table header */
295 u8 type; /* 0=full 16550, 1=subset of 16550 */
296 u8 reserved[3];
297 struct acpi_generic_address debug_port;
298};
299
300/*******************************************************************************
301 *
302 * DMAR - DMA Remapping table
303 * From "Intel Virtualization Technology for Directed I/O", Sept. 2007
304 *
305 ******************************************************************************/
306
307struct acpi_table_dmar {
308 struct acpi_table_header header; /* Common ACPI table header */
309 u8 width; /* Host Address Width */
310 u8 flags;
311 u8 reserved[10];
312};
313
314/* Flags */
315
316#define ACPI_DMAR_INTR_REMAP (1)
317
318/* DMAR subtable header */
319
320struct acpi_dmar_header {
321 u16 type;
322 u16 length;
323};
324
325/* Values for subtable type in struct acpi_dmar_header */
326
327enum acpi_dmar_type {
328 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
329 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
330 ACPI_DMAR_TYPE_ATSR = 2,
331 ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */
332};
333
334struct acpi_dmar_device_scope {
335 u8 entry_type;
336 u8 length;
337 u16 reserved;
338 u8 enumeration_id;
339 u8 bus;
340};
341
342/* Values for entry_type in struct acpi_dmar_device_scope */
343
344enum acpi_dmar_scope_type {
345 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
346 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
347 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
348 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
349 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
350 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */
351};
352
353struct acpi_dmar_pci_path {
354 u8 dev;
355 u8 fn;
356};
357
358/*
359 * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
360 */
361
362/* 0: Hardware Unit Definition */
363
364struct acpi_dmar_hardware_unit {
365 struct acpi_dmar_header header;
366 u8 flags;
367 u8 reserved;
368 u16 segment;
369 u64 address; /* Register Base Address */
370};
371
372/* Flags */
373
374#define ACPI_DMAR_INCLUDE_ALL (1)
375
376/* 1: Reserved Memory Defininition */
377
378struct acpi_dmar_reserved_memory {
379 struct acpi_dmar_header header;
380 u16 reserved;
381 u16 segment;
382 u64 base_address; /* 4_k aligned base address */
383 u64 end_address; /* 4_k aligned limit address */
384};
385
386/* Flags */
387
388#define ACPI_DMAR_ALLOW_ALL (1)
389
390
391/* 2: Root Port ATS Capability Reporting Structure */
392
393struct acpi_dmar_atsr {
394 struct acpi_dmar_header header;
395 u8 flags;
396 u8 reserved;
397 u16 segment;
398};
399
400/* Flags */
401
402#define ACPI_DMAR_ALL_PORTS (1)
403
404/*******************************************************************************
405 *
406 * ECDT - Embedded Controller Boot Resources Table 181 * ECDT - Embedded Controller Boot Resources Table
182 * Version 1
407 * 183 *
408 ******************************************************************************/ 184 ******************************************************************************/
409 185
@@ -418,14 +194,16 @@ struct acpi_table_ecdt {
418 194
419/******************************************************************************* 195/*******************************************************************************
420 * 196 *
421 * EINJ - Error Injection Table 197 * EINJ - Error Injection Table (ACPI 4.0)
198 * Version 1
422 * 199 *
423 ******************************************************************************/ 200 ******************************************************************************/
424 201
425struct acpi_table_einj { 202struct acpi_table_einj {
426 struct acpi_table_header header; /* Common ACPI table header */ 203 struct acpi_table_header header; /* Common ACPI table header */
427 u32 header_length; 204 u32 header_length;
428 u32 reserved; 205 u8 flags;
206 u8 reserved[3];
429 u32 entries; 207 u32 entries;
430}; 208};
431 209
@@ -435,6 +213,10 @@ struct acpi_einj_entry {
435 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 213 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
436}; 214};
437 215
216/* Masks for Flags field above */
217
218#define ACPI_EINJ_PRESERVE (1)
219
438/* Values for Action field above */ 220/* Values for Action field above */
439 221
440enum acpi_einj_actions { 222enum acpi_einj_actions {
@@ -470,9 +252,34 @@ struct acpi_einj_trigger {
470 u32 entry_count; 252 u32 entry_count;
471}; 253};
472 254
255/* Command status return values */
256
257enum acpi_einj_command_status {
258 ACPI_EINJ_SUCCESS = 0,
259 ACPI_EINJ_FAILURE = 1,
260 ACPI_EINJ_INVALID_ACCESS = 2,
261 ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */
262};
263
264/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
265
266#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
267#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
268#define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
269#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
270#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
271#define ACPI_EINJ_MEMORY_FATAL (1<<5)
272#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
273#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
274#define ACPI_EINJ_PCIX_FATAL (1<<8)
275#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
276#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
277#define ACPI_EINJ_PLATFORM_FATAL (1<<11)
278
473/******************************************************************************* 279/*******************************************************************************
474 * 280 *
475 * ERST - Error Record Serialization Table 281 * ERST - Error Record Serialization Table (ACPI 4.0)
282 * Version 1
476 * 283 *
477 ******************************************************************************/ 284 ******************************************************************************/
478 285
@@ -489,19 +296,23 @@ struct acpi_erst_entry {
489 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 296 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
490}; 297};
491 298
299/* Masks for Flags field above */
300
301#define ACPI_ERST_PRESERVE (1)
302
492/* Values for Action field above */ 303/* Values for Action field above */
493 304
494enum acpi_erst_actions { 305enum acpi_erst_actions {
495 ACPI_ERST_BEGIN_WRITE_OPERATION = 0, 306 ACPI_ERST_BEGIN_WRITE = 0,
496 ACPI_ERST_BEGIN_READ_OPERATION = 1, 307 ACPI_ERST_BEGIN_READ = 1,
497 ACPI_ERST_BETGIN_CLEAR_OPERATION = 2, 308 ACPI_ERST_BEGIN_CLEAR = 2,
498 ACPI_ERST_END_OPERATION = 3, 309 ACPI_ERST_END = 3,
499 ACPI_ERST_SET_RECORD_OFFSET = 4, 310 ACPI_ERST_SET_RECORD_OFFSET = 4,
500 ACPI_ERST_EXECUTE_OPERATION = 5, 311 ACPI_ERST_EXECUTE_OPERATION = 5,
501 ACPI_ERST_CHECK_BUSY_STATUS = 6, 312 ACPI_ERST_CHECK_BUSY_STATUS = 6,
502 ACPI_ERST_GET_COMMAND_STATUS = 7, 313 ACPI_ERST_GET_COMMAND_STATUS = 7,
503 ACPI_ERST_GET_RECORD_IDENTIFIER = 8, 314 ACPI_ERST_GET_RECORD_ID = 8,
504 ACPI_ERST_SET_RECORD_IDENTIFIER = 9, 315 ACPI_ERST_SET_RECORD_ID = 9,
505 ACPI_ERST_GET_RECORD_COUNT = 10, 316 ACPI_ERST_GET_RECORD_COUNT = 10,
506 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 317 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
507 ACPI_ERST_NOT_USED = 12, 318 ACPI_ERST_NOT_USED = 12,
@@ -536,9 +347,29 @@ enum acpi_erst_instructions {
536 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 347 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
537}; 348};
538 349
350/* Command status return values */
351
352enum acpi_erst_command_status {
353 ACPI_ERST_SUCESS = 0,
354 ACPI_ERST_NO_SPACE = 1,
355 ACPI_ERST_NOT_AVAILABLE = 2,
356 ACPI_ERST_FAILURE = 3,
357 ACPI_ERST_RECORD_EMPTY = 4,
358 ACPI_ERST_NOT_FOUND = 5,
359 ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */
360};
361
362/* Error Record Serialization Information */
363
364struct acpi_erst_info {
365 u16 signature; /* Should be "ER" */
366 u8 data[48];
367};
368
539/******************************************************************************* 369/*******************************************************************************
540 * 370 *
541 * HEST - Hardware Error Source Table 371 * HEST - Hardware Error Source Table (ACPI 4.0)
372 * Version 1
542 * 373 *
543 ******************************************************************************/ 374 ******************************************************************************/
544 375
@@ -551,85 +382,69 @@ struct acpi_table_hest {
551 382
552struct acpi_hest_header { 383struct acpi_hest_header {
553 u16 type; 384 u16 type;
385 u16 source_id;
554}; 386};
555 387
556/* Values for Type field above for subtables */ 388/* Values for Type field above for subtables */
557 389
558enum acpi_hest_types { 390enum acpi_hest_types {
559 ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, 391 ACPI_HEST_TYPE_IA32_CHECK = 0,
560 ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, 392 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
561 ACPI_HEST_TYPE_XPF_UNUSED = 2, 393 ACPI_HEST_TYPE_IA32_NMI = 2,
562 ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, 394 ACPI_HEST_TYPE_NOT_USED3 = 3,
563 ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, 395 ACPI_HEST_TYPE_NOT_USED4 = 4,
564 ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, 396 ACPI_HEST_TYPE_NOT_USED5 = 5,
565 ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 397 ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
566 ACPI_HEST_TYPE_AER_ENDPOINT = 7, 398 ACPI_HEST_TYPE_AER_ENDPOINT = 7,
567 ACPI_HEST_TYPE_AER_BRIDGE = 8, 399 ACPI_HEST_TYPE_AER_BRIDGE = 8,
568 ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, 400 ACPI_HEST_TYPE_GENERIC_ERROR = 9,
569 ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 401 ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */
570}; 402};
571 403
572/* 404/*
573 * HEST Sub-subtables 405 * HEST substructures contained in subtables
574 */ 406 */
575 407
576/* XPF Machine Check Error Bank */ 408/*
577 409 * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and
578struct acpi_hest_xpf_error_bank { 410 * struct acpi_hest_ia_corrected structures.
411 */
412struct acpi_hest_ia_error_bank {
579 u8 bank_number; 413 u8 bank_number;
580 u8 clear_status_on_init; 414 u8 clear_status_on_init;
581 u8 status_format; 415 u8 status_format;
582 u8 config_write_enable; 416 u8 reserved;
583 u32 control_register; 417 u32 control_register;
584 u64 control_init_data; 418 u64 control_data;
585 u32 status_register; 419 u32 status_register;
586 u32 address_register; 420 u32 address_register;
587 u32 misc_register; 421 u32 misc_register;
588}; 422};
589 423
590/* Generic Error Status */ 424/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
591
592struct acpi_hest_generic_status {
593 u32 block_status;
594 u32 raw_data_offset;
595 u32 raw_data_length;
596 u32 data_length;
597 u32 error_severity;
598};
599
600/* Generic Error Data */
601
602struct acpi_hest_generic_data {
603 u8 section_type[16];
604 u32 error_severity;
605 u16 revision;
606 u8 validation_bits;
607 u8 flags;
608 u32 error_data_length;
609 u8 fru_id[16];
610 u8 fru_text[20];
611};
612
613/* Common HEST structure for PCI/AER types below (6,7,8) */
614 425
615struct acpi_hest_aer_common { 426struct acpi_hest_aer_common {
616 u16 source_id; 427 u16 reserved1;
617 u16 config_write_enable;
618 u8 flags; 428 u8 flags;
619 u8 enabled; 429 u8 enabled;
620 u32 records_to_pre_allocate; 430 u32 records_to_preallocate;
621 u32 max_sections_per_record; 431 u32 max_sections_per_record;
622 u32 bus; 432 u32 bus;
623 u16 device; 433 u16 device;
624 u16 function; 434 u16 function;
625 u16 device_control; 435 u16 device_control;
626 u16 reserved; 436 u16 reserved2;
627 u32 uncorrectable_error_mask; 437 u32 uncorrectable_mask;
628 u32 uncorrectable_error_severity; 438 u32 uncorrectable_severity;
629 u32 correctable_error_mask; 439 u32 correctable_mask;
630 u32 advanced_error_capabilities; 440 u32 advanced_capabilities;
631}; 441};
632 442
443/* Masks for HEST Flags fields */
444
445#define ACPI_HEST_FIRMWARE_FIRST (1)
446#define ACPI_HEST_GLOBAL (1<<1)
447
633/* Hardware Error Notification */ 448/* Hardware Error Notification */
634 449
635struct acpi_hest_notify { 450struct acpi_hest_notify {
@@ -655,71 +470,59 @@ enum acpi_hest_notify_types {
655 ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 470 ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */
656}; 471};
657 472
473/* Values for config_write_enable bitfield above */
474
475#define ACPI_HEST_TYPE (1)
476#define ACPI_HEST_POLL_INTERVAL (1<<1)
477#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
478#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
479#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
480#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
481
658/* 482/*
659 * HEST subtables 483 * HEST subtables
660 *
661 * From WHEA Design Document, 16 May 2007.
662 * Note: There is no subtable type 2 in this version of the document,
663 * and there are two different subtable type 3s.
664 */ 484 */
665 485
666 /* 0: XPF Machine Check Exception */ 486/* 0: IA32 Machine Check Exception */
667 487
668struct acpi_hest_xpf_machine_check { 488struct acpi_hest_ia_machine_check {
669 struct acpi_hest_header header; 489 struct acpi_hest_header header;
670 u16 source_id; 490 u16 reserved1;
671 u16 config_write_enable;
672 u8 flags; 491 u8 flags;
673 u8 reserved1; 492 u8 enabled;
674 u32 records_to_pre_allocate; 493 u32 records_to_preallocate;
675 u32 max_sections_per_record; 494 u32 max_sections_per_record;
676 u64 global_capability_data; 495 u64 global_capability_data;
677 u64 global_control_data; 496 u64 global_control_data;
678 u8 num_hardware_banks; 497 u8 num_hardware_banks;
679 u8 reserved2[7]; 498 u8 reserved3[7];
680}; 499};
681 500
682/* 1: XPF Corrected Machine Check */ 501/* 1: IA32 Corrected Machine Check */
683 502
684struct acpi_table_hest_xpf_corrected { 503struct acpi_hest_ia_corrected {
685 struct acpi_hest_header header; 504 struct acpi_hest_header header;
686 u16 source_id; 505 u16 reserved1;
687 u16 config_write_enable;
688 u8 flags; 506 u8 flags;
689 u8 enabled; 507 u8 enabled;
690 u32 records_to_pre_allocate; 508 u32 records_to_preallocate;
691 u32 max_sections_per_record; 509 u32 max_sections_per_record;
692 struct acpi_hest_notify notify; 510 struct acpi_hest_notify notify;
693 u8 num_hardware_banks; 511 u8 num_hardware_banks;
694 u8 reserved[3]; 512 u8 reserved2[3];
695}; 513};
696 514
697/* 3: XPF Non-Maskable Interrupt */ 515/* 2: IA32 Non-Maskable Interrupt */
698 516
699struct acpi_hest_xpf_nmi { 517struct acpi_hest_ia_nmi {
700 struct acpi_hest_header header; 518 struct acpi_hest_header header;
701 u16 source_id;
702 u32 reserved; 519 u32 reserved;
703 u32 records_to_pre_allocate; 520 u32 records_to_preallocate;
704 u32 max_sections_per_record; 521 u32 max_sections_per_record;
705 u32 max_raw_data_length; 522 u32 max_raw_data_length;
706}; 523};
707 524
708/* 4: IPF Corrected Machine Check */ 525/* 3,4,5: Not used */
709
710struct acpi_hest_ipf_corrected {
711 struct acpi_hest_header header;
712 u8 enabled;
713 u8 reserved;
714};
715
716/* 5: IPF Corrected Platform Error */
717
718struct acpi_hest_ipf_corrected_platform {
719 struct acpi_hest_header header;
720 u8 enabled;
721 u8 reserved;
722};
723 526
724/* 6: PCI Express Root Port AER */ 527/* 6: PCI Express Root Port AER */
725 528
@@ -741,143 +544,61 @@ struct acpi_hest_aer {
741struct acpi_hest_aer_bridge { 544struct acpi_hest_aer_bridge {
742 struct acpi_hest_header header; 545 struct acpi_hest_header header;
743 struct acpi_hest_aer_common aer; 546 struct acpi_hest_aer_common aer;
744 u32 secondary_uncorrectable_error_mask; 547 u32 uncorrectable_mask2;
745 u32 secondary_uncorrectable_error_severity; 548 u32 uncorrectable_severity2;
746 u32 secondary_advanced_capabilities; 549 u32 advanced_capabilities2;
747}; 550};
748 551
749/* 9: Generic Hardware Error Source */ 552/* 9: Generic Hardware Error Source */
750 553
751struct acpi_hest_generic { 554struct acpi_hest_generic {
752 struct acpi_hest_header header; 555 struct acpi_hest_header header;
753 u16 source_id;
754 u16 related_source_id; 556 u16 related_source_id;
755 u8 config_write_enable; 557 u8 reserved;
756 u8 enabled; 558 u8 enabled;
757 u32 records_to_pre_allocate; 559 u32 records_to_preallocate;
758 u32 max_sections_per_record; 560 u32 max_sections_per_record;
759 u32 max_raw_data_length; 561 u32 max_raw_data_length;
760 struct acpi_generic_address error_status_address; 562 struct acpi_generic_address error_status_address;
761 struct acpi_hest_notify notify; 563 struct acpi_hest_notify notify;
762 u32 error_status_block_length; 564 u32 error_block_length;
763}; 565};
764 566
765/******************************************************************************* 567/* Generic Error Status block */
766 *
767 * HPET - High Precision Event Timer table
768 *
769 ******************************************************************************/
770 568
771struct acpi_table_hpet { 569struct acpi_hest_generic_status {
772 struct acpi_table_header header; /* Common ACPI table header */ 570 u32 block_status;
773 u32 id; /* Hardware ID of event timer block */ 571 u32 raw_data_offset;
774 struct acpi_generic_address address; /* Address of event timer block */ 572 u32 raw_data_length;
775 u8 sequence; /* HPET sequence number */ 573 u32 data_length;
776 u16 minimum_tick; /* Main counter min tick, periodic mode */ 574 u32 error_severity;
777 u8 flags;
778}; 575};
779 576
780/*! Flags */ 577/* Values for block_status flags above */
781 578
782#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 579#define ACPI_HEST_UNCORRECTABLE (1)
783#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 580#define ACPI_HEST_CORRECTABLE (1<<1)
784#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 581#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
582#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
583#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
785 584
786/*! [End] no source code translation !*/ 585/* Generic Error Data entry */
787 586
788/******************************************************************************* 587struct acpi_hest_generic_data {
789 * 588 u8 section_type[16];
790 * IBFT - Boot Firmware Table 589 u32 error_severity;
791 * 590 u16 revision;
792 ******************************************************************************/ 591 u8 validation_bits;
793
794struct acpi_table_ibft {
795 struct acpi_table_header header; /* Common ACPI table header */
796 u8 reserved[12];
797};
798
799/* IBFT common subtable header */
800
801struct acpi_ibft_header {
802 u8 type;
803 u8 version;
804 u16 length;
805 u8 index;
806 u8 flags; 592 u8 flags;
807}; 593 u32 error_data_length;
808 594 u8 fru_id[16];
809/* Values for Type field above */ 595 u8 fru_text[20];
810
811enum acpi_ibft_type {
812 ACPI_IBFT_TYPE_NOT_USED = 0,
813 ACPI_IBFT_TYPE_CONTROL = 1,
814 ACPI_IBFT_TYPE_INITIATOR = 2,
815 ACPI_IBFT_TYPE_NIC = 3,
816 ACPI_IBFT_TYPE_TARGET = 4,
817 ACPI_IBFT_TYPE_EXTENSIONS = 5,
818 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
819};
820
821/* IBFT subtables */
822
823struct acpi_ibft_control {
824 struct acpi_ibft_header header;
825 u16 extensions;
826 u16 initiator_offset;
827 u16 nic0_offset;
828 u16 target0_offset;
829 u16 nic1_offset;
830 u16 target1_offset;
831};
832
833struct acpi_ibft_initiator {
834 struct acpi_ibft_header header;
835 u8 sns_server[16];
836 u8 slp_server[16];
837 u8 primary_server[16];
838 u8 secondary_server[16];
839 u16 name_length;
840 u16 name_offset;
841};
842
843struct acpi_ibft_nic {
844 struct acpi_ibft_header header;
845 u8 ip_address[16];
846 u8 subnet_mask_prefix;
847 u8 origin;
848 u8 gateway[16];
849 u8 primary_dns[16];
850 u8 secondary_dns[16];
851 u8 dhcp[16];
852 u16 vlan;
853 u8 mac_address[6];
854 u16 pci_address;
855 u16 name_length;
856 u16 name_offset;
857};
858
859struct acpi_ibft_target {
860 struct acpi_ibft_header header;
861 u8 target_ip_address[16];
862 u16 target_ip_socket;
863 u8 target_boot_lun[8];
864 u8 chap_type;
865 u8 nic_association;
866 u16 target_name_length;
867 u16 target_name_offset;
868 u16 chap_name_length;
869 u16 chap_name_offset;
870 u16 chap_secret_length;
871 u16 chap_secret_offset;
872 u16 reverse_chap_name_length;
873 u16 reverse_chap_name_offset;
874 u16 reverse_chap_secret_length;
875 u16 reverse_chap_secret_offset;
876}; 596};
877 597
878/******************************************************************************* 598/*******************************************************************************
879 * 599 *
880 * MADT - Multiple APIC Description Table 600 * MADT - Multiple APIC Description Table
601 * Version 3
881 * 602 *
882 ******************************************************************************/ 603 ******************************************************************************/
883 604
@@ -887,16 +608,16 @@ struct acpi_table_madt {
887 u32 flags; 608 u32 flags;
888}; 609};
889 610
890/* Flags */ 611/* Masks for Flags field above */
891 612
892#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 613#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */
893 614
894/* Values for PCATCompat flag */ 615/* Values for PCATCompat flag */
895 616
896#define ACPI_MADT_DUAL_PIC 0 617#define ACPI_MADT_DUAL_PIC 0
897#define ACPI_MADT_MULTIPLE_APIC 1 618#define ACPI_MADT_MULTIPLE_APIC 1
898 619
899/* Values for subtable type in struct acpi_subtable_header */ 620/* Values for MADT subtable type in struct acpi_subtable_header */
900 621
901enum acpi_madt_type { 622enum acpi_madt_type {
902 ACPI_MADT_TYPE_LOCAL_APIC = 0, 623 ACPI_MADT_TYPE_LOCAL_APIC = 0,
@@ -1007,11 +728,11 @@ struct acpi_madt_interrupt_source {
1007 u32 flags; /* Interrupt Source Flags */ 728 u32 flags; /* Interrupt Source Flags */
1008}; 729};
1009 730
1010/* Flags field above */ 731/* Masks for Flags field above */
1011 732
1012#define ACPI_MADT_CPEI_OVERRIDE (1) 733#define ACPI_MADT_CPEI_OVERRIDE (1)
1013 734
1014/* 9: Processor Local X2_APIC (07/2008) */ 735/* 9: Processor Local X2APIC (ACPI 4.0) */
1015 736
1016struct acpi_madt_local_x2apic { 737struct acpi_madt_local_x2apic {
1017 struct acpi_subtable_header header; 738 struct acpi_subtable_header header;
@@ -1021,7 +742,7 @@ struct acpi_madt_local_x2apic {
1021 u32 uid; /* ACPI processor UID */ 742 u32 uid; /* ACPI processor UID */
1022}; 743};
1023 744
1024/* 10: Local X2APIC NMI (07/2008) */ 745/* 10: Local X2APIC NMI (ACPI 4.0) */
1025 746
1026struct acpi_madt_local_x2apic_nmi { 747struct acpi_madt_local_x2apic_nmi {
1027 struct acpi_subtable_header header; 748 struct acpi_subtable_header header;
@@ -1058,28 +779,34 @@ struct acpi_madt_local_x2apic_nmi {
1058 779
1059/******************************************************************************* 780/*******************************************************************************
1060 * 781 *
1061 * MCFG - PCI Memory Mapped Configuration table and sub-table 782 * MSCT - Maximum System Characteristics Table (ACPI 4.0)
783 * Version 1
1062 * 784 *
1063 ******************************************************************************/ 785 ******************************************************************************/
1064 786
1065struct acpi_table_mcfg { 787struct acpi_table_msct {
1066 struct acpi_table_header header; /* Common ACPI table header */ 788 struct acpi_table_header header; /* Common ACPI table header */
1067 u8 reserved[8]; 789 u32 proximity_offset; /* Location of proximity info struct(s) */
790 u32 max_proximity_domains; /* Max number of proximity domains */
791 u32 max_clock_domains; /* Max number of clock domains */
792 u64 max_address; /* Max physical address in system */
1068}; 793};
1069 794
1070/* Subtable */ 795/* Subtable - Maximum Proximity Domain Information. Version 1 */
1071 796
1072struct acpi_mcfg_allocation { 797struct acpi_msct_proximity {
1073 u64 address; /* Base address, processor-relative */ 798 u8 revision;
1074 u16 pci_segment; /* PCI segment group number */ 799 u8 length;
1075 u8 start_bus_number; /* Starting PCI Bus number */ 800 u32 range_start; /* Start of domain range */
1076 u8 end_bus_number; /* Final PCI Bus number */ 801 u32 range_end; /* End of domain range */
1077 u32 reserved; 802 u32 processor_capacity;
803 u64 memory_capacity; /* In bytes */
1078}; 804};
1079 805
1080/******************************************************************************* 806/*******************************************************************************
1081 * 807 *
1082 * SBST - Smart Battery Specification Table 808 * SBST - Smart Battery Specification Table
809 * Version 1
1083 * 810 *
1084 ******************************************************************************/ 811 ******************************************************************************/
1085 812
@@ -1093,6 +820,7 @@ struct acpi_table_sbst {
1093/******************************************************************************* 820/*******************************************************************************
1094 * 821 *
1095 * SLIT - System Locality Distance Information Table 822 * SLIT - System Locality Distance Information Table
823 * Version 1
1096 * 824 *
1097 ******************************************************************************/ 825 ******************************************************************************/
1098 826
@@ -1104,60 +832,8 @@ struct acpi_table_slit {
1104 832
1105/******************************************************************************* 833/*******************************************************************************
1106 * 834 *
1107 * SPCR - Serial Port Console Redirection table
1108 *
1109 ******************************************************************************/
1110
1111struct acpi_table_spcr {
1112 struct acpi_table_header header; /* Common ACPI table header */
1113 u8 interface_type; /* 0=full 16550, 1=subset of 16550 */
1114 u8 reserved[3];
1115 struct acpi_generic_address serial_port;
1116 u8 interrupt_type;
1117 u8 pc_interrupt;
1118 u32 interrupt;
1119 u8 baud_rate;
1120 u8 parity;
1121 u8 stop_bits;
1122 u8 flow_control;
1123 u8 terminal_type;
1124 u8 reserved1;
1125 u16 pci_device_id;
1126 u16 pci_vendor_id;
1127 u8 pci_bus;
1128 u8 pci_device;
1129 u8 pci_function;
1130 u32 pci_flags;
1131 u8 pci_segment;
1132 u32 reserved2;
1133};
1134
1135/*******************************************************************************
1136 *
1137 * SPMI - Server Platform Management Interface table
1138 *
1139 ******************************************************************************/
1140
1141struct acpi_table_spmi {
1142 struct acpi_table_header header; /* Common ACPI table header */
1143 u8 reserved;
1144 u8 interface_type;
1145 u16 spec_revision; /* Version of IPMI */
1146 u8 interrupt_type;
1147 u8 gpe_number; /* GPE assigned */
1148 u8 reserved1;
1149 u8 pci_device_flag;
1150 u32 interrupt;
1151 struct acpi_generic_address ipmi_register;
1152 u8 pci_segment;
1153 u8 pci_bus;
1154 u8 pci_device;
1155 u8 pci_function;
1156};
1157
1158/*******************************************************************************
1159 *
1160 * SRAT - System Resource Affinity Table 835 * SRAT - System Resource Affinity Table
836 * Version 3
1161 * 837 *
1162 ******************************************************************************/ 838 ******************************************************************************/
1163 839
@@ -1192,6 +868,10 @@ struct acpi_srat_cpu_affinity {
1192 u32 reserved; /* Reserved, must be zero */ 868 u32 reserved; /* Reserved, must be zero */
1193}; 869};
1194 870
871/* Flags */
872
873#define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */
874
1195/* 1: Memory Affinity */ 875/* 1: Memory Affinity */
1196 876
1197struct acpi_srat_mem_affinity { 877struct acpi_srat_mem_affinity {
@@ -1211,7 +891,7 @@ struct acpi_srat_mem_affinity {
1211#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 891#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
1212#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 892#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
1213 893
1214/* 2: Processor Local X2_APIC Affinity (07/2008) */ 894/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
1215 895
1216struct acpi_srat_x2apic_cpu_affinity { 896struct acpi_srat_x2apic_cpu_affinity {
1217 struct acpi_subtable_header header; 897 struct acpi_subtable_header header;
@@ -1219,122 +899,14 @@ struct acpi_srat_x2apic_cpu_affinity {
1219 u32 proximity_domain; 899 u32 proximity_domain;
1220 u32 apic_id; 900 u32 apic_id;
1221 u32 flags; 901 u32 flags;
902 u32 clock_domain;
903 u32 reserved2;
1222}; 904};
1223 905
1224/* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */ 906/* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
1225 907
1226#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 908#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
1227 909
1228/*******************************************************************************
1229 *
1230 * TCPA - Trusted Computing Platform Alliance table
1231 *
1232 ******************************************************************************/
1233
1234struct acpi_table_tcpa {
1235 struct acpi_table_header header; /* Common ACPI table header */
1236 u16 reserved;
1237 u32 max_log_length; /* Maximum length for the event log area */
1238 u64 log_address; /* Address of the event log area */
1239};
1240
1241/*******************************************************************************
1242 *
1243 * UEFI - UEFI Boot optimization Table
1244 *
1245 ******************************************************************************/
1246
1247struct acpi_table_uefi {
1248 struct acpi_table_header header; /* Common ACPI table header */
1249 u8 identifier[16]; /* UUID identifier */
1250 u16 data_offset; /* Offset of remaining data in table */
1251 u8 data;
1252};
1253
1254/*******************************************************************************
1255 *
1256 * WDAT - Watchdog Action Table
1257 *
1258 ******************************************************************************/
1259
1260struct acpi_table_wdat {
1261 struct acpi_table_header header; /* Common ACPI table header */
1262 u32 header_length; /* Watchdog Header Length */
1263 u16 pci_segment; /* PCI Segment number */
1264 u8 pci_bus; /* PCI Bus number */
1265 u8 pci_device; /* PCI Device number */
1266 u8 pci_function; /* PCI Function number */
1267 u8 reserved[3];
1268 u32 timer_period; /* Period of one timer count (msec) */
1269 u32 max_count; /* Maximum counter value supported */
1270 u32 min_count; /* Minimum counter value */
1271 u8 flags;
1272 u8 reserved2[3];
1273 u32 entries; /* Number of watchdog entries that follow */
1274};
1275
1276/* WDAT Instruction Entries (actions) */
1277
1278struct acpi_wdat_entry {
1279 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
1280};
1281
1282/* Values for Action field above */
1283
1284enum acpi_wdat_actions {
1285 ACPI_WDAT_RESET = 1,
1286 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1287 ACPI_WDAT_GET_COUNTDOWN = 5,
1288 ACPI_WDAT_SET_COUNTDOWN = 6,
1289 ACPI_WDAT_GET_RUNNING_STATE = 8,
1290 ACPI_WDAT_SET_RUNNING_STATE = 9,
1291 ACPI_WDAT_GET_STOPPED_STATE = 10,
1292 ACPI_WDAT_SET_STOPPED_STATE = 11,
1293 ACPI_WDAT_GET_REBOOT = 16,
1294 ACPI_WDAT_SET_REBOOT = 17,
1295 ACPI_WDAT_GET_SHUTDOWN = 18,
1296 ACPI_WDAT_SET_SHUTDOWN = 19,
1297 ACPI_WDAT_GET_STATUS = 32,
1298 ACPI_WDAT_SET_STATUS = 33,
1299 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
1300};
1301
1302/* Values for Instruction field above */
1303
1304enum acpi_wdat_instructions {
1305 ACPI_WDAT_READ_VALUE = 0,
1306 ACPI_WDAT_READ_COUNTDOWN = 1,
1307 ACPI_WDAT_WRITE_VALUE = 2,
1308 ACPI_WDAT_WRITE_COUNTDOWN = 3,
1309 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
1310 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
1311};
1312
1313/*******************************************************************************
1314 *
1315 * WDRT - Watchdog Resource Table
1316 *
1317 ******************************************************************************/
1318
1319struct acpi_table_wdrt {
1320 struct acpi_table_header header; /* Common ACPI table header */
1321 u32 header_length; /* Watchdog Header Length */
1322 u8 pci_segment; /* PCI Segment number */
1323 u8 pci_bus; /* PCI Bus number */
1324 u8 pci_device; /* PCI Device number */
1325 u8 pci_function; /* PCI Function number */
1326 u32 timer_period; /* Period of one timer count (msec) */
1327 u32 max_count; /* Maximum counter value supported */
1328 u32 min_count; /* Minimum counter value */
1329 u8 flags;
1330 u8 reserved[3];
1331 u32 entries; /* Number of watchdog entries that follow */
1332};
1333
1334/* Flags */
1335
1336#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */
1337
1338/* Reset to default packing */ 910/* Reset to default packing */
1339 911
1340#pragma pack() 912#pragma pack()