17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 326f3cdf0SGordon Ross * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 47c478bd9Sstevel@tonic-gate * 57c478bd9Sstevel@tonic-gate *****************************************************************************/ 67c478bd9Sstevel@tonic-gate 726f3cdf0SGordon Ross /* 8*cb565728SJerry Jelinek * Copyright (C) 2000 - 2016, Intel Corp. 97c478bd9Sstevel@tonic-gate * All rights reserved. 107c478bd9Sstevel@tonic-gate * 1126f3cdf0SGordon Ross * Redistribution and use in source and binary forms, with or without 1226f3cdf0SGordon Ross * modification, are permitted provided that the following conditions 1326f3cdf0SGordon Ross * are met: 1426f3cdf0SGordon Ross * 1. Redistributions of source code must retain the above copyright 1526f3cdf0SGordon Ross * notice, this list of conditions, and the following disclaimer, 1626f3cdf0SGordon Ross * without modification. 1726f3cdf0SGordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1826f3cdf0SGordon Ross * substantially similar to the "NO WARRANTY" disclaimer below 1926f3cdf0SGordon Ross * ("Disclaimer") and any redistribution must be conditioned upon 2026f3cdf0SGordon Ross * including a substantially similar Disclaimer requirement for further 2126f3cdf0SGordon Ross * binary redistribution. 2226f3cdf0SGordon Ross * 3. Neither the names of the above-listed copyright holders nor the names 2326f3cdf0SGordon Ross * of any contributors may be used to endorse or promote products derived 2426f3cdf0SGordon Ross * from this software without specific prior written permission. 257c478bd9Sstevel@tonic-gate * 2626f3cdf0SGordon Ross * Alternatively, this software may be distributed under the terms of the 2726f3cdf0SGordon Ross * GNU General Public License ("GPL") version 2 as published by the Free 2826f3cdf0SGordon Ross * Software Foundation. 297c478bd9Sstevel@tonic-gate * 3026f3cdf0SGordon Ross * NO WARRANTY 3126f3cdf0SGordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 3226f3cdf0SGordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3326f3cdf0SGordon Ross * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 3426f3cdf0SGordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3526f3cdf0SGordon Ross * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3626f3cdf0SGordon Ross * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3726f3cdf0SGordon Ross * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3826f3cdf0SGordon Ross * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 3926f3cdf0SGordon Ross * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4026f3cdf0SGordon Ross * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 4126f3cdf0SGordon Ross * POSSIBILITY OF SUCH DAMAGES. 4226f3cdf0SGordon Ross */ 437c478bd9Sstevel@tonic-gate 447c478bd9Sstevel@tonic-gate #ifndef __ACTBL2_H__ 457c478bd9Sstevel@tonic-gate #define __ACTBL2_H__ 467c478bd9Sstevel@tonic-gate 4757190917SDana Myers 4857190917SDana Myers /******************************************************************************* 4957190917SDana Myers * 5057190917SDana Myers * Additional ACPI Tables (2) 5157190917SDana Myers * 5257190917SDana Myers * These tables are not consumed directly by the ACPICA subsystem, but are 5357190917SDana Myers * included here to support device drivers and the AML disassembler. 5457190917SDana Myers * 55*cb565728SJerry Jelinek * Generally, the tables in this file are defined by third-party specifications, 56*cb565728SJerry Jelinek * and are not defined directly by the ACPI specification itself. 5757190917SDana Myers * 5857190917SDana Myers ******************************************************************************/ 5957190917SDana Myers 6057190917SDana Myers 6157190917SDana Myers /* 6257190917SDana Myers * Values for description table header signatures for tables defined in this 6357190917SDana Myers * file. Useful because they make it more difficult to inadvertently type in 6457190917SDana Myers * the wrong signature. 6557190917SDana Myers */ 6657190917SDana Myers #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 6757190917SDana Myers #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 68*cb565728SJerry Jelinek #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 69*cb565728SJerry Jelinek #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 7057190917SDana Myers #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 7157190917SDana Myers #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 7257190917SDana Myers #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 7357190917SDana Myers #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 74*cb565728SJerry Jelinek #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ 7557190917SDana Myers #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 76*cb565728SJerry Jelinek #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 7757190917SDana Myers #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 7826f3cdf0SGordon Ross #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 79*cb565728SJerry Jelinek #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 80*cb565728SJerry Jelinek #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 8157190917SDana Myers #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 8257190917SDana Myers #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 8357190917SDana Myers #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 8457190917SDana Myers #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 85*cb565728SJerry Jelinek #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 8657190917SDana Myers #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 87*cb565728SJerry Jelinek #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 8857190917SDana Myers #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 8957190917SDana Myers #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 9026f3cdf0SGordon Ross #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 9157190917SDana Myers #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 9257190917SDana Myers 9326f3cdf0SGordon Ross #ifdef ACPI_UNDEFINED_TABLES 9426f3cdf0SGordon Ross /* 9526f3cdf0SGordon Ross * These tables have been seen in the field, but no definition has been found 9626f3cdf0SGordon Ross */ 9726f3cdf0SGordon Ross #define ACPI_SIG_ATKG "ATKG" 9826f3cdf0SGordon Ross #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 9926f3cdf0SGordon Ross #define ACPI_SIG_IEIT "IEIT" 10026f3cdf0SGordon Ross #endif 10157190917SDana Myers 10257190917SDana Myers /* 10357190917SDana Myers * All tables must be byte-packed to match the ACPI specification, since 10457190917SDana Myers * the tables are provided by the system BIOS. 10557190917SDana Myers */ 10657190917SDana Myers #pragma pack(1) 10757190917SDana Myers 10857190917SDana Myers /* 109*cb565728SJerry Jelinek * Note: C bitfields are not used for this reason: 110*cb565728SJerry Jelinek * 111*cb565728SJerry Jelinek * "Bitfields are great and easy to read, but unfortunately the C language 112*cb565728SJerry Jelinek * does not specify the layout of bitfields in memory, which means they are 113*cb565728SJerry Jelinek * essentially useless for dealing with packed data in on-disk formats or 114*cb565728SJerry Jelinek * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 115*cb565728SJerry Jelinek * this decision was a design error in C. Ritchie could have picked an order 116*cb565728SJerry Jelinek * and stuck with it." Norman Ramsey. 117*cb565728SJerry Jelinek * See http://stackoverflow.com/a/1053662/41661 11857190917SDana Myers */ 11957190917SDana Myers 12057190917SDana Myers 12157190917SDana Myers /******************************************************************************* 12257190917SDana Myers * 12357190917SDana Myers * ASF - Alert Standard Format table (Signature "ASF!") 12457190917SDana Myers * Revision 0x10 12557190917SDana Myers * 12657190917SDana Myers * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 12757190917SDana Myers * 12857190917SDana Myers ******************************************************************************/ 12957190917SDana Myers 13057190917SDana Myers typedef struct acpi_table_asf 13157190917SDana Myers { 13257190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13357190917SDana Myers 13457190917SDana Myers } ACPI_TABLE_ASF; 13557190917SDana Myers 13657190917SDana Myers 13757190917SDana Myers /* ASF subtable header */ 13857190917SDana Myers 13957190917SDana Myers typedef struct acpi_asf_header 14057190917SDana Myers { 14157190917SDana Myers UINT8 Type; 14257190917SDana Myers UINT8 Reserved; 14357190917SDana Myers UINT16 Length; 14457190917SDana Myers 14557190917SDana Myers } ACPI_ASF_HEADER; 14657190917SDana Myers 14757190917SDana Myers 14857190917SDana Myers /* Values for Type field above */ 14957190917SDana Myers 15057190917SDana Myers enum AcpiAsfType 15157190917SDana Myers { 15257190917SDana Myers ACPI_ASF_TYPE_INFO = 0, 15357190917SDana Myers ACPI_ASF_TYPE_ALERT = 1, 15457190917SDana Myers ACPI_ASF_TYPE_CONTROL = 2, 15557190917SDana Myers ACPI_ASF_TYPE_BOOT = 3, 15657190917SDana Myers ACPI_ASF_TYPE_ADDRESS = 4, 15757190917SDana Myers ACPI_ASF_TYPE_RESERVED = 5 15857190917SDana Myers }; 15957190917SDana Myers 16057190917SDana Myers /* 16157190917SDana Myers * ASF subtables 16257190917SDana Myers */ 16357190917SDana Myers 16457190917SDana Myers /* 0: ASF Information */ 16557190917SDana Myers 16657190917SDana Myers typedef struct acpi_asf_info 16757190917SDana Myers { 16857190917SDana Myers ACPI_ASF_HEADER Header; 16957190917SDana Myers UINT8 MinResetValue; 17057190917SDana Myers UINT8 MinPollInterval; 17157190917SDana Myers UINT16 SystemId; 17257190917SDana Myers UINT32 MfgId; 17357190917SDana Myers UINT8 Flags; 17457190917SDana Myers UINT8 Reserved2[3]; 17557190917SDana Myers 17657190917SDana Myers } ACPI_ASF_INFO; 17757190917SDana Myers 17857190917SDana Myers /* Masks for Flags field above */ 17957190917SDana Myers 18057190917SDana Myers #define ACPI_ASF_SMBUS_PROTOCOLS (1) 18157190917SDana Myers 18257190917SDana Myers 18357190917SDana Myers /* 1: ASF Alerts */ 18457190917SDana Myers 18557190917SDana Myers typedef struct acpi_asf_alert 18657190917SDana Myers { 18757190917SDana Myers ACPI_ASF_HEADER Header; 18857190917SDana Myers UINT8 AssertMask; 18957190917SDana Myers UINT8 DeassertMask; 19057190917SDana Myers UINT8 Alerts; 19157190917SDana Myers UINT8 DataLength; 19257190917SDana Myers 19357190917SDana Myers } ACPI_ASF_ALERT; 19457190917SDana Myers 19557190917SDana Myers typedef struct acpi_asf_alert_data 19657190917SDana Myers { 19757190917SDana Myers UINT8 Address; 19857190917SDana Myers UINT8 Command; 19957190917SDana Myers UINT8 Mask; 20057190917SDana Myers UINT8 Value; 20157190917SDana Myers UINT8 SensorType; 20257190917SDana Myers UINT8 Type; 20357190917SDana Myers UINT8 Offset; 20457190917SDana Myers UINT8 SourceType; 20557190917SDana Myers UINT8 Severity; 20657190917SDana Myers UINT8 SensorNumber; 20757190917SDana Myers UINT8 Entity; 20857190917SDana Myers UINT8 Instance; 20957190917SDana Myers 21057190917SDana Myers } ACPI_ASF_ALERT_DATA; 21157190917SDana Myers 21257190917SDana Myers 21357190917SDana Myers /* 2: ASF Remote Control */ 21457190917SDana Myers 21557190917SDana Myers typedef struct acpi_asf_remote 21657190917SDana Myers { 21757190917SDana Myers ACPI_ASF_HEADER Header; 21857190917SDana Myers UINT8 Controls; 21957190917SDana Myers UINT8 DataLength; 22057190917SDana Myers UINT16 Reserved2; 22157190917SDana Myers 22257190917SDana Myers } ACPI_ASF_REMOTE; 22357190917SDana Myers 22457190917SDana Myers typedef struct acpi_asf_control_data 22557190917SDana Myers { 22657190917SDana Myers UINT8 Function; 22757190917SDana Myers UINT8 Address; 22857190917SDana Myers UINT8 Command; 22957190917SDana Myers UINT8 Value; 23057190917SDana Myers 23157190917SDana Myers } ACPI_ASF_CONTROL_DATA; 23257190917SDana Myers 23357190917SDana Myers 23457190917SDana Myers /* 3: ASF RMCP Boot Options */ 23557190917SDana Myers 23657190917SDana Myers typedef struct acpi_asf_rmcp 23757190917SDana Myers { 23857190917SDana Myers ACPI_ASF_HEADER Header; 23957190917SDana Myers UINT8 Capabilities[7]; 24057190917SDana Myers UINT8 CompletionCode; 24157190917SDana Myers UINT32 EnterpriseId; 24257190917SDana Myers UINT8 Command; 24357190917SDana Myers UINT16 Parameter; 24457190917SDana Myers UINT16 BootOptions; 24557190917SDana Myers UINT16 OemParameters; 24657190917SDana Myers 24757190917SDana Myers } ACPI_ASF_RMCP; 24857190917SDana Myers 24957190917SDana Myers 25057190917SDana Myers /* 4: ASF Address */ 25157190917SDana Myers 25257190917SDana Myers typedef struct acpi_asf_address 25357190917SDana Myers { 25457190917SDana Myers ACPI_ASF_HEADER Header; 25557190917SDana Myers UINT8 EpromAddress; 25657190917SDana Myers UINT8 Devices; 25757190917SDana Myers 25857190917SDana Myers } ACPI_ASF_ADDRESS; 25957190917SDana Myers 26057190917SDana Myers 26157190917SDana Myers /******************************************************************************* 26257190917SDana Myers * 26357190917SDana Myers * BOOT - Simple Boot Flag Table 26457190917SDana Myers * Version 1 26557190917SDana Myers * 26657190917SDana Myers * Conforms to the "Simple Boot Flag Specification", Version 2.1 26757190917SDana Myers * 26857190917SDana Myers ******************************************************************************/ 26957190917SDana Myers 27057190917SDana Myers typedef struct acpi_table_boot 27157190917SDana Myers { 27257190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 27357190917SDana Myers UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 27457190917SDana Myers UINT8 Reserved[3]; 27557190917SDana Myers 27657190917SDana Myers } ACPI_TABLE_BOOT; 27757190917SDana Myers 27857190917SDana Myers 27957190917SDana Myers /******************************************************************************* 28057190917SDana Myers * 281*cb565728SJerry Jelinek * CSRT - Core System Resource Table 282*cb565728SJerry Jelinek * Version 0 283*cb565728SJerry Jelinek * 284*cb565728SJerry Jelinek * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 285*cb565728SJerry Jelinek * 286*cb565728SJerry Jelinek ******************************************************************************/ 287*cb565728SJerry Jelinek 288*cb565728SJerry Jelinek typedef struct acpi_table_csrt 289*cb565728SJerry Jelinek { 290*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 291*cb565728SJerry Jelinek 292*cb565728SJerry Jelinek } ACPI_TABLE_CSRT; 293*cb565728SJerry Jelinek 294*cb565728SJerry Jelinek 295*cb565728SJerry Jelinek /* Resource Group subtable */ 296*cb565728SJerry Jelinek 297*cb565728SJerry Jelinek typedef struct acpi_csrt_group 298*cb565728SJerry Jelinek { 299*cb565728SJerry Jelinek UINT32 Length; 300*cb565728SJerry Jelinek UINT32 VendorId; 301*cb565728SJerry Jelinek UINT32 SubvendorId; 302*cb565728SJerry Jelinek UINT16 DeviceId; 303*cb565728SJerry Jelinek UINT16 SubdeviceId; 304*cb565728SJerry Jelinek UINT16 Revision; 305*cb565728SJerry Jelinek UINT16 Reserved; 306*cb565728SJerry Jelinek UINT32 SharedInfoLength; 307*cb565728SJerry Jelinek 308*cb565728SJerry Jelinek /* Shared data immediately follows (Length = SharedInfoLength) */ 309*cb565728SJerry Jelinek 310*cb565728SJerry Jelinek } ACPI_CSRT_GROUP; 311*cb565728SJerry Jelinek 312*cb565728SJerry Jelinek /* Shared Info subtable */ 313*cb565728SJerry Jelinek 314*cb565728SJerry Jelinek typedef struct acpi_csrt_shared_info 315*cb565728SJerry Jelinek { 316*cb565728SJerry Jelinek UINT16 MajorVersion; 317*cb565728SJerry Jelinek UINT16 MinorVersion; 318*cb565728SJerry Jelinek UINT32 MmioBaseLow; 319*cb565728SJerry Jelinek UINT32 MmioBaseHigh; 320*cb565728SJerry Jelinek UINT32 GsiInterrupt; 321*cb565728SJerry Jelinek UINT8 InterruptPolarity; 322*cb565728SJerry Jelinek UINT8 InterruptMode; 323*cb565728SJerry Jelinek UINT8 NumChannels; 324*cb565728SJerry Jelinek UINT8 DmaAddressWidth; 325*cb565728SJerry Jelinek UINT16 BaseRequestLine; 326*cb565728SJerry Jelinek UINT16 NumHandshakeSignals; 327*cb565728SJerry Jelinek UINT32 MaxBlockSize; 328*cb565728SJerry Jelinek 329*cb565728SJerry Jelinek /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 330*cb565728SJerry Jelinek 331*cb565728SJerry Jelinek } ACPI_CSRT_SHARED_INFO; 332*cb565728SJerry Jelinek 333*cb565728SJerry Jelinek /* Resource Descriptor subtable */ 334*cb565728SJerry Jelinek 335*cb565728SJerry Jelinek typedef struct acpi_csrt_descriptor 336*cb565728SJerry Jelinek { 337*cb565728SJerry Jelinek UINT32 Length; 338*cb565728SJerry Jelinek UINT16 Type; 339*cb565728SJerry Jelinek UINT16 Subtype; 340*cb565728SJerry Jelinek UINT32 Uid; 341*cb565728SJerry Jelinek 342*cb565728SJerry Jelinek /* Resource-specific information immediately follows */ 343*cb565728SJerry Jelinek 344*cb565728SJerry Jelinek } ACPI_CSRT_DESCRIPTOR; 345*cb565728SJerry Jelinek 346*cb565728SJerry Jelinek 347*cb565728SJerry Jelinek /* Resource Types */ 348*cb565728SJerry Jelinek 349*cb565728SJerry Jelinek #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 350*cb565728SJerry Jelinek #define ACPI_CSRT_TYPE_TIMER 0x0002 351*cb565728SJerry Jelinek #define ACPI_CSRT_TYPE_DMA 0x0003 352*cb565728SJerry Jelinek 353*cb565728SJerry Jelinek /* Resource Subtypes */ 354*cb565728SJerry Jelinek 355*cb565728SJerry Jelinek #define ACPI_CSRT_XRUPT_LINE 0x0000 356*cb565728SJerry Jelinek #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 357*cb565728SJerry Jelinek #define ACPI_CSRT_TIMER 0x0000 358*cb565728SJerry Jelinek #define ACPI_CSRT_DMA_CHANNEL 0x0000 359*cb565728SJerry Jelinek #define ACPI_CSRT_DMA_CONTROLLER 0x0001 360*cb565728SJerry Jelinek 361*cb565728SJerry Jelinek 362*cb565728SJerry Jelinek /******************************************************************************* 363*cb565728SJerry Jelinek * 364*cb565728SJerry Jelinek * DBG2 - Debug Port Table 2 365*cb565728SJerry Jelinek * Version 0 (Both main table and subtables) 366*cb565728SJerry Jelinek * 367*cb565728SJerry Jelinek * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015 368*cb565728SJerry Jelinek * 369*cb565728SJerry Jelinek ******************************************************************************/ 370*cb565728SJerry Jelinek 371*cb565728SJerry Jelinek typedef struct acpi_table_dbg2 372*cb565728SJerry Jelinek { 373*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 374*cb565728SJerry Jelinek UINT32 InfoOffset; 375*cb565728SJerry Jelinek UINT32 InfoCount; 376*cb565728SJerry Jelinek 377*cb565728SJerry Jelinek } ACPI_TABLE_DBG2; 378*cb565728SJerry Jelinek 379*cb565728SJerry Jelinek 380*cb565728SJerry Jelinek typedef struct acpi_dbg2_header 381*cb565728SJerry Jelinek { 382*cb565728SJerry Jelinek UINT32 InfoOffset; 383*cb565728SJerry Jelinek UINT32 InfoCount; 384*cb565728SJerry Jelinek 385*cb565728SJerry Jelinek } ACPI_DBG2_HEADER; 386*cb565728SJerry Jelinek 387*cb565728SJerry Jelinek 388*cb565728SJerry Jelinek /* Debug Device Information Subtable */ 389*cb565728SJerry Jelinek 390*cb565728SJerry Jelinek typedef struct acpi_dbg2_device 391*cb565728SJerry Jelinek { 392*cb565728SJerry Jelinek UINT8 Revision; 393*cb565728SJerry Jelinek UINT16 Length; 394*cb565728SJerry Jelinek UINT8 RegisterCount; /* Number of BaseAddress registers */ 395*cb565728SJerry Jelinek UINT16 NamepathLength; 396*cb565728SJerry Jelinek UINT16 NamepathOffset; 397*cb565728SJerry Jelinek UINT16 OemDataLength; 398*cb565728SJerry Jelinek UINT16 OemDataOffset; 399*cb565728SJerry Jelinek UINT16 PortType; 400*cb565728SJerry Jelinek UINT16 PortSubtype; 401*cb565728SJerry Jelinek UINT16 Reserved; 402*cb565728SJerry Jelinek UINT16 BaseAddressOffset; 403*cb565728SJerry Jelinek UINT16 AddressSizeOffset; 404*cb565728SJerry Jelinek /* 405*cb565728SJerry Jelinek * Data that follows: 406*cb565728SJerry Jelinek * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 407*cb565728SJerry Jelinek * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 408*cb565728SJerry Jelinek * Namepath (required) - Null terminated string. Single dot if not supported. 409*cb565728SJerry Jelinek * OemData (optional) - Length is OemDataLength. 410*cb565728SJerry Jelinek */ 411*cb565728SJerry Jelinek } ACPI_DBG2_DEVICE; 412*cb565728SJerry Jelinek 413*cb565728SJerry Jelinek /* Types for PortType field above */ 414*cb565728SJerry Jelinek 415*cb565728SJerry Jelinek #define ACPI_DBG2_SERIAL_PORT 0x8000 416*cb565728SJerry Jelinek #define ACPI_DBG2_1394_PORT 0x8001 417*cb565728SJerry Jelinek #define ACPI_DBG2_USB_PORT 0x8002 418*cb565728SJerry Jelinek #define ACPI_DBG2_NET_PORT 0x8003 419*cb565728SJerry Jelinek 420*cb565728SJerry Jelinek /* Subtypes for PortSubtype field above */ 421*cb565728SJerry Jelinek 422*cb565728SJerry Jelinek #define ACPI_DBG2_16550_COMPATIBLE 0x0000 423*cb565728SJerry Jelinek #define ACPI_DBG2_16550_SUBSET 0x0001 424*cb565728SJerry Jelinek #define ACPI_DBG2_ARM_PL011 0x0003 425*cb565728SJerry Jelinek #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 426*cb565728SJerry Jelinek #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 427*cb565728SJerry Jelinek #define ACPI_DBG2_ARM_DCC 0x000F 428*cb565728SJerry Jelinek #define ACPI_DBG2_BCM2835 0x0010 429*cb565728SJerry Jelinek 430*cb565728SJerry Jelinek #define ACPI_DBG2_1394_STANDARD 0x0000 431*cb565728SJerry Jelinek 432*cb565728SJerry Jelinek #define ACPI_DBG2_USB_XHCI 0x0000 433*cb565728SJerry Jelinek #define ACPI_DBG2_USB_EHCI 0x0001 434*cb565728SJerry Jelinek 435*cb565728SJerry Jelinek 436*cb565728SJerry Jelinek /******************************************************************************* 437*cb565728SJerry Jelinek * 43857190917SDana Myers * DBGP - Debug Port table 43957190917SDana Myers * Version 1 44057190917SDana Myers * 44157190917SDana Myers * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 44257190917SDana Myers * 44357190917SDana Myers ******************************************************************************/ 44457190917SDana Myers 44557190917SDana Myers typedef struct acpi_table_dbgp 44657190917SDana Myers { 44757190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 44857190917SDana Myers UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 44957190917SDana Myers UINT8 Reserved[3]; 45057190917SDana Myers ACPI_GENERIC_ADDRESS DebugPort; 45157190917SDana Myers 45257190917SDana Myers } ACPI_TABLE_DBGP; 45357190917SDana Myers 45457190917SDana Myers 45557190917SDana Myers /******************************************************************************* 45657190917SDana Myers * 45757190917SDana Myers * DMAR - DMA Remapping table 45857190917SDana Myers * Version 1 45957190917SDana Myers * 46057190917SDana Myers * Conforms to "Intel Virtualization Technology for Directed I/O", 461*cb565728SJerry Jelinek * Version 2.3, October 2014 46257190917SDana Myers * 46357190917SDana Myers ******************************************************************************/ 46457190917SDana Myers 46557190917SDana Myers typedef struct acpi_table_dmar 46657190917SDana Myers { 46757190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 46857190917SDana Myers UINT8 Width; /* Host Address Width */ 46957190917SDana Myers UINT8 Flags; 47057190917SDana Myers UINT8 Reserved[10]; 47157190917SDana Myers 47257190917SDana Myers } ACPI_TABLE_DMAR; 47357190917SDana Myers 47457190917SDana Myers /* Masks for Flags field above */ 47557190917SDana Myers 47657190917SDana Myers #define ACPI_DMAR_INTR_REMAP (1) 477*cb565728SJerry Jelinek #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 478*cb565728SJerry Jelinek #define ACPI_DMAR_X2APIC_MODE (1<<2) 47957190917SDana Myers 48057190917SDana Myers 48157190917SDana Myers /* DMAR subtable header */ 48257190917SDana Myers 48357190917SDana Myers typedef struct acpi_dmar_header 48457190917SDana Myers { 48557190917SDana Myers UINT16 Type; 48657190917SDana Myers UINT16 Length; 48757190917SDana Myers 48857190917SDana Myers } ACPI_DMAR_HEADER; 48957190917SDana Myers 49057190917SDana Myers /* Values for subtable type in ACPI_DMAR_HEADER */ 49157190917SDana Myers 49257190917SDana Myers enum AcpiDmarType 49357190917SDana Myers { 49457190917SDana Myers ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 49557190917SDana Myers ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 496*cb565728SJerry Jelinek ACPI_DMAR_TYPE_ROOT_ATS = 2, 497*cb565728SJerry Jelinek ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 498*cb565728SJerry Jelinek ACPI_DMAR_TYPE_NAMESPACE = 4, 499*cb565728SJerry Jelinek ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 50057190917SDana Myers }; 50157190917SDana Myers 50257190917SDana Myers 50357190917SDana Myers /* DMAR Device Scope structure */ 50457190917SDana Myers 50557190917SDana Myers typedef struct acpi_dmar_device_scope 50657190917SDana Myers { 50757190917SDana Myers UINT8 EntryType; 50857190917SDana Myers UINT8 Length; 50957190917SDana Myers UINT16 Reserved; 51057190917SDana Myers UINT8 EnumerationId; 51157190917SDana Myers UINT8 Bus; 51257190917SDana Myers 51357190917SDana Myers } ACPI_DMAR_DEVICE_SCOPE; 51457190917SDana Myers 515*cb565728SJerry Jelinek /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 51657190917SDana Myers 51757190917SDana Myers enum AcpiDmarScopeType 51857190917SDana Myers { 51957190917SDana Myers ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 52057190917SDana Myers ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 52157190917SDana Myers ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 52257190917SDana Myers ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 52357190917SDana Myers ACPI_DMAR_SCOPE_TYPE_HPET = 4, 524*cb565728SJerry Jelinek ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 525*cb565728SJerry Jelinek ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 52657190917SDana Myers }; 52757190917SDana Myers 52857190917SDana Myers typedef struct acpi_dmar_pci_path 52957190917SDana Myers { 53057190917SDana Myers UINT8 Device; 53157190917SDana Myers UINT8 Function; 53257190917SDana Myers 53357190917SDana Myers } ACPI_DMAR_PCI_PATH; 53457190917SDana Myers 53557190917SDana Myers 53657190917SDana Myers /* 537*cb565728SJerry Jelinek * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 53857190917SDana Myers */ 53957190917SDana Myers 54057190917SDana Myers /* 0: Hardware Unit Definition */ 54157190917SDana Myers 54257190917SDana Myers typedef struct acpi_dmar_hardware_unit 54357190917SDana Myers { 54457190917SDana Myers ACPI_DMAR_HEADER Header; 54557190917SDana Myers UINT8 Flags; 54657190917SDana Myers UINT8 Reserved; 54757190917SDana Myers UINT16 Segment; 54857190917SDana Myers UINT64 Address; /* Register Base Address */ 54957190917SDana Myers 55057190917SDana Myers } ACPI_DMAR_HARDWARE_UNIT; 55157190917SDana Myers 55257190917SDana Myers /* Masks for Flags field above */ 55357190917SDana Myers 55457190917SDana Myers #define ACPI_DMAR_INCLUDE_ALL (1) 55557190917SDana Myers 55657190917SDana Myers 55757190917SDana Myers /* 1: Reserved Memory Defininition */ 55857190917SDana Myers 55957190917SDana Myers typedef struct acpi_dmar_reserved_memory 56057190917SDana Myers { 56157190917SDana Myers ACPI_DMAR_HEADER Header; 56257190917SDana Myers UINT16 Reserved; 56357190917SDana Myers UINT16 Segment; 56457190917SDana Myers UINT64 BaseAddress; /* 4K aligned base address */ 56557190917SDana Myers UINT64 EndAddress; /* 4K aligned limit address */ 56657190917SDana Myers 56757190917SDana Myers } ACPI_DMAR_RESERVED_MEMORY; 56857190917SDana Myers 56957190917SDana Myers /* Masks for Flags field above */ 57057190917SDana Myers 57157190917SDana Myers #define ACPI_DMAR_ALLOW_ALL (1) 57257190917SDana Myers 57357190917SDana Myers 57457190917SDana Myers /* 2: Root Port ATS Capability Reporting Structure */ 57557190917SDana Myers 57657190917SDana Myers typedef struct acpi_dmar_atsr 57757190917SDana Myers { 57857190917SDana Myers ACPI_DMAR_HEADER Header; 57957190917SDana Myers UINT8 Flags; 58057190917SDana Myers UINT8 Reserved; 58157190917SDana Myers UINT16 Segment; 58257190917SDana Myers 58357190917SDana Myers } ACPI_DMAR_ATSR; 58457190917SDana Myers 58557190917SDana Myers /* Masks for Flags field above */ 58657190917SDana Myers 58757190917SDana Myers #define ACPI_DMAR_ALL_PORTS (1) 58857190917SDana Myers 58957190917SDana Myers 59057190917SDana Myers /* 3: Remapping Hardware Static Affinity Structure */ 59157190917SDana Myers 59257190917SDana Myers typedef struct acpi_dmar_rhsa 59357190917SDana Myers { 59457190917SDana Myers ACPI_DMAR_HEADER Header; 59557190917SDana Myers UINT32 Reserved; 59657190917SDana Myers UINT64 BaseAddress; 59757190917SDana Myers UINT32 ProximityDomain; 59857190917SDana Myers 59957190917SDana Myers } ACPI_DMAR_RHSA; 60057190917SDana Myers 60157190917SDana Myers 602*cb565728SJerry Jelinek /* 4: ACPI Namespace Device Declaration Structure */ 603*cb565728SJerry Jelinek 604*cb565728SJerry Jelinek typedef struct acpi_dmar_andd 605*cb565728SJerry Jelinek { 606*cb565728SJerry Jelinek ACPI_DMAR_HEADER Header; 607*cb565728SJerry Jelinek UINT8 Reserved[3]; 608*cb565728SJerry Jelinek UINT8 DeviceNumber; 609*cb565728SJerry Jelinek char DeviceName[1]; 610*cb565728SJerry Jelinek 611*cb565728SJerry Jelinek } ACPI_DMAR_ANDD; 612*cb565728SJerry Jelinek 613*cb565728SJerry Jelinek 61457190917SDana Myers /******************************************************************************* 61557190917SDana Myers * 61657190917SDana Myers * HPET - High Precision Event Timer table 61757190917SDana Myers * Version 1 61857190917SDana Myers * 61957190917SDana Myers * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 62057190917SDana Myers * Version 1.0a, October 2004 62157190917SDana Myers * 62257190917SDana Myers ******************************************************************************/ 62357190917SDana Myers 62457190917SDana Myers typedef struct acpi_table_hpet 62557190917SDana Myers { 62657190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 62757190917SDana Myers UINT32 Id; /* Hardware ID of event timer block */ 62857190917SDana Myers ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 62957190917SDana Myers UINT8 Sequence; /* HPET sequence number */ 63057190917SDana Myers UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 63157190917SDana Myers UINT8 Flags; 63257190917SDana Myers 63357190917SDana Myers } ACPI_TABLE_HPET; 63457190917SDana Myers 63557190917SDana Myers /* Masks for Flags field above */ 63657190917SDana Myers 63757190917SDana Myers #define ACPI_HPET_PAGE_PROTECT_MASK (3) 63857190917SDana Myers 63957190917SDana Myers /* Values for Page Protect flags */ 64057190917SDana Myers 64157190917SDana Myers enum AcpiHpetPageProtect 64257190917SDana Myers { 64357190917SDana Myers ACPI_HPET_NO_PAGE_PROTECT = 0, 64457190917SDana Myers ACPI_HPET_PAGE_PROTECT4 = 1, 64557190917SDana Myers ACPI_HPET_PAGE_PROTECT64 = 2 64657190917SDana Myers }; 64757190917SDana Myers 64857190917SDana Myers 64957190917SDana Myers /******************************************************************************* 65057190917SDana Myers * 65157190917SDana Myers * IBFT - Boot Firmware Table 65257190917SDana Myers * Version 1 65357190917SDana Myers * 65457190917SDana Myers * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 65557190917SDana Myers * Specification", Version 1.01, March 1, 2007 65657190917SDana Myers * 65757190917SDana Myers * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 65857190917SDana Myers * Therefore, it is not currently supported by the disassembler. 65957190917SDana Myers * 66057190917SDana Myers ******************************************************************************/ 66157190917SDana Myers 66257190917SDana Myers typedef struct acpi_table_ibft 66357190917SDana Myers { 66457190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 66557190917SDana Myers UINT8 Reserved[12]; 66657190917SDana Myers 66757190917SDana Myers } ACPI_TABLE_IBFT; 66857190917SDana Myers 66957190917SDana Myers 67057190917SDana Myers /* IBFT common subtable header */ 67157190917SDana Myers 67257190917SDana Myers typedef struct acpi_ibft_header 67357190917SDana Myers { 67457190917SDana Myers UINT8 Type; 67557190917SDana Myers UINT8 Version; 67657190917SDana Myers UINT16 Length; 67757190917SDana Myers UINT8 Index; 67857190917SDana Myers UINT8 Flags; 67957190917SDana Myers 68057190917SDana Myers } ACPI_IBFT_HEADER; 68157190917SDana Myers 68257190917SDana Myers /* Values for Type field above */ 68357190917SDana Myers 68457190917SDana Myers enum AcpiIbftType 68557190917SDana Myers { 68657190917SDana Myers ACPI_IBFT_TYPE_NOT_USED = 0, 68757190917SDana Myers ACPI_IBFT_TYPE_CONTROL = 1, 68857190917SDana Myers ACPI_IBFT_TYPE_INITIATOR = 2, 68957190917SDana Myers ACPI_IBFT_TYPE_NIC = 3, 69057190917SDana Myers ACPI_IBFT_TYPE_TARGET = 4, 69157190917SDana Myers ACPI_IBFT_TYPE_EXTENSIONS = 5, 69257190917SDana Myers ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 69357190917SDana Myers }; 69457190917SDana Myers 69557190917SDana Myers 69657190917SDana Myers /* IBFT subtables */ 69757190917SDana Myers 69857190917SDana Myers typedef struct acpi_ibft_control 69957190917SDana Myers { 70057190917SDana Myers ACPI_IBFT_HEADER Header; 70157190917SDana Myers UINT16 Extensions; 70257190917SDana Myers UINT16 InitiatorOffset; 70357190917SDana Myers UINT16 Nic0Offset; 70457190917SDana Myers UINT16 Target0Offset; 70557190917SDana Myers UINT16 Nic1Offset; 70657190917SDana Myers UINT16 Target1Offset; 70757190917SDana Myers 70857190917SDana Myers } ACPI_IBFT_CONTROL; 70957190917SDana Myers 71057190917SDana Myers typedef struct acpi_ibft_initiator 71157190917SDana Myers { 71257190917SDana Myers ACPI_IBFT_HEADER Header; 71357190917SDana Myers UINT8 SnsServer[16]; 71457190917SDana Myers UINT8 SlpServer[16]; 71557190917SDana Myers UINT8 PrimaryServer[16]; 71657190917SDana Myers UINT8 SecondaryServer[16]; 71757190917SDana Myers UINT16 NameLength; 71857190917SDana Myers UINT16 NameOffset; 71957190917SDana Myers 72057190917SDana Myers } ACPI_IBFT_INITIATOR; 72157190917SDana Myers 72257190917SDana Myers typedef struct acpi_ibft_nic 72357190917SDana Myers { 72457190917SDana Myers ACPI_IBFT_HEADER Header; 72557190917SDana Myers UINT8 IpAddress[16]; 72657190917SDana Myers UINT8 SubnetMaskPrefix; 72757190917SDana Myers UINT8 Origin; 72857190917SDana Myers UINT8 Gateway[16]; 72957190917SDana Myers UINT8 PrimaryDns[16]; 73057190917SDana Myers UINT8 SecondaryDns[16]; 73157190917SDana Myers UINT8 Dhcp[16]; 73257190917SDana Myers UINT16 Vlan; 73357190917SDana Myers UINT8 MacAddress[6]; 73457190917SDana Myers UINT16 PciAddress; 73557190917SDana Myers UINT16 NameLength; 73657190917SDana Myers UINT16 NameOffset; 73757190917SDana Myers 73857190917SDana Myers } ACPI_IBFT_NIC; 73957190917SDana Myers 74057190917SDana Myers typedef struct acpi_ibft_target 74157190917SDana Myers { 74257190917SDana Myers ACPI_IBFT_HEADER Header; 74357190917SDana Myers UINT8 TargetIpAddress[16]; 74457190917SDana Myers UINT16 TargetIpSocket; 74557190917SDana Myers UINT8 TargetBootLun[8]; 74657190917SDana Myers UINT8 ChapType; 74757190917SDana Myers UINT8 NicAssociation; 74857190917SDana Myers UINT16 TargetNameLength; 74957190917SDana Myers UINT16 TargetNameOffset; 75057190917SDana Myers UINT16 ChapNameLength; 75157190917SDana Myers UINT16 ChapNameOffset; 75257190917SDana Myers UINT16 ChapSecretLength; 75357190917SDana Myers UINT16 ChapSecretOffset; 75457190917SDana Myers UINT16 ReverseChapNameLength; 75557190917SDana Myers UINT16 ReverseChapNameOffset; 75657190917SDana Myers UINT16 ReverseChapSecretLength; 75757190917SDana Myers UINT16 ReverseChapSecretOffset; 75857190917SDana Myers 75957190917SDana Myers } ACPI_IBFT_TARGET; 76057190917SDana Myers 76157190917SDana Myers 76257190917SDana Myers /******************************************************************************* 76357190917SDana Myers * 764*cb565728SJerry Jelinek * IORT - IO Remapping Table 765*cb565728SJerry Jelinek * 766*cb565728SJerry Jelinek * Conforms to "IO Remapping Table System Software on ARM Platforms", 767*cb565728SJerry Jelinek * Document number: ARM DEN 0049B, October 2015 768*cb565728SJerry Jelinek * 769*cb565728SJerry Jelinek ******************************************************************************/ 770*cb565728SJerry Jelinek 771*cb565728SJerry Jelinek typedef struct acpi_table_iort 772*cb565728SJerry Jelinek { 773*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; 774*cb565728SJerry Jelinek UINT32 NodeCount; 775*cb565728SJerry Jelinek UINT32 NodeOffset; 776*cb565728SJerry Jelinek UINT32 Reserved; 777*cb565728SJerry Jelinek 778*cb565728SJerry Jelinek } ACPI_TABLE_IORT; 779*cb565728SJerry Jelinek 780*cb565728SJerry Jelinek 781*cb565728SJerry Jelinek /* 782*cb565728SJerry Jelinek * IORT subtables 783*cb565728SJerry Jelinek */ 784*cb565728SJerry Jelinek typedef struct acpi_iort_node 785*cb565728SJerry Jelinek { 786*cb565728SJerry Jelinek UINT8 Type; 787*cb565728SJerry Jelinek UINT16 Length; 788*cb565728SJerry Jelinek UINT8 Revision; 789*cb565728SJerry Jelinek UINT32 Reserved; 790*cb565728SJerry Jelinek UINT32 MappingCount; 791*cb565728SJerry Jelinek UINT32 MappingOffset; 792*cb565728SJerry Jelinek char NodeData[1]; 793*cb565728SJerry Jelinek 794*cb565728SJerry Jelinek } ACPI_IORT_NODE; 795*cb565728SJerry Jelinek 796*cb565728SJerry Jelinek /* Values for subtable Type above */ 797*cb565728SJerry Jelinek 798*cb565728SJerry Jelinek enum AcpiIortNodeType 799*cb565728SJerry Jelinek { 800*cb565728SJerry Jelinek ACPI_IORT_NODE_ITS_GROUP = 0x00, 801*cb565728SJerry Jelinek ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 802*cb565728SJerry Jelinek ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 803*cb565728SJerry Jelinek ACPI_IORT_NODE_SMMU = 0x03, 804*cb565728SJerry Jelinek ACPI_IORT_NODE_SMMU_V3 = 0x04 805*cb565728SJerry Jelinek }; 806*cb565728SJerry Jelinek 807*cb565728SJerry Jelinek 808*cb565728SJerry Jelinek typedef struct acpi_iort_id_mapping 809*cb565728SJerry Jelinek { 810*cb565728SJerry Jelinek UINT32 InputBase; /* Lowest value in input range */ 811*cb565728SJerry Jelinek UINT32 IdCount; /* Number of IDs */ 812*cb565728SJerry Jelinek UINT32 OutputBase; /* Lowest value in output range */ 813*cb565728SJerry Jelinek UINT32 OutputReference; /* A reference to the output node */ 814*cb565728SJerry Jelinek UINT32 Flags; 815*cb565728SJerry Jelinek 816*cb565728SJerry Jelinek } ACPI_IORT_ID_MAPPING; 817*cb565728SJerry Jelinek 818*cb565728SJerry Jelinek /* Masks for Flags field above for IORT subtable */ 819*cb565728SJerry Jelinek 820*cb565728SJerry Jelinek #define ACPI_IORT_ID_SINGLE_MAPPING (1) 821*cb565728SJerry Jelinek 822*cb565728SJerry Jelinek 823*cb565728SJerry Jelinek typedef struct acpi_iort_memory_access 824*cb565728SJerry Jelinek { 825*cb565728SJerry Jelinek UINT32 CacheCoherency; 826*cb565728SJerry Jelinek UINT8 Hints; 827*cb565728SJerry Jelinek UINT16 Reserved; 828*cb565728SJerry Jelinek UINT8 MemoryFlags; 829*cb565728SJerry Jelinek 830*cb565728SJerry Jelinek } ACPI_IORT_MEMORY_ACCESS; 831*cb565728SJerry Jelinek 832*cb565728SJerry Jelinek /* Values for CacheCoherency field above */ 833*cb565728SJerry Jelinek 834*cb565728SJerry Jelinek #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 835*cb565728SJerry Jelinek #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 836*cb565728SJerry Jelinek 837*cb565728SJerry Jelinek /* Masks for Hints field above */ 838*cb565728SJerry Jelinek 839*cb565728SJerry Jelinek #define ACPI_IORT_HT_TRANSIENT (1) 840*cb565728SJerry Jelinek #define ACPI_IORT_HT_WRITE (1<<1) 841*cb565728SJerry Jelinek #define ACPI_IORT_HT_READ (1<<2) 842*cb565728SJerry Jelinek #define ACPI_IORT_HT_OVERRIDE (1<<3) 843*cb565728SJerry Jelinek 844*cb565728SJerry Jelinek /* Masks for MemoryFlags field above */ 845*cb565728SJerry Jelinek 846*cb565728SJerry Jelinek #define ACPI_IORT_MF_COHERENCY (1) 847*cb565728SJerry Jelinek #define ACPI_IORT_MF_ATTRIBUTES (1<<1) 848*cb565728SJerry Jelinek 849*cb565728SJerry Jelinek 850*cb565728SJerry Jelinek /* 851*cb565728SJerry Jelinek * IORT node specific subtables 852*cb565728SJerry Jelinek */ 853*cb565728SJerry Jelinek typedef struct acpi_iort_its_group 854*cb565728SJerry Jelinek { 855*cb565728SJerry Jelinek UINT32 ItsCount; 856*cb565728SJerry Jelinek UINT32 Identifiers[1]; /* GIC ITS identifier arrary */ 857*cb565728SJerry Jelinek 858*cb565728SJerry Jelinek } ACPI_IORT_ITS_GROUP; 859*cb565728SJerry Jelinek 860*cb565728SJerry Jelinek 861*cb565728SJerry Jelinek typedef struct acpi_iort_named_component 862*cb565728SJerry Jelinek { 863*cb565728SJerry Jelinek UINT32 NodeFlags; 864*cb565728SJerry Jelinek UINT64 MemoryProperties; /* Memory access properties */ 865*cb565728SJerry Jelinek UINT8 MemoryAddressLimit; /* Memory address size limit */ 866*cb565728SJerry Jelinek char DeviceName[1]; /* Path of namespace object */ 867*cb565728SJerry Jelinek 868*cb565728SJerry Jelinek } ACPI_IORT_NAMED_COMPONENT; 869*cb565728SJerry Jelinek 870*cb565728SJerry Jelinek 871*cb565728SJerry Jelinek typedef struct acpi_iort_root_complex 872*cb565728SJerry Jelinek { 873*cb565728SJerry Jelinek UINT64 MemoryProperties; /* Memory access properties */ 874*cb565728SJerry Jelinek UINT32 AtsAttribute; 875*cb565728SJerry Jelinek UINT32 PciSegmentNumber; 876*cb565728SJerry Jelinek 877*cb565728SJerry Jelinek } ACPI_IORT_ROOT_COMPLEX; 878*cb565728SJerry Jelinek 879*cb565728SJerry Jelinek /* Values for AtsAttribute field above */ 880*cb565728SJerry Jelinek 881*cb565728SJerry Jelinek #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 882*cb565728SJerry Jelinek #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 883*cb565728SJerry Jelinek 884*cb565728SJerry Jelinek 885*cb565728SJerry Jelinek typedef struct acpi_iort_smmu 886*cb565728SJerry Jelinek { 887*cb565728SJerry Jelinek UINT64 BaseAddress; /* SMMU base address */ 888*cb565728SJerry Jelinek UINT64 Span; /* Length of memory range */ 889*cb565728SJerry Jelinek UINT32 Model; 890*cb565728SJerry Jelinek UINT32 Flags; 891*cb565728SJerry Jelinek UINT32 GlobalInterruptOffset; 892*cb565728SJerry Jelinek UINT32 ContextInterruptCount; 893*cb565728SJerry Jelinek UINT32 ContextInterruptOffset; 894*cb565728SJerry Jelinek UINT32 PmuInterruptCount; 895*cb565728SJerry Jelinek UINT32 PmuInterruptOffset; 896*cb565728SJerry Jelinek UINT64 Interrupts[1]; /* Interrupt array */ 897*cb565728SJerry Jelinek 898*cb565728SJerry Jelinek } ACPI_IORT_SMMU; 899*cb565728SJerry Jelinek 900*cb565728SJerry Jelinek /* Values for Model field above */ 901*cb565728SJerry Jelinek 902*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 903*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 904*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 905*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 906*cb565728SJerry Jelinek 907*cb565728SJerry Jelinek /* Masks for Flags field above */ 908*cb565728SJerry Jelinek 909*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 910*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 911*cb565728SJerry Jelinek 912*cb565728SJerry Jelinek 913*cb565728SJerry Jelinek typedef struct acpi_iort_smmu_v3 914*cb565728SJerry Jelinek { 915*cb565728SJerry Jelinek UINT64 BaseAddress; /* SMMUv3 base address */ 916*cb565728SJerry Jelinek UINT32 Flags; 917*cb565728SJerry Jelinek UINT32 Reserved; 918*cb565728SJerry Jelinek UINT64 VatosAddress; 919*cb565728SJerry Jelinek UINT32 Model; /* O: generic SMMUv3 */ 920*cb565728SJerry Jelinek UINT32 EventGsiv; 921*cb565728SJerry Jelinek UINT32 PriGsiv; 922*cb565728SJerry Jelinek UINT32 GerrGsiv; 923*cb565728SJerry Jelinek UINT32 SyncGsiv; 924*cb565728SJerry Jelinek 925*cb565728SJerry Jelinek } ACPI_IORT_SMMU_V3; 926*cb565728SJerry Jelinek 927*cb565728SJerry Jelinek /* Masks for Flags field above */ 928*cb565728SJerry Jelinek 929*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 930*cb565728SJerry Jelinek #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) 931*cb565728SJerry Jelinek 932*cb565728SJerry Jelinek 933*cb565728SJerry Jelinek /******************************************************************************* 934*cb565728SJerry Jelinek * 93557190917SDana Myers * IVRS - I/O Virtualization Reporting Structure 93657190917SDana Myers * Version 1 93757190917SDana Myers * 93857190917SDana Myers * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 93957190917SDana Myers * Revision 1.26, February 2009. 94057190917SDana Myers * 94157190917SDana Myers ******************************************************************************/ 94257190917SDana Myers 94357190917SDana Myers typedef struct acpi_table_ivrs 94457190917SDana Myers { 94557190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 94657190917SDana Myers UINT32 Info; /* Common virtualization info */ 94757190917SDana Myers UINT64 Reserved; 94857190917SDana Myers 94957190917SDana Myers } ACPI_TABLE_IVRS; 95057190917SDana Myers 95157190917SDana Myers /* Values for Info field above */ 95257190917SDana Myers 95357190917SDana Myers #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 95457190917SDana Myers #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 95557190917SDana Myers #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 95657190917SDana Myers 95757190917SDana Myers 95857190917SDana Myers /* IVRS subtable header */ 95957190917SDana Myers 96057190917SDana Myers typedef struct acpi_ivrs_header 96157190917SDana Myers { 96257190917SDana Myers UINT8 Type; /* Subtable type */ 96357190917SDana Myers UINT8 Flags; 96457190917SDana Myers UINT16 Length; /* Subtable length */ 96557190917SDana Myers UINT16 DeviceId; /* ID of IOMMU */ 96657190917SDana Myers 96757190917SDana Myers } ACPI_IVRS_HEADER; 96857190917SDana Myers 96957190917SDana Myers /* Values for subtable Type above */ 97057190917SDana Myers 97157190917SDana Myers enum AcpiIvrsType 97257190917SDana Myers { 97357190917SDana Myers ACPI_IVRS_TYPE_HARDWARE = 0x10, 97457190917SDana Myers ACPI_IVRS_TYPE_MEMORY1 = 0x20, 97557190917SDana Myers ACPI_IVRS_TYPE_MEMORY2 = 0x21, 97657190917SDana Myers ACPI_IVRS_TYPE_MEMORY3 = 0x22 97757190917SDana Myers }; 97857190917SDana Myers 97957190917SDana Myers /* Masks for Flags field above for IVHD subtable */ 98057190917SDana Myers 98157190917SDana Myers #define ACPI_IVHD_TT_ENABLE (1) 98257190917SDana Myers #define ACPI_IVHD_PASS_PW (1<<1) 98357190917SDana Myers #define ACPI_IVHD_RES_PASS_PW (1<<2) 98457190917SDana Myers #define ACPI_IVHD_ISOC (1<<3) 98557190917SDana Myers #define ACPI_IVHD_IOTLB (1<<4) 98657190917SDana Myers 98757190917SDana Myers /* Masks for Flags field above for IVMD subtable */ 98857190917SDana Myers 98957190917SDana Myers #define ACPI_IVMD_UNITY (1) 99057190917SDana Myers #define ACPI_IVMD_READ (1<<1) 99157190917SDana Myers #define ACPI_IVMD_WRITE (1<<2) 99257190917SDana Myers #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 99357190917SDana Myers 99457190917SDana Myers 99557190917SDana Myers /* 99657190917SDana Myers * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 99757190917SDana Myers */ 99857190917SDana Myers 99957190917SDana Myers /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 100057190917SDana Myers 100157190917SDana Myers typedef struct acpi_ivrs_hardware 100257190917SDana Myers { 100357190917SDana Myers ACPI_IVRS_HEADER Header; 100457190917SDana Myers UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 100557190917SDana Myers UINT64 BaseAddress; /* IOMMU control registers */ 100657190917SDana Myers UINT16 PciSegmentGroup; 100757190917SDana Myers UINT16 Info; /* MSI number and unit ID */ 100857190917SDana Myers UINT32 Reserved; 100957190917SDana Myers 101057190917SDana Myers } ACPI_IVRS_HARDWARE; 101157190917SDana Myers 101257190917SDana Myers /* Masks for Info field above */ 101357190917SDana Myers 101457190917SDana Myers #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 101557190917SDana Myers #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 101657190917SDana Myers 101757190917SDana Myers 101857190917SDana Myers /* 101957190917SDana Myers * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 102057190917SDana Myers * Upper two bits of the Type field are the (encoded) length of the structure. 102157190917SDana Myers * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 102257190917SDana Myers * are reserved for future use but not defined. 102357190917SDana Myers */ 102457190917SDana Myers typedef struct acpi_ivrs_de_header 102557190917SDana Myers { 102657190917SDana Myers UINT8 Type; 102757190917SDana Myers UINT16 Id; 102857190917SDana Myers UINT8 DataSetting; 102957190917SDana Myers 103057190917SDana Myers } ACPI_IVRS_DE_HEADER; 103157190917SDana Myers 103257190917SDana Myers /* Length of device entry is in the top two bits of Type field above */ 103357190917SDana Myers 103457190917SDana Myers #define ACPI_IVHD_ENTRY_LENGTH 0xC0 103557190917SDana Myers 103657190917SDana Myers /* Values for device entry Type field above */ 103757190917SDana Myers 103857190917SDana Myers enum AcpiIvrsDeviceEntryType 103957190917SDana Myers { 104057190917SDana Myers /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 104157190917SDana Myers 104257190917SDana Myers ACPI_IVRS_TYPE_PAD4 = 0, 104357190917SDana Myers ACPI_IVRS_TYPE_ALL = 1, 104457190917SDana Myers ACPI_IVRS_TYPE_SELECT = 2, 104557190917SDana Myers ACPI_IVRS_TYPE_START = 3, 104657190917SDana Myers ACPI_IVRS_TYPE_END = 4, 104757190917SDana Myers 104857190917SDana Myers /* 8-byte device entries */ 104957190917SDana Myers 105057190917SDana Myers ACPI_IVRS_TYPE_PAD8 = 64, 105157190917SDana Myers ACPI_IVRS_TYPE_NOT_USED = 65, 105257190917SDana Myers ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 105357190917SDana Myers ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 105457190917SDana Myers ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 105557190917SDana Myers ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 105657190917SDana Myers ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 105757190917SDana Myers }; 105857190917SDana Myers 105957190917SDana Myers /* Values for Data field above */ 106057190917SDana Myers 106157190917SDana Myers #define ACPI_IVHD_INIT_PASS (1) 106257190917SDana Myers #define ACPI_IVHD_EINT_PASS (1<<1) 106357190917SDana Myers #define ACPI_IVHD_NMI_PASS (1<<2) 106457190917SDana Myers #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 106557190917SDana Myers #define ACPI_IVHD_LINT0_PASS (1<<6) 106657190917SDana Myers #define ACPI_IVHD_LINT1_PASS (1<<7) 106757190917SDana Myers 106857190917SDana Myers 106957190917SDana Myers /* Types 0-4: 4-byte device entry */ 107057190917SDana Myers 107157190917SDana Myers typedef struct acpi_ivrs_device4 107257190917SDana Myers { 107357190917SDana Myers ACPI_IVRS_DE_HEADER Header; 107457190917SDana Myers 107557190917SDana Myers } ACPI_IVRS_DEVICE4; 107657190917SDana Myers 107757190917SDana Myers /* Types 66-67: 8-byte device entry */ 107857190917SDana Myers 107957190917SDana Myers typedef struct acpi_ivrs_device8a 108057190917SDana Myers { 108157190917SDana Myers ACPI_IVRS_DE_HEADER Header; 108257190917SDana Myers UINT8 Reserved1; 108357190917SDana Myers UINT16 UsedId; 108457190917SDana Myers UINT8 Reserved2; 108557190917SDana Myers 108657190917SDana Myers } ACPI_IVRS_DEVICE8A; 108757190917SDana Myers 108857190917SDana Myers /* Types 70-71: 8-byte device entry */ 108957190917SDana Myers 109057190917SDana Myers typedef struct acpi_ivrs_device8b 109157190917SDana Myers { 109257190917SDana Myers ACPI_IVRS_DE_HEADER Header; 109357190917SDana Myers UINT32 ExtendedData; 109457190917SDana Myers 109557190917SDana Myers } ACPI_IVRS_DEVICE8B; 109657190917SDana Myers 109757190917SDana Myers /* Values for ExtendedData above */ 109857190917SDana Myers 109957190917SDana Myers #define ACPI_IVHD_ATS_DISABLED (1<<31) 110057190917SDana Myers 110157190917SDana Myers /* Type 72: 8-byte device entry */ 110257190917SDana Myers 110357190917SDana Myers typedef struct acpi_ivrs_device8c 110457190917SDana Myers { 110557190917SDana Myers ACPI_IVRS_DE_HEADER Header; 110657190917SDana Myers UINT8 Handle; 110757190917SDana Myers UINT16 UsedId; 110857190917SDana Myers UINT8 Variety; 110957190917SDana Myers 111057190917SDana Myers } ACPI_IVRS_DEVICE8C; 111157190917SDana Myers 111257190917SDana Myers /* Values for Variety field above */ 111357190917SDana Myers 111457190917SDana Myers #define ACPI_IVHD_IOAPIC 1 111557190917SDana Myers #define ACPI_IVHD_HPET 2 111657190917SDana Myers 111757190917SDana Myers 111857190917SDana Myers /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 111957190917SDana Myers 112057190917SDana Myers typedef struct acpi_ivrs_memory 112157190917SDana Myers { 112257190917SDana Myers ACPI_IVRS_HEADER Header; 112357190917SDana Myers UINT16 AuxData; 112457190917SDana Myers UINT64 Reserved; 112557190917SDana Myers UINT64 StartAddress; 112657190917SDana Myers UINT64 MemoryLength; 112757190917SDana Myers 112857190917SDana Myers } ACPI_IVRS_MEMORY; 112957190917SDana Myers 113057190917SDana Myers 113157190917SDana Myers /******************************************************************************* 113257190917SDana Myers * 1133*cb565728SJerry Jelinek * LPIT - Low Power Idle Table 1134*cb565728SJerry Jelinek * 1135*cb565728SJerry Jelinek * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1136*cb565728SJerry Jelinek * 1137*cb565728SJerry Jelinek ******************************************************************************/ 1138*cb565728SJerry Jelinek 1139*cb565728SJerry Jelinek typedef struct acpi_table_lpit 1140*cb565728SJerry Jelinek { 1141*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1142*cb565728SJerry Jelinek 1143*cb565728SJerry Jelinek } ACPI_TABLE_LPIT; 1144*cb565728SJerry Jelinek 1145*cb565728SJerry Jelinek 1146*cb565728SJerry Jelinek /* LPIT subtable header */ 1147*cb565728SJerry Jelinek 1148*cb565728SJerry Jelinek typedef struct acpi_lpit_header 1149*cb565728SJerry Jelinek { 1150*cb565728SJerry Jelinek UINT32 Type; /* Subtable type */ 1151*cb565728SJerry Jelinek UINT32 Length; /* Subtable length */ 1152*cb565728SJerry Jelinek UINT16 UniqueId; 1153*cb565728SJerry Jelinek UINT16 Reserved; 1154*cb565728SJerry Jelinek UINT32 Flags; 1155*cb565728SJerry Jelinek 1156*cb565728SJerry Jelinek } ACPI_LPIT_HEADER; 1157*cb565728SJerry Jelinek 1158*cb565728SJerry Jelinek /* Values for subtable Type above */ 1159*cb565728SJerry Jelinek 1160*cb565728SJerry Jelinek enum AcpiLpitType 1161*cb565728SJerry Jelinek { 1162*cb565728SJerry Jelinek ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1163*cb565728SJerry Jelinek ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1164*cb565728SJerry Jelinek }; 1165*cb565728SJerry Jelinek 1166*cb565728SJerry Jelinek /* Masks for Flags field above */ 1167*cb565728SJerry Jelinek 1168*cb565728SJerry Jelinek #define ACPI_LPIT_STATE_DISABLED (1) 1169*cb565728SJerry Jelinek #define ACPI_LPIT_NO_COUNTER (1<<1) 1170*cb565728SJerry Jelinek 1171*cb565728SJerry Jelinek /* 1172*cb565728SJerry Jelinek * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1173*cb565728SJerry Jelinek */ 1174*cb565728SJerry Jelinek 1175*cb565728SJerry Jelinek /* 0x00: Native C-state instruction based LPI structure */ 1176*cb565728SJerry Jelinek 1177*cb565728SJerry Jelinek typedef struct acpi_lpit_native 1178*cb565728SJerry Jelinek { 1179*cb565728SJerry Jelinek ACPI_LPIT_HEADER Header; 1180*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS EntryTrigger; 1181*cb565728SJerry Jelinek UINT32 Residency; 1182*cb565728SJerry Jelinek UINT32 Latency; 1183*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS ResidencyCounter; 1184*cb565728SJerry Jelinek UINT64 CounterFrequency; 1185*cb565728SJerry Jelinek 1186*cb565728SJerry Jelinek } ACPI_LPIT_NATIVE; 1187*cb565728SJerry Jelinek 1188*cb565728SJerry Jelinek 1189*cb565728SJerry Jelinek /******************************************************************************* 1190*cb565728SJerry Jelinek * 1191*cb565728SJerry Jelinek * MCFG - PCI Memory Mapped Configuration table and subtable 119257190917SDana Myers * Version 1 119357190917SDana Myers * 119457190917SDana Myers * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 119557190917SDana Myers * 119657190917SDana Myers ******************************************************************************/ 119757190917SDana Myers 119857190917SDana Myers typedef struct acpi_table_mcfg 119957190917SDana Myers { 120057190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 120157190917SDana Myers UINT8 Reserved[8]; 120257190917SDana Myers 120357190917SDana Myers } ACPI_TABLE_MCFG; 120457190917SDana Myers 120557190917SDana Myers 120657190917SDana Myers /* Subtable */ 120757190917SDana Myers 120857190917SDana Myers typedef struct acpi_mcfg_allocation 120957190917SDana Myers { 121057190917SDana Myers UINT64 Address; /* Base address, processor-relative */ 121157190917SDana Myers UINT16 PciSegment; /* PCI segment group number */ 121257190917SDana Myers UINT8 StartBusNumber; /* Starting PCI Bus number */ 121357190917SDana Myers UINT8 EndBusNumber; /* Final PCI Bus number */ 121457190917SDana Myers UINT32 Reserved; 121557190917SDana Myers 121657190917SDana Myers } ACPI_MCFG_ALLOCATION; 121757190917SDana Myers 121857190917SDana Myers 121957190917SDana Myers /******************************************************************************* 122057190917SDana Myers * 122126f3cdf0SGordon Ross * MCHI - Management Controller Host Interface Table 122226f3cdf0SGordon Ross * Version 1 122326f3cdf0SGordon Ross * 122426f3cdf0SGordon Ross * Conforms to "Management Component Transport Protocol (MCTP) Host 122526f3cdf0SGordon Ross * Interface Specification", Revision 1.0.0a, October 13, 2009 122626f3cdf0SGordon Ross * 122726f3cdf0SGordon Ross ******************************************************************************/ 122826f3cdf0SGordon Ross 122926f3cdf0SGordon Ross typedef struct acpi_table_mchi 123026f3cdf0SGordon Ross { 123126f3cdf0SGordon Ross ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 123226f3cdf0SGordon Ross UINT8 InterfaceType; 123326f3cdf0SGordon Ross UINT8 Protocol; 123426f3cdf0SGordon Ross UINT64 ProtocolData; 123526f3cdf0SGordon Ross UINT8 InterruptType; 123626f3cdf0SGordon Ross UINT8 Gpe; 123726f3cdf0SGordon Ross UINT8 PciDeviceFlag; 123826f3cdf0SGordon Ross UINT32 GlobalInterrupt; 123926f3cdf0SGordon Ross ACPI_GENERIC_ADDRESS ControlRegister; 124026f3cdf0SGordon Ross UINT8 PciSegment; 124126f3cdf0SGordon Ross UINT8 PciBus; 124226f3cdf0SGordon Ross UINT8 PciDevice; 124326f3cdf0SGordon Ross UINT8 PciFunction; 124426f3cdf0SGordon Ross 124526f3cdf0SGordon Ross } ACPI_TABLE_MCHI; 124626f3cdf0SGordon Ross 124726f3cdf0SGordon Ross 124826f3cdf0SGordon Ross /******************************************************************************* 124926f3cdf0SGordon Ross * 1250*cb565728SJerry Jelinek * MSDM - Microsoft Data Management table 1251*cb565728SJerry Jelinek * 1252*cb565728SJerry Jelinek * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1253*cb565728SJerry Jelinek * November 29, 2011. Copyright 2011 Microsoft 1254*cb565728SJerry Jelinek * 1255*cb565728SJerry Jelinek ******************************************************************************/ 1256*cb565728SJerry Jelinek 1257*cb565728SJerry Jelinek /* Basic MSDM table is only the common ACPI header */ 1258*cb565728SJerry Jelinek 1259*cb565728SJerry Jelinek typedef struct acpi_table_msdm 1260*cb565728SJerry Jelinek { 1261*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1262*cb565728SJerry Jelinek 1263*cb565728SJerry Jelinek } ACPI_TABLE_MSDM; 1264*cb565728SJerry Jelinek 1265*cb565728SJerry Jelinek 1266*cb565728SJerry Jelinek /******************************************************************************* 1267*cb565728SJerry Jelinek * 1268*cb565728SJerry Jelinek * MTMR - MID Timer Table 126926f3cdf0SGordon Ross * Version 1 127026f3cdf0SGordon Ross * 1271*cb565728SJerry Jelinek * Conforms to "Simple Firmware Interface Specification", 1272*cb565728SJerry Jelinek * Draft 0.8.2, Oct 19, 2010 1273*cb565728SJerry Jelinek * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 1274*cb565728SJerry Jelinek * 1275*cb565728SJerry Jelinek ******************************************************************************/ 1276*cb565728SJerry Jelinek 1277*cb565728SJerry Jelinek typedef struct acpi_table_mtmr 1278*cb565728SJerry Jelinek { 1279*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1280*cb565728SJerry Jelinek 1281*cb565728SJerry Jelinek } ACPI_TABLE_MTMR; 1282*cb565728SJerry Jelinek 1283*cb565728SJerry Jelinek /* MTMR entry */ 1284*cb565728SJerry Jelinek 1285*cb565728SJerry Jelinek typedef struct acpi_mtmr_entry 1286*cb565728SJerry Jelinek { 1287*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS PhysicalAddress; 1288*cb565728SJerry Jelinek UINT32 Frequency; 1289*cb565728SJerry Jelinek UINT32 Irq; 1290*cb565728SJerry Jelinek 1291*cb565728SJerry Jelinek } ACPI_MTMR_ENTRY; 1292*cb565728SJerry Jelinek 1293*cb565728SJerry Jelinek 1294*cb565728SJerry Jelinek /******************************************************************************* 1295*cb565728SJerry Jelinek * 1296*cb565728SJerry Jelinek * SLIC - Software Licensing Description Table 1297*cb565728SJerry Jelinek * 1298*cb565728SJerry Jelinek * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1299*cb565728SJerry Jelinek * November 29, 2011. Copyright 2011 Microsoft 130026f3cdf0SGordon Ross * 130126f3cdf0SGordon Ross ******************************************************************************/ 130226f3cdf0SGordon Ross 130326f3cdf0SGordon Ross /* Basic SLIC table is only the common ACPI header */ 130426f3cdf0SGordon Ross 130526f3cdf0SGordon Ross typedef struct acpi_table_slic 130626f3cdf0SGordon Ross { 130726f3cdf0SGordon Ross ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 130826f3cdf0SGordon Ross 130926f3cdf0SGordon Ross } ACPI_TABLE_SLIC; 131026f3cdf0SGordon Ross 131126f3cdf0SGordon Ross 131226f3cdf0SGordon Ross /******************************************************************************* 131326f3cdf0SGordon Ross * 131457190917SDana Myers * SPCR - Serial Port Console Redirection table 1315*cb565728SJerry Jelinek * Version 2 131657190917SDana Myers * 131757190917SDana Myers * Conforms to "Serial Port Console Redirection Table", 1318*cb565728SJerry Jelinek * Version 1.03, August 10, 2015 131957190917SDana Myers * 132057190917SDana Myers ******************************************************************************/ 132157190917SDana Myers 132257190917SDana Myers typedef struct acpi_table_spcr 132357190917SDana Myers { 132457190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 132557190917SDana Myers UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 132657190917SDana Myers UINT8 Reserved[3]; 132757190917SDana Myers ACPI_GENERIC_ADDRESS SerialPort; 132857190917SDana Myers UINT8 InterruptType; 132957190917SDana Myers UINT8 PcInterrupt; 133057190917SDana Myers UINT32 Interrupt; 133157190917SDana Myers UINT8 BaudRate; 133257190917SDana Myers UINT8 Parity; 133357190917SDana Myers UINT8 StopBits; 133457190917SDana Myers UINT8 FlowControl; 133557190917SDana Myers UINT8 TerminalType; 133657190917SDana Myers UINT8 Reserved1; 133757190917SDana Myers UINT16 PciDeviceId; 133857190917SDana Myers UINT16 PciVendorId; 133957190917SDana Myers UINT8 PciBus; 134057190917SDana Myers UINT8 PciDevice; 134157190917SDana Myers UINT8 PciFunction; 134257190917SDana Myers UINT32 PciFlags; 134357190917SDana Myers UINT8 PciSegment; 134457190917SDana Myers UINT32 Reserved2; 134557190917SDana Myers 134657190917SDana Myers } ACPI_TABLE_SPCR; 134757190917SDana Myers 134857190917SDana Myers /* Masks for PciFlags field above */ 134957190917SDana Myers 135057190917SDana Myers #define ACPI_SPCR_DO_NOT_DISABLE (1) 135157190917SDana Myers 1352*cb565728SJerry Jelinek /* Values for Interface Type: See the definition of the DBG2 table */ 1353*cb565728SJerry Jelinek 135457190917SDana Myers 135557190917SDana Myers /******************************************************************************* 135657190917SDana Myers * 135757190917SDana Myers * SPMI - Server Platform Management Interface table 135857190917SDana Myers * Version 5 135957190917SDana Myers * 136057190917SDana Myers * Conforms to "Intelligent Platform Management Interface Specification 136157190917SDana Myers * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 136257190917SDana Myers * June 12, 2009 markup. 136357190917SDana Myers * 136457190917SDana Myers ******************************************************************************/ 136557190917SDana Myers 136657190917SDana Myers typedef struct acpi_table_spmi 136757190917SDana Myers { 136857190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 136957190917SDana Myers UINT8 InterfaceType; 137057190917SDana Myers UINT8 Reserved; /* Must be 1 */ 137157190917SDana Myers UINT16 SpecRevision; /* Version of IPMI */ 137257190917SDana Myers UINT8 InterruptType; 137357190917SDana Myers UINT8 GpeNumber; /* GPE assigned */ 137457190917SDana Myers UINT8 Reserved1; 137557190917SDana Myers UINT8 PciDeviceFlag; 137657190917SDana Myers UINT32 Interrupt; 137757190917SDana Myers ACPI_GENERIC_ADDRESS IpmiRegister; 137857190917SDana Myers UINT8 PciSegment; 137957190917SDana Myers UINT8 PciBus; 138057190917SDana Myers UINT8 PciDevice; 138157190917SDana Myers UINT8 PciFunction; 138257190917SDana Myers UINT8 Reserved2; 138357190917SDana Myers 138457190917SDana Myers } ACPI_TABLE_SPMI; 138557190917SDana Myers 138657190917SDana Myers /* Values for InterfaceType above */ 138757190917SDana Myers 138857190917SDana Myers enum AcpiSpmiInterfaceTypes 138957190917SDana Myers { 139057190917SDana Myers ACPI_SPMI_NOT_USED = 0, 139157190917SDana Myers ACPI_SPMI_KEYBOARD = 1, 139257190917SDana Myers ACPI_SPMI_SMI = 2, 139357190917SDana Myers ACPI_SPMI_BLOCK_TRANSFER = 3, 139457190917SDana Myers ACPI_SPMI_SMBUS = 4, 139557190917SDana Myers ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 139657190917SDana Myers }; 139757190917SDana Myers 139857190917SDana Myers 139957190917SDana Myers /******************************************************************************* 140057190917SDana Myers * 140157190917SDana Myers * TCPA - Trusted Computing Platform Alliance table 1402*cb565728SJerry Jelinek * Version 2 140357190917SDana Myers * 1404*cb565728SJerry Jelinek * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1405*cb565728SJerry Jelinek * December 19, 2014 1406*cb565728SJerry Jelinek * 1407*cb565728SJerry Jelinek * NOTE: There are two versions of the table with the same signature -- 1408*cb565728SJerry Jelinek * the client version and the server version. The common PlatformClass 1409*cb565728SJerry Jelinek * field is used to differentiate the two types of tables. 141057190917SDana Myers * 141157190917SDana Myers ******************************************************************************/ 141257190917SDana Myers 1413*cb565728SJerry Jelinek typedef struct acpi_table_tcpa_hdr 141457190917SDana Myers { 141557190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1416*cb565728SJerry Jelinek UINT16 PlatformClass; 1417*cb565728SJerry Jelinek 1418*cb565728SJerry Jelinek } ACPI_TABLE_TCPA_HDR; 1419*cb565728SJerry Jelinek 1420*cb565728SJerry Jelinek /* 1421*cb565728SJerry Jelinek * Values for PlatformClass above. 1422*cb565728SJerry Jelinek * This is how the client and server subtables are differentiated 1423*cb565728SJerry Jelinek */ 1424*cb565728SJerry Jelinek #define ACPI_TCPA_CLIENT_TABLE 0 1425*cb565728SJerry Jelinek #define ACPI_TCPA_SERVER_TABLE 1 1426*cb565728SJerry Jelinek 1427*cb565728SJerry Jelinek 1428*cb565728SJerry Jelinek typedef struct acpi_table_tcpa_client 1429*cb565728SJerry Jelinek { 1430*cb565728SJerry Jelinek UINT32 MinimumLogLength; /* Minimum length for the event log area */ 143157190917SDana Myers UINT64 LogAddress; /* Address of the event log area */ 143257190917SDana Myers 1433*cb565728SJerry Jelinek } ACPI_TABLE_TCPA_CLIENT; 1434*cb565728SJerry Jelinek 1435*cb565728SJerry Jelinek typedef struct acpi_table_tcpa_server 1436*cb565728SJerry Jelinek { 1437*cb565728SJerry Jelinek UINT16 Reserved; 1438*cb565728SJerry Jelinek UINT64 MinimumLogLength; /* Minimum length for the event log area */ 1439*cb565728SJerry Jelinek UINT64 LogAddress; /* Address of the event log area */ 1440*cb565728SJerry Jelinek UINT16 SpecRevision; 1441*cb565728SJerry Jelinek UINT8 DeviceFlags; 1442*cb565728SJerry Jelinek UINT8 InterruptFlags; 1443*cb565728SJerry Jelinek UINT8 GpeNumber; 1444*cb565728SJerry Jelinek UINT8 Reserved2[3]; 1445*cb565728SJerry Jelinek UINT32 GlobalInterrupt; 1446*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS Address; 1447*cb565728SJerry Jelinek UINT32 Reserved3; 1448*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS ConfigAddress; 1449*cb565728SJerry Jelinek UINT8 Group; 1450*cb565728SJerry Jelinek UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 1451*cb565728SJerry Jelinek UINT8 Device; 1452*cb565728SJerry Jelinek UINT8 Function; 1453*cb565728SJerry Jelinek 1454*cb565728SJerry Jelinek } ACPI_TABLE_TCPA_SERVER; 1455*cb565728SJerry Jelinek 1456*cb565728SJerry Jelinek /* Values for DeviceFlags above */ 1457*cb565728SJerry Jelinek 1458*cb565728SJerry Jelinek #define ACPI_TCPA_PCI_DEVICE (1) 1459*cb565728SJerry Jelinek #define ACPI_TCPA_BUS_PNP (1<<1) 1460*cb565728SJerry Jelinek #define ACPI_TCPA_ADDRESS_VALID (1<<2) 1461*cb565728SJerry Jelinek 1462*cb565728SJerry Jelinek /* Values for InterruptFlags above */ 1463*cb565728SJerry Jelinek 1464*cb565728SJerry Jelinek #define ACPI_TCPA_INTERRUPT_MODE (1) 1465*cb565728SJerry Jelinek #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 1466*cb565728SJerry Jelinek #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 1467*cb565728SJerry Jelinek #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 1468*cb565728SJerry Jelinek 1469*cb565728SJerry Jelinek 1470*cb565728SJerry Jelinek /******************************************************************************* 1471*cb565728SJerry Jelinek * 1472*cb565728SJerry Jelinek * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 1473*cb565728SJerry Jelinek * Version 4 1474*cb565728SJerry Jelinek * 1475*cb565728SJerry Jelinek * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1476*cb565728SJerry Jelinek * December 19, 2014 1477*cb565728SJerry Jelinek * 1478*cb565728SJerry Jelinek ******************************************************************************/ 1479*cb565728SJerry Jelinek 1480*cb565728SJerry Jelinek typedef struct acpi_table_tpm2 1481*cb565728SJerry Jelinek { 1482*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1483*cb565728SJerry Jelinek UINT16 PlatformClass; 1484*cb565728SJerry Jelinek UINT16 Reserved; 1485*cb565728SJerry Jelinek UINT64 ControlAddress; 1486*cb565728SJerry Jelinek UINT32 StartMethod; 1487*cb565728SJerry Jelinek 1488*cb565728SJerry Jelinek /* Platform-specific data follows */ 1489*cb565728SJerry Jelinek 1490*cb565728SJerry Jelinek } ACPI_TABLE_TPM2; 1491*cb565728SJerry Jelinek 1492*cb565728SJerry Jelinek /* Values for StartMethod above */ 1493*cb565728SJerry Jelinek 1494*cb565728SJerry Jelinek #define ACPI_TPM2_NOT_ALLOWED 0 1495*cb565728SJerry Jelinek #define ACPI_TPM2_START_METHOD 2 1496*cb565728SJerry Jelinek #define ACPI_TPM2_MEMORY_MAPPED 6 1497*cb565728SJerry Jelinek #define ACPI_TPM2_COMMAND_BUFFER 7 1498*cb565728SJerry Jelinek #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 149957190917SDana Myers 150057190917SDana Myers 150157190917SDana Myers /******************************************************************************* 150257190917SDana Myers * 150357190917SDana Myers * UEFI - UEFI Boot optimization Table 150457190917SDana Myers * Version 1 150557190917SDana Myers * 150657190917SDana Myers * Conforms to "Unified Extensible Firmware Interface Specification", 150757190917SDana Myers * Version 2.3, May 8, 2009 150857190917SDana Myers * 150957190917SDana Myers ******************************************************************************/ 151057190917SDana Myers 151157190917SDana Myers typedef struct acpi_table_uefi 151257190917SDana Myers { 151357190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 151457190917SDana Myers UINT8 Identifier[16]; /* UUID identifier */ 151557190917SDana Myers UINT16 DataOffset; /* Offset of remaining data in table */ 151657190917SDana Myers 151757190917SDana Myers } ACPI_TABLE_UEFI; 151857190917SDana Myers 151957190917SDana Myers 152057190917SDana Myers /******************************************************************************* 152157190917SDana Myers * 1522*cb565728SJerry Jelinek * VRTC - Virtual Real Time Clock Table 1523*cb565728SJerry Jelinek * Version 1 1524*cb565728SJerry Jelinek * 1525*cb565728SJerry Jelinek * Conforms to "Simple Firmware Interface Specification", 1526*cb565728SJerry Jelinek * Draft 0.8.2, Oct 19, 2010 1527*cb565728SJerry Jelinek * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 1528*cb565728SJerry Jelinek * 1529*cb565728SJerry Jelinek ******************************************************************************/ 1530*cb565728SJerry Jelinek 1531*cb565728SJerry Jelinek typedef struct acpi_table_vrtc 1532*cb565728SJerry Jelinek { 1533*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1534*cb565728SJerry Jelinek 1535*cb565728SJerry Jelinek } ACPI_TABLE_VRTC; 1536*cb565728SJerry Jelinek 1537*cb565728SJerry Jelinek /* VRTC entry */ 1538*cb565728SJerry Jelinek 1539*cb565728SJerry Jelinek typedef struct acpi_vrtc_entry 1540*cb565728SJerry Jelinek { 1541*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS PhysicalAddress; 1542*cb565728SJerry Jelinek UINT32 Irq; 1543*cb565728SJerry Jelinek 1544*cb565728SJerry Jelinek } ACPI_VRTC_ENTRY; 1545*cb565728SJerry Jelinek 1546*cb565728SJerry Jelinek 1547*cb565728SJerry Jelinek /******************************************************************************* 1548*cb565728SJerry Jelinek * 154957190917SDana Myers * WAET - Windows ACPI Emulated devices Table 155057190917SDana Myers * Version 1 155157190917SDana Myers * 155257190917SDana Myers * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 155357190917SDana Myers * 155457190917SDana Myers ******************************************************************************/ 155557190917SDana Myers 155657190917SDana Myers typedef struct acpi_table_waet 155757190917SDana Myers { 155857190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 155957190917SDana Myers UINT32 Flags; 156057190917SDana Myers 156157190917SDana Myers } ACPI_TABLE_WAET; 156257190917SDana Myers 156357190917SDana Myers /* Masks for Flags field above */ 156457190917SDana Myers 156557190917SDana Myers #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 156657190917SDana Myers #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 156757190917SDana Myers 156857190917SDana Myers 156957190917SDana Myers /******************************************************************************* 157057190917SDana Myers * 157157190917SDana Myers * WDAT - Watchdog Action Table 157257190917SDana Myers * Version 1 157357190917SDana Myers * 157457190917SDana Myers * Conforms to "Hardware Watchdog Timers Design Specification", 157557190917SDana Myers * Copyright 2006 Microsoft Corporation. 157657190917SDana Myers * 157757190917SDana Myers ******************************************************************************/ 157857190917SDana Myers 157957190917SDana Myers typedef struct acpi_table_wdat 158057190917SDana Myers { 158157190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 158257190917SDana Myers UINT32 HeaderLength; /* Watchdog Header Length */ 158357190917SDana Myers UINT16 PciSegment; /* PCI Segment number */ 158457190917SDana Myers UINT8 PciBus; /* PCI Bus number */ 158557190917SDana Myers UINT8 PciDevice; /* PCI Device number */ 158657190917SDana Myers UINT8 PciFunction; /* PCI Function number */ 158757190917SDana Myers UINT8 Reserved[3]; 158857190917SDana Myers UINT32 TimerPeriod; /* Period of one timer count (msec) */ 158957190917SDana Myers UINT32 MaxCount; /* Maximum counter value supported */ 159057190917SDana Myers UINT32 MinCount; /* Minimum counter value */ 159157190917SDana Myers UINT8 Flags; 159257190917SDana Myers UINT8 Reserved2[3]; 159357190917SDana Myers UINT32 Entries; /* Number of watchdog entries that follow */ 159457190917SDana Myers 159557190917SDana Myers } ACPI_TABLE_WDAT; 159657190917SDana Myers 159757190917SDana Myers /* Masks for Flags field above */ 159857190917SDana Myers 159957190917SDana Myers #define ACPI_WDAT_ENABLED (1) 160057190917SDana Myers #define ACPI_WDAT_STOPPED 0x80 160157190917SDana Myers 160257190917SDana Myers 160357190917SDana Myers /* WDAT Instruction Entries (actions) */ 160457190917SDana Myers 160557190917SDana Myers typedef struct acpi_wdat_entry 160657190917SDana Myers { 160757190917SDana Myers UINT8 Action; 160857190917SDana Myers UINT8 Instruction; 160957190917SDana Myers UINT16 Reserved; 161057190917SDana Myers ACPI_GENERIC_ADDRESS RegisterRegion; 161157190917SDana Myers UINT32 Value; /* Value used with Read/Write register */ 161257190917SDana Myers UINT32 Mask; /* Bitmask required for this register instruction */ 161357190917SDana Myers 161457190917SDana Myers } ACPI_WDAT_ENTRY; 161557190917SDana Myers 161657190917SDana Myers /* Values for Action field above */ 161757190917SDana Myers 161857190917SDana Myers enum AcpiWdatActions 161957190917SDana Myers { 162057190917SDana Myers ACPI_WDAT_RESET = 1, 162157190917SDana Myers ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 162257190917SDana Myers ACPI_WDAT_GET_COUNTDOWN = 5, 162357190917SDana Myers ACPI_WDAT_SET_COUNTDOWN = 6, 162457190917SDana Myers ACPI_WDAT_GET_RUNNING_STATE = 8, 162557190917SDana Myers ACPI_WDAT_SET_RUNNING_STATE = 9, 162657190917SDana Myers ACPI_WDAT_GET_STOPPED_STATE = 10, 162757190917SDana Myers ACPI_WDAT_SET_STOPPED_STATE = 11, 162857190917SDana Myers ACPI_WDAT_GET_REBOOT = 16, 162957190917SDana Myers ACPI_WDAT_SET_REBOOT = 17, 163057190917SDana Myers ACPI_WDAT_GET_SHUTDOWN = 18, 163157190917SDana Myers ACPI_WDAT_SET_SHUTDOWN = 19, 163257190917SDana Myers ACPI_WDAT_GET_STATUS = 32, 163357190917SDana Myers ACPI_WDAT_SET_STATUS = 33, 163457190917SDana Myers ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 163557190917SDana Myers }; 163657190917SDana Myers 163757190917SDana Myers /* Values for Instruction field above */ 163857190917SDana Myers 163957190917SDana Myers enum AcpiWdatInstructions 164057190917SDana Myers { 164157190917SDana Myers ACPI_WDAT_READ_VALUE = 0, 164257190917SDana Myers ACPI_WDAT_READ_COUNTDOWN = 1, 164357190917SDana Myers ACPI_WDAT_WRITE_VALUE = 2, 164457190917SDana Myers ACPI_WDAT_WRITE_COUNTDOWN = 3, 164557190917SDana Myers ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 164657190917SDana Myers ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 164757190917SDana Myers }; 164857190917SDana Myers 164957190917SDana Myers 165057190917SDana Myers /******************************************************************************* 165157190917SDana Myers * 165226f3cdf0SGordon Ross * WDDT - Watchdog Descriptor Table 165326f3cdf0SGordon Ross * Version 1 165426f3cdf0SGordon Ross * 165526f3cdf0SGordon Ross * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 165626f3cdf0SGordon Ross * Version 001, September 2002 165726f3cdf0SGordon Ross * 165826f3cdf0SGordon Ross ******************************************************************************/ 165926f3cdf0SGordon Ross 166026f3cdf0SGordon Ross typedef struct acpi_table_wddt 166126f3cdf0SGordon Ross { 166226f3cdf0SGordon Ross ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 166326f3cdf0SGordon Ross UINT16 SpecVersion; 166426f3cdf0SGordon Ross UINT16 TableVersion; 166526f3cdf0SGordon Ross UINT16 PciVendorId; 166626f3cdf0SGordon Ross ACPI_GENERIC_ADDRESS Address; 166726f3cdf0SGordon Ross UINT16 MaxCount; /* Maximum counter value supported */ 166826f3cdf0SGordon Ross UINT16 MinCount; /* Minimum counter value supported */ 166926f3cdf0SGordon Ross UINT16 Period; 167026f3cdf0SGordon Ross UINT16 Status; 167126f3cdf0SGordon Ross UINT16 Capability; 167226f3cdf0SGordon Ross 167326f3cdf0SGordon Ross } ACPI_TABLE_WDDT; 167426f3cdf0SGordon Ross 167526f3cdf0SGordon Ross /* Flags for Status field above */ 167626f3cdf0SGordon Ross 167726f3cdf0SGordon Ross #define ACPI_WDDT_AVAILABLE (1) 167826f3cdf0SGordon Ross #define ACPI_WDDT_ACTIVE (1<<1) 167926f3cdf0SGordon Ross #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 168026f3cdf0SGordon Ross #define ACPI_WDDT_USER_RESET (1<<11) 168126f3cdf0SGordon Ross #define ACPI_WDDT_WDT_RESET (1<<12) 168226f3cdf0SGordon Ross #define ACPI_WDDT_POWER_FAIL (1<<13) 168326f3cdf0SGordon Ross #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 168426f3cdf0SGordon Ross 168526f3cdf0SGordon Ross /* Flags for Capability field above */ 168626f3cdf0SGordon Ross 168726f3cdf0SGordon Ross #define ACPI_WDDT_AUTO_RESET (1) 168826f3cdf0SGordon Ross #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 168926f3cdf0SGordon Ross 169026f3cdf0SGordon Ross 169126f3cdf0SGordon Ross /******************************************************************************* 169226f3cdf0SGordon Ross * 169357190917SDana Myers * WDRT - Watchdog Resource Table 169457190917SDana Myers * Version 1 169557190917SDana Myers * 169657190917SDana Myers * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 169757190917SDana Myers * Version 1.01, August 28, 2006 169857190917SDana Myers * 169957190917SDana Myers ******************************************************************************/ 170057190917SDana Myers 170157190917SDana Myers typedef struct acpi_table_wdrt 170257190917SDana Myers { 170357190917SDana Myers ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 170457190917SDana Myers ACPI_GENERIC_ADDRESS ControlRegister; 170557190917SDana Myers ACPI_GENERIC_ADDRESS CountRegister; 170657190917SDana Myers UINT16 PciDeviceId; 170757190917SDana Myers UINT16 PciVendorId; 170857190917SDana Myers UINT8 PciBus; /* PCI Bus number */ 170957190917SDana Myers UINT8 PciDevice; /* PCI Device number */ 171057190917SDana Myers UINT8 PciFunction; /* PCI Function number */ 171157190917SDana Myers UINT8 PciSegment; /* PCI Segment number */ 171257190917SDana Myers UINT16 MaxCount; /* Maximum counter value supported */ 171357190917SDana Myers UINT8 Units; 171457190917SDana Myers 171557190917SDana Myers } ACPI_TABLE_WDRT; 171657190917SDana Myers 171757190917SDana Myers 171857190917SDana Myers /* Reset to default packing */ 171957190917SDana Myers 172057190917SDana Myers #pragma pack() 17217c478bd9Sstevel@tonic-gate 17227c478bd9Sstevel@tonic-gate #endif /* __ACTBL2_H__ */ 1723