diff options
-rw-r--r-- | include/acpi/actbl1.h | 335 |
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 | ||
92 | struct acpi_subtable_header { | 99 | struct 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 | |||
106 | struct 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 | |||
231 | struct 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 | |||
237 | struct 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 | |||
405 | struct 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 | |||
414 | struct acpi_einj_entry { | ||
415 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | ||
416 | }; | ||
417 | |||
418 | /* Values for Action field above */ | ||
419 | |||
420 | enum 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 | |||
435 | enum 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 | |||
450 | struct 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 | |||
459 | struct acpi_erst_entry { | ||
460 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | ||
461 | }; | ||
462 | |||
463 | /* Values for Action field above */ | ||
464 | |||
465 | enum 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 | |||
487 | enum 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 | |||
516 | struct 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 | |||
552 | struct 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 | |||
559 | struct 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 | |||
569 | enum 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 | |||
581 | struct 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 | |||
591 | struct 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 | |||
601 | struct 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 | |||
617 | struct 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 | |||
966 | struct 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 | |||
979 | struct 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 | |||
997 | struct acpi_wdat_entry { | ||
998 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | ||
999 | }; | ||
1000 | |||
1001 | /* Values for Action field above */ | ||
1002 | |||
1003 | enum 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 | |||
1023 | enum 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 | ******************************************************************************/ |