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