1 /****************************************************************************** 2 * 3 * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 4 * 5 *****************************************************************************/ 6 7 /****************************************************************************** 8 * 9 * 1. Copyright Notice 10 * 11 * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. 12 * All rights reserved. 13 * 14 * 2. License 15 * 16 * 2.1. This is your license from Intel Corp. under its intellectual property 17 * rights. You may have additional license terms from the party that provided 18 * you this software, covering your right to use that party's intellectual 19 * property rights. 20 * 21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22 * copy of the source code appearing in this file ("Covered Code") an 23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24 * base code distributed originally by Intel ("Original Intel Code") to copy, 25 * make derivatives, distribute, use and display any portion of the Covered 26 * Code in any form, with the right to sublicense such rights; and 27 * 28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29 * license (with the right to sublicense), under only those claims of Intel 30 * patents that are infringed by the Original Intel Code, to make, use, sell, 31 * offer to sell, and import the Covered Code and derivative works thereof 32 * solely to the minimum extent necessary to exercise the above copyright 33 * license, and in no event shall the patent license extend to any additions 34 * to or modifications of the Original Intel Code. No other license or right 35 * is granted directly or by implication, estoppel or otherwise; 36 * 37 * The above copyright and patent license is granted only if the following 38 * conditions are met: 39 * 40 * 3. Conditions 41 * 42 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43 * Redistribution of source code of any substantial portion of the Covered 44 * Code or modification with rights to further distribute source must include 45 * the above Copyright Notice, the above License, this list of Conditions, 46 * and the following Disclaimer and Export Compliance provision. In addition, 47 * Licensee must cause all Covered Code to which Licensee contributes to 48 * contain a file documenting the changes Licensee made to create that Covered 49 * Code and the date of any change. Licensee must include in that file the 50 * documentation of any changes made by any predecessor Licensee. Licensee 51 * must include a prominent statement that the modification is derived, 52 * directly or indirectly, from Original Intel Code. 53 * 54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55 * Redistribution of source code of any substantial portion of the Covered 56 * Code or modification without rights to further distribute source must 57 * include the following Disclaimer and Export Compliance provision in the 58 * documentation and/or other materials provided with distribution. In 59 * addition, Licensee may not authorize further sublicense of source of any 60 * portion of the Covered Code, and must include terms to the effect that the 61 * license from Licensee to its licensee is limited to the intellectual 62 * property embodied in the software Licensee provides to its licensee, and 63 * not to intellectual property embodied in modifications its licensee may 64 * make. 65 * 66 * 3.3. Redistribution of Executable. Redistribution in executable form of any 67 * substantial portion of the Covered Code or modification must reproduce the 68 * above Copyright Notice, and the following Disclaimer and Export Compliance 69 * provision in the documentation and/or other materials provided with the 70 * distribution. 71 * 72 * 3.4. Intel retains all right, title, and interest in and to the Original 73 * Intel Code. 74 * 75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76 * Intel shall be used in advertising or otherwise to promote the sale, use or 77 * other dealings in products derived from or relating to the Covered Code 78 * without prior written authorization from Intel. 79 * 80 * 4. Disclaimer and Export Compliance 81 * 82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88 * PARTICULAR PURPOSE. 89 * 90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97 * LIMITED REMEDY. 98 * 99 * 4.3. Licensee shall not export, either directly or indirectly, any of this 100 * software or system incorporating such software without first obtaining any 101 * required license or other approval from the U. S. Department of Commerce or 102 * any other agency or department of the United States Government. In the 103 * event Licensee exports any such software from the United States or 104 * re-exports any such software from a foreign destination, Licensee shall 105 * ensure that the distribution and export/re-export of the software is in 106 * compliance with all laws, regulations, orders, or other restrictions of the 107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108 * any of its subsidiaries will export/re-export any technical data, process, 109 * software, or service, directly or indirectly, to any country for which the 110 * United States government or any agency thereof requires an export license, 111 * other governmental approval, or letter of assurance, without first obtaining 112 * such license, approval or letter. 113 * 114 *****************************************************************************/ 115 116 #ifndef __ACTBL2_H__ 117 #define __ACTBL2_H__ 118 119 120 /******************************************************************************* 121 * 122 * Additional ACPI Tables (2) 123 * 124 * These tables are not consumed directly by the ACPICA subsystem, but are 125 * included here to support device drivers and the AML disassembler. 126 * 127 * The tables in this file are defined by third-party specifications, and are 128 * not defined directly by the ACPI specification itself. 129 * 130 ******************************************************************************/ 131 132 133 /* 134 * Values for description table header signatures for tables defined in this 135 * file. Useful because they make it more difficult to inadvertently type in 136 * the wrong signature. 137 */ 138 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 139 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 140 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 141 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 142 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 143 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 144 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 145 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 146 #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 147 #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 148 #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 149 #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 150 #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 151 #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 152 #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 153 #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 154 #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 155 #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 156 #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 157 #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 158 #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 159 #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 160 #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 161 162 #ifdef ACPI_UNDEFINED_TABLES 163 /* 164 * These tables have been seen in the field, but no definition has been found 165 */ 166 #define ACPI_SIG_ATKG "ATKG" 167 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 168 #define ACPI_SIG_IEIT "IEIT" 169 #endif 170 171 /* 172 * All tables must be byte-packed to match the ACPI specification, since 173 * the tables are provided by the system BIOS. 174 */ 175 #pragma pack(1) 176 177 /* 178 * Note: C bitfields are not used for this reason: 179 * 180 * "Bitfields are great and easy to read, but unfortunately the C language 181 * does not specify the layout of bitfields in memory, which means they are 182 * essentially useless for dealing with packed data in on-disk formats or 183 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 184 * this decision was a design error in C. Ritchie could have picked an order 185 * and stuck with it." Norman Ramsey. 186 * See http://stackoverflow.com/a/1053662/41661 187 */ 188 189 190 /******************************************************************************* 191 * 192 * ASF - Alert Standard Format table (Signature "ASF!") 193 * Revision 0x10 194 * 195 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 196 * 197 ******************************************************************************/ 198 199 typedef struct acpi_table_asf 200 { 201 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 202 203 } ACPI_TABLE_ASF; 204 205 206 /* ASF subtable header */ 207 208 typedef struct acpi_asf_header 209 { 210 UINT8 Type; 211 UINT8 Reserved; 212 UINT16 Length; 213 214 } ACPI_ASF_HEADER; 215 216 217 /* Values for Type field above */ 218 219 enum AcpiAsfType 220 { 221 ACPI_ASF_TYPE_INFO = 0, 222 ACPI_ASF_TYPE_ALERT = 1, 223 ACPI_ASF_TYPE_CONTROL = 2, 224 ACPI_ASF_TYPE_BOOT = 3, 225 ACPI_ASF_TYPE_ADDRESS = 4, 226 ACPI_ASF_TYPE_RESERVED = 5 227 }; 228 229 /* 230 * ASF subtables 231 */ 232 233 /* 0: ASF Information */ 234 235 typedef struct acpi_asf_info 236 { 237 ACPI_ASF_HEADER Header; 238 UINT8 MinResetValue; 239 UINT8 MinPollInterval; 240 UINT16 SystemId; 241 UINT32 MfgId; 242 UINT8 Flags; 243 UINT8 Reserved2[3]; 244 245 } ACPI_ASF_INFO; 246 247 /* Masks for Flags field above */ 248 249 #define ACPI_ASF_SMBUS_PROTOCOLS (1) 250 251 252 /* 1: ASF Alerts */ 253 254 typedef struct acpi_asf_alert 255 { 256 ACPI_ASF_HEADER Header; 257 UINT8 AssertMask; 258 UINT8 DeassertMask; 259 UINT8 Alerts; 260 UINT8 DataLength; 261 262 } ACPI_ASF_ALERT; 263 264 typedef struct acpi_asf_alert_data 265 { 266 UINT8 Address; 267 UINT8 Command; 268 UINT8 Mask; 269 UINT8 Value; 270 UINT8 SensorType; 271 UINT8 Type; 272 UINT8 Offset; 273 UINT8 SourceType; 274 UINT8 Severity; 275 UINT8 SensorNumber; 276 UINT8 Entity; 277 UINT8 Instance; 278 279 } ACPI_ASF_ALERT_DATA; 280 281 282 /* 2: ASF Remote Control */ 283 284 typedef struct acpi_asf_remote 285 { 286 ACPI_ASF_HEADER Header; 287 UINT8 Controls; 288 UINT8 DataLength; 289 UINT16 Reserved2; 290 291 } ACPI_ASF_REMOTE; 292 293 typedef struct acpi_asf_control_data 294 { 295 UINT8 Function; 296 UINT8 Address; 297 UINT8 Command; 298 UINT8 Value; 299 300 } ACPI_ASF_CONTROL_DATA; 301 302 303 /* 3: ASF RMCP Boot Options */ 304 305 typedef struct acpi_asf_rmcp 306 { 307 ACPI_ASF_HEADER Header; 308 UINT8 Capabilities[7]; 309 UINT8 CompletionCode; 310 UINT32 EnterpriseId; 311 UINT8 Command; 312 UINT16 Parameter; 313 UINT16 BootOptions; 314 UINT16 OemParameters; 315 316 } ACPI_ASF_RMCP; 317 318 319 /* 4: ASF Address */ 320 321 typedef struct acpi_asf_address 322 { 323 ACPI_ASF_HEADER Header; 324 UINT8 EpromAddress; 325 UINT8 Devices; 326 327 } ACPI_ASF_ADDRESS; 328 329 330 /******************************************************************************* 331 * 332 * BOOT - Simple Boot Flag Table 333 * Version 1 334 * 335 * Conforms to the "Simple Boot Flag Specification", Version 2.1 336 * 337 ******************************************************************************/ 338 339 typedef struct acpi_table_boot 340 { 341 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 342 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 343 UINT8 Reserved[3]; 344 345 } ACPI_TABLE_BOOT; 346 347 348 /******************************************************************************* 349 * 350 * CSRT - Core System Resource Table 351 * Version 0 352 * 353 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 354 * 355 ******************************************************************************/ 356 357 typedef struct acpi_table_csrt 358 { 359 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 360 361 } ACPI_TABLE_CSRT; 362 363 364 /* Resource Group subtable */ 365 366 typedef struct acpi_csrt_group 367 { 368 UINT32 Length; 369 UINT32 VendorId; 370 UINT32 SubvendorId; 371 UINT16 DeviceId; 372 UINT16 SubdeviceId; 373 UINT16 Revision; 374 UINT16 Reserved; 375 UINT32 SharedInfoLength; 376 377 /* Shared data immediately follows (Length = SharedInfoLength) */ 378 379 } ACPI_CSRT_GROUP; 380 381 /* Shared Info subtable */ 382 383 typedef struct acpi_csrt_shared_info 384 { 385 UINT16 MajorVersion; 386 UINT16 MinorVersion; 387 UINT32 MmioBaseLow; 388 UINT32 MmioBaseHigh; 389 UINT32 GsiInterrupt; 390 UINT8 InterruptPolarity; 391 UINT8 InterruptMode; 392 UINT8 NumChannels; 393 UINT8 DmaAddressWidth; 394 UINT16 BaseRequestLine; 395 UINT16 NumHandshakeSignals; 396 UINT32 MaxBlockSize; 397 398 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 399 400 } ACPI_CSRT_SHARED_INFO; 401 402 /* Resource Descriptor subtable */ 403 404 typedef struct acpi_csrt_descriptor 405 { 406 UINT32 Length; 407 UINT16 Type; 408 UINT16 Subtype; 409 UINT32 Uid; 410 411 /* Resource-specific information immediately follows */ 412 413 } ACPI_CSRT_DESCRIPTOR; 414 415 416 /* Resource Types */ 417 418 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 419 #define ACPI_CSRT_TYPE_TIMER 0x0002 420 #define ACPI_CSRT_TYPE_DMA 0x0003 421 422 /* Resource Subtypes */ 423 424 #define ACPI_CSRT_XRUPT_LINE 0x0000 425 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 426 #define ACPI_CSRT_TIMER 0x0000 427 #define ACPI_CSRT_DMA_CHANNEL 0x0000 428 #define ACPI_CSRT_DMA_CONTROLLER 0x0001 429 430 431 /******************************************************************************* 432 * 433 * DBG2 - Debug Port Table 2 434 * Version 0 (Both main table and subtables) 435 * 436 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. 437 * 438 ******************************************************************************/ 439 440 typedef struct acpi_table_dbg2 441 { 442 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 443 UINT32 InfoOffset; 444 UINT32 InfoCount; 445 446 } ACPI_TABLE_DBG2; 447 448 449 typedef struct acpi_dbg2_header 450 { 451 UINT32 InfoOffset; 452 UINT32 InfoCount; 453 454 } ACPI_DBG2_HEADER; 455 456 457 /* Debug Device Information Subtable */ 458 459 typedef struct acpi_dbg2_device 460 { 461 UINT8 Revision; 462 UINT16 Length; 463 UINT8 RegisterCount; /* Number of BaseAddress registers */ 464 UINT16 NamepathLength; 465 UINT16 NamepathOffset; 466 UINT16 OemDataLength; 467 UINT16 OemDataOffset; 468 UINT16 PortType; 469 UINT16 PortSubtype; 470 UINT16 Reserved; 471 UINT16 BaseAddressOffset; 472 UINT16 AddressSizeOffset; 473 /* 474 * Data that follows: 475 * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 476 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 477 * Namepath (required) - Null terminated string. Single dot if not supported. 478 * OemData (optional) - Length is OemDataLength. 479 */ 480 } ACPI_DBG2_DEVICE; 481 482 /* Types for PortType field above */ 483 484 #define ACPI_DBG2_SERIAL_PORT 0x8000 485 #define ACPI_DBG2_1394_PORT 0x8001 486 #define ACPI_DBG2_USB_PORT 0x8002 487 #define ACPI_DBG2_NET_PORT 0x8003 488 489 /* Subtypes for PortSubtype field above */ 490 491 #define ACPI_DBG2_16550_COMPATIBLE 0x0000 492 #define ACPI_DBG2_16550_SUBSET 0x0001 493 494 #define ACPI_DBG2_1394_STANDARD 0x0000 495 496 #define ACPI_DBG2_USB_XHCI 0x0000 497 #define ACPI_DBG2_USB_EHCI 0x0001 498 499 500 /******************************************************************************* 501 * 502 * DBGP - Debug Port table 503 * Version 1 504 * 505 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 506 * 507 ******************************************************************************/ 508 509 typedef struct acpi_table_dbgp 510 { 511 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 512 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 513 UINT8 Reserved[3]; 514 ACPI_GENERIC_ADDRESS DebugPort; 515 516 } ACPI_TABLE_DBGP; 517 518 519 /******************************************************************************* 520 * 521 * DMAR - DMA Remapping table 522 * Version 1 523 * 524 * Conforms to "Intel Virtualization Technology for Directed I/O", 525 * Version 2.2, Sept. 2013 526 * 527 ******************************************************************************/ 528 529 typedef struct acpi_table_dmar 530 { 531 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 532 UINT8 Width; /* Host Address Width */ 533 UINT8 Flags; 534 UINT8 Reserved[10]; 535 536 } ACPI_TABLE_DMAR; 537 538 /* Masks for Flags field above */ 539 540 #define ACPI_DMAR_INTR_REMAP (1) 541 542 543 /* DMAR subtable header */ 544 545 typedef struct acpi_dmar_header 546 { 547 UINT16 Type; 548 UINT16 Length; 549 550 } ACPI_DMAR_HEADER; 551 552 /* Values for subtable type in ACPI_DMAR_HEADER */ 553 554 enum AcpiDmarType 555 { 556 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 557 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 558 ACPI_DMAR_TYPE_ROOT_ATS = 2, 559 ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 560 ACPI_DMAR_TYPE_NAMESPACE = 4, 561 ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 562 }; 563 564 565 /* DMAR Device Scope structure */ 566 567 typedef struct acpi_dmar_device_scope 568 { 569 UINT8 EntryType; 570 UINT8 Length; 571 UINT16 Reserved; 572 UINT8 EnumerationId; 573 UINT8 Bus; 574 575 } ACPI_DMAR_DEVICE_SCOPE; 576 577 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 578 579 enum AcpiDmarScopeType 580 { 581 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 582 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 583 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 584 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 585 ACPI_DMAR_SCOPE_TYPE_HPET = 4, 586 ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 587 ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 588 }; 589 590 typedef struct acpi_dmar_pci_path 591 { 592 UINT8 Device; 593 UINT8 Function; 594 595 } ACPI_DMAR_PCI_PATH; 596 597 598 /* 599 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 600 */ 601 602 /* 0: Hardware Unit Definition */ 603 604 typedef struct acpi_dmar_hardware_unit 605 { 606 ACPI_DMAR_HEADER Header; 607 UINT8 Flags; 608 UINT8 Reserved; 609 UINT16 Segment; 610 UINT64 Address; /* Register Base Address */ 611 612 } ACPI_DMAR_HARDWARE_UNIT; 613 614 /* Masks for Flags field above */ 615 616 #define ACPI_DMAR_INCLUDE_ALL (1) 617 618 619 /* 1: Reserved Memory Defininition */ 620 621 typedef struct acpi_dmar_reserved_memory 622 { 623 ACPI_DMAR_HEADER Header; 624 UINT16 Reserved; 625 UINT16 Segment; 626 UINT64 BaseAddress; /* 4K aligned base address */ 627 UINT64 EndAddress; /* 4K aligned limit address */ 628 629 } ACPI_DMAR_RESERVED_MEMORY; 630 631 /* Masks for Flags field above */ 632 633 #define ACPI_DMAR_ALLOW_ALL (1) 634 635 636 /* 2: Root Port ATS Capability Reporting Structure */ 637 638 typedef struct acpi_dmar_atsr 639 { 640 ACPI_DMAR_HEADER Header; 641 UINT8 Flags; 642 UINT8 Reserved; 643 UINT16 Segment; 644 645 } ACPI_DMAR_ATSR; 646 647 /* Masks for Flags field above */ 648 649 #define ACPI_DMAR_ALL_PORTS (1) 650 651 652 /* 3: Remapping Hardware Static Affinity Structure */ 653 654 typedef struct acpi_dmar_rhsa 655 { 656 ACPI_DMAR_HEADER Header; 657 UINT32 Reserved; 658 UINT64 BaseAddress; 659 UINT32 ProximityDomain; 660 661 } ACPI_DMAR_RHSA; 662 663 664 /* 4: ACPI Namespace Device Declaration Structure */ 665 666 typedef struct acpi_dmar_andd 667 { 668 ACPI_DMAR_HEADER Header; 669 UINT8 Reserved[3]; 670 UINT8 DeviceNumber; 671 char DeviceName[1]; 672 673 } ACPI_DMAR_ANDD; 674 675 676 /******************************************************************************* 677 * 678 * HPET - High Precision Event Timer table 679 * Version 1 680 * 681 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 682 * Version 1.0a, October 2004 683 * 684 ******************************************************************************/ 685 686 typedef struct acpi_table_hpet 687 { 688 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 689 UINT32 Id; /* Hardware ID of event timer block */ 690 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 691 UINT8 Sequence; /* HPET sequence number */ 692 UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 693 UINT8 Flags; 694 695 } ACPI_TABLE_HPET; 696 697 /* Masks for Flags field above */ 698 699 #define ACPI_HPET_PAGE_PROTECT_MASK (3) 700 701 /* Values for Page Protect flags */ 702 703 enum AcpiHpetPageProtect 704 { 705 ACPI_HPET_NO_PAGE_PROTECT = 0, 706 ACPI_HPET_PAGE_PROTECT4 = 1, 707 ACPI_HPET_PAGE_PROTECT64 = 2 708 }; 709 710 711 /******************************************************************************* 712 * 713 * IBFT - Boot Firmware Table 714 * Version 1 715 * 716 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 717 * Specification", Version 1.01, March 1, 2007 718 * 719 * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 720 * Therefore, it is not currently supported by the disassembler. 721 * 722 ******************************************************************************/ 723 724 typedef struct acpi_table_ibft 725 { 726 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 727 UINT8 Reserved[12]; 728 729 } ACPI_TABLE_IBFT; 730 731 732 /* IBFT common subtable header */ 733 734 typedef struct acpi_ibft_header 735 { 736 UINT8 Type; 737 UINT8 Version; 738 UINT16 Length; 739 UINT8 Index; 740 UINT8 Flags; 741 742 } ACPI_IBFT_HEADER; 743 744 /* Values for Type field above */ 745 746 enum AcpiIbftType 747 { 748 ACPI_IBFT_TYPE_NOT_USED = 0, 749 ACPI_IBFT_TYPE_CONTROL = 1, 750 ACPI_IBFT_TYPE_INITIATOR = 2, 751 ACPI_IBFT_TYPE_NIC = 3, 752 ACPI_IBFT_TYPE_TARGET = 4, 753 ACPI_IBFT_TYPE_EXTENSIONS = 5, 754 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 755 }; 756 757 758 /* IBFT subtables */ 759 760 typedef struct acpi_ibft_control 761 { 762 ACPI_IBFT_HEADER Header; 763 UINT16 Extensions; 764 UINT16 InitiatorOffset; 765 UINT16 Nic0Offset; 766 UINT16 Target0Offset; 767 UINT16 Nic1Offset; 768 UINT16 Target1Offset; 769 770 } ACPI_IBFT_CONTROL; 771 772 typedef struct acpi_ibft_initiator 773 { 774 ACPI_IBFT_HEADER Header; 775 UINT8 SnsServer[16]; 776 UINT8 SlpServer[16]; 777 UINT8 PrimaryServer[16]; 778 UINT8 SecondaryServer[16]; 779 UINT16 NameLength; 780 UINT16 NameOffset; 781 782 } ACPI_IBFT_INITIATOR; 783 784 typedef struct acpi_ibft_nic 785 { 786 ACPI_IBFT_HEADER Header; 787 UINT8 IpAddress[16]; 788 UINT8 SubnetMaskPrefix; 789 UINT8 Origin; 790 UINT8 Gateway[16]; 791 UINT8 PrimaryDns[16]; 792 UINT8 SecondaryDns[16]; 793 UINT8 Dhcp[16]; 794 UINT16 Vlan; 795 UINT8 MacAddress[6]; 796 UINT16 PciAddress; 797 UINT16 NameLength; 798 UINT16 NameOffset; 799 800 } ACPI_IBFT_NIC; 801 802 typedef struct acpi_ibft_target 803 { 804 ACPI_IBFT_HEADER Header; 805 UINT8 TargetIpAddress[16]; 806 UINT16 TargetIpSocket; 807 UINT8 TargetBootLun[8]; 808 UINT8 ChapType; 809 UINT8 NicAssociation; 810 UINT16 TargetNameLength; 811 UINT16 TargetNameOffset; 812 UINT16 ChapNameLength; 813 UINT16 ChapNameOffset; 814 UINT16 ChapSecretLength; 815 UINT16 ChapSecretOffset; 816 UINT16 ReverseChapNameLength; 817 UINT16 ReverseChapNameOffset; 818 UINT16 ReverseChapSecretLength; 819 UINT16 ReverseChapSecretOffset; 820 821 } ACPI_IBFT_TARGET; 822 823 824 /******************************************************************************* 825 * 826 * IVRS - I/O Virtualization Reporting Structure 827 * Version 1 828 * 829 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 830 * Revision 1.26, February 2009. 831 * 832 ******************************************************************************/ 833 834 typedef struct acpi_table_ivrs 835 { 836 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 837 UINT32 Info; /* Common virtualization info */ 838 UINT64 Reserved; 839 840 } ACPI_TABLE_IVRS; 841 842 /* Values for Info field above */ 843 844 #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 845 #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 846 #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 847 848 849 /* IVRS subtable header */ 850 851 typedef struct acpi_ivrs_header 852 { 853 UINT8 Type; /* Subtable type */ 854 UINT8 Flags; 855 UINT16 Length; /* Subtable length */ 856 UINT16 DeviceId; /* ID of IOMMU */ 857 858 } ACPI_IVRS_HEADER; 859 860 /* Values for subtable Type above */ 861 862 enum AcpiIvrsType 863 { 864 ACPI_IVRS_TYPE_HARDWARE = 0x10, 865 ACPI_IVRS_TYPE_MEMORY1 = 0x20, 866 ACPI_IVRS_TYPE_MEMORY2 = 0x21, 867 ACPI_IVRS_TYPE_MEMORY3 = 0x22 868 }; 869 870 /* Masks for Flags field above for IVHD subtable */ 871 872 #define ACPI_IVHD_TT_ENABLE (1) 873 #define ACPI_IVHD_PASS_PW (1<<1) 874 #define ACPI_IVHD_RES_PASS_PW (1<<2) 875 #define ACPI_IVHD_ISOC (1<<3) 876 #define ACPI_IVHD_IOTLB (1<<4) 877 878 /* Masks for Flags field above for IVMD subtable */ 879 880 #define ACPI_IVMD_UNITY (1) 881 #define ACPI_IVMD_READ (1<<1) 882 #define ACPI_IVMD_WRITE (1<<2) 883 #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 884 885 886 /* 887 * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 888 */ 889 890 /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 891 892 typedef struct acpi_ivrs_hardware 893 { 894 ACPI_IVRS_HEADER Header; 895 UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 896 UINT64 BaseAddress; /* IOMMU control registers */ 897 UINT16 PciSegmentGroup; 898 UINT16 Info; /* MSI number and unit ID */ 899 UINT32 Reserved; 900 901 } ACPI_IVRS_HARDWARE; 902 903 /* Masks for Info field above */ 904 905 #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 906 #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 907 908 909 /* 910 * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 911 * Upper two bits of the Type field are the (encoded) length of the structure. 912 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 913 * are reserved for future use but not defined. 914 */ 915 typedef struct acpi_ivrs_de_header 916 { 917 UINT8 Type; 918 UINT16 Id; 919 UINT8 DataSetting; 920 921 } ACPI_IVRS_DE_HEADER; 922 923 /* Length of device entry is in the top two bits of Type field above */ 924 925 #define ACPI_IVHD_ENTRY_LENGTH 0xC0 926 927 /* Values for device entry Type field above */ 928 929 enum AcpiIvrsDeviceEntryType 930 { 931 /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 932 933 ACPI_IVRS_TYPE_PAD4 = 0, 934 ACPI_IVRS_TYPE_ALL = 1, 935 ACPI_IVRS_TYPE_SELECT = 2, 936 ACPI_IVRS_TYPE_START = 3, 937 ACPI_IVRS_TYPE_END = 4, 938 939 /* 8-byte device entries */ 940 941 ACPI_IVRS_TYPE_PAD8 = 64, 942 ACPI_IVRS_TYPE_NOT_USED = 65, 943 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 944 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 945 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 946 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 947 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 948 }; 949 950 /* Values for Data field above */ 951 952 #define ACPI_IVHD_INIT_PASS (1) 953 #define ACPI_IVHD_EINT_PASS (1<<1) 954 #define ACPI_IVHD_NMI_PASS (1<<2) 955 #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 956 #define ACPI_IVHD_LINT0_PASS (1<<6) 957 #define ACPI_IVHD_LINT1_PASS (1<<7) 958 959 960 /* Types 0-4: 4-byte device entry */ 961 962 typedef struct acpi_ivrs_device4 963 { 964 ACPI_IVRS_DE_HEADER Header; 965 966 } ACPI_IVRS_DEVICE4; 967 968 /* Types 66-67: 8-byte device entry */ 969 970 typedef struct acpi_ivrs_device8a 971 { 972 ACPI_IVRS_DE_HEADER Header; 973 UINT8 Reserved1; 974 UINT16 UsedId; 975 UINT8 Reserved2; 976 977 } ACPI_IVRS_DEVICE8A; 978 979 /* Types 70-71: 8-byte device entry */ 980 981 typedef struct acpi_ivrs_device8b 982 { 983 ACPI_IVRS_DE_HEADER Header; 984 UINT32 ExtendedData; 985 986 } ACPI_IVRS_DEVICE8B; 987 988 /* Values for ExtendedData above */ 989 990 #define ACPI_IVHD_ATS_DISABLED (1<<31) 991 992 /* Type 72: 8-byte device entry */ 993 994 typedef struct acpi_ivrs_device8c 995 { 996 ACPI_IVRS_DE_HEADER Header; 997 UINT8 Handle; 998 UINT16 UsedId; 999 UINT8 Variety; 1000 1001 } ACPI_IVRS_DEVICE8C; 1002 1003 /* Values for Variety field above */ 1004 1005 #define ACPI_IVHD_IOAPIC 1 1006 #define ACPI_IVHD_HPET 2 1007 1008 1009 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 1010 1011 typedef struct acpi_ivrs_memory 1012 { 1013 ACPI_IVRS_HEADER Header; 1014 UINT16 AuxData; 1015 UINT64 Reserved; 1016 UINT64 StartAddress; 1017 UINT64 MemoryLength; 1018 1019 } ACPI_IVRS_MEMORY; 1020 1021 1022 /******************************************************************************* 1023 * 1024 * LPIT - Low Power Idle Table 1025 * 1026 * Conforms to "ACPI Low Power Idle Table (LPIT) and _LPD Proposal (DRAFT)" 1027 * 1028 ******************************************************************************/ 1029 1030 typedef struct acpi_table_lpit 1031 { 1032 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1033 1034 } ACPI_TABLE_LPIT; 1035 1036 1037 /* LPIT subtable header */ 1038 1039 typedef struct acpi_lpit_header 1040 { 1041 UINT32 Type; /* Subtable type */ 1042 UINT32 Length; /* Subtable length */ 1043 UINT16 UniqueId; 1044 UINT16 Reserved; 1045 UINT32 Flags; 1046 1047 } ACPI_LPIT_HEADER; 1048 1049 /* Values for subtable Type above */ 1050 1051 enum AcpiLpitType 1052 { 1053 ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1054 ACPI_LPIT_TYPE_SIMPLE_IO = 0x01 1055 }; 1056 1057 /* Masks for Flags field above */ 1058 1059 #define ACPI_LPIT_STATE_DISABLED (1) 1060 #define ACPI_LPIT_NO_COUNTER (1<<1) 1061 1062 /* 1063 * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1064 */ 1065 1066 /* 0x00: Native C-state instruction based LPI structure */ 1067 1068 typedef struct acpi_lpit_native 1069 { 1070 ACPI_LPIT_HEADER Header; 1071 ACPI_GENERIC_ADDRESS EntryTrigger; 1072 UINT32 Residency; 1073 UINT32 Latency; 1074 ACPI_GENERIC_ADDRESS ResidencyCounter; 1075 UINT64 CounterFrequency; 1076 1077 } ACPI_LPIT_NATIVE; 1078 1079 1080 /* 0x01: Simple I/O based LPI structure */ 1081 1082 typedef struct acpi_lpit_io 1083 { 1084 ACPI_LPIT_HEADER Header; 1085 ACPI_GENERIC_ADDRESS EntryTrigger; 1086 UINT32 TriggerAction; 1087 UINT64 TriggerValue; 1088 UINT64 TriggerMask; 1089 ACPI_GENERIC_ADDRESS MinimumIdleState; 1090 UINT32 Residency; 1091 UINT32 Latency; 1092 ACPI_GENERIC_ADDRESS ResidencyCounter; 1093 UINT64 CounterFrequency; 1094 1095 } ACPI_LPIT_IO; 1096 1097 1098 /******************************************************************************* 1099 * 1100 * MCFG - PCI Memory Mapped Configuration table and subtable 1101 * Version 1 1102 * 1103 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1104 * 1105 ******************************************************************************/ 1106 1107 typedef struct acpi_table_mcfg 1108 { 1109 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1110 UINT8 Reserved[8]; 1111 1112 } ACPI_TABLE_MCFG; 1113 1114 1115 /* Subtable */ 1116 1117 typedef struct acpi_mcfg_allocation 1118 { 1119 UINT64 Address; /* Base address, processor-relative */ 1120 UINT16 PciSegment; /* PCI segment group number */ 1121 UINT8 StartBusNumber; /* Starting PCI Bus number */ 1122 UINT8 EndBusNumber; /* Final PCI Bus number */ 1123 UINT32 Reserved; 1124 1125 } ACPI_MCFG_ALLOCATION; 1126 1127 1128 /******************************************************************************* 1129 * 1130 * MCHI - Management Controller Host Interface Table 1131 * Version 1 1132 * 1133 * Conforms to "Management Component Transport Protocol (MCTP) Host 1134 * Interface Specification", Revision 1.0.0a, October 13, 2009 1135 * 1136 ******************************************************************************/ 1137 1138 typedef struct acpi_table_mchi 1139 { 1140 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1141 UINT8 InterfaceType; 1142 UINT8 Protocol; 1143 UINT64 ProtocolData; 1144 UINT8 InterruptType; 1145 UINT8 Gpe; 1146 UINT8 PciDeviceFlag; 1147 UINT32 GlobalInterrupt; 1148 ACPI_GENERIC_ADDRESS ControlRegister; 1149 UINT8 PciSegment; 1150 UINT8 PciBus; 1151 UINT8 PciDevice; 1152 UINT8 PciFunction; 1153 1154 } ACPI_TABLE_MCHI; 1155 1156 1157 /******************************************************************************* 1158 * 1159 * MTMR - MID Timer Table 1160 * Version 1 1161 * 1162 * Conforms to "Simple Firmware Interface Specification", 1163 * Draft 0.8.2, Oct 19, 2010 1164 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 1165 * 1166 ******************************************************************************/ 1167 1168 typedef struct acpi_table_mtmr 1169 { 1170 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1171 1172 } ACPI_TABLE_MTMR; 1173 1174 /* MTMR entry */ 1175 1176 typedef struct acpi_mtmr_entry 1177 { 1178 ACPI_GENERIC_ADDRESS PhysicalAddress; 1179 UINT32 Frequency; 1180 UINT32 Irq; 1181 1182 } ACPI_MTMR_ENTRY; 1183 1184 1185 /******************************************************************************* 1186 * 1187 * SLIC - Software Licensing Description Table 1188 * Version 1 1189 * 1190 * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems", 1191 * Copyright 2006 1192 * 1193 ******************************************************************************/ 1194 1195 /* Basic SLIC table is only the common ACPI header */ 1196 1197 typedef struct acpi_table_slic 1198 { 1199 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1200 1201 } ACPI_TABLE_SLIC; 1202 1203 1204 /* Common SLIC subtable header */ 1205 1206 typedef struct acpi_slic_header 1207 { 1208 UINT32 Type; 1209 UINT32 Length; 1210 1211 } ACPI_SLIC_HEADER; 1212 1213 /* Values for Type field above */ 1214 1215 enum AcpiSlicType 1216 { 1217 ACPI_SLIC_TYPE_PUBLIC_KEY = 0, 1218 ACPI_SLIC_TYPE_WINDOWS_MARKER = 1, 1219 ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 1220 }; 1221 1222 1223 /* 1224 * SLIC Subtables, correspond to Type in ACPI_SLIC_HEADER 1225 */ 1226 1227 /* 0: Public Key Structure */ 1228 1229 typedef struct acpi_slic_key 1230 { 1231 ACPI_SLIC_HEADER Header; 1232 UINT8 KeyType; 1233 UINT8 Version; 1234 UINT16 Reserved; 1235 UINT32 Algorithm; 1236 char Magic[4]; 1237 UINT32 BitLength; 1238 UINT32 Exponent; 1239 UINT8 Modulus[128]; 1240 1241 } ACPI_SLIC_KEY; 1242 1243 1244 /* 1: Windows Marker Structure */ 1245 1246 typedef struct acpi_slic_marker 1247 { 1248 ACPI_SLIC_HEADER Header; 1249 UINT32 Version; 1250 char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ 1251 char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ 1252 char WindowsFlag[8]; 1253 UINT32 SlicVersion; 1254 UINT8 Reserved[16]; 1255 UINT8 Signature[128]; 1256 1257 } ACPI_SLIC_MARKER; 1258 1259 1260 /******************************************************************************* 1261 * 1262 * SPCR - Serial Port Console Redirection table 1263 * Version 1 1264 * 1265 * Conforms to "Serial Port Console Redirection Table", 1266 * Version 1.00, January 11, 2002 1267 * 1268 ******************************************************************************/ 1269 1270 typedef struct acpi_table_spcr 1271 { 1272 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1273 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1274 UINT8 Reserved[3]; 1275 ACPI_GENERIC_ADDRESS SerialPort; 1276 UINT8 InterruptType; 1277 UINT8 PcInterrupt; 1278 UINT32 Interrupt; 1279 UINT8 BaudRate; 1280 UINT8 Parity; 1281 UINT8 StopBits; 1282 UINT8 FlowControl; 1283 UINT8 TerminalType; 1284 UINT8 Reserved1; 1285 UINT16 PciDeviceId; 1286 UINT16 PciVendorId; 1287 UINT8 PciBus; 1288 UINT8 PciDevice; 1289 UINT8 PciFunction; 1290 UINT32 PciFlags; 1291 UINT8 PciSegment; 1292 UINT32 Reserved2; 1293 1294 } ACPI_TABLE_SPCR; 1295 1296 /* Masks for PciFlags field above */ 1297 1298 #define ACPI_SPCR_DO_NOT_DISABLE (1) 1299 1300 1301 /******************************************************************************* 1302 * 1303 * SPMI - Server Platform Management Interface table 1304 * Version 5 1305 * 1306 * Conforms to "Intelligent Platform Management Interface Specification 1307 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1308 * June 12, 2009 markup. 1309 * 1310 ******************************************************************************/ 1311 1312 typedef struct acpi_table_spmi 1313 { 1314 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1315 UINT8 InterfaceType; 1316 UINT8 Reserved; /* Must be 1 */ 1317 UINT16 SpecRevision; /* Version of IPMI */ 1318 UINT8 InterruptType; 1319 UINT8 GpeNumber; /* GPE assigned */ 1320 UINT8 Reserved1; 1321 UINT8 PciDeviceFlag; 1322 UINT32 Interrupt; 1323 ACPI_GENERIC_ADDRESS IpmiRegister; 1324 UINT8 PciSegment; 1325 UINT8 PciBus; 1326 UINT8 PciDevice; 1327 UINT8 PciFunction; 1328 UINT8 Reserved2; 1329 1330 } ACPI_TABLE_SPMI; 1331 1332 /* Values for InterfaceType above */ 1333 1334 enum AcpiSpmiInterfaceTypes 1335 { 1336 ACPI_SPMI_NOT_USED = 0, 1337 ACPI_SPMI_KEYBOARD = 1, 1338 ACPI_SPMI_SMI = 2, 1339 ACPI_SPMI_BLOCK_TRANSFER = 3, 1340 ACPI_SPMI_SMBUS = 4, 1341 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1342 }; 1343 1344 1345 /******************************************************************************* 1346 * 1347 * TCPA - Trusted Computing Platform Alliance table 1348 * Version 1 1349 * 1350 * Conforms to "TCG PC Specific Implementation Specification", 1351 * Version 1.1, August 18, 2003 1352 * 1353 ******************************************************************************/ 1354 1355 typedef struct acpi_table_tcpa 1356 { 1357 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1358 UINT16 Reserved; 1359 UINT32 MaxLogLength; /* Maximum length for the event log area */ 1360 UINT64 LogAddress; /* Address of the event log area */ 1361 1362 } ACPI_TABLE_TCPA; 1363 1364 1365 /******************************************************************************* 1366 * 1367 * UEFI - UEFI Boot optimization Table 1368 * Version 1 1369 * 1370 * Conforms to "Unified Extensible Firmware Interface Specification", 1371 * Version 2.3, May 8, 2009 1372 * 1373 ******************************************************************************/ 1374 1375 typedef struct acpi_table_uefi 1376 { 1377 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1378 UINT8 Identifier[16]; /* UUID identifier */ 1379 UINT16 DataOffset; /* Offset of remaining data in table */ 1380 1381 } ACPI_TABLE_UEFI; 1382 1383 1384 /******************************************************************************* 1385 * 1386 * VRTC - Virtual Real Time Clock Table 1387 * Version 1 1388 * 1389 * Conforms to "Simple Firmware Interface Specification", 1390 * Draft 0.8.2, Oct 19, 2010 1391 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 1392 * 1393 ******************************************************************************/ 1394 1395 typedef struct acpi_table_vrtc 1396 { 1397 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1398 1399 } ACPI_TABLE_VRTC; 1400 1401 /* VRTC entry */ 1402 1403 typedef struct acpi_vrtc_entry 1404 { 1405 ACPI_GENERIC_ADDRESS PhysicalAddress; 1406 UINT32 Irq; 1407 1408 } ACPI_VRTC_ENTRY; 1409 1410 1411 /******************************************************************************* 1412 * 1413 * WAET - Windows ACPI Emulated devices Table 1414 * Version 1 1415 * 1416 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1417 * 1418 ******************************************************************************/ 1419 1420 typedef struct acpi_table_waet 1421 { 1422 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1423 UINT32 Flags; 1424 1425 } ACPI_TABLE_WAET; 1426 1427 /* Masks for Flags field above */ 1428 1429 #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1430 #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1431 1432 1433 /******************************************************************************* 1434 * 1435 * WDAT - Watchdog Action Table 1436 * Version 1 1437 * 1438 * Conforms to "Hardware Watchdog Timers Design Specification", 1439 * Copyright 2006 Microsoft Corporation. 1440 * 1441 ******************************************************************************/ 1442 1443 typedef struct acpi_table_wdat 1444 { 1445 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1446 UINT32 HeaderLength; /* Watchdog Header Length */ 1447 UINT16 PciSegment; /* PCI Segment number */ 1448 UINT8 PciBus; /* PCI Bus number */ 1449 UINT8 PciDevice; /* PCI Device number */ 1450 UINT8 PciFunction; /* PCI Function number */ 1451 UINT8 Reserved[3]; 1452 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1453 UINT32 MaxCount; /* Maximum counter value supported */ 1454 UINT32 MinCount; /* Minimum counter value */ 1455 UINT8 Flags; 1456 UINT8 Reserved2[3]; 1457 UINT32 Entries; /* Number of watchdog entries that follow */ 1458 1459 } ACPI_TABLE_WDAT; 1460 1461 /* Masks for Flags field above */ 1462 1463 #define ACPI_WDAT_ENABLED (1) 1464 #define ACPI_WDAT_STOPPED 0x80 1465 1466 1467 /* WDAT Instruction Entries (actions) */ 1468 1469 typedef struct acpi_wdat_entry 1470 { 1471 UINT8 Action; 1472 UINT8 Instruction; 1473 UINT16 Reserved; 1474 ACPI_GENERIC_ADDRESS RegisterRegion; 1475 UINT32 Value; /* Value used with Read/Write register */ 1476 UINT32 Mask; /* Bitmask required for this register instruction */ 1477 1478 } ACPI_WDAT_ENTRY; 1479 1480 /* Values for Action field above */ 1481 1482 enum AcpiWdatActions 1483 { 1484 ACPI_WDAT_RESET = 1, 1485 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1486 ACPI_WDAT_GET_COUNTDOWN = 5, 1487 ACPI_WDAT_SET_COUNTDOWN = 6, 1488 ACPI_WDAT_GET_RUNNING_STATE = 8, 1489 ACPI_WDAT_SET_RUNNING_STATE = 9, 1490 ACPI_WDAT_GET_STOPPED_STATE = 10, 1491 ACPI_WDAT_SET_STOPPED_STATE = 11, 1492 ACPI_WDAT_GET_REBOOT = 16, 1493 ACPI_WDAT_SET_REBOOT = 17, 1494 ACPI_WDAT_GET_SHUTDOWN = 18, 1495 ACPI_WDAT_SET_SHUTDOWN = 19, 1496 ACPI_WDAT_GET_STATUS = 32, 1497 ACPI_WDAT_SET_STATUS = 33, 1498 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1499 }; 1500 1501 /* Values for Instruction field above */ 1502 1503 enum AcpiWdatInstructions 1504 { 1505 ACPI_WDAT_READ_VALUE = 0, 1506 ACPI_WDAT_READ_COUNTDOWN = 1, 1507 ACPI_WDAT_WRITE_VALUE = 2, 1508 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1509 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1510 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1511 }; 1512 1513 1514 /******************************************************************************* 1515 * 1516 * WDDT - Watchdog Descriptor Table 1517 * Version 1 1518 * 1519 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1520 * Version 001, September 2002 1521 * 1522 ******************************************************************************/ 1523 1524 typedef struct acpi_table_wddt 1525 { 1526 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1527 UINT16 SpecVersion; 1528 UINT16 TableVersion; 1529 UINT16 PciVendorId; 1530 ACPI_GENERIC_ADDRESS Address; 1531 UINT16 MaxCount; /* Maximum counter value supported */ 1532 UINT16 MinCount; /* Minimum counter value supported */ 1533 UINT16 Period; 1534 UINT16 Status; 1535 UINT16 Capability; 1536 1537 } ACPI_TABLE_WDDT; 1538 1539 /* Flags for Status field above */ 1540 1541 #define ACPI_WDDT_AVAILABLE (1) 1542 #define ACPI_WDDT_ACTIVE (1<<1) 1543 #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1544 #define ACPI_WDDT_USER_RESET (1<<11) 1545 #define ACPI_WDDT_WDT_RESET (1<<12) 1546 #define ACPI_WDDT_POWER_FAIL (1<<13) 1547 #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1548 1549 /* Flags for Capability field above */ 1550 1551 #define ACPI_WDDT_AUTO_RESET (1) 1552 #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1553 1554 1555 /******************************************************************************* 1556 * 1557 * WDRT - Watchdog Resource Table 1558 * Version 1 1559 * 1560 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1561 * Version 1.01, August 28, 2006 1562 * 1563 ******************************************************************************/ 1564 1565 typedef struct acpi_table_wdrt 1566 { 1567 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1568 ACPI_GENERIC_ADDRESS ControlRegister; 1569 ACPI_GENERIC_ADDRESS CountRegister; 1570 UINT16 PciDeviceId; 1571 UINT16 PciVendorId; 1572 UINT8 PciBus; /* PCI Bus number */ 1573 UINT8 PciDevice; /* PCI Device number */ 1574 UINT8 PciFunction; /* PCI Function number */ 1575 UINT8 PciSegment; /* PCI Segment number */ 1576 UINT16 MaxCount; /* Maximum counter value supported */ 1577 UINT8 Units; 1578 1579 } ACPI_TABLE_WDRT; 1580 1581 1582 /* Reset to default packing */ 1583 1584 #pragma pack() 1585 1586 #endif /* __ACTBL2_H__ */ 1587