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