1 /****************************************************************************** 2 * 3 * Name: actbl3.h - ACPI Table Definitions 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2018, 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 __ACTBL3_H__ 45 #define __ACTBL3_H__ 46 47 48 /******************************************************************************* 49 * 50 * Additional ACPI Tables 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 ******************************************************************************/ 56 57 58 /* 59 * Values for description table header signatures for tables defined in this 60 * file. Useful because they make it more difficult to inadvertently type in 61 * the wrong signature. 62 */ 63 #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 64 #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 65 #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 66 #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 67 #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 68 #define ACPI_SIG_STAO "STAO" /* Status Override table */ 69 #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 70 #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 71 #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 72 #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 73 #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 74 #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 75 #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 76 #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 77 #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 78 #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */ 79 #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 80 #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 81 82 /* 83 * All tables must be byte-packed to match the ACPI specification, since 84 * the tables are provided by the system BIOS. 85 */ 86 #pragma pack(1) 87 88 /* 89 * Note: C bitfields are not used for this reason: 90 * 91 * "Bitfields are great and easy to read, but unfortunately the C language 92 * does not specify the layout of bitfields in memory, which means they are 93 * essentially useless for dealing with packed data in on-disk formats or 94 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 95 * this decision was a design error in C. Ritchie could have picked an order 96 * and stuck with it." Norman Ramsey. 97 * See http://stackoverflow.com/a/1053662/41661 98 */ 99 100 101 /******************************************************************************* 102 * 103 * SLIC - Software Licensing Description Table 104 * 105 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 106 * November 29, 2011. Copyright 2011 Microsoft 107 * 108 ******************************************************************************/ 109 110 /* Basic SLIC table is only the common ACPI header */ 111 112 typedef struct acpi_table_slic 113 { 114 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 115 116 } ACPI_TABLE_SLIC; 117 118 119 /******************************************************************************* 120 * 121 * SLIT - System Locality Distance Information Table 122 * Version 1 123 * 124 ******************************************************************************/ 125 126 typedef struct acpi_table_slit 127 { 128 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 129 UINT64 LocalityCount; 130 UINT8 Entry[1]; /* Real size = localities^2 */ 131 132 } ACPI_TABLE_SLIT; 133 134 135 /******************************************************************************* 136 * 137 * SPCR - Serial Port Console Redirection table 138 * Version 2 139 * 140 * Conforms to "Serial Port Console Redirection Table", 141 * Version 1.03, August 10, 2015 142 * 143 ******************************************************************************/ 144 145 typedef struct acpi_table_spcr 146 { 147 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 148 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 149 UINT8 Reserved[3]; 150 ACPI_GENERIC_ADDRESS SerialPort; 151 UINT8 InterruptType; 152 UINT8 PcInterrupt; 153 UINT32 Interrupt; 154 UINT8 BaudRate; 155 UINT8 Parity; 156 UINT8 StopBits; 157 UINT8 FlowControl; 158 UINT8 TerminalType; 159 UINT8 Reserved1; 160 UINT16 PciDeviceId; 161 UINT16 PciVendorId; 162 UINT8 PciBus; 163 UINT8 PciDevice; 164 UINT8 PciFunction; 165 UINT32 PciFlags; 166 UINT8 PciSegment; 167 UINT32 Reserved2; 168 169 } ACPI_TABLE_SPCR; 170 171 /* Masks for PciFlags field above */ 172 173 #define ACPI_SPCR_DO_NOT_DISABLE (1) 174 175 /* Values for Interface Type: See the definition of the DBG2 table */ 176 177 178 /******************************************************************************* 179 * 180 * SPMI - Server Platform Management Interface table 181 * Version 5 182 * 183 * Conforms to "Intelligent Platform Management Interface Specification 184 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 185 * June 12, 2009 markup. 186 * 187 ******************************************************************************/ 188 189 typedef struct acpi_table_spmi 190 { 191 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 192 UINT8 InterfaceType; 193 UINT8 Reserved; /* Must be 1 */ 194 UINT16 SpecRevision; /* Version of IPMI */ 195 UINT8 InterruptType; 196 UINT8 GpeNumber; /* GPE assigned */ 197 UINT8 Reserved1; 198 UINT8 PciDeviceFlag; 199 UINT32 Interrupt; 200 ACPI_GENERIC_ADDRESS IpmiRegister; 201 UINT8 PciSegment; 202 UINT8 PciBus; 203 UINT8 PciDevice; 204 UINT8 PciFunction; 205 UINT8 Reserved2; 206 207 } ACPI_TABLE_SPMI; 208 209 /* Values for InterfaceType above */ 210 211 enum AcpiSpmiInterfaceTypes 212 { 213 ACPI_SPMI_NOT_USED = 0, 214 ACPI_SPMI_KEYBOARD = 1, 215 ACPI_SPMI_SMI = 2, 216 ACPI_SPMI_BLOCK_TRANSFER = 3, 217 ACPI_SPMI_SMBUS = 4, 218 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 219 }; 220 221 222 /******************************************************************************* 223 * 224 * SRAT - System Resource Affinity Table 225 * Version 3 226 * 227 ******************************************************************************/ 228 229 typedef struct acpi_table_srat 230 { 231 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 232 UINT32 TableRevision; /* Must be value '1' */ 233 UINT64 Reserved; /* Reserved, must be zero */ 234 235 } ACPI_TABLE_SRAT; 236 237 /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 238 239 enum AcpiSratType 240 { 241 ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 242 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 243 ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 244 ACPI_SRAT_TYPE_GICC_AFFINITY = 3, 245 ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ 246 ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 247 }; 248 249 /* 250 * SRAT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 251 */ 252 253 /* 0: Processor Local APIC/SAPIC Affinity */ 254 255 typedef struct acpi_srat_cpu_affinity 256 { 257 ACPI_SUBTABLE_HEADER Header; 258 UINT8 ProximityDomainLo; 259 UINT8 ApicId; 260 UINT32 Flags; 261 UINT8 LocalSapicEid; 262 UINT8 ProximityDomainHi[3]; 263 UINT32 ClockDomain; 264 265 } ACPI_SRAT_CPU_AFFINITY; 266 267 /* Flags */ 268 269 #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 270 271 272 /* 1: Memory Affinity */ 273 274 typedef struct acpi_srat_mem_affinity 275 { 276 ACPI_SUBTABLE_HEADER Header; 277 UINT32 ProximityDomain; 278 UINT16 Reserved; /* Reserved, must be zero */ 279 UINT64 BaseAddress; 280 UINT64 Length; 281 UINT32 Reserved1; 282 UINT32 Flags; 283 UINT64 Reserved2; /* Reserved, must be zero */ 284 285 } ACPI_SRAT_MEM_AFFINITY; 286 287 /* Flags */ 288 289 #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 290 #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 291 #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 292 293 294 /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 295 296 typedef struct acpi_srat_x2apic_cpu_affinity 297 { 298 ACPI_SUBTABLE_HEADER Header; 299 UINT16 Reserved; /* Reserved, must be zero */ 300 UINT32 ProximityDomain; 301 UINT32 ApicId; 302 UINT32 Flags; 303 UINT32 ClockDomain; 304 UINT32 Reserved2; 305 306 } ACPI_SRAT_X2APIC_CPU_AFFINITY; 307 308 /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 309 310 #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 311 312 313 /* 3: GICC Affinity (ACPI 5.1) */ 314 315 typedef struct acpi_srat_gicc_affinity 316 { 317 ACPI_SUBTABLE_HEADER Header; 318 UINT32 ProximityDomain; 319 UINT32 AcpiProcessorUid; 320 UINT32 Flags; 321 UINT32 ClockDomain; 322 323 } ACPI_SRAT_GICC_AFFINITY; 324 325 /* Flags for ACPI_SRAT_GICC_AFFINITY */ 326 327 #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ 328 329 330 /* 4: GCC ITS Affinity (ACPI 6.2) */ 331 332 typedef struct acpi_srat_gic_its_affinity 333 { 334 ACPI_SUBTABLE_HEADER Header; 335 UINT32 ProximityDomain; 336 UINT16 Reserved; 337 UINT32 ItsId; 338 339 } ACPI_SRAT_GIC_ITS_AFFINITY; 340 341 342 /******************************************************************************* 343 * 344 * STAO - Status Override Table (_STA override) - ACPI 6.0 345 * Version 1 346 * 347 * Conforms to "ACPI Specification for Status Override Table" 348 * 6 January 2015 349 * 350 ******************************************************************************/ 351 352 typedef struct acpi_table_stao 353 { 354 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 355 UINT8 IgnoreUart; 356 357 } ACPI_TABLE_STAO; 358 359 360 /******************************************************************************* 361 * 362 * TCPA - Trusted Computing Platform Alliance table 363 * Version 2 364 * 365 * TCG Hardware Interface Table for TPM 1.2 Clients and Servers 366 * 367 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 368 * Version 1.2, Revision 8 369 * February 27, 2017 370 * 371 * NOTE: There are two versions of the table with the same signature -- 372 * the client version and the server version. The common PlatformClass 373 * field is used to differentiate the two types of tables. 374 * 375 ******************************************************************************/ 376 377 typedef struct acpi_table_tcpa_hdr 378 { 379 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 380 UINT16 PlatformClass; 381 382 } ACPI_TABLE_TCPA_HDR; 383 384 /* 385 * Values for PlatformClass above. 386 * This is how the client and server subtables are differentiated 387 */ 388 #define ACPI_TCPA_CLIENT_TABLE 0 389 #define ACPI_TCPA_SERVER_TABLE 1 390 391 392 typedef struct acpi_table_tcpa_client 393 { 394 UINT32 MinimumLogLength; /* Minimum length for the event log area */ 395 UINT64 LogAddress; /* Address of the event log area */ 396 397 } ACPI_TABLE_TCPA_CLIENT; 398 399 typedef struct acpi_table_tcpa_server 400 { 401 UINT16 Reserved; 402 UINT64 MinimumLogLength; /* Minimum length for the event log area */ 403 UINT64 LogAddress; /* Address of the event log area */ 404 UINT16 SpecRevision; 405 UINT8 DeviceFlags; 406 UINT8 InterruptFlags; 407 UINT8 GpeNumber; 408 UINT8 Reserved2[3]; 409 UINT32 GlobalInterrupt; 410 ACPI_GENERIC_ADDRESS Address; 411 UINT32 Reserved3; 412 ACPI_GENERIC_ADDRESS ConfigAddress; 413 UINT8 Group; 414 UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 415 UINT8 Device; 416 UINT8 Function; 417 418 } ACPI_TABLE_TCPA_SERVER; 419 420 /* Values for DeviceFlags above */ 421 422 #define ACPI_TCPA_PCI_DEVICE (1) 423 #define ACPI_TCPA_BUS_PNP (1<<1) 424 #define ACPI_TCPA_ADDRESS_VALID (1<<2) 425 426 /* Values for InterruptFlags above */ 427 428 #define ACPI_TCPA_INTERRUPT_MODE (1) 429 #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 430 #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 431 #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 432 433 434 /******************************************************************************* 435 * 436 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 437 * Version 4 438 * 439 * TCG Hardware Interface Table for TPM 2.0 Clients and Servers 440 * 441 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 442 * Version 1.2, Revision 8 443 * February 27, 2017 444 * 445 ******************************************************************************/ 446 447 typedef struct acpi_table_tpm2 448 { 449 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 450 UINT16 PlatformClass; 451 UINT16 Reserved; 452 UINT64 ControlAddress; 453 UINT32 StartMethod; 454 455 /* Platform-specific data follows */ 456 457 } ACPI_TABLE_TPM2; 458 459 /* Values for StartMethod above */ 460 461 #define ACPI_TPM2_NOT_ALLOWED 0 462 #define ACPI_TPM2_RESERVED1 1 463 #define ACPI_TPM2_START_METHOD 2 464 #define ACPI_TPM2_RESERVED3 3 465 #define ACPI_TPM2_RESERVED4 4 466 #define ACPI_TPM2_RESERVED5 5 467 #define ACPI_TPM2_MEMORY_MAPPED 6 468 #define ACPI_TPM2_COMMAND_BUFFER 7 469 #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 470 #define ACPI_TPM2_RESERVED9 9 471 #define ACPI_TPM2_RESERVED10 10 472 #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 473 #define ACPI_TPM2_RESERVED 12 474 475 476 /* Optional trailer appears after any StartMethod subtables */ 477 478 typedef struct acpi_tpm2_trailer 479 { 480 UINT8 MethodParameters[12]; 481 UINT32 MinimumLogLength; /* Minimum length for the event log area */ 482 UINT64 LogAddress; /* Address of the event log area */ 483 484 } ACPI_TPM2_TRAILER; 485 486 487 /* 488 * Subtables (StartMethod-specific) 489 */ 490 491 /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 492 493 typedef struct acpi_tpm2_arm_smc 494 { 495 UINT32 GlobalInterrupt; 496 UINT8 InterruptFlags; 497 UINT8 OperationFlags; 498 UINT16 Reserved; 499 UINT32 FunctionId; 500 501 } ACPI_TPM2_ARM_SMC; 502 503 /* Values for InterruptFlags above */ 504 505 #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 506 507 /* Values for OperationFlags above */ 508 509 #define ACPI_TPM2_IDLE_SUPPORT (1) 510 511 512 /******************************************************************************* 513 * 514 * UEFI - UEFI Boot optimization Table 515 * Version 1 516 * 517 * Conforms to "Unified Extensible Firmware Interface Specification", 518 * Version 2.3, May 8, 2009 519 * 520 ******************************************************************************/ 521 522 typedef struct acpi_table_uefi 523 { 524 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 525 UINT8 Identifier[16]; /* UUID identifier */ 526 UINT16 DataOffset; /* Offset of remaining data in table */ 527 528 } ACPI_TABLE_UEFI; 529 530 531 /******************************************************************************* 532 * 533 * VRTC - Virtual Real Time Clock Table 534 * Version 1 535 * 536 * Conforms to "Simple Firmware Interface Specification", 537 * Draft 0.8.2, Oct 19, 2010 538 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 539 * 540 ******************************************************************************/ 541 542 typedef struct acpi_table_vrtc 543 { 544 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 545 546 } ACPI_TABLE_VRTC; 547 548 /* VRTC entry */ 549 550 typedef struct acpi_vrtc_entry 551 { 552 ACPI_GENERIC_ADDRESS PhysicalAddress; 553 UINT32 Irq; 554 555 } ACPI_VRTC_ENTRY; 556 557 558 /******************************************************************************* 559 * 560 * WAET - Windows ACPI Emulated devices Table 561 * Version 1 562 * 563 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 564 * 565 ******************************************************************************/ 566 567 typedef struct acpi_table_waet 568 { 569 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 570 UINT32 Flags; 571 572 } ACPI_TABLE_WAET; 573 574 /* Masks for Flags field above */ 575 576 #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 577 #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 578 579 580 /******************************************************************************* 581 * 582 * WDAT - Watchdog Action Table 583 * Version 1 584 * 585 * Conforms to "Hardware Watchdog Timers Design Specification", 586 * Copyright 2006 Microsoft Corporation. 587 * 588 ******************************************************************************/ 589 590 typedef struct acpi_table_wdat 591 { 592 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 593 UINT32 HeaderLength; /* Watchdog Header Length */ 594 UINT16 PciSegment; /* PCI Segment number */ 595 UINT8 PciBus; /* PCI Bus number */ 596 UINT8 PciDevice; /* PCI Device number */ 597 UINT8 PciFunction; /* PCI Function number */ 598 UINT8 Reserved[3]; 599 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 600 UINT32 MaxCount; /* Maximum counter value supported */ 601 UINT32 MinCount; /* Minimum counter value */ 602 UINT8 Flags; 603 UINT8 Reserved2[3]; 604 UINT32 Entries; /* Number of watchdog entries that follow */ 605 606 } ACPI_TABLE_WDAT; 607 608 /* Masks for Flags field above */ 609 610 #define ACPI_WDAT_ENABLED (1) 611 #define ACPI_WDAT_STOPPED 0x80 612 613 614 /* WDAT Instruction Entries (actions) */ 615 616 typedef struct acpi_wdat_entry 617 { 618 UINT8 Action; 619 UINT8 Instruction; 620 UINT16 Reserved; 621 ACPI_GENERIC_ADDRESS RegisterRegion; 622 UINT32 Value; /* Value used with Read/Write register */ 623 UINT32 Mask; /* Bitmask required for this register instruction */ 624 625 } ACPI_WDAT_ENTRY; 626 627 /* Values for Action field above */ 628 629 enum AcpiWdatActions 630 { 631 ACPI_WDAT_RESET = 1, 632 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 633 ACPI_WDAT_GET_COUNTDOWN = 5, 634 ACPI_WDAT_SET_COUNTDOWN = 6, 635 ACPI_WDAT_GET_RUNNING_STATE = 8, 636 ACPI_WDAT_SET_RUNNING_STATE = 9, 637 ACPI_WDAT_GET_STOPPED_STATE = 10, 638 ACPI_WDAT_SET_STOPPED_STATE = 11, 639 ACPI_WDAT_GET_REBOOT = 16, 640 ACPI_WDAT_SET_REBOOT = 17, 641 ACPI_WDAT_GET_SHUTDOWN = 18, 642 ACPI_WDAT_SET_SHUTDOWN = 19, 643 ACPI_WDAT_GET_STATUS = 32, 644 ACPI_WDAT_SET_STATUS = 33, 645 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 646 }; 647 648 /* Values for Instruction field above */ 649 650 enum AcpiWdatInstructions 651 { 652 ACPI_WDAT_READ_VALUE = 0, 653 ACPI_WDAT_READ_COUNTDOWN = 1, 654 ACPI_WDAT_WRITE_VALUE = 2, 655 ACPI_WDAT_WRITE_COUNTDOWN = 3, 656 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 657 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 658 }; 659 660 661 /******************************************************************************* 662 * 663 * WDDT - Watchdog Descriptor Table 664 * Version 1 665 * 666 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 667 * Version 001, September 2002 668 * 669 ******************************************************************************/ 670 671 typedef struct acpi_table_wddt 672 { 673 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 674 UINT16 SpecVersion; 675 UINT16 TableVersion; 676 UINT16 PciVendorId; 677 ACPI_GENERIC_ADDRESS Address; 678 UINT16 MaxCount; /* Maximum counter value supported */ 679 UINT16 MinCount; /* Minimum counter value supported */ 680 UINT16 Period; 681 UINT16 Status; 682 UINT16 Capability; 683 684 } ACPI_TABLE_WDDT; 685 686 /* Flags for Status field above */ 687 688 #define ACPI_WDDT_AVAILABLE (1) 689 #define ACPI_WDDT_ACTIVE (1<<1) 690 #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 691 #define ACPI_WDDT_USER_RESET (1<<11) 692 #define ACPI_WDDT_WDT_RESET (1<<12) 693 #define ACPI_WDDT_POWER_FAIL (1<<13) 694 #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 695 696 /* Flags for Capability field above */ 697 698 #define ACPI_WDDT_AUTO_RESET (1) 699 #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 700 701 702 /******************************************************************************* 703 * 704 * WDRT - Watchdog Resource Table 705 * Version 1 706 * 707 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 708 * Version 1.01, August 28, 2006 709 * 710 ******************************************************************************/ 711 712 typedef struct acpi_table_wdrt 713 { 714 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 715 ACPI_GENERIC_ADDRESS ControlRegister; 716 ACPI_GENERIC_ADDRESS CountRegister; 717 UINT16 PciDeviceId; 718 UINT16 PciVendorId; 719 UINT8 PciBus; /* PCI Bus number */ 720 UINT8 PciDevice; /* PCI Device number */ 721 UINT8 PciFunction; /* PCI Function number */ 722 UINT8 PciSegment; /* PCI Segment number */ 723 UINT16 MaxCount; /* Maximum counter value supported */ 724 UINT8 Units; 725 726 } ACPI_TABLE_WDRT; 727 728 729 /******************************************************************************* 730 * 731 * WPBT - Windows Platform Environment Table (ACPI 6.0) 732 * Version 1 733 * 734 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 735 * 736 ******************************************************************************/ 737 738 typedef struct acpi_table_wpbt 739 { 740 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 741 UINT32 HandoffSize; 742 UINT64 HandoffAddress; 743 UINT8 Layout; 744 UINT8 Type; 745 UINT16 ArgumentsLength; 746 747 } ACPI_TABLE_WPBT; 748 749 750 /******************************************************************************* 751 * 752 * WSMT - Windows SMM Security Migrations Table 753 * Version 1 754 * 755 * Conforms to "Windows SMM Security Migrations Table", 756 * Version 1.0, April 18, 2016 757 * 758 ******************************************************************************/ 759 760 typedef struct acpi_table_wsmt 761 { 762 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 763 UINT32 ProtectionFlags; 764 765 } ACPI_TABLE_WSMT; 766 767 /* Flags for ProtectionFlags field above */ 768 769 #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 770 #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 771 #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 772 773 774 /******************************************************************************* 775 * 776 * XENV - Xen Environment Table (ACPI 6.0) 777 * Version 1 778 * 779 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 780 * 781 ******************************************************************************/ 782 783 typedef struct acpi_table_xenv 784 { 785 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 786 UINT64 GrantTableAddress; 787 UINT64 GrantTableSize; 788 UINT32 EventInterrupt; 789 UINT8 EventFlags; 790 791 } ACPI_TABLE_XENV; 792 793 794 /* Reset to default packing */ 795 796 #pragma pack() 797 798 #endif /* __ACTBL3_H__ */ 799