actbl2.h revision 1.1.1.2
1/****************************************************************************** 2 * 3 * Name: actbl2.h - ACPI Specification Revision 2.0 Tables 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2011, 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 * 50 * Additional ACPI Tables (2) 51 * 52 * These tables are not consumed directly by the ACPICA subsystem, but are 53 * included here to support device drivers and the AML disassembler. 54 * 55 * The tables in this file are defined by third-party specifications, and are 56 * not defined directly by the ACPI specification itself. 57 * 58 ******************************************************************************/ 59 60 61/* 62 * Values for description table header signatures for tables defined in this 63 * file. Useful because they make it more difficult to inadvertently type in 64 * the wrong signature. 65 */ 66#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 67#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 68#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 69#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 70#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 71#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 72#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 74#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 75#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 76#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 77#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 78#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 79#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 80#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 81#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 82#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 83#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 84 85#ifdef ACPI_UNDEFINED_TABLES 86/* 87 * These tables have been seen in the field, but no definition has been found 88 */ 89#define ACPI_SIG_ATKG "ATKG" 90#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 91#define ACPI_SIG_IEIT "IEIT" 92#endif 93 94/* 95 * All tables must be byte-packed to match the ACPI specification, since 96 * the tables are provided by the system BIOS. 97 */ 98#pragma pack(1) 99 100/* 101 * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 102 * This is the only type that is even remotely portable. Anything else is not 103 * portable, so do not use any other bitfield types. 104 */ 105 106 107/******************************************************************************* 108 * 109 * ASF - Alert Standard Format table (Signature "ASF!") 110 * Revision 0x10 111 * 112 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 113 * 114 ******************************************************************************/ 115 116typedef struct acpi_table_asf 117{ 118 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 119 120} ACPI_TABLE_ASF; 121 122 123/* ASF subtable header */ 124 125typedef struct acpi_asf_header 126{ 127 UINT8 Type; 128 UINT8 Reserved; 129 UINT16 Length; 130 131} ACPI_ASF_HEADER; 132 133 134/* Values for Type field above */ 135 136enum AcpiAsfType 137{ 138 ACPI_ASF_TYPE_INFO = 0, 139 ACPI_ASF_TYPE_ALERT = 1, 140 ACPI_ASF_TYPE_CONTROL = 2, 141 ACPI_ASF_TYPE_BOOT = 3, 142 ACPI_ASF_TYPE_ADDRESS = 4, 143 ACPI_ASF_TYPE_RESERVED = 5 144}; 145 146/* 147 * ASF subtables 148 */ 149 150/* 0: ASF Information */ 151 152typedef struct acpi_asf_info 153{ 154 ACPI_ASF_HEADER Header; 155 UINT8 MinResetValue; 156 UINT8 MinPollInterval; 157 UINT16 SystemId; 158 UINT32 MfgId; 159 UINT8 Flags; 160 UINT8 Reserved2[3]; 161 162} ACPI_ASF_INFO; 163 164/* Masks for Flags field above */ 165 166#define ACPI_ASF_SMBUS_PROTOCOLS (1) 167 168 169/* 1: ASF Alerts */ 170 171typedef struct acpi_asf_alert 172{ 173 ACPI_ASF_HEADER Header; 174 UINT8 AssertMask; 175 UINT8 DeassertMask; 176 UINT8 Alerts; 177 UINT8 DataLength; 178 179} ACPI_ASF_ALERT; 180 181typedef struct acpi_asf_alert_data 182{ 183 UINT8 Address; 184 UINT8 Command; 185 UINT8 Mask; 186 UINT8 Value; 187 UINT8 SensorType; 188 UINT8 Type; 189 UINT8 Offset; 190 UINT8 SourceType; 191 UINT8 Severity; 192 UINT8 SensorNumber; 193 UINT8 Entity; 194 UINT8 Instance; 195 196} ACPI_ASF_ALERT_DATA; 197 198 199/* 2: ASF Remote Control */ 200 201typedef struct acpi_asf_remote 202{ 203 ACPI_ASF_HEADER Header; 204 UINT8 Controls; 205 UINT8 DataLength; 206 UINT16 Reserved2; 207 208} ACPI_ASF_REMOTE; 209 210typedef struct acpi_asf_control_data 211{ 212 UINT8 Function; 213 UINT8 Address; 214 UINT8 Command; 215 UINT8 Value; 216 217} ACPI_ASF_CONTROL_DATA; 218 219 220/* 3: ASF RMCP Boot Options */ 221 222typedef struct acpi_asf_rmcp 223{ 224 ACPI_ASF_HEADER Header; 225 UINT8 Capabilities[7]; 226 UINT8 CompletionCode; 227 UINT32 EnterpriseId; 228 UINT8 Command; 229 UINT16 Parameter; 230 UINT16 BootOptions; 231 UINT16 OemParameters; 232 233} ACPI_ASF_RMCP; 234 235 236/* 4: ASF Address */ 237 238typedef struct acpi_asf_address 239{ 240 ACPI_ASF_HEADER Header; 241 UINT8 EpromAddress; 242 UINT8 Devices; 243 244} ACPI_ASF_ADDRESS; 245 246 247/******************************************************************************* 248 * 249 * BOOT - Simple Boot Flag Table 250 * Version 1 251 * 252 * Conforms to the "Simple Boot Flag Specification", Version 2.1 253 * 254 ******************************************************************************/ 255 256typedef struct acpi_table_boot 257{ 258 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 259 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 260 UINT8 Reserved[3]; 261 262} ACPI_TABLE_BOOT; 263 264 265/******************************************************************************* 266 * 267 * DBGP - Debug Port table 268 * Version 1 269 * 270 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 271 * 272 ******************************************************************************/ 273 274typedef struct acpi_table_dbgp 275{ 276 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 277 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 278 UINT8 Reserved[3]; 279 ACPI_GENERIC_ADDRESS DebugPort; 280 281} ACPI_TABLE_DBGP; 282 283 284/******************************************************************************* 285 * 286 * DMAR - DMA Remapping table 287 * Version 1 288 * 289 * Conforms to "Intel Virtualization Technology for Directed I/O", 290 * Version 1.2, Sept. 2008 291 * 292 ******************************************************************************/ 293 294typedef struct acpi_table_dmar 295{ 296 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 297 UINT8 Width; /* Host Address Width */ 298 UINT8 Flags; 299 UINT8 Reserved[10]; 300 301} ACPI_TABLE_DMAR; 302 303/* Masks for Flags field above */ 304 305#define ACPI_DMAR_INTR_REMAP (1) 306 307 308/* DMAR subtable header */ 309 310typedef struct acpi_dmar_header 311{ 312 UINT16 Type; 313 UINT16 Length; 314 315} ACPI_DMAR_HEADER; 316 317/* Values for subtable type in ACPI_DMAR_HEADER */ 318 319enum AcpiDmarType 320{ 321 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 322 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 323 ACPI_DMAR_TYPE_ATSR = 2, 324 ACPI_DMAR_HARDWARE_AFFINITY = 3, 325 ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 326}; 327 328 329/* DMAR Device Scope structure */ 330 331typedef struct acpi_dmar_device_scope 332{ 333 UINT8 EntryType; 334 UINT8 Length; 335 UINT16 Reserved; 336 UINT8 EnumerationId; 337 UINT8 Bus; 338 339} ACPI_DMAR_DEVICE_SCOPE; 340 341/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 342 343enum AcpiDmarScopeType 344{ 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 353typedef struct acpi_dmar_pci_path 354{ 355 UINT8 Device; 356 UINT8 Function; 357 358} ACPI_DMAR_PCI_PATH; 359 360 361/* 362 * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER 363 */ 364 365/* 0: Hardware Unit Definition */ 366 367typedef struct acpi_dmar_hardware_unit 368{ 369 ACPI_DMAR_HEADER Header; 370 UINT8 Flags; 371 UINT8 Reserved; 372 UINT16 Segment; 373 UINT64 Address; /* Register Base Address */ 374 375} ACPI_DMAR_HARDWARE_UNIT; 376 377/* Masks for Flags field above */ 378 379#define ACPI_DMAR_INCLUDE_ALL (1) 380 381 382/* 1: Reserved Memory Defininition */ 383 384typedef struct acpi_dmar_reserved_memory 385{ 386 ACPI_DMAR_HEADER Header; 387 UINT16 Reserved; 388 UINT16 Segment; 389 UINT64 BaseAddress; /* 4K aligned base address */ 390 UINT64 EndAddress; /* 4K aligned limit address */ 391 392} ACPI_DMAR_RESERVED_MEMORY; 393 394/* Masks for Flags field above */ 395 396#define ACPI_DMAR_ALLOW_ALL (1) 397 398 399/* 2: Root Port ATS Capability Reporting Structure */ 400 401typedef struct acpi_dmar_atsr 402{ 403 ACPI_DMAR_HEADER Header; 404 UINT8 Flags; 405 UINT8 Reserved; 406 UINT16 Segment; 407 408} ACPI_DMAR_ATSR; 409 410/* Masks for Flags field above */ 411 412#define ACPI_DMAR_ALL_PORTS (1) 413 414 415/* 3: Remapping Hardware Static Affinity Structure */ 416 417typedef struct acpi_dmar_rhsa 418{ 419 ACPI_DMAR_HEADER Header; 420 UINT32 Reserved; 421 UINT64 BaseAddress; 422 UINT32 ProximityDomain; 423 424} ACPI_DMAR_RHSA; 425 426 427/******************************************************************************* 428 * 429 * HPET - High Precision Event Timer table 430 * Version 1 431 * 432 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 433 * Version 1.0a, October 2004 434 * 435 ******************************************************************************/ 436 437typedef struct acpi_table_hpet 438{ 439 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 440 UINT32 Id; /* Hardware ID of event timer block */ 441 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 442 UINT8 Sequence; /* HPET sequence number */ 443 UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 444 UINT8 Flags; 445 446} ACPI_TABLE_HPET; 447 448/* Masks for Flags field above */ 449 450#define ACPI_HPET_PAGE_PROTECT_MASK (3) 451 452/* Values for Page Protect flags */ 453 454enum AcpiHpetPageProtect 455{ 456 ACPI_HPET_NO_PAGE_PROTECT = 0, 457 ACPI_HPET_PAGE_PROTECT4 = 1, 458 ACPI_HPET_PAGE_PROTECT64 = 2 459}; 460 461 462/******************************************************************************* 463 * 464 * IBFT - Boot Firmware Table 465 * Version 1 466 * 467 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 468 * Specification", Version 1.01, March 1, 2007 469 * 470 * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 471 * Therefore, it is not currently supported by the disassembler. 472 * 473 ******************************************************************************/ 474 475typedef struct acpi_table_ibft 476{ 477 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 478 UINT8 Reserved[12]; 479 480} ACPI_TABLE_IBFT; 481 482 483/* IBFT common subtable header */ 484 485typedef struct acpi_ibft_header 486{ 487 UINT8 Type; 488 UINT8 Version; 489 UINT16 Length; 490 UINT8 Index; 491 UINT8 Flags; 492 493} ACPI_IBFT_HEADER; 494 495/* Values for Type field above */ 496 497enum AcpiIbftType 498{ 499 ACPI_IBFT_TYPE_NOT_USED = 0, 500 ACPI_IBFT_TYPE_CONTROL = 1, 501 ACPI_IBFT_TYPE_INITIATOR = 2, 502 ACPI_IBFT_TYPE_NIC = 3, 503 ACPI_IBFT_TYPE_TARGET = 4, 504 ACPI_IBFT_TYPE_EXTENSIONS = 5, 505 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 506}; 507 508 509/* IBFT subtables */ 510 511typedef struct acpi_ibft_control 512{ 513 ACPI_IBFT_HEADER Header; 514 UINT16 Extensions; 515 UINT16 InitiatorOffset; 516 UINT16 Nic0Offset; 517 UINT16 Target0Offset; 518 UINT16 Nic1Offset; 519 UINT16 Target1Offset; 520 521} ACPI_IBFT_CONTROL; 522 523typedef struct acpi_ibft_initiator 524{ 525 ACPI_IBFT_HEADER Header; 526 UINT8 SnsServer[16]; 527 UINT8 SlpServer[16]; 528 UINT8 PrimaryServer[16]; 529 UINT8 SecondaryServer[16]; 530 UINT16 NameLength; 531 UINT16 NameOffset; 532 533} ACPI_IBFT_INITIATOR; 534 535typedef struct acpi_ibft_nic 536{ 537 ACPI_IBFT_HEADER Header; 538 UINT8 IpAddress[16]; 539 UINT8 SubnetMaskPrefix; 540 UINT8 Origin; 541 UINT8 Gateway[16]; 542 UINT8 PrimaryDns[16]; 543 UINT8 SecondaryDns[16]; 544 UINT8 Dhcp[16]; 545 UINT16 Vlan; 546 UINT8 MacAddress[6]; 547 UINT16 PciAddress; 548 UINT16 NameLength; 549 UINT16 NameOffset; 550 551} ACPI_IBFT_NIC; 552 553typedef struct acpi_ibft_target 554{ 555 ACPI_IBFT_HEADER Header; 556 UINT8 TargetIpAddress[16]; 557 UINT16 TargetIpSocket; 558 UINT8 TargetBootLun[8]; 559 UINT8 ChapType; 560 UINT8 NicAssociation; 561 UINT16 TargetNameLength; 562 UINT16 TargetNameOffset; 563 UINT16 ChapNameLength; 564 UINT16 ChapNameOffset; 565 UINT16 ChapSecretLength; 566 UINT16 ChapSecretOffset; 567 UINT16 ReverseChapNameLength; 568 UINT16 ReverseChapNameOffset; 569 UINT16 ReverseChapSecretLength; 570 UINT16 ReverseChapSecretOffset; 571 572} ACPI_IBFT_TARGET; 573 574 575/******************************************************************************* 576 * 577 * IVRS - I/O Virtualization Reporting Structure 578 * Version 1 579 * 580 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 581 * Revision 1.26, February 2009. 582 * 583 ******************************************************************************/ 584 585typedef struct acpi_table_ivrs 586{ 587 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 588 UINT32 Info; /* Common virtualization info */ 589 UINT64 Reserved; 590 591} ACPI_TABLE_IVRS; 592 593/* Values for Info field above */ 594 595#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 596#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 597#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 598 599 600/* IVRS subtable header */ 601 602typedef struct acpi_ivrs_header 603{ 604 UINT8 Type; /* Subtable type */ 605 UINT8 Flags; 606 UINT16 Length; /* Subtable length */ 607 UINT16 DeviceId; /* ID of IOMMU */ 608 609} ACPI_IVRS_HEADER; 610 611/* Values for subtable Type above */ 612 613enum AcpiIvrsType 614{ 615 ACPI_IVRS_TYPE_HARDWARE = 0x10, 616 ACPI_IVRS_TYPE_MEMORY1 = 0x20, 617 ACPI_IVRS_TYPE_MEMORY2 = 0x21, 618 ACPI_IVRS_TYPE_MEMORY3 = 0x22 619}; 620 621/* Masks for Flags field above for IVHD subtable */ 622 623#define ACPI_IVHD_TT_ENABLE (1) 624#define ACPI_IVHD_PASS_PW (1<<1) 625#define ACPI_IVHD_RES_PASS_PW (1<<2) 626#define ACPI_IVHD_ISOC (1<<3) 627#define ACPI_IVHD_IOTLB (1<<4) 628 629/* Masks for Flags field above for IVMD subtable */ 630 631#define ACPI_IVMD_UNITY (1) 632#define ACPI_IVMD_READ (1<<1) 633#define ACPI_IVMD_WRITE (1<<2) 634#define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 635 636 637/* 638 * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 639 */ 640 641/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 642 643typedef struct acpi_ivrs_hardware 644{ 645 ACPI_IVRS_HEADER Header; 646 UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 647 UINT64 BaseAddress; /* IOMMU control registers */ 648 UINT16 PciSegmentGroup; 649 UINT16 Info; /* MSI number and unit ID */ 650 UINT32 Reserved; 651 652} ACPI_IVRS_HARDWARE; 653 654/* Masks for Info field above */ 655 656#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 657#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 658 659 660/* 661 * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 662 * Upper two bits of the Type field are the (encoded) length of the structure. 663 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 664 * are reserved for future use but not defined. 665 */ 666typedef struct acpi_ivrs_de_header 667{ 668 UINT8 Type; 669 UINT16 Id; 670 UINT8 DataSetting; 671 672} ACPI_IVRS_DE_HEADER; 673 674/* Length of device entry is in the top two bits of Type field above */ 675 676#define ACPI_IVHD_ENTRY_LENGTH 0xC0 677 678/* Values for device entry Type field above */ 679 680enum AcpiIvrsDeviceEntryType 681{ 682 /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 683 684 ACPI_IVRS_TYPE_PAD4 = 0, 685 ACPI_IVRS_TYPE_ALL = 1, 686 ACPI_IVRS_TYPE_SELECT = 2, 687 ACPI_IVRS_TYPE_START = 3, 688 ACPI_IVRS_TYPE_END = 4, 689 690 /* 8-byte device entries */ 691 692 ACPI_IVRS_TYPE_PAD8 = 64, 693 ACPI_IVRS_TYPE_NOT_USED = 65, 694 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 695 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 696 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 697 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 698 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 699}; 700 701/* Values for Data field above */ 702 703#define ACPI_IVHD_INIT_PASS (1) 704#define ACPI_IVHD_EINT_PASS (1<<1) 705#define ACPI_IVHD_NMI_PASS (1<<2) 706#define ACPI_IVHD_SYSTEM_MGMT (3<<4) 707#define ACPI_IVHD_LINT0_PASS (1<<6) 708#define ACPI_IVHD_LINT1_PASS (1<<7) 709 710 711/* Types 0-4: 4-byte device entry */ 712 713typedef struct acpi_ivrs_device4 714{ 715 ACPI_IVRS_DE_HEADER Header; 716 717} ACPI_IVRS_DEVICE4; 718 719/* Types 66-67: 8-byte device entry */ 720 721typedef struct acpi_ivrs_device8a 722{ 723 ACPI_IVRS_DE_HEADER Header; 724 UINT8 Reserved1; 725 UINT16 UsedId; 726 UINT8 Reserved2; 727 728} ACPI_IVRS_DEVICE8A; 729 730/* Types 70-71: 8-byte device entry */ 731 732typedef struct acpi_ivrs_device8b 733{ 734 ACPI_IVRS_DE_HEADER Header; 735 UINT32 ExtendedData; 736 737} ACPI_IVRS_DEVICE8B; 738 739/* Values for ExtendedData above */ 740 741#define ACPI_IVHD_ATS_DISABLED (1<<31) 742 743/* Type 72: 8-byte device entry */ 744 745typedef struct acpi_ivrs_device8c 746{ 747 ACPI_IVRS_DE_HEADER Header; 748 UINT8 Handle; 749 UINT16 UsedId; 750 UINT8 Variety; 751 752} ACPI_IVRS_DEVICE8C; 753 754/* Values for Variety field above */ 755 756#define ACPI_IVHD_IOAPIC 1 757#define ACPI_IVHD_HPET 2 758 759 760/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 761 762typedef struct acpi_ivrs_memory 763{ 764 ACPI_IVRS_HEADER Header; 765 UINT16 AuxData; 766 UINT64 Reserved; 767 UINT64 StartAddress; 768 UINT64 MemoryLength; 769 770} ACPI_IVRS_MEMORY; 771 772 773/******************************************************************************* 774 * 775 * MCFG - PCI Memory Mapped Configuration table and sub-table 776 * Version 1 777 * 778 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 779 * 780 ******************************************************************************/ 781 782typedef struct acpi_table_mcfg 783{ 784 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 785 UINT8 Reserved[8]; 786 787} ACPI_TABLE_MCFG; 788 789 790/* Subtable */ 791 792typedef struct acpi_mcfg_allocation 793{ 794 UINT64 Address; /* Base address, processor-relative */ 795 UINT16 PciSegment; /* PCI segment group number */ 796 UINT8 StartBusNumber; /* Starting PCI Bus number */ 797 UINT8 EndBusNumber; /* Final PCI Bus number */ 798 UINT32 Reserved; 799 800} ACPI_MCFG_ALLOCATION; 801 802 803/******************************************************************************* 804 * 805 * MCHI - Management Controller Host Interface Table 806 * Version 1 807 * 808 * Conforms to "Management Component Transport Protocol (MCTP) Host 809 * Interface Specification", Revision 1.0.0a, October 13, 2009 810 * 811 ******************************************************************************/ 812 813typedef struct acpi_table_mchi 814{ 815 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 816 UINT8 InterfaceType; 817 UINT8 Protocol; 818 UINT64 ProtocolData; 819 UINT8 InterruptType; 820 UINT8 Gpe; 821 UINT8 PciDeviceFlag; 822 UINT32 GlobalInterrupt; 823 ACPI_GENERIC_ADDRESS ControlRegister; 824 UINT8 PciSegment; 825 UINT8 PciBus; 826 UINT8 PciDevice; 827 UINT8 PciFunction; 828 829} ACPI_TABLE_MCHI; 830 831 832/******************************************************************************* 833 * 834 * SPCR - Serial Port Console Redirection table 835 * Version 1 836 * 837 * Conforms to "Serial Port Console Redirection Table", 838 * Version 1.00, January 11, 2002 839 * 840 ******************************************************************************/ 841 842typedef struct acpi_table_spcr 843{ 844 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 845 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 846 UINT8 Reserved[3]; 847 ACPI_GENERIC_ADDRESS SerialPort; 848 UINT8 InterruptType; 849 UINT8 PcInterrupt; 850 UINT32 Interrupt; 851 UINT8 BaudRate; 852 UINT8 Parity; 853 UINT8 StopBits; 854 UINT8 FlowControl; 855 UINT8 TerminalType; 856 UINT8 Reserved1; 857 UINT16 PciDeviceId; 858 UINT16 PciVendorId; 859 UINT8 PciBus; 860 UINT8 PciDevice; 861 UINT8 PciFunction; 862 UINT32 PciFlags; 863 UINT8 PciSegment; 864 UINT32 Reserved2; 865 866} ACPI_TABLE_SPCR; 867 868/* Masks for PciFlags field above */ 869 870#define ACPI_SPCR_DO_NOT_DISABLE (1) 871 872 873/******************************************************************************* 874 * 875 * SPMI - Server Platform Management Interface table 876 * Version 5 877 * 878 * Conforms to "Intelligent Platform Management Interface Specification 879 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 880 * June 12, 2009 markup. 881 * 882 ******************************************************************************/ 883 884typedef struct acpi_table_spmi 885{ 886 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 887 UINT8 InterfaceType; 888 UINT8 Reserved; /* Must be 1 */ 889 UINT16 SpecRevision; /* Version of IPMI */ 890 UINT8 InterruptType; 891 UINT8 GpeNumber; /* GPE assigned */ 892 UINT8 Reserved1; 893 UINT8 PciDeviceFlag; 894 UINT32 Interrupt; 895 ACPI_GENERIC_ADDRESS IpmiRegister; 896 UINT8 PciSegment; 897 UINT8 PciBus; 898 UINT8 PciDevice; 899 UINT8 PciFunction; 900 UINT8 Reserved2; 901 902} ACPI_TABLE_SPMI; 903 904/* Values for InterfaceType above */ 905 906enum AcpiSpmiInterfaceTypes 907{ 908 ACPI_SPMI_NOT_USED = 0, 909 ACPI_SPMI_KEYBOARD = 1, 910 ACPI_SPMI_SMI = 2, 911 ACPI_SPMI_BLOCK_TRANSFER = 3, 912 ACPI_SPMI_SMBUS = 4, 913 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 914}; 915 916 917/******************************************************************************* 918 * 919 * TCPA - Trusted Computing Platform Alliance table 920 * Version 1 921 * 922 * Conforms to "TCG PC Specific Implementation Specification", 923 * Version 1.1, August 18, 2003 924 * 925 ******************************************************************************/ 926 927typedef struct acpi_table_tcpa 928{ 929 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 930 UINT16 Reserved; 931 UINT32 MaxLogLength; /* Maximum length for the event log area */ 932 UINT64 LogAddress; /* Address of the event log area */ 933 934} ACPI_TABLE_TCPA; 935 936 937/******************************************************************************* 938 * 939 * UEFI - UEFI Boot optimization Table 940 * Version 1 941 * 942 * Conforms to "Unified Extensible Firmware Interface Specification", 943 * Version 2.3, May 8, 2009 944 * 945 ******************************************************************************/ 946 947typedef struct acpi_table_uefi 948{ 949 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 950 UINT8 Identifier[16]; /* UUID identifier */ 951 UINT16 DataOffset; /* Offset of remaining data in table */ 952 953} ACPI_TABLE_UEFI; 954 955 956/******************************************************************************* 957 * 958 * WAET - Windows ACPI Emulated devices Table 959 * Version 1 960 * 961 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 962 * 963 ******************************************************************************/ 964 965typedef struct acpi_table_waet 966{ 967 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 968 UINT32 Flags; 969 970} ACPI_TABLE_WAET; 971 972/* Masks for Flags field above */ 973 974#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 975#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 976 977 978/******************************************************************************* 979 * 980 * WDAT - Watchdog Action Table 981 * Version 1 982 * 983 * Conforms to "Hardware Watchdog Timers Design Specification", 984 * Copyright 2006 Microsoft Corporation. 985 * 986 ******************************************************************************/ 987 988typedef struct acpi_table_wdat 989{ 990 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 991 UINT32 HeaderLength; /* Watchdog Header Length */ 992 UINT16 PciSegment; /* PCI Segment number */ 993 UINT8 PciBus; /* PCI Bus number */ 994 UINT8 PciDevice; /* PCI Device number */ 995 UINT8 PciFunction; /* PCI Function number */ 996 UINT8 Reserved[3]; 997 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 998 UINT32 MaxCount; /* Maximum counter value supported */ 999 UINT32 MinCount; /* Minimum counter value */ 1000 UINT8 Flags; 1001 UINT8 Reserved2[3]; 1002 UINT32 Entries; /* Number of watchdog entries that follow */ 1003 1004} ACPI_TABLE_WDAT; 1005 1006/* Masks for Flags field above */ 1007 1008#define ACPI_WDAT_ENABLED (1) 1009#define ACPI_WDAT_STOPPED 0x80 1010 1011 1012/* WDAT Instruction Entries (actions) */ 1013 1014typedef struct acpi_wdat_entry 1015{ 1016 UINT8 Action; 1017 UINT8 Instruction; 1018 UINT16 Reserved; 1019 ACPI_GENERIC_ADDRESS RegisterRegion; 1020 UINT32 Value; /* Value used with Read/Write register */ 1021 UINT32 Mask; /* Bitmask required for this register instruction */ 1022 1023} ACPI_WDAT_ENTRY; 1024 1025/* Values for Action field above */ 1026 1027enum AcpiWdatActions 1028{ 1029 ACPI_WDAT_RESET = 1, 1030 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1031 ACPI_WDAT_GET_COUNTDOWN = 5, 1032 ACPI_WDAT_SET_COUNTDOWN = 6, 1033 ACPI_WDAT_GET_RUNNING_STATE = 8, 1034 ACPI_WDAT_SET_RUNNING_STATE = 9, 1035 ACPI_WDAT_GET_STOPPED_STATE = 10, 1036 ACPI_WDAT_SET_STOPPED_STATE = 11, 1037 ACPI_WDAT_GET_REBOOT = 16, 1038 ACPI_WDAT_SET_REBOOT = 17, 1039 ACPI_WDAT_GET_SHUTDOWN = 18, 1040 ACPI_WDAT_SET_SHUTDOWN = 19, 1041 ACPI_WDAT_GET_STATUS = 32, 1042 ACPI_WDAT_SET_STATUS = 33, 1043 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1044}; 1045 1046/* Values for Instruction field above */ 1047 1048enum AcpiWdatInstructions 1049{ 1050 ACPI_WDAT_READ_VALUE = 0, 1051 ACPI_WDAT_READ_COUNTDOWN = 1, 1052 ACPI_WDAT_WRITE_VALUE = 2, 1053 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1054 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1055 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1056}; 1057 1058 1059/******************************************************************************* 1060 * 1061 * WDDT - Watchdog Descriptor Table 1062 * Version 1 1063 * 1064 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1065 * Version 001, September 2002 1066 * 1067 ******************************************************************************/ 1068 1069typedef struct acpi_table_wddt 1070{ 1071 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1072 UINT16 SpecVersion; 1073 UINT16 TableVersion; 1074 UINT16 PciVendorId; 1075 ACPI_GENERIC_ADDRESS Address; 1076 UINT16 MaxCount; /* Maximum counter value supported */ 1077 UINT16 MinCount; /* Minimum counter value supported */ 1078 UINT16 Period; 1079 UINT16 Status; 1080 UINT16 Capability; 1081 1082} ACPI_TABLE_WDDT; 1083 1084/* Flags for Status field above */ 1085 1086#define ACPI_WDDT_AVAILABLE (1) 1087#define ACPI_WDDT_ACTIVE (1<<1) 1088#define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1089#define ACPI_WDDT_USER_RESET (1<<11) 1090#define ACPI_WDDT_WDT_RESET (1<<12) 1091#define ACPI_WDDT_POWER_FAIL (1<<13) 1092#define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1093 1094/* Flags for Capability field above */ 1095 1096#define ACPI_WDDT_AUTO_RESET (1) 1097#define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1098 1099 1100/******************************************************************************* 1101 * 1102 * WDRT - Watchdog Resource Table 1103 * Version 1 1104 * 1105 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1106 * Version 1.01, August 28, 2006 1107 * 1108 ******************************************************************************/ 1109 1110typedef struct acpi_table_wdrt 1111{ 1112 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1113 ACPI_GENERIC_ADDRESS ControlRegister; 1114 ACPI_GENERIC_ADDRESS CountRegister; 1115 UINT16 PciDeviceId; 1116 UINT16 PciVendorId; 1117 UINT8 PciBus; /* PCI Bus number */ 1118 UINT8 PciDevice; /* PCI Device number */ 1119 UINT8 PciFunction; /* PCI Function number */ 1120 UINT8 PciSegment; /* PCI Segment number */ 1121 UINT16 MaxCount; /* Maximum counter value supported */ 1122 UINT8 Units; 1123 1124} ACPI_TABLE_WDRT; 1125 1126 1127/* Reset to default packing */ 1128 1129#pragma pack() 1130 1131#endif /* __ACTBL2_H__ */ 1132 1133