aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-04-10 11:06:42 -0400
committerLen Brown <len.brown@intel.com>2008-04-22 14:29:30 -0400
commit970d9c9ec313daa1b41db0f8bdd1ca8cc2903822 (patch)
tree70e28fa19c02baab407afb1e6507b355fcd49ce8
parent47c08729bf1c60d522d020a7f8bc15d1c70e6ecb (diff)
ACPICA: Include file support for new ACPI tables
Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, IBFT, UEFI, WDAT. Disassembler support is forthcoming. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r--include/acpi/actbl1.h335
1 files changed, 334 insertions, 1 deletions
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index dd8e11e624fa..5d39992314a9 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -58,12 +58,17 @@
58 * it more difficult to inadvertently type in the wrong signature. 58 * it more difficult to inadvertently type in the wrong signature.
59 */ 59 */
60#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 60#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
61#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
61#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 62#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
62#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 63#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
63#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 64#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
64#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 65#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
65#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 66#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
67#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
68#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
69#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
66#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 70#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
71#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */
67#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 72#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
68#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
69#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 74#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
@@ -73,6 +78,8 @@
73#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 78#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
74#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 79#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
75#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance 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 */
76#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 83#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
77 84
78/* 85/*
@@ -87,13 +94,25 @@
87 * portable, so do not use any other bitfield types. 94 * portable, so do not use any other bitfield types.
88 */ 95 */
89 96
90/* Common Sub-table header (used in MADT, SRAT, etc.) */ 97/* Common Subtable header (used in MADT, SRAT, etc.) */
91 98
92struct acpi_subtable_header { 99struct acpi_subtable_header {
93 u8 type; 100 u8 type;
94 u8 length; 101 u8 length;
95}; 102};
96 103
104/* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */
105
106struct acpi_whea_header {
107 u8 action;
108 u8 instruction;
109 u8 flags;
110 u8 reserved;
111 struct acpi_generic_address register_region;
112 u32 value; /* Value used with Read/Write register */
113 u32 mask; /* Bitmask required for this register instruction */
114};
115
97/******************************************************************************* 116/*******************************************************************************
98 * 117 *
99 * ASF - Alert Standard Format table (Signature "ASF!") 118 * ASF - Alert Standard Format table (Signature "ASF!")
@@ -205,6 +224,34 @@ struct acpi_asf_address {
205 224
206/******************************************************************************* 225/*******************************************************************************
207 * 226 *
227 * BERT - Boot Error Record Table
228 *
229 ******************************************************************************/
230
231struct acpi_table_bert {
232 struct acpi_table_header header; /* Common ACPI table header */
233 u32 region_length; /* Length of the boot error region */
234 u64 address; /* Physical addresss of the error region */
235};
236
237struct acpi_bert_region {
238 u32 block_status;
239 u32 raw_data_offset;
240 u32 raw_data_length;
241 u32 data_length;
242 u32 error_severity;
243 u8 error_data[1];
244};
245
246/* block_status Flags */
247
248#define ACPI_BERT_UNCORRECTABLE (1)
249#define ACPI_BERT_CORRECTABLE (2)
250#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4)
251#define ACPI_BERT_MULTIPLE_CORRECTABLE (8)
252
253/*******************************************************************************
254 *
208 * BOOT - Simple Boot Flag Table 255 * BOOT - Simple Boot Flag Table
209 * 256 *
210 ******************************************************************************/ 257 ******************************************************************************/
@@ -351,6 +398,130 @@ struct acpi_table_ecdt {
351 398
352/******************************************************************************* 399/*******************************************************************************
353 * 400 *
401 * EINJ - Error Injection Table
402 *
403 ******************************************************************************/
404
405struct acpi_table_einj {
406 struct acpi_table_header header; /* Common ACPI table header */
407 u32 header_length;
408 u32 reserved;
409 u32 entries;
410};
411
412/* EINJ Injection Instruction Entries (actions) */
413
414struct acpi_einj_entry {
415 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
416};
417
418/* Values for Action field above */
419
420enum acpi_einj_actions {
421 ACPI_EINJ_BEGIN_OPERATION = 0,
422 ACPI_EINJ_GET_TRIGGER_TABLE = 1,
423 ACPI_EINJ_SET_ERROR_TYPE = 2,
424 ACPI_EINJ_GET_ERROR_TYPE = 3,
425 ACPI_EINJ_END_OPERATION = 4,
426 ACPI_EINJ_EXECUTE_OPERATION = 5,
427 ACPI_EINJ_CHECK_BUSY_STATUS = 6,
428 ACPI_EINJ_GET_COMMAND_STATUS = 7,
429 ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */
430 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
431};
432
433/* Values for Instruction field above */
434
435enum acpi_einj_instructions {
436 ACPI_EINJ_READ_REGISTER = 0,
437 ACPI_EINJ_READ_REGISTER_VALUE = 1,
438 ACPI_EINJ_WRITE_REGISTER = 2,
439 ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
440 ACPI_EINJ_NOOP = 4,
441 ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */
442};
443
444/*******************************************************************************
445 *
446 * ERST - Error Record Serialization Table
447 *
448 ******************************************************************************/
449
450struct acpi_table_erst {
451 struct acpi_table_header header; /* Common ACPI table header */
452 u32 header_length;
453 u32 reserved;
454 u32 entries;
455};
456
457/* ERST Serialization Entries (actions) */
458
459struct acpi_erst_entry {
460 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
461};
462
463/* Values for Action field above */
464
465enum acpi_erst_actions {
466 ACPI_ERST_BEGIN_WRITE_OPERATION = 0,
467 ACPI_ERST_BEGIN_READ_OPERATION = 1,
468 ACPI_ERST_BETGIN_CLEAR_OPERATION = 2,
469 ACPI_ERST_END_OPERATION = 3,
470 ACPI_ERST_SET_RECORD_OFFSET = 4,
471 ACPI_ERST_EXECUTE_OPERATION = 5,
472 ACPI_ERST_CHECK_BUSY_STATUS = 6,
473 ACPI_ERST_GET_COMMAND_STATUS = 7,
474 ACPI_ERST_GET_RECORD_IDENTIFIER = 8,
475 ACPI_ERST_SET_RECORD_IDENTIFIER = 9,
476 ACPI_ERST_GET_RECORD_COUNT = 10,
477 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
478 ACPI_ERST_NOT_USED = 12,
479 ACPI_ERST_GET_ERROR_RANGE = 13,
480 ACPI_ERST_GET_ERROR_LENGTH = 14,
481 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
482 ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */
483};
484
485/* Values for Instruction field above */
486
487enum acpi_erst_instructions {
488 ACPI_ERST_READ_REGISTER = 0,
489 ACPI_ERST_READ_REGISTER_VALUE = 1,
490 ACPI_ERST_WRITE_REGISTER = 2,
491 ACPI_ERST_WRITE_REGISTER_VALUE = 3,
492 ACPI_ERST_NOOP = 4,
493 ACPI_ERST_LOAD_VAR1 = 5,
494 ACPI_ERST_LOAD_VAR2 = 6,
495 ACPI_ERST_STORE_VAR1 = 7,
496 ACPI_ERST_ADD = 8,
497 ACPI_ERST_SUBTRACT = 9,
498 ACPI_ERST_ADD_VALUE = 10,
499 ACPI_ERST_SUBTRACT_VALUE = 11,
500 ACPI_ERST_STALL = 12,
501 ACPI_ERST_STALL_WHILE_TRUE = 13,
502 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
503 ACPI_ERST_GOTO = 15,
504 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
505 ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
506 ACPI_ERST_MOVE_DATA = 18,
507 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
508};
509
510/*******************************************************************************
511 *
512 * HEST - Hardware Error Source Table
513 *
514 ******************************************************************************/
515
516struct acpi_table_hest {
517 struct acpi_table_header header; /* Common ACPI table header */
518 u32 error_source_count;
519};
520
521/* TBD: Need Error Source Descriptor layout */
522
523/*******************************************************************************
524 *
354 * HPET - High Precision Event Timer table 525 * HPET - High Precision Event Timer table
355 * 526 *
356 ******************************************************************************/ 527 ******************************************************************************/
@@ -374,6 +545,96 @@ struct acpi_table_hpet {
374 545
375/******************************************************************************* 546/*******************************************************************************
376 * 547 *
548 * IBFT - i_sCSI Boot Firmware Table
549 *
550 ******************************************************************************/
551
552struct acpi_table_ibft {
553 struct acpi_table_header header; /* Common ACPI table header */
554 u8 reserved[12];
555};
556
557/* IBFT common subtable header */
558
559struct acpi_ibft_header {
560 u8 type;
561 u8 version;
562 u16 length;
563 u8 index;
564 u8 flags;
565};
566
567/* Values for Type field above */
568
569enum acpi_ibft_type {
570 ACPI_IBFT_TYPE_NOT_USED = 0,
571 ACPI_IBFT_TYPE_CONTROL = 1,
572 ACPI_IBFT_TYPE_INITIATOR = 2,
573 ACPI_IBFT_TYPE_NIC = 3,
574 ACPI_IBFT_TYPE_TARGET = 4,
575 ACPI_IBFT_TYPE_EXTENSIONS = 5,
576 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
577};
578
579/* IBFT subtables */
580
581struct acpi_ibft_control {
582 struct acpi_ibft_header header;
583 u16 extensions;
584 u16 initiator_offset;
585 u16 nic0_offset;
586 u16 target0_offset;
587 u16 nic1_offset;
588 u16 target1_offset;
589};
590
591struct acpi_ibft_initiator {
592 struct acpi_ibft_header header;
593 u8 sns_server[16];
594 u8 slp_server[16];
595 u8 primary_server[16];
596 u8 secondary_server[16];
597 u16 name_length;
598 u16 name_offset;
599};
600
601struct acpi_ibft_nic {
602 struct acpi_ibft_header header;
603 u8 ip_address[16];
604 u8 subnet_mask_prefix;
605 u8 origin;
606 u8 gateway[16];
607 u8 primary_dns[16];
608 u8 secondary_dns[16];
609 u8 dhcp[16];
610 u16 vlan;
611 u8 mac_address[6];
612 u16 pci_address;
613 u16 name_length;
614 u16 name_offset;
615};
616
617struct acpi_ibft_target {
618 struct acpi_ibft_header header;
619 u8 target_ip_address[16];
620 u16 target_ip_socket;
621 u8 target_boot_lun[8];
622 u8 chap_type;
623 u8 nic_association;
624 u16 target_name_length;
625 u16 target_name_offset;
626 u16 chap_name_length;
627 u16 chap_name_offset;
628 u16 chap_secret_length;
629 u16 chap_secret_offset;
630 u16 reverse_chap_name_length;
631 u16 reverse_chap_name_offset;
632 u16 reverse_chap_secret_length;
633 u16 reverse_chap_secret_offset;
634};
635
636/*******************************************************************************
637 *
377 * MADT - Multiple APIC Description Table 638 * MADT - Multiple APIC Description Table
378 * 639 *
379 ******************************************************************************/ 640 ******************************************************************************/
@@ -698,6 +959,78 @@ struct acpi_table_tcpa {
698 959
699/******************************************************************************* 960/*******************************************************************************
700 * 961 *
962 * UEFI - UEFI Boot optimization Table
963 *
964 ******************************************************************************/
965
966struct acpi_table_uefi {
967 struct acpi_table_header header; /* Common ACPI table header */
968 u8 identifier[16]; /* UUID identifier */
969 u16 data_offset; /* Offset of remaining data in table */
970 u8 data;
971};
972
973/*******************************************************************************
974 *
975 * WDAT - Watchdog Action Table
976 *
977 ******************************************************************************/
978
979struct acpi_table_wdat {
980 struct acpi_table_header header; /* Common ACPI table header */
981 u32 header_length; /* Watchdog Header Length */
982 u16 pci_segment; /* PCI Segment number */
983 u8 pci_bus; /* PCI Bus number */
984 u8 pci_device; /* PCI Device number */
985 u8 pci_function; /* PCI Function number */
986 u8 reserved[3];
987 u32 timer_period; /* Period of one timer count (msec) */
988 u32 max_count; /* Maximum counter value supported */
989 u32 min_count; /* Minimum counter value */
990 u8 flags;
991 u8 reserved2[3];
992 u32 entries; /* Number of watchdog entries that follow */
993};
994
995/* WDAT Instruction Entries (actions) */
996
997struct acpi_wdat_entry {
998 struct acpi_whea_header whea_header; /* Common header for WHEA tables */
999};
1000
1001/* Values for Action field above */
1002
1003enum acpi_wdat_actions {
1004 ACPI_WDAT_RESET = 1,
1005 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
1006 ACPI_WDAT_GET_COUNTDOWN = 5,
1007 ACPI_WDAT_SET_COUNTDOWN = 6,
1008 ACPI_WDAT_GET_RUNNING_STATE = 8,
1009 ACPI_WDAT_SET_RUNNING_STATE = 9,
1010 ACPI_WDAT_GET_STOPPED_STATE = 10,
1011 ACPI_WDAT_SET_STOPPED_STATE = 11,
1012 ACPI_WDAT_GET_REBOOT = 16,
1013 ACPI_WDAT_SET_REBOOT = 17,
1014 ACPI_WDAT_GET_SHUTDOWN = 18,
1015 ACPI_WDAT_SET_SHUTDOWN = 19,
1016 ACPI_WDAT_GET_STATUS = 32,
1017 ACPI_WDAT_SET_STATUS = 33,
1018 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
1019};
1020
1021/* Values for Instruction field above */
1022
1023enum acpi_wdat_instructions {
1024 ACPI_WDAT_READ_VALUE = 0,
1025 ACPI_WDAT_READ_COUNTDOWN = 1,
1026 ACPI_WDAT_WRITE_VALUE = 2,
1027 ACPI_WDAT_WRITE_COUNTDOWN = 3,
1028 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
1029 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
1030};
1031
1032/*******************************************************************************
1033 *
701 * WDRT - Watchdog Resource Table 1034 * WDRT - Watchdog Resource Table
702 * 1035 *
703 ******************************************************************************/ 1036 ******************************************************************************/