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 116 typedef 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 125 typedef 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 136 enum 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 152 typedef 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 171 typedef 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 181 typedef 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 201 typedef 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 210 typedef 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 222 typedef 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 238 typedef 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 256 typedef 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 274 typedef 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 294 typedef 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 310 typedef 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 319 enum 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 331 typedef 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 343 enum 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 353 typedef 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 367 typedef 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 384 typedef 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 401 typedef 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 417 typedef 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 437 typedef 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 454 enum 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 475 typedef 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 485 typedef 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 497 enum 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 511 typedef 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 523 typedef 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 535 typedef 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 553 typedef 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 585 typedef 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 602 typedef 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 613 enum 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 643 typedef 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 */ 666 typedef 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 680 enum 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 713 typedef 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 721 typedef 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 732 typedef 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 745 typedef 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 762 typedef 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 782 typedef 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 792 typedef 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 813 typedef 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 844 typedef 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 853 typedef struct acpi_slic_header 854 { 855 UINT32 Type; 856 UINT32 Length; 857 858 } ACPI_SLIC_HEADER; 859 860 /* Values for Type field above */ 861 862 enum 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 876 typedef 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 893 typedef 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 917 typedef 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 959 typedef 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 981 enum 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 1002 typedef 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 1022 typedef 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 1040 typedef 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 1063 typedef 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 1089 typedef 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 1102 enum 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 1123 enum 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 1144 typedef 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 1185 typedef 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