actbl2.h revision 281687
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_MSDM "MSDM" /* Microsoft Data Management 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 128typedef 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 137typedef 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 148enum 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 164typedef 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 183typedef 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 193typedef 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 213typedef 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 222typedef 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 234typedef 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 250typedef 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 268typedef 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 286typedef 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 295typedef 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 312typedef 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 333typedef 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 369typedef 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 378typedef struct acpi_dbg2_header 379{ 380 UINT32 InfoOffset; 381 UINT32 InfoCount; 382 383} ACPI_DBG2_HEADER; 384 385 386/* Debug Device Information Subtable */ 387 388typedef 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 438typedef 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 2.2, Sept. 2013 455 * 456 ******************************************************************************/ 457 458typedef 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 474typedef 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 483enum 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 496typedef 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 508enum 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 519typedef 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 533typedef 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 550typedef 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 567typedef 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 583typedef 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 595typedef 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 615typedef 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 632enum 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 653typedef 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 663typedef 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 675enum 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 689typedef 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 701typedef 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 713typedef 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 731typedef 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 763typedef 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 780typedef 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 791enum 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 821typedef 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 */ 844typedef 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 858enum 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 891typedef 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 899typedef 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 910typedef 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 923typedef 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 940typedef 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 959typedef 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 968typedef 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 980enum AcpiLpitType 981{ 982 ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 983 ACPI_LPIT_TYPE_SIMPLE_IO = 0x01, 984 ACPI_LPIT_TYPE_RESERVED = 0x02 /* 2 and above are reserved */ 985}; 986 987/* Masks for Flags field above */ 988 989#define ACPI_LPIT_STATE_DISABLED (1) 990#define ACPI_LPIT_NO_COUNTER (1<<1) 991 992/* 993 * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 994 */ 995 996/* 0x00: Native C-state instruction based LPI structure */ 997 998typedef struct acpi_lpit_native 999{ 1000 ACPI_LPIT_HEADER Header; 1001 ACPI_GENERIC_ADDRESS EntryTrigger; 1002 UINT32 Residency; 1003 UINT32 Latency; 1004 ACPI_GENERIC_ADDRESS ResidencyCounter; 1005 UINT64 CounterFrequency; 1006 1007} ACPI_LPIT_NATIVE; 1008 1009 1010/* 0x01: Simple I/O based LPI structure */ 1011 1012typedef struct acpi_lpit_io 1013{ 1014 ACPI_LPIT_HEADER Header; 1015 ACPI_GENERIC_ADDRESS EntryTrigger; 1016 UINT32 TriggerAction; 1017 UINT64 TriggerValue; 1018 UINT64 TriggerMask; 1019 ACPI_GENERIC_ADDRESS MinimumIdleState; 1020 UINT32 Residency; 1021 UINT32 Latency; 1022 ACPI_GENERIC_ADDRESS ResidencyCounter; 1023 UINT64 CounterFrequency; 1024 1025} ACPI_LPIT_IO; 1026 1027 1028/******************************************************************************* 1029 * 1030 * MCFG - PCI Memory Mapped Configuration table and subtable 1031 * Version 1 1032 * 1033 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1034 * 1035 ******************************************************************************/ 1036 1037typedef struct acpi_table_mcfg 1038{ 1039 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1040 UINT8 Reserved[8]; 1041 1042} ACPI_TABLE_MCFG; 1043 1044 1045/* Subtable */ 1046 1047typedef struct acpi_mcfg_allocation 1048{ 1049 UINT64 Address; /* Base address, processor-relative */ 1050 UINT16 PciSegment; /* PCI segment group number */ 1051 UINT8 StartBusNumber; /* Starting PCI Bus number */ 1052 UINT8 EndBusNumber; /* Final PCI Bus number */ 1053 UINT32 Reserved; 1054 1055} ACPI_MCFG_ALLOCATION; 1056 1057 1058/******************************************************************************* 1059 * 1060 * MCHI - Management Controller Host Interface Table 1061 * Version 1 1062 * 1063 * Conforms to "Management Component Transport Protocol (MCTP) Host 1064 * Interface Specification", Revision 1.0.0a, October 13, 2009 1065 * 1066 ******************************************************************************/ 1067 1068typedef struct acpi_table_mchi 1069{ 1070 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1071 UINT8 InterfaceType; 1072 UINT8 Protocol; 1073 UINT64 ProtocolData; 1074 UINT8 InterruptType; 1075 UINT8 Gpe; 1076 UINT8 PciDeviceFlag; 1077 UINT32 GlobalInterrupt; 1078 ACPI_GENERIC_ADDRESS ControlRegister; 1079 UINT8 PciSegment; 1080 UINT8 PciBus; 1081 UINT8 PciDevice; 1082 UINT8 PciFunction; 1083 1084} ACPI_TABLE_MCHI; 1085 1086 1087/******************************************************************************* 1088 * 1089 * MSDM - Microsoft Data Management table 1090 * 1091 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1092 * November 29, 2011. Copyright 2011 Microsoft 1093 * 1094 ******************************************************************************/ 1095 1096/* Basic MSDM table is only the common ACPI header */ 1097 1098typedef struct acpi_table_msdm 1099{ 1100 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1101 1102} ACPI_TABLE_MSDM; 1103 1104 1105/******************************************************************************* 1106 * 1107 * MTMR - MID Timer Table 1108 * Version 1 1109 * 1110 * Conforms to "Simple Firmware Interface Specification", 1111 * Draft 0.8.2, Oct 19, 2010 1112 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 1113 * 1114 ******************************************************************************/ 1115 1116typedef struct acpi_table_mtmr 1117{ 1118 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1119 1120} ACPI_TABLE_MTMR; 1121 1122/* MTMR entry */ 1123 1124typedef struct acpi_mtmr_entry 1125{ 1126 ACPI_GENERIC_ADDRESS PhysicalAddress; 1127 UINT32 Frequency; 1128 UINT32 Irq; 1129 1130} ACPI_MTMR_ENTRY; 1131 1132 1133/******************************************************************************* 1134 * 1135 * SLIC - Software Licensing Description Table 1136 * 1137 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1138 * November 29, 2011. Copyright 2011 Microsoft 1139 * 1140 ******************************************************************************/ 1141 1142/* Basic SLIC table is only the common ACPI header */ 1143 1144typedef struct acpi_table_slic 1145{ 1146 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1147 1148} ACPI_TABLE_SLIC; 1149 1150 1151/******************************************************************************* 1152 * 1153 * SPCR - Serial Port Console Redirection table 1154 * Version 1 1155 * 1156 * Conforms to "Serial Port Console Redirection Table", 1157 * Version 1.00, January 11, 2002 1158 * 1159 ******************************************************************************/ 1160 1161typedef struct acpi_table_spcr 1162{ 1163 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1164 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1165 UINT8 Reserved[3]; 1166 ACPI_GENERIC_ADDRESS SerialPort; 1167 UINT8 InterruptType; 1168 UINT8 PcInterrupt; 1169 UINT32 Interrupt; 1170 UINT8 BaudRate; 1171 UINT8 Parity; 1172 UINT8 StopBits; 1173 UINT8 FlowControl; 1174 UINT8 TerminalType; 1175 UINT8 Reserved1; 1176 UINT16 PciDeviceId; 1177 UINT16 PciVendorId; 1178 UINT8 PciBus; 1179 UINT8 PciDevice; 1180 UINT8 PciFunction; 1181 UINT32 PciFlags; 1182 UINT8 PciSegment; 1183 UINT32 Reserved2; 1184 1185} ACPI_TABLE_SPCR; 1186 1187/* Masks for PciFlags field above */ 1188 1189#define ACPI_SPCR_DO_NOT_DISABLE (1) 1190 1191 1192/******************************************************************************* 1193 * 1194 * SPMI - Server Platform Management Interface table 1195 * Version 5 1196 * 1197 * Conforms to "Intelligent Platform Management Interface Specification 1198 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1199 * June 12, 2009 markup. 1200 * 1201 ******************************************************************************/ 1202 1203typedef struct acpi_table_spmi 1204{ 1205 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1206 UINT8 InterfaceType; 1207 UINT8 Reserved; /* Must be 1 */ 1208 UINT16 SpecRevision; /* Version of IPMI */ 1209 UINT8 InterruptType; 1210 UINT8 GpeNumber; /* GPE assigned */ 1211 UINT8 Reserved1; 1212 UINT8 PciDeviceFlag; 1213 UINT32 Interrupt; 1214 ACPI_GENERIC_ADDRESS IpmiRegister; 1215 UINT8 PciSegment; 1216 UINT8 PciBus; 1217 UINT8 PciDevice; 1218 UINT8 PciFunction; 1219 UINT8 Reserved2; 1220 1221} ACPI_TABLE_SPMI; 1222 1223/* Values for InterfaceType above */ 1224 1225enum AcpiSpmiInterfaceTypes 1226{ 1227 ACPI_SPMI_NOT_USED = 0, 1228 ACPI_SPMI_KEYBOARD = 1, 1229 ACPI_SPMI_SMI = 2, 1230 ACPI_SPMI_BLOCK_TRANSFER = 3, 1231 ACPI_SPMI_SMBUS = 4, 1232 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1233}; 1234 1235 1236/******************************************************************************* 1237 * 1238 * TCPA - Trusted Computing Platform Alliance table 1239 * Version 1 1240 * 1241 * Conforms to "TCG PC Specific Implementation Specification", 1242 * Version 1.1, August 18, 2003 1243 * 1244 ******************************************************************************/ 1245 1246typedef struct acpi_table_tcpa 1247{ 1248 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1249 UINT16 Reserved; 1250 UINT32 MaxLogLength; /* Maximum length for the event log area */ 1251 UINT64 LogAddress; /* Address of the event log area */ 1252 1253} ACPI_TABLE_TCPA; 1254 1255 1256/******************************************************************************* 1257 * 1258 * UEFI - UEFI Boot optimization Table 1259 * Version 1 1260 * 1261 * Conforms to "Unified Extensible Firmware Interface Specification", 1262 * Version 2.3, May 8, 2009 1263 * 1264 ******************************************************************************/ 1265 1266typedef struct acpi_table_uefi 1267{ 1268 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1269 UINT8 Identifier[16]; /* UUID identifier */ 1270 UINT16 DataOffset; /* Offset of remaining data in table */ 1271 1272} ACPI_TABLE_UEFI; 1273 1274 1275/******************************************************************************* 1276 * 1277 * VRTC - Virtual Real Time Clock Table 1278 * Version 1 1279 * 1280 * Conforms to "Simple Firmware Interface Specification", 1281 * Draft 0.8.2, Oct 19, 2010 1282 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 1283 * 1284 ******************************************************************************/ 1285 1286typedef struct acpi_table_vrtc 1287{ 1288 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1289 1290} ACPI_TABLE_VRTC; 1291 1292/* VRTC entry */ 1293 1294typedef struct acpi_vrtc_entry 1295{ 1296 ACPI_GENERIC_ADDRESS PhysicalAddress; 1297 UINT32 Irq; 1298 1299} ACPI_VRTC_ENTRY; 1300 1301 1302/******************************************************************************* 1303 * 1304 * WAET - Windows ACPI Emulated devices Table 1305 * Version 1 1306 * 1307 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1308 * 1309 ******************************************************************************/ 1310 1311typedef struct acpi_table_waet 1312{ 1313 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1314 UINT32 Flags; 1315 1316} ACPI_TABLE_WAET; 1317 1318/* Masks for Flags field above */ 1319 1320#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1321#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1322 1323 1324/******************************************************************************* 1325 * 1326 * WDAT - Watchdog Action Table 1327 * Version 1 1328 * 1329 * Conforms to "Hardware Watchdog Timers Design Specification", 1330 * Copyright 2006 Microsoft Corporation. 1331 * 1332 ******************************************************************************/ 1333 1334typedef struct acpi_table_wdat 1335{ 1336 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1337 UINT32 HeaderLength; /* Watchdog Header Length */ 1338 UINT16 PciSegment; /* PCI Segment number */ 1339 UINT8 PciBus; /* PCI Bus number */ 1340 UINT8 PciDevice; /* PCI Device number */ 1341 UINT8 PciFunction; /* PCI Function number */ 1342 UINT8 Reserved[3]; 1343 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1344 UINT32 MaxCount; /* Maximum counter value supported */ 1345 UINT32 MinCount; /* Minimum counter value */ 1346 UINT8 Flags; 1347 UINT8 Reserved2[3]; 1348 UINT32 Entries; /* Number of watchdog entries that follow */ 1349 1350} ACPI_TABLE_WDAT; 1351 1352/* Masks for Flags field above */ 1353 1354#define ACPI_WDAT_ENABLED (1) 1355#define ACPI_WDAT_STOPPED 0x80 1356 1357 1358/* WDAT Instruction Entries (actions) */ 1359 1360typedef struct acpi_wdat_entry 1361{ 1362 UINT8 Action; 1363 UINT8 Instruction; 1364 UINT16 Reserved; 1365 ACPI_GENERIC_ADDRESS RegisterRegion; 1366 UINT32 Value; /* Value used with Read/Write register */ 1367 UINT32 Mask; /* Bitmask required for this register instruction */ 1368 1369} ACPI_WDAT_ENTRY; 1370 1371/* Values for Action field above */ 1372 1373enum AcpiWdatActions 1374{ 1375 ACPI_WDAT_RESET = 1, 1376 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1377 ACPI_WDAT_GET_COUNTDOWN = 5, 1378 ACPI_WDAT_SET_COUNTDOWN = 6, 1379 ACPI_WDAT_GET_RUNNING_STATE = 8, 1380 ACPI_WDAT_SET_RUNNING_STATE = 9, 1381 ACPI_WDAT_GET_STOPPED_STATE = 10, 1382 ACPI_WDAT_SET_STOPPED_STATE = 11, 1383 ACPI_WDAT_GET_REBOOT = 16, 1384 ACPI_WDAT_SET_REBOOT = 17, 1385 ACPI_WDAT_GET_SHUTDOWN = 18, 1386 ACPI_WDAT_SET_SHUTDOWN = 19, 1387 ACPI_WDAT_GET_STATUS = 32, 1388 ACPI_WDAT_SET_STATUS = 33, 1389 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1390}; 1391 1392/* Values for Instruction field above */ 1393 1394enum AcpiWdatInstructions 1395{ 1396 ACPI_WDAT_READ_VALUE = 0, 1397 ACPI_WDAT_READ_COUNTDOWN = 1, 1398 ACPI_WDAT_WRITE_VALUE = 2, 1399 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1400 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1401 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1402}; 1403 1404 1405/******************************************************************************* 1406 * 1407 * WDDT - Watchdog Descriptor Table 1408 * Version 1 1409 * 1410 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1411 * Version 001, September 2002 1412 * 1413 ******************************************************************************/ 1414 1415typedef struct acpi_table_wddt 1416{ 1417 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1418 UINT16 SpecVersion; 1419 UINT16 TableVersion; 1420 UINT16 PciVendorId; 1421 ACPI_GENERIC_ADDRESS Address; 1422 UINT16 MaxCount; /* Maximum counter value supported */ 1423 UINT16 MinCount; /* Minimum counter value supported */ 1424 UINT16 Period; 1425 UINT16 Status; 1426 UINT16 Capability; 1427 1428} ACPI_TABLE_WDDT; 1429 1430/* Flags for Status field above */ 1431 1432#define ACPI_WDDT_AVAILABLE (1) 1433#define ACPI_WDDT_ACTIVE (1<<1) 1434#define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1435#define ACPI_WDDT_USER_RESET (1<<11) 1436#define ACPI_WDDT_WDT_RESET (1<<12) 1437#define ACPI_WDDT_POWER_FAIL (1<<13) 1438#define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1439 1440/* Flags for Capability field above */ 1441 1442#define ACPI_WDDT_AUTO_RESET (1) 1443#define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1444 1445 1446/******************************************************************************* 1447 * 1448 * WDRT - Watchdog Resource Table 1449 * Version 1 1450 * 1451 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1452 * Version 1.01, August 28, 2006 1453 * 1454 ******************************************************************************/ 1455 1456typedef struct acpi_table_wdrt 1457{ 1458 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1459 ACPI_GENERIC_ADDRESS ControlRegister; 1460 ACPI_GENERIC_ADDRESS CountRegister; 1461 UINT16 PciDeviceId; 1462 UINT16 PciVendorId; 1463 UINT8 PciBus; /* PCI Bus number */ 1464 UINT8 PciDevice; /* PCI Device number */ 1465 UINT8 PciFunction; /* PCI Function number */ 1466 UINT8 PciSegment; /* PCI Segment number */ 1467 UINT16 MaxCount; /* Maximum counter value supported */ 1468 UINT8 Units; 1469 1470} ACPI_TABLE_WDRT; 1471 1472 1473/* Reset to default packing */ 1474 1475#pragma pack() 1476 1477#endif /* __ACTBL2_H__ */ 1478