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