at v2.6.32-rc6 868 lines 23 kB view raw
1#ifndef __ACTBL2_H__ 2#define __ACTBL2_H__ 3 4/******************************************************************************* 5 * 6 * Additional ACPI Tables (2) 7 * 8 * These tables are not consumed directly by the ACPICA subsystem, but are 9 * included here to support device drivers and the AML disassembler. 10 * 11 * The tables in this file are defined by third-party specifications, and are 12 * not defined directly by the ACPI specification itself. 13 * 14 ******************************************************************************/ 15 16/* 17 * Values for description table header signatures for tables defined in this 18 * file. Useful because they make it more difficult to inadvertently type in 19 * the wrong signature. 20 */ 21#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 22#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 23#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 24#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 25#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 26#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ 27#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 28#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 29#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 30#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 31#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 32#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 33#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 34#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 35#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 36#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 37 38/* 39 * All tables must be byte-packed to match the ACPI specification, since 40 * the tables are provided by the system BIOS. 41 */ 42#pragma pack(1) 43 44/* 45 * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 46 * This is the only type that is even remotely portable. Anything else is not 47 * portable, so do not use any other bitfield types. 48 */ 49 50/******************************************************************************* 51 * 52 * ASF - Alert Standard Format table (Signature "ASF!") 53 * Revision 0x10 54 * 55 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 56 * 57 ******************************************************************************/ 58 59struct acpi_table_asf { 60 struct acpi_table_header header; /* Common ACPI table header */ 61}; 62 63/* ASF subtable header */ 64 65struct acpi_asf_header { 66 u8 type; 67 u8 reserved; 68 u16 length; 69}; 70 71/* Values for Type field above */ 72 73enum acpi_asf_type { 74 ACPI_ASF_TYPE_INFO = 0, 75 ACPI_ASF_TYPE_ALERT = 1, 76 ACPI_ASF_TYPE_CONTROL = 2, 77 ACPI_ASF_TYPE_BOOT = 3, 78 ACPI_ASF_TYPE_ADDRESS = 4, 79 ACPI_ASF_TYPE_RESERVED = 5 80}; 81 82/* 83 * ASF subtables 84 */ 85 86/* 0: ASF Information */ 87 88struct acpi_asf_info { 89 struct acpi_asf_header header; 90 u8 min_reset_value; 91 u8 min_poll_interval; 92 u16 system_id; 93 u32 mfg_id; 94 u8 flags; 95 u8 reserved2[3]; 96}; 97 98/* Masks for Flags field above */ 99 100#define ACPI_ASF_SMBUS_PROTOCOLS (1) 101 102/* 1: ASF Alerts */ 103 104struct acpi_asf_alert { 105 struct acpi_asf_header header; 106 u8 assert_mask; 107 u8 deassert_mask; 108 u8 alerts; 109 u8 data_length; 110}; 111 112struct acpi_asf_alert_data { 113 u8 address; 114 u8 command; 115 u8 mask; 116 u8 value; 117 u8 sensor_type; 118 u8 type; 119 u8 offset; 120 u8 source_type; 121 u8 severity; 122 u8 sensor_number; 123 u8 entity; 124 u8 instance; 125}; 126 127/* 2: ASF Remote Control */ 128 129struct acpi_asf_remote { 130 struct acpi_asf_header header; 131 u8 controls; 132 u8 data_length; 133 u16 reserved2; 134}; 135 136struct acpi_asf_control_data { 137 u8 function; 138 u8 address; 139 u8 command; 140 u8 value; 141}; 142 143/* 3: ASF RMCP Boot Options */ 144 145struct acpi_asf_rmcp { 146 struct acpi_asf_header header; 147 u8 capabilities[7]; 148 u8 completion_code; 149 u32 enterprise_id; 150 u8 command; 151 u16 parameter; 152 u16 boot_options; 153 u16 oem_parameters; 154}; 155 156/* 4: ASF Address */ 157 158struct acpi_asf_address { 159 struct acpi_asf_header header; 160 u8 eprom_address; 161 u8 devices; 162}; 163 164/******************************************************************************* 165 * 166 * BOOT - Simple Boot Flag Table 167 * Version 1 168 * 169 * Conforms to the "Simple Boot Flag Specification", Version 2.1 170 * 171 ******************************************************************************/ 172 173struct acpi_table_boot { 174 struct acpi_table_header header; /* Common ACPI table header */ 175 u8 cmos_index; /* Index in CMOS RAM for the boot register */ 176 u8 reserved[3]; 177}; 178 179/******************************************************************************* 180 * 181 * DBGP - Debug Port table 182 * Version 1 183 * 184 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 185 * 186 ******************************************************************************/ 187 188struct acpi_table_dbgp { 189 struct acpi_table_header header; /* Common ACPI table header */ 190 u8 type; /* 0=full 16550, 1=subset of 16550 */ 191 u8 reserved[3]; 192 struct acpi_generic_address debug_port; 193}; 194 195/******************************************************************************* 196 * 197 * DMAR - DMA Remapping table 198 * Version 1 199 * 200 * Conforms to "Intel Virtualization Technology for Directed I/O", 201 * Version 1.2, Sept. 2008 202 * 203 ******************************************************************************/ 204 205struct acpi_table_dmar { 206 struct acpi_table_header header; /* Common ACPI table header */ 207 u8 width; /* Host Address Width */ 208 u8 flags; 209 u8 reserved[10]; 210}; 211 212/* Masks for Flags field above */ 213 214#define ACPI_DMAR_INTR_REMAP (1) 215 216/* DMAR subtable header */ 217 218struct acpi_dmar_header { 219 u16 type; 220 u16 length; 221}; 222 223/* Values for subtable type in struct acpi_dmar_header */ 224 225enum acpi_dmar_type { 226 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 227 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 228 ACPI_DMAR_TYPE_ATSR = 2, 229 ACPI_DMAR_HARDWARE_AFFINITY = 3, 230 ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 231}; 232 233/* DMAR Device Scope structure */ 234 235struct acpi_dmar_device_scope { 236 u8 entry_type; 237 u8 length; 238 u16 reserved; 239 u8 enumeration_id; 240 u8 bus; 241}; 242 243/* Values for entry_type in struct acpi_dmar_device_scope */ 244 245enum acpi_dmar_scope_type { 246 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 247 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 248 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 249 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 250 ACPI_DMAR_SCOPE_TYPE_HPET = 4, 251 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 252}; 253 254struct acpi_dmar_pci_path { 255 u8 dev; 256 u8 fn; 257}; 258 259/* 260 * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 261 */ 262 263/* 0: Hardware Unit Definition */ 264 265struct acpi_dmar_hardware_unit { 266 struct acpi_dmar_header header; 267 u8 flags; 268 u8 reserved; 269 u16 segment; 270 u64 address; /* Register Base Address */ 271}; 272 273/* Masks for Flags field above */ 274 275#define ACPI_DMAR_INCLUDE_ALL (1) 276 277/* 1: Reserved Memory Defininition */ 278 279struct acpi_dmar_reserved_memory { 280 struct acpi_dmar_header header; 281 u16 reserved; 282 u16 segment; 283 u64 base_address; /* 4_k aligned base address */ 284 u64 end_address; /* 4_k aligned limit address */ 285}; 286 287/* Masks for Flags field above */ 288 289#define ACPI_DMAR_ALLOW_ALL (1) 290 291/* 2: Root Port ATS Capability Reporting Structure */ 292 293struct acpi_dmar_atsr { 294 struct acpi_dmar_header header; 295 u8 flags; 296 u8 reserved; 297 u16 segment; 298}; 299 300/* Masks for Flags field above */ 301 302#define ACPI_DMAR_ALL_PORTS (1) 303 304/* 3: Remapping Hardware Static Affinity Structure */ 305 306struct acpi_dmar_rhsa { 307 struct acpi_dmar_header header; 308 u32 reserved; 309 u64 base_address; 310 u32 proximity_domain; 311}; 312 313/******************************************************************************* 314 * 315 * HPET - High Precision Event Timer table 316 * Version 1 317 * 318 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 319 * Version 1.0a, October 2004 320 * 321 ******************************************************************************/ 322 323struct acpi_table_hpet { 324 struct acpi_table_header header; /* Common ACPI table header */ 325 u32 id; /* Hardware ID of event timer block */ 326 struct acpi_generic_address address; /* Address of event timer block */ 327 u8 sequence; /* HPET sequence number */ 328 u16 minimum_tick; /* Main counter min tick, periodic mode */ 329 u8 flags; 330}; 331 332/* Masks for Flags field above */ 333 334#define ACPI_HPET_PAGE_PROTECT_MASK (3) 335 336/* Values for Page Protect flags */ 337 338enum acpi_hpet_page_protect { 339 ACPI_HPET_NO_PAGE_PROTECT = 0, 340 ACPI_HPET_PAGE_PROTECT4 = 1, 341 ACPI_HPET_PAGE_PROTECT64 = 2 342}; 343 344/******************************************************************************* 345 * 346 * IBFT - Boot Firmware Table 347 * Version 1 348 * 349 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 350 * Specification", Version 1.01, March 1, 2007 351 * 352 * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 353 * Therefore, it is not currently supported by the disassembler. 354 * 355 ******************************************************************************/ 356 357struct acpi_table_ibft { 358 struct acpi_table_header header; /* Common ACPI table header */ 359 u8 reserved[12]; 360}; 361 362/* IBFT common subtable header */ 363 364struct acpi_ibft_header { 365 u8 type; 366 u8 version; 367 u16 length; 368 u8 index; 369 u8 flags; 370}; 371 372/* Values for Type field above */ 373 374enum acpi_ibft_type { 375 ACPI_IBFT_TYPE_NOT_USED = 0, 376 ACPI_IBFT_TYPE_CONTROL = 1, 377 ACPI_IBFT_TYPE_INITIATOR = 2, 378 ACPI_IBFT_TYPE_NIC = 3, 379 ACPI_IBFT_TYPE_TARGET = 4, 380 ACPI_IBFT_TYPE_EXTENSIONS = 5, 381 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 382}; 383 384/* IBFT subtables */ 385 386struct acpi_ibft_control { 387 struct acpi_ibft_header header; 388 u16 extensions; 389 u16 initiator_offset; 390 u16 nic0_offset; 391 u16 target0_offset; 392 u16 nic1_offset; 393 u16 target1_offset; 394}; 395 396struct acpi_ibft_initiator { 397 struct acpi_ibft_header header; 398 u8 sns_server[16]; 399 u8 slp_server[16]; 400 u8 primary_server[16]; 401 u8 secondary_server[16]; 402 u16 name_length; 403 u16 name_offset; 404}; 405 406struct acpi_ibft_nic { 407 struct acpi_ibft_header header; 408 u8 ip_address[16]; 409 u8 subnet_mask_prefix; 410 u8 origin; 411 u8 gateway[16]; 412 u8 primary_dns[16]; 413 u8 secondary_dns[16]; 414 u8 dhcp[16]; 415 u16 vlan; 416 u8 mac_address[6]; 417 u16 pci_address; 418 u16 name_length; 419 u16 name_offset; 420}; 421 422struct acpi_ibft_target { 423 struct acpi_ibft_header header; 424 u8 target_ip_address[16]; 425 u16 target_ip_socket; 426 u8 target_boot_lun[8]; 427 u8 chap_type; 428 u8 nic_association; 429 u16 target_name_length; 430 u16 target_name_offset; 431 u16 chap_name_length; 432 u16 chap_name_offset; 433 u16 chap_secret_length; 434 u16 chap_secret_offset; 435 u16 reverse_chap_name_length; 436 u16 reverse_chap_name_offset; 437 u16 reverse_chap_secret_length; 438 u16 reverse_chap_secret_offset; 439}; 440 441/******************************************************************************* 442 * 443 * IVRS - I/O Virtualization Reporting Structure 444 * Version 1 445 * 446 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 447 * Revision 1.26, February 2009. 448 * 449 ******************************************************************************/ 450 451struct acpi_table_ivrs { 452 struct acpi_table_header header; /* Common ACPI table header */ 453 u32 info; /* Common virtualization info */ 454 u64 reserved; 455}; 456 457/* Values for Info field above */ 458 459#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 460#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 461#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 462 463/* IVRS subtable header */ 464 465struct acpi_ivrs_header { 466 u8 type; /* Subtable type */ 467 u8 flags; 468 u16 length; /* Subtable length */ 469 u16 device_id; /* ID of IOMMU */ 470}; 471 472/* Values for subtable Type above */ 473 474enum acpi_ivrs_type { 475 ACPI_IVRS_TYPE_HARDWARE = 0x10, 476 ACPI_IVRS_TYPE_MEMORY1 = 0x20, 477 ACPI_IVRS_TYPE_MEMORY2 = 0x21, 478 ACPI_IVRS_TYPE_MEMORY3 = 0x22 479}; 480 481/* Masks for Flags field above for IVHD subtable */ 482 483#define ACPI_IVHD_TT_ENABLE (1) 484#define ACPI_IVHD_PASS_PW (1<<1) 485#define ACPI_IVHD_RES_PASS_PW (1<<2) 486#define ACPI_IVHD_ISOC (1<<3) 487#define ACPI_IVHD_IOTLB (1<<4) 488 489/* Masks for Flags field above for IVMD subtable */ 490 491#define ACPI_IVMD_UNITY (1) 492#define ACPI_IVMD_READ (1<<1) 493#define ACPI_IVMD_WRITE (1<<2) 494#define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 495 496/* 497 * IVRS subtables, correspond to Type in struct acpi_ivrs_header 498 */ 499 500/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 501 502struct acpi_ivrs_hardware { 503 struct acpi_ivrs_header header; 504 u16 capability_offset; /* Offset for IOMMU control fields */ 505 u64 base_address; /* IOMMU control registers */ 506 u16 pci_segment_group; 507 u16 info; /* MSI number and unit ID */ 508 u32 reserved; 509}; 510 511/* Masks for Info field above */ 512 513#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 514#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */ 515 516/* 517 * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 518 * Upper two bits of the Type field are the (encoded) length of the structure. 519 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 520 * are reserved for future use but not defined. 521 */ 522struct acpi_ivrs_de_header { 523 u8 type; 524 u16 id; 525 u8 data_setting; 526}; 527 528/* Length of device entry is in the top two bits of Type field above */ 529 530#define ACPI_IVHD_ENTRY_LENGTH 0xC0 531 532/* Values for device entry Type field above */ 533 534enum acpi_ivrs_device_entry_type { 535 /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 536 537 ACPI_IVRS_TYPE_PAD4 = 0, 538 ACPI_IVRS_TYPE_ALL = 1, 539 ACPI_IVRS_TYPE_SELECT = 2, 540 ACPI_IVRS_TYPE_START = 3, 541 ACPI_IVRS_TYPE_END = 4, 542 543 /* 8-byte device entries */ 544 545 ACPI_IVRS_TYPE_PAD8 = 64, 546 ACPI_IVRS_TYPE_NOT_USED = 65, 547 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 548 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 549 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 550 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 551 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 552}; 553 554/* Values for Data field above */ 555 556#define ACPI_IVHD_INIT_PASS (1) 557#define ACPI_IVHD_EINT_PASS (1<<1) 558#define ACPI_IVHD_NMI_PASS (1<<2) 559#define ACPI_IVHD_SYSTEM_MGMT (3<<4) 560#define ACPI_IVHD_LINT0_PASS (1<<6) 561#define ACPI_IVHD_LINT1_PASS (1<<7) 562 563/* Types 0-4: 4-byte device entry */ 564 565struct acpi_ivrs_device4 { 566 struct acpi_ivrs_de_header header; 567}; 568 569/* Types 66-67: 8-byte device entry */ 570 571struct acpi_ivrs_device8a { 572 struct acpi_ivrs_de_header header; 573 u8 reserved1; 574 u16 used_id; 575 u8 reserved2; 576}; 577 578/* Types 70-71: 8-byte device entry */ 579 580struct acpi_ivrs_device8b { 581 struct acpi_ivrs_de_header header; 582 u32 extended_data; 583}; 584 585/* Values for extended_data above */ 586 587#define ACPI_IVHD_ATS_DISABLED (1<<31) 588 589/* Type 72: 8-byte device entry */ 590 591struct acpi_ivrs_device8c { 592 struct acpi_ivrs_de_header header; 593 u8 handle; 594 u16 used_id; 595 u8 variety; 596}; 597 598/* Values for Variety field above */ 599 600#define ACPI_IVHD_IOAPIC 1 601#define ACPI_IVHD_HPET 2 602 603/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 604 605struct acpi_ivrs_memory { 606 struct acpi_ivrs_header header; 607 u16 aux_data; 608 u64 reserved; 609 u64 start_address; 610 u64 memory_length; 611}; 612 613/******************************************************************************* 614 * 615 * MCFG - PCI Memory Mapped Configuration table and sub-table 616 * Version 1 617 * 618 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 619 * 620 ******************************************************************************/ 621 622struct acpi_table_mcfg { 623 struct acpi_table_header header; /* Common ACPI table header */ 624 u8 reserved[8]; 625}; 626 627/* Subtable */ 628 629struct acpi_mcfg_allocation { 630 u64 address; /* Base address, processor-relative */ 631 u16 pci_segment; /* PCI segment group number */ 632 u8 start_bus_number; /* Starting PCI Bus number */ 633 u8 end_bus_number; /* Final PCI Bus number */ 634 u32 reserved; 635}; 636 637/******************************************************************************* 638 * 639 * SPCR - Serial Port Console Redirection table 640 * Version 1 641 * 642 * Conforms to "Serial Port Console Redirection Table", 643 * Version 1.00, January 11, 2002 644 * 645 ******************************************************************************/ 646 647struct acpi_table_spcr { 648 struct acpi_table_header header; /* Common ACPI table header */ 649 u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 650 u8 reserved[3]; 651 struct acpi_generic_address serial_port; 652 u8 interrupt_type; 653 u8 pc_interrupt; 654 u32 interrupt; 655 u8 baud_rate; 656 u8 parity; 657 u8 stop_bits; 658 u8 flow_control; 659 u8 terminal_type; 660 u8 reserved1; 661 u16 pci_device_id; 662 u16 pci_vendor_id; 663 u8 pci_bus; 664 u8 pci_device; 665 u8 pci_function; 666 u32 pci_flags; 667 u8 pci_segment; 668 u32 reserved2; 669}; 670 671/* Masks for pci_flags field above */ 672 673#define ACPI_SPCR_DO_NOT_DISABLE (1) 674 675/******************************************************************************* 676 * 677 * SPMI - Server Platform Management Interface table 678 * Version 5 679 * 680 * Conforms to "Intelligent Platform Management Interface Specification 681 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 682 * June 12, 2009 markup. 683 * 684 ******************************************************************************/ 685 686struct acpi_table_spmi { 687 struct acpi_table_header header; /* Common ACPI table header */ 688 u8 interface_type; 689 u8 reserved; /* Must be 1 */ 690 u16 spec_revision; /* Version of IPMI */ 691 u8 interrupt_type; 692 u8 gpe_number; /* GPE assigned */ 693 u8 reserved1; 694 u8 pci_device_flag; 695 u32 interrupt; 696 struct acpi_generic_address ipmi_register; 697 u8 pci_segment; 698 u8 pci_bus; 699 u8 pci_device; 700 u8 pci_function; 701 u8 reserved2; 702}; 703 704/* Values for interface_type above */ 705 706enum acpi_spmi_interface_types { 707 ACPI_SPMI_NOT_USED = 0, 708 ACPI_SPMI_KEYBOARD = 1, 709 ACPI_SPMI_SMI = 2, 710 ACPI_SPMI_BLOCK_TRANSFER = 3, 711 ACPI_SPMI_SMBUS = 4, 712 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 713}; 714 715/******************************************************************************* 716 * 717 * TCPA - Trusted Computing Platform Alliance table 718 * Version 1 719 * 720 * Conforms to "TCG PC Specific Implementation Specification", 721 * Version 1.1, August 18, 2003 722 * 723 ******************************************************************************/ 724 725struct acpi_table_tcpa { 726 struct acpi_table_header header; /* Common ACPI table header */ 727 u16 reserved; 728 u32 max_log_length; /* Maximum length for the event log area */ 729 u64 log_address; /* Address of the event log area */ 730}; 731 732/******************************************************************************* 733 * 734 * UEFI - UEFI Boot optimization Table 735 * Version 1 736 * 737 * Conforms to "Unified Extensible Firmware Interface Specification", 738 * Version 2.3, May 8, 2009 739 * 740 ******************************************************************************/ 741 742struct acpi_table_uefi { 743 struct acpi_table_header header; /* Common ACPI table header */ 744 u8 identifier[16]; /* UUID identifier */ 745 u16 data_offset; /* Offset of remaining data in table */ 746}; 747 748/******************************************************************************* 749 * 750 * WAET - Windows ACPI Emulated devices Table 751 * Version 1 752 * 753 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 754 * 755 ******************************************************************************/ 756 757struct acpi_table_waet { 758 struct acpi_table_header header; /* Common ACPI table header */ 759 u32 flags; 760}; 761 762/* Masks for Flags field above */ 763 764#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 765#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 766 767/******************************************************************************* 768 * 769 * WDAT - Watchdog Action Table 770 * Version 1 771 * 772 * Conforms to "Hardware Watchdog Timers Design Specification", 773 * Copyright 2006 Microsoft Corporation. 774 * 775 ******************************************************************************/ 776 777struct acpi_table_wdat { 778 struct acpi_table_header header; /* Common ACPI table header */ 779 u32 header_length; /* Watchdog Header Length */ 780 u16 pci_segment; /* PCI Segment number */ 781 u8 pci_bus; /* PCI Bus number */ 782 u8 pci_device; /* PCI Device number */ 783 u8 pci_function; /* PCI Function number */ 784 u8 reserved[3]; 785 u32 timer_period; /* Period of one timer count (msec) */ 786 u32 max_count; /* Maximum counter value supported */ 787 u32 min_count; /* Minimum counter value */ 788 u8 flags; 789 u8 reserved2[3]; 790 u32 entries; /* Number of watchdog entries that follow */ 791}; 792 793/* Masks for Flags field above */ 794 795#define ACPI_WDAT_ENABLED (1) 796#define ACPI_WDAT_STOPPED 0x80 797 798/* WDAT Instruction Entries (actions) */ 799 800struct acpi_wdat_entry { 801 u8 action; 802 u8 instruction; 803 u16 reserved; 804 struct acpi_generic_address register_region; 805 u32 value; /* Value used with Read/Write register */ 806 u32 mask; /* Bitmask required for this register instruction */ 807}; 808 809/* Values for Action field above */ 810 811enum acpi_wdat_actions { 812 ACPI_WDAT_RESET = 1, 813 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 814 ACPI_WDAT_GET_COUNTDOWN = 5, 815 ACPI_WDAT_SET_COUNTDOWN = 6, 816 ACPI_WDAT_GET_RUNNING_STATE = 8, 817 ACPI_WDAT_SET_RUNNING_STATE = 9, 818 ACPI_WDAT_GET_STOPPED_STATE = 10, 819 ACPI_WDAT_SET_STOPPED_STATE = 11, 820 ACPI_WDAT_GET_REBOOT = 16, 821 ACPI_WDAT_SET_REBOOT = 17, 822 ACPI_WDAT_GET_SHUTDOWN = 18, 823 ACPI_WDAT_SET_SHUTDOWN = 19, 824 ACPI_WDAT_GET_STATUS = 32, 825 ACPI_WDAT_SET_STATUS = 33, 826 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 827}; 828 829/* Values for Instruction field above */ 830 831enum acpi_wdat_instructions { 832 ACPI_WDAT_READ_VALUE = 0, 833 ACPI_WDAT_READ_COUNTDOWN = 1, 834 ACPI_WDAT_WRITE_VALUE = 2, 835 ACPI_WDAT_WRITE_COUNTDOWN = 3, 836 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 837 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 838}; 839 840/******************************************************************************* 841 * 842 * WDRT - Watchdog Resource Table 843 * Version 1 844 * 845 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 846 * Version 1.01, August 28, 2006 847 * 848 ******************************************************************************/ 849 850struct acpi_table_wdrt { 851 struct acpi_table_header header; /* Common ACPI table header */ 852 struct acpi_generic_address control_register; 853 struct acpi_generic_address count_register; 854 u16 pci_device_id; 855 u16 pci_vendor_id; 856 u8 pci_bus; /* PCI Bus number */ 857 u8 pci_device; /* PCI Device number */ 858 u8 pci_function; /* PCI Function number */ 859 u8 pci_segment; /* PCI Segment number */ 860 u16 max_count; /* Maximum counter value supported */ 861 u8 units; 862}; 863 864/* Reset to default packing */ 865 866#pragma pack() 867 868#endif /* __ACTBL2_H__ */