actbl2.h revision 267654
1/****************************************************************************** 2 * 3 * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 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 * SLIC - Software Licensing Description Table 835 * Version 1 836 * 837 * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems", 838 * Copyright 2006 839 * 840 ******************************************************************************/ 841 842/* Basic SLIC table is only the common ACPI header */ 843 844typedef struct acpi_table_slic 845{ 846 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 847 848} ACPI_TABLE_SLIC; 849 850 851/* Common SLIC subtable header */ 852 853typedef struct acpi_slic_header 854{ 855 UINT32 Type; 856 UINT32 Length; 857 858} ACPI_SLIC_HEADER; 859 860/* Values for Type field above */ 861 862enum AcpiSlicType 863{ 864 ACPI_SLIC_TYPE_PUBLIC_KEY = 0, 865 ACPI_SLIC_TYPE_WINDOWS_MARKER = 1, 866 ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 867}; 868 869 870/* 871 * SLIC Sub-tables, correspond to Type in ACPI_SLIC_HEADER 872 */ 873 874/* 0: Public Key Structure */ 875 876typedef struct acpi_slic_key 877{ 878 ACPI_SLIC_HEADER Header; 879 UINT8 KeyType; 880 UINT8 Version; 881 UINT16 Reserved; 882 UINT32 Algorithm; 883 char Magic[4]; 884 UINT32 BitLength; 885 UINT32 Exponent; 886 UINT8 Modulus[128]; 887 888} ACPI_SLIC_KEY; 889 890 891/* 1: Windows Marker Structure */ 892 893typedef struct acpi_slic_marker 894{ 895 ACPI_SLIC_HEADER Header; 896 UINT32 Version; 897 char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ 898 char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ 899 char WindowsFlag[8]; 900 UINT32 SlicVersion; 901 UINT8 Reserved[16]; 902 UINT8 Signature[128]; 903 904} ACPI_SLIC_MARKER; 905 906 907/******************************************************************************* 908 * 909 * SPCR - Serial Port Console Redirection table 910 * Version 1 911 * 912 * Conforms to "Serial Port Console Redirection Table", 913 * Version 1.00, January 11, 2002 914 * 915 ******************************************************************************/ 916 917typedef struct acpi_table_spcr 918{ 919 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 920 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 921 UINT8 Reserved[3]; 922 ACPI_GENERIC_ADDRESS SerialPort; 923 UINT8 InterruptType; 924 UINT8 PcInterrupt; 925 UINT32 Interrupt; 926 UINT8 BaudRate; 927 UINT8 Parity; 928 UINT8 StopBits; 929 UINT8 FlowControl; 930 UINT8 TerminalType; 931 UINT8 Reserved1; 932 UINT16 PciDeviceId; 933 UINT16 PciVendorId; 934 UINT8 PciBus; 935 UINT8 PciDevice; 936 UINT8 PciFunction; 937 UINT32 PciFlags; 938 UINT8 PciSegment; 939 UINT32 Reserved2; 940 941} ACPI_TABLE_SPCR; 942 943/* Masks for PciFlags field above */ 944 945#define ACPI_SPCR_DO_NOT_DISABLE (1) 946 947 948/******************************************************************************* 949 * 950 * SPMI - Server Platform Management Interface table 951 * Version 5 952 * 953 * Conforms to "Intelligent Platform Management Interface Specification 954 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 955 * June 12, 2009 markup. 956 * 957 ******************************************************************************/ 958 959typedef struct acpi_table_spmi 960{ 961 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 962 UINT8 InterfaceType; 963 UINT8 Reserved; /* Must be 1 */ 964 UINT16 SpecRevision; /* Version of IPMI */ 965 UINT8 InterruptType; 966 UINT8 GpeNumber; /* GPE assigned */ 967 UINT8 Reserved1; 968 UINT8 PciDeviceFlag; 969 UINT32 Interrupt; 970 ACPI_GENERIC_ADDRESS IpmiRegister; 971 UINT8 PciSegment; 972 UINT8 PciBus; 973 UINT8 PciDevice; 974 UINT8 PciFunction; 975 UINT8 Reserved2; 976 977} ACPI_TABLE_SPMI; 978 979/* Values for InterfaceType above */ 980 981enum AcpiSpmiInterfaceTypes 982{ 983 ACPI_SPMI_NOT_USED = 0, 984 ACPI_SPMI_KEYBOARD = 1, 985 ACPI_SPMI_SMI = 2, 986 ACPI_SPMI_BLOCK_TRANSFER = 3, 987 ACPI_SPMI_SMBUS = 4, 988 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 989}; 990 991 992/******************************************************************************* 993 * 994 * TCPA - Trusted Computing Platform Alliance table 995 * Version 1 996 * 997 * Conforms to "TCG PC Specific Implementation Specification", 998 * Version 1.1, August 18, 2003 999 * 1000 ******************************************************************************/ 1001 1002typedef struct acpi_table_tcpa 1003{ 1004 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1005 UINT16 Reserved; 1006 UINT32 MaxLogLength; /* Maximum length for the event log area */ 1007 UINT64 LogAddress; /* Address of the event log area */ 1008 1009} ACPI_TABLE_TCPA; 1010 1011 1012/******************************************************************************* 1013 * 1014 * UEFI - UEFI Boot optimization Table 1015 * Version 1 1016 * 1017 * Conforms to "Unified Extensible Firmware Interface Specification", 1018 * Version 2.3, May 8, 2009 1019 * 1020 ******************************************************************************/ 1021 1022typedef struct acpi_table_uefi 1023{ 1024 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1025 UINT8 Identifier[16]; /* UUID identifier */ 1026 UINT16 DataOffset; /* Offset of remaining data in table */ 1027 1028} ACPI_TABLE_UEFI; 1029 1030 1031/******************************************************************************* 1032 * 1033 * WAET - Windows ACPI Emulated devices Table 1034 * Version 1 1035 * 1036 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1037 * 1038 ******************************************************************************/ 1039 1040typedef struct acpi_table_waet 1041{ 1042 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1043 UINT32 Flags; 1044 1045} ACPI_TABLE_WAET; 1046 1047/* Masks for Flags field above */ 1048 1049#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1050#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1051 1052 1053/******************************************************************************* 1054 * 1055 * WDAT - Watchdog Action Table 1056 * Version 1 1057 * 1058 * Conforms to "Hardware Watchdog Timers Design Specification", 1059 * Copyright 2006 Microsoft Corporation. 1060 * 1061 ******************************************************************************/ 1062 1063typedef struct acpi_table_wdat 1064{ 1065 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1066 UINT32 HeaderLength; /* Watchdog Header Length */ 1067 UINT16 PciSegment; /* PCI Segment number */ 1068 UINT8 PciBus; /* PCI Bus number */ 1069 UINT8 PciDevice; /* PCI Device number */ 1070 UINT8 PciFunction; /* PCI Function number */ 1071 UINT8 Reserved[3]; 1072 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1073 UINT32 MaxCount; /* Maximum counter value supported */ 1074 UINT32 MinCount; /* Minimum counter value */ 1075 UINT8 Flags; 1076 UINT8 Reserved2[3]; 1077 UINT32 Entries; /* Number of watchdog entries that follow */ 1078 1079} ACPI_TABLE_WDAT; 1080 1081/* Masks for Flags field above */ 1082 1083#define ACPI_WDAT_ENABLED (1) 1084#define ACPI_WDAT_STOPPED 0x80 1085 1086 1087/* WDAT Instruction Entries (actions) */ 1088 1089typedef struct acpi_wdat_entry 1090{ 1091 UINT8 Action; 1092 UINT8 Instruction; 1093 UINT16 Reserved; 1094 ACPI_GENERIC_ADDRESS RegisterRegion; 1095 UINT32 Value; /* Value used with Read/Write register */ 1096 UINT32 Mask; /* Bitmask required for this register instruction */ 1097 1098} ACPI_WDAT_ENTRY; 1099 1100/* Values for Action field above */ 1101 1102enum AcpiWdatActions 1103{ 1104 ACPI_WDAT_RESET = 1, 1105 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1106 ACPI_WDAT_GET_COUNTDOWN = 5, 1107 ACPI_WDAT_SET_COUNTDOWN = 6, 1108 ACPI_WDAT_GET_RUNNING_STATE = 8, 1109 ACPI_WDAT_SET_RUNNING_STATE = 9, 1110 ACPI_WDAT_GET_STOPPED_STATE = 10, 1111 ACPI_WDAT_SET_STOPPED_STATE = 11, 1112 ACPI_WDAT_GET_REBOOT = 16, 1113 ACPI_WDAT_SET_REBOOT = 17, 1114 ACPI_WDAT_GET_SHUTDOWN = 18, 1115 ACPI_WDAT_SET_SHUTDOWN = 19, 1116 ACPI_WDAT_GET_STATUS = 32, 1117 ACPI_WDAT_SET_STATUS = 33, 1118 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1119}; 1120 1121/* Values for Instruction field above */ 1122 1123enum AcpiWdatInstructions 1124{ 1125 ACPI_WDAT_READ_VALUE = 0, 1126 ACPI_WDAT_READ_COUNTDOWN = 1, 1127 ACPI_WDAT_WRITE_VALUE = 2, 1128 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1129 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1130 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1131}; 1132 1133 1134/******************************************************************************* 1135 * 1136 * WDDT - Watchdog Descriptor Table 1137 * Version 1 1138 * 1139 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1140 * Version 001, September 2002 1141 * 1142 ******************************************************************************/ 1143 1144typedef struct acpi_table_wddt 1145{ 1146 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1147 UINT16 SpecVersion; 1148 UINT16 TableVersion; 1149 UINT16 PciVendorId; 1150 ACPI_GENERIC_ADDRESS Address; 1151 UINT16 MaxCount; /* Maximum counter value supported */ 1152 UINT16 MinCount; /* Minimum counter value supported */ 1153 UINT16 Period; 1154 UINT16 Status; 1155 UINT16 Capability; 1156 1157} ACPI_TABLE_WDDT; 1158 1159/* Flags for Status field above */ 1160 1161#define ACPI_WDDT_AVAILABLE (1) 1162#define ACPI_WDDT_ACTIVE (1<<1) 1163#define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1164#define ACPI_WDDT_USER_RESET (1<<11) 1165#define ACPI_WDDT_WDT_RESET (1<<12) 1166#define ACPI_WDDT_POWER_FAIL (1<<13) 1167#define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1168 1169/* Flags for Capability field above */ 1170 1171#define ACPI_WDDT_AUTO_RESET (1) 1172#define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1173 1174 1175/******************************************************************************* 1176 * 1177 * WDRT - Watchdog Resource Table 1178 * Version 1 1179 * 1180 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1181 * Version 1.01, August 28, 2006 1182 * 1183 ******************************************************************************/ 1184 1185typedef struct acpi_table_wdrt 1186{ 1187 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1188 ACPI_GENERIC_ADDRESS ControlRegister; 1189 ACPI_GENERIC_ADDRESS CountRegister; 1190 UINT16 PciDeviceId; 1191 UINT16 PciVendorId; 1192 UINT8 PciBus; /* PCI Bus number */ 1193 UINT8 PciDevice; /* PCI Device number */ 1194 UINT8 PciFunction; /* PCI Function number */ 1195 UINT8 PciSegment; /* PCI Segment number */ 1196 UINT16 MaxCount; /* Maximum counter value supported */ 1197 UINT8 Units; 1198 1199} ACPI_TABLE_WDRT; 1200 1201 1202/* Reset to default packing */ 1203 1204#pragma pack() 1205 1206#endif /* __ACTBL2_H__ */ 1207 1208