actbl2.h revision 306536
11558Srgrimes/****************************************************************************** 21558Srgrimes * 31558Srgrimes * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 41558Srgrimes * 51558Srgrimes *****************************************************************************/ 61558Srgrimes 71558Srgrimes/* 81558Srgrimes * Copyright (C) 2000 - 2016, Intel Corp. 91558Srgrimes * All rights reserved. 101558Srgrimes * 111558Srgrimes * Redistribution and use in source and binary forms, with or without 121558Srgrimes * modification, are permitted provided that the following conditions 131558Srgrimes * are met: 141558Srgrimes * 1. Redistributions of source code must retain the above copyright 151558Srgrimes * notice, this list of conditions, and the following disclaimer, 161558Srgrimes * without modification. 171558Srgrimes * 2. Redistributions in binary form must reproduce at minimum a disclaimer 181558Srgrimes * substantially similar to the "NO WARRANTY" disclaimer below 191558Srgrimes * ("Disclaimer") and any redistribution must be conditioned upon 201558Srgrimes * including a substantially similar Disclaimer requirement for further 211558Srgrimes * binary redistribution. 221558Srgrimes * 3. Neither the names of the above-listed copyright holders nor the names 231558Srgrimes * of any contributors may be used to endorse or promote products derived 241558Srgrimes * from this software without specific prior written permission. 251558Srgrimes * 261558Srgrimes * Alternatively, this software may be distributed under the terms of the 271558Srgrimes * GNU General Public License ("GPL") version 2 as published by the Free 281558Srgrimes * Software Foundation. 291558Srgrimes * 301558Srgrimes * NO WARRANTY 311558Srgrimes * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 321558Srgrimes * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 331558Srgrimes * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 341558Srgrimes * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3523675Speter * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 361558Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 371558Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 381558Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 391558Srgrimes * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4023675Speter * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 411558Srgrimes * POSSIBILITY OF SUCH DAMAGES. 421558Srgrimes */ 431558Srgrimes 4423796Sbde#ifndef __ACTBL2_H__ 4523675Speter#define __ACTBL2_H__ 461558Srgrimes 4723675Speter 481558Srgrimes/******************************************************************************* 491558Srgrimes * 501558Srgrimes * Additional ACPI Tables (2) 511558Srgrimes * 521558Srgrimes * These tables are not consumed directly by the ACPICA subsystem, but are 531558Srgrimes * included here to support device drivers and the AML disassembler. 541558Srgrimes * 551558Srgrimes * Generally, the tables in this file are defined by third-party specifications, 561558Srgrimes * and are not defined directly by the ACPI specification itself. 571558Srgrimes * 581558Srgrimes ******************************************************************************/ 591558Srgrimes 601558Srgrimes 611558Srgrimes/* 6223675Speter * Values for description table header signatures for tables defined in this 6323675Speter * file. Useful because they make it more difficult to inadvertently type in 6423675Speter * the wrong signature. 6523675Speter */ 6623675Speter#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 6723675Speter#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 6823675Speter#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 6923675Speter#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 701558Srgrimes#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 711558Srgrimes#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 721558Srgrimes#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 731558Srgrimes#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 747585Sbde#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ 751558Srgrimes#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 761558Srgrimes#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 771558Srgrimes#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 781558Srgrimes#define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 791558Srgrimes#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 801558Srgrimes#define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 811558Srgrimes#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 821558Srgrimes#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 831558Srgrimes#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 841558Srgrimes#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 851558Srgrimes#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 861558Srgrimes#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 871558Srgrimes#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 881558Srgrimes#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 891558Srgrimes#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 901558Srgrimes#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 911558Srgrimes#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 921558Srgrimes 931558Srgrimes#ifdef ACPI_UNDEFINED_TABLES 941558Srgrimes/* 951558Srgrimes * These tables have been seen in the field, but no definition has been found 961558Srgrimes */ 971558Srgrimes#define ACPI_SIG_ATKG "ATKG" 981558Srgrimes#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 991558Srgrimes#define ACPI_SIG_IEIT "IEIT" 1007585Sbde#endif 1011558Srgrimes 1021558Srgrimes/* 1031558Srgrimes * All tables must be byte-packed to match the ACPI specification, since 1041558Srgrimes * the tables are provided by the system BIOS. 1051558Srgrimes */ 1061558Srgrimes#pragma pack(1) 1071558Srgrimes 1081558Srgrimes/* 1091558Srgrimes * Note: C bitfields are not used for this reason: 1101558Srgrimes * 11123675Speter * "Bitfields are great and easy to read, but unfortunately the C language 1121558Srgrimes * does not specify the layout of bitfields in memory, which means they are 1131558Srgrimes * essentially useless for dealing with packed data in on-disk formats or 1141558Srgrimes * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 1151558Srgrimes * this decision was a design error in C. Ritchie could have picked an order 1161558Srgrimes * and stuck with it." Norman Ramsey. 1171558Srgrimes * See http://stackoverflow.com/a/1053662/41661 1181558Srgrimes */ 1191558Srgrimes 1201558Srgrimes 1211558Srgrimes/******************************************************************************* 1221558Srgrimes * 12323675Speter * ASF - Alert Standard Format table (Signature "ASF!") 1241558Srgrimes * Revision 0x10 1251558Srgrimes * 1261558Srgrimes * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 1271558Srgrimes * 1281558Srgrimes ******************************************************************************/ 1291558Srgrimes 1301558Srgrimestypedef struct acpi_table_asf 1311558Srgrimes{ 1321558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1331558Srgrimes 1341558Srgrimes} ACPI_TABLE_ASF; 1351558Srgrimes 1361558Srgrimes 1371558Srgrimes/* ASF subtable header */ 1381558Srgrimes 1391558Srgrimestypedef struct acpi_asf_header 1401558Srgrimes{ 1411558Srgrimes UINT8 Type; 1421558Srgrimes UINT8 Reserved; 1431558Srgrimes UINT16 Length; 1441558Srgrimes 1451558Srgrimes} ACPI_ASF_HEADER; 1461558Srgrimes 1471558Srgrimes 14823675Speter/* Values for Type field above */ 1491558Srgrimes 1501558Srgrimesenum AcpiAsfType 1511558Srgrimes{ 1521558Srgrimes ACPI_ASF_TYPE_INFO = 0, 1538871Srgrimes ACPI_ASF_TYPE_ALERT = 1, 1541558Srgrimes ACPI_ASF_TYPE_CONTROL = 2, 1551558Srgrimes ACPI_ASF_TYPE_BOOT = 3, 1561558Srgrimes ACPI_ASF_TYPE_ADDRESS = 4, 1571558Srgrimes ACPI_ASF_TYPE_RESERVED = 5 1581558Srgrimes}; 1591558Srgrimes 1601558Srgrimes/* 1611558Srgrimes * ASF subtables 16223675Speter */ 1631558Srgrimes 1641558Srgrimes/* 0: ASF Information */ 1651558Srgrimes 1661558Srgrimestypedef struct acpi_asf_info 1671558Srgrimes{ 1681558Srgrimes ACPI_ASF_HEADER Header; 1691558Srgrimes UINT8 MinResetValue; 1701558Srgrimes UINT8 MinPollInterval; 1711558Srgrimes UINT16 SystemId; 1721558Srgrimes UINT32 MfgId; 1731558Srgrimes UINT8 Flags; 1741558Srgrimes UINT8 Reserved2[3]; 1751558Srgrimes 1761558Srgrimes} ACPI_ASF_INFO; 17723675Speter 17823675Speter/* Masks for Flags field above */ 1791558Srgrimes 1801558Srgrimes#define ACPI_ASF_SMBUS_PROTOCOLS (1) 1811558Srgrimes 1821558Srgrimes 1831558Srgrimes/* 1: ASF Alerts */ 1841558Srgrimes 1851558Srgrimestypedef struct acpi_asf_alert 1861558Srgrimes{ 1871558Srgrimes ACPI_ASF_HEADER Header; 1881558Srgrimes UINT8 AssertMask; 1891558Srgrimes UINT8 DeassertMask; 1901558Srgrimes UINT8 Alerts; 1911558Srgrimes UINT8 DataLength; 1921558Srgrimes 1931558Srgrimes} ACPI_ASF_ALERT; 1941558Srgrimes 1951558Srgrimestypedef struct acpi_asf_alert_data 1961558Srgrimes{ 1971558Srgrimes UINT8 Address; 1981558Srgrimes UINT8 Command; 1991558Srgrimes UINT8 Mask; 2001558Srgrimes UINT8 Value; 2011558Srgrimes UINT8 SensorType; 2021558Srgrimes UINT8 Type; 2031558Srgrimes UINT8 Offset; 2041558Srgrimes UINT8 SourceType; 2051558Srgrimes UINT8 Severity; 2061558Srgrimes UINT8 SensorNumber; 2071558Srgrimes UINT8 Entity; 20823675Speter UINT8 Instance; 20923675Speter 2101558Srgrimes} ACPI_ASF_ALERT_DATA; 2111558Srgrimes 2121558Srgrimes 2131558Srgrimes/* 2: ASF Remote Control */ 2141558Srgrimes 2151558Srgrimestypedef struct acpi_asf_remote 2161558Srgrimes{ 2171558Srgrimes ACPI_ASF_HEADER Header; 2181558Srgrimes UINT8 Controls; 2191558Srgrimes UINT8 DataLength; 2201558Srgrimes UINT16 Reserved2; 2211558Srgrimes 2221558Srgrimes} ACPI_ASF_REMOTE; 2231558Srgrimes 22423675Spetertypedef struct acpi_asf_control_data 2251558Srgrimes{ 2261558Srgrimes UINT8 Function; 2271558Srgrimes UINT8 Address; 2281558Srgrimes UINT8 Command; 2291558Srgrimes UINT8 Value; 2301558Srgrimes 2311558Srgrimes} ACPI_ASF_CONTROL_DATA; 2321558Srgrimes 2331558Srgrimes 23423675Speter/* 3: ASF RMCP Boot Options */ 23523675Speter 23623675Spetertypedef struct acpi_asf_rmcp 23723675Speter{ 23823675Speter ACPI_ASF_HEADER Header; 23923675Speter UINT8 Capabilities[7]; 24023675Speter UINT8 CompletionCode; 24123675Speter UINT32 EnterpriseId; 2421558Srgrimes UINT8 Command; 2431558Srgrimes UINT16 Parameter; 2441558Srgrimes UINT16 BootOptions; 2451558Srgrimes UINT16 OemParameters; 2461558Srgrimes 2471558Srgrimes} ACPI_ASF_RMCP; 2481558Srgrimes 2491558Srgrimes 2501558Srgrimes/* 4: ASF Address */ 2511558Srgrimes 2521558Srgrimestypedef struct acpi_asf_address 2531558Srgrimes{ 2541558Srgrimes ACPI_ASF_HEADER Header; 25523675Speter UINT8 EpromAddress; 25623675Speter UINT8 Devices; 25723675Speter 25823675Speter} ACPI_ASF_ADDRESS; 25923675Speter 26023675Speter 26123675Speter/******************************************************************************* 26223675Speter * 26323675Speter * BOOT - Simple Boot Flag Table 26423675Speter * Version 1 26523675Speter * 2661558Srgrimes * Conforms to the "Simple Boot Flag Specification", Version 2.1 2671558Srgrimes * 2687585Sbde ******************************************************************************/ 2691558Srgrimes 2701558Srgrimestypedef struct acpi_table_boot 2711558Srgrimes{ 2721558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2731558Srgrimes UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 2741558Srgrimes UINT8 Reserved[3]; 2751558Srgrimes 2761558Srgrimes} ACPI_TABLE_BOOT; 2777585Sbde 2781558Srgrimes 2791558Srgrimes/******************************************************************************* 2801558Srgrimes * 2811558Srgrimes * CSRT - Core System Resource Table 2821558Srgrimes * Version 0 2831558Srgrimes * 2841558Srgrimes * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 2851558Srgrimes * 2861558Srgrimes ******************************************************************************/ 2871558Srgrimes 2881558Srgrimestypedef struct acpi_table_csrt 2891558Srgrimes{ 2901558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2911558Srgrimes 2921558Srgrimes} ACPI_TABLE_CSRT; 2931558Srgrimes 2941558Srgrimes 2951558Srgrimes/* Resource Group subtable */ 2961558Srgrimes 2971558Srgrimestypedef struct acpi_csrt_group 2981558Srgrimes{ 2991558Srgrimes UINT32 Length; 3001558Srgrimes UINT32 VendorId; 3017585Sbde UINT32 SubvendorId; 3021558Srgrimes UINT16 DeviceId; 3031558Srgrimes UINT16 SubdeviceId; 30423675Speter UINT16 Revision; 3051558Srgrimes UINT16 Reserved; 3061558Srgrimes UINT32 SharedInfoLength; 3071558Srgrimes 3081558Srgrimes /* Shared data immediately follows (Length = SharedInfoLength) */ 3091558Srgrimes 3101558Srgrimes} ACPI_CSRT_GROUP; 3111558Srgrimes 3121558Srgrimes/* Shared Info subtable */ 3131558Srgrimes 3141558Srgrimestypedef struct acpi_csrt_shared_info 3151558Srgrimes{ 3161558Srgrimes UINT16 MajorVersion; 3171558Srgrimes UINT16 MinorVersion; 31834266Sjulian UINT32 MmioBaseLow; 3191558Srgrimes UINT32 MmioBaseHigh; 3201558Srgrimes UINT32 GsiInterrupt; 3211558Srgrimes UINT8 InterruptPolarity; 3221558Srgrimes UINT8 InterruptMode; 32334266Sjulian UINT8 NumChannels; 32434266Sjulian UINT8 DmaAddressWidth; 3251558Srgrimes UINT16 BaseRequestLine; 3261558Srgrimes UINT16 NumHandshakeSignals; 3271558Srgrimes UINT32 MaxBlockSize; 3281558Srgrimes 3291558Srgrimes /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 3301558Srgrimes 3311558Srgrimes} ACPI_CSRT_SHARED_INFO; 3321558Srgrimes 33323675Speter/* Resource Descriptor subtable */ 3341558Srgrimes 3351558Srgrimestypedef struct acpi_csrt_descriptor 3361558Srgrimes{ 3371558Srgrimes UINT32 Length; 3381558Srgrimes UINT16 Type; 3391558Srgrimes UINT16 Subtype; 3401558Srgrimes UINT32 Uid; 3411558Srgrimes 3421558Srgrimes /* Resource-specific information immediately follows */ 3431558Srgrimes 3441558Srgrimes} ACPI_CSRT_DESCRIPTOR; 3451558Srgrimes 3461558Srgrimes 3471558Srgrimes/* Resource Types */ 3481558Srgrimes 3491558Srgrimes#define ACPI_CSRT_TYPE_INTERRUPT 0x0001 3501558Srgrimes#define ACPI_CSRT_TYPE_TIMER 0x0002 3511558Srgrimes#define ACPI_CSRT_TYPE_DMA 0x0003 3521558Srgrimes 35323675Speter/* Resource Subtypes */ 35423675Speter 3551558Srgrimes#define ACPI_CSRT_XRUPT_LINE 0x0000 35623675Speter#define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 35723675Speter#define ACPI_CSRT_TIMER 0x0000 35823675Speter#define ACPI_CSRT_DMA_CHANNEL 0x0000 35923675Speter#define ACPI_CSRT_DMA_CONTROLLER 0x0001 36023675Speter 36123675Speter 36223675Speter/******************************************************************************* 36323675Speter * 36423675Speter * DBG2 - Debug Port Table 2 36523675Speter * Version 0 (Both main table and subtables) 36623675Speter * 36723675Speter * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015 36823675Speter * 36923675Speter ******************************************************************************/ 37023675Speter 37123675Spetertypedef struct acpi_table_dbg2 37223675Speter{ 37323675Speter ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 37423675Speter UINT32 InfoOffset; 3751558Srgrimes UINT32 InfoCount; 3761558Srgrimes 3771558Srgrimes} ACPI_TABLE_DBG2; 37823675Speter 3791558Srgrimes 3801558Srgrimestypedef struct acpi_dbg2_header 3811558Srgrimes{ 3821558Srgrimes UINT32 InfoOffset; 3831558Srgrimes UINT32 InfoCount; 38423675Speter 3851558Srgrimes} ACPI_DBG2_HEADER; 3861558Srgrimes 3871558Srgrimes 3881558Srgrimes/* Debug Device Information Subtable */ 3891558Srgrimes 3901558Srgrimestypedef struct acpi_dbg2_device 3911558Srgrimes{ 3921558Srgrimes UINT8 Revision; 3931558Srgrimes UINT16 Length; 3947585Sbde UINT8 RegisterCount; /* Number of BaseAddress registers */ 3951558Srgrimes UINT16 NamepathLength; 3961558Srgrimes UINT16 NamepathOffset; 3971558Srgrimes UINT16 OemDataLength; 3981558Srgrimes UINT16 OemDataOffset; 3991558Srgrimes UINT16 PortType; 4001558Srgrimes UINT16 PortSubtype; 4011558Srgrimes UINT16 Reserved; 4021558Srgrimes UINT16 BaseAddressOffset; 4031558Srgrimes UINT16 AddressSizeOffset; 4041558Srgrimes /* 40523675Speter * Data that follows: 4061558Srgrimes * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 4071558Srgrimes * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 4081558Srgrimes * Namepath (required) - Null terminated string. Single dot if not supported. 4091558Srgrimes * OemData (optional) - Length is OemDataLength. 41034266Sjulian */ 4111558Srgrimes} ACPI_DBG2_DEVICE; 4121558Srgrimes 4131558Srgrimes/* Types for PortType field above */ 4141558Srgrimes 4151558Srgrimes#define ACPI_DBG2_SERIAL_PORT 0x8000 4161558Srgrimes#define ACPI_DBG2_1394_PORT 0x8001 41734266Sjulian#define ACPI_DBG2_USB_PORT 0x8002 41834266Sjulian#define ACPI_DBG2_NET_PORT 0x8003 4191558Srgrimes 4201558Srgrimes/* Subtypes for PortSubtype field above */ 4211558Srgrimes 4221558Srgrimes#define ACPI_DBG2_16550_COMPATIBLE 0x0000 4231558Srgrimes#define ACPI_DBG2_16550_SUBSET 0x0001 4241558Srgrimes#define ACPI_DBG2_ARM_PL011 0x0003 4251558Srgrimes#define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 4261558Srgrimes#define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 4271558Srgrimes#define ACPI_DBG2_ARM_DCC 0x000F 4281558Srgrimes#define ACPI_DBG2_BCM2835 0x0010 4291558Srgrimes 4301558Srgrimes#define ACPI_DBG2_1394_STANDARD 0x0000 4311558Srgrimes 4321558Srgrimes#define ACPI_DBG2_USB_XHCI 0x0000 4331558Srgrimes#define ACPI_DBG2_USB_EHCI 0x0001 4341558Srgrimes 4351558Srgrimes 4361558Srgrimes/******************************************************************************* 4371558Srgrimes * 4381558Srgrimes * DBGP - Debug Port table 4391558Srgrimes * Version 1 4401558Srgrimes * 4411558Srgrimes * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 4421558Srgrimes * 4431558Srgrimes ******************************************************************************/ 4441558Srgrimes 4451558Srgrimestypedef struct acpi_table_dbgp 4461558Srgrimes{ 4471558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4481558Srgrimes UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 4491558Srgrimes UINT8 Reserved[3]; 4501558Srgrimes ACPI_GENERIC_ADDRESS DebugPort; 4511558Srgrimes 4521558Srgrimes} ACPI_TABLE_DBGP; 4531558Srgrimes 4541558Srgrimes 4551558Srgrimes/******************************************************************************* 4561558Srgrimes * 4571558Srgrimes * DMAR - DMA Remapping table 4581558Srgrimes * Version 1 4591558Srgrimes * 4601558Srgrimes * Conforms to "Intel Virtualization Technology for Directed I/O", 4611558Srgrimes * Version 2.3, October 2014 4621558Srgrimes * 4631558Srgrimes ******************************************************************************/ 4641558Srgrimes 4651558Srgrimestypedef struct acpi_table_dmar 4661558Srgrimes{ 4671558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4681558Srgrimes UINT8 Width; /* Host Address Width */ 4691558Srgrimes UINT8 Flags; 4701558Srgrimes UINT8 Reserved[10]; 4711558Srgrimes 4721558Srgrimes} ACPI_TABLE_DMAR; 4731558Srgrimes 4741558Srgrimes/* Masks for Flags field above */ 4751558Srgrimes 4761558Srgrimes#define ACPI_DMAR_INTR_REMAP (1) 4771558Srgrimes#define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 4781558Srgrimes#define ACPI_DMAR_X2APIC_MODE (1<<2) 4791558Srgrimes 4801558Srgrimes 4811558Srgrimes/* DMAR subtable header */ 4821558Srgrimes 4831558Srgrimestypedef struct acpi_dmar_header 4841558Srgrimes{ 4851558Srgrimes UINT16 Type; 4861558Srgrimes UINT16 Length; 4871558Srgrimes 4881558Srgrimes} ACPI_DMAR_HEADER; 4891558Srgrimes 4901558Srgrimes/* Values for subtable type in ACPI_DMAR_HEADER */ 4911558Srgrimes 49215699Snateenum AcpiDmarType 4931558Srgrimes{ 49423796Sbde ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 49515699Snate ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 49615699Snate ACPI_DMAR_TYPE_ROOT_ATS = 2, 49715699Snate ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 49815699Snate ACPI_DMAR_TYPE_NAMESPACE = 4, 49915699Snate ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 50015699Snate}; 50115699Snate 50215699Snate 50315699Snate/* DMAR Device Scope structure */ 5041558Srgrimes 5051558Srgrimestypedef struct acpi_dmar_device_scope 5061558Srgrimes{ 5071558Srgrimes UINT8 EntryType; 5081558Srgrimes UINT8 Length; 5091558Srgrimes UINT16 Reserved; 5101558Srgrimes UINT8 EnumerationId; 5111558Srgrimes UINT8 Bus; 5121558Srgrimes 5137585Sbde} ACPI_DMAR_DEVICE_SCOPE; 5141558Srgrimes 5151558Srgrimes/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 5161558Srgrimes 5171558Srgrimesenum AcpiDmarScopeType 5181558Srgrimes{ 5191558Srgrimes ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 5201558Srgrimes ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 52123675Speter ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 5221558Srgrimes ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 5231558Srgrimes ACPI_DMAR_SCOPE_TYPE_HPET = 4, 5241558Srgrimes ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 5251558Srgrimes ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 5261558Srgrimes}; 5271558Srgrimes 5281558Srgrimestypedef struct acpi_dmar_pci_path 5291558Srgrimes{ 5301558Srgrimes UINT8 Device; 5311558Srgrimes UINT8 Function; 5321558Srgrimes 5331558Srgrimes} ACPI_DMAR_PCI_PATH; 5347585Sbde 5351558Srgrimes 5361558Srgrimes/* 5371558Srgrimes * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 5381558Srgrimes */ 5391558Srgrimes 5401558Srgrimes/* 0: Hardware Unit Definition */ 5411558Srgrimes 5428871Srgrimestypedef struct acpi_dmar_hardware_unit 5431558Srgrimes{ 5441558Srgrimes ACPI_DMAR_HEADER Header; 5451558Srgrimes UINT8 Flags; 54623675Speter UINT8 Reserved; 5471558Srgrimes UINT16 Segment; 5481558Srgrimes UINT64 Address; /* Register Base Address */ 5491558Srgrimes 5501558Srgrimes} ACPI_DMAR_HARDWARE_UNIT; 5511558Srgrimes 5521558Srgrimes/* Masks for Flags field above */ 5531558Srgrimes 5541558Srgrimes#define ACPI_DMAR_INCLUDE_ALL (1) 5551558Srgrimes 5561558Srgrimes 5571558Srgrimes/* 1: Reserved Memory Defininition */ 5581558Srgrimes 5591558Srgrimestypedef struct acpi_dmar_reserved_memory 5601558Srgrimes{ 5611558Srgrimes ACPI_DMAR_HEADER Header; 5621558Srgrimes UINT16 Reserved; 5631558Srgrimes UINT16 Segment; 5641558Srgrimes UINT64 BaseAddress; /* 4K aligned base address */ 5651558Srgrimes UINT64 EndAddress; /* 4K aligned limit address */ 5661558Srgrimes 5671558Srgrimes} ACPI_DMAR_RESERVED_MEMORY; 5681558Srgrimes 5691558Srgrimes/* Masks for Flags field above */ 57023675Speter 5711558Srgrimes#define ACPI_DMAR_ALLOW_ALL (1) 5721558Srgrimes 5731558Srgrimes 5741558Srgrimes/* 2: Root Port ATS Capability Reporting Structure */ 57523675Speter 5761558Srgrimestypedef struct acpi_dmar_atsr 5771558Srgrimes{ 5781558Srgrimes ACPI_DMAR_HEADER Header; 5791558Srgrimes UINT8 Flags; 5801558Srgrimes UINT8 Reserved; 5811558Srgrimes UINT16 Segment; 5821558Srgrimes 5831558Srgrimes} ACPI_DMAR_ATSR; 5841558Srgrimes 5851558Srgrimes/* Masks for Flags field above */ 5861558Srgrimes 5871558Srgrimes#define ACPI_DMAR_ALL_PORTS (1) 5881558Srgrimes 5891558Srgrimes 5901558Srgrimes/* 3: Remapping Hardware Static Affinity Structure */ 5911558Srgrimes 59223675Spetertypedef struct acpi_dmar_rhsa 5931558Srgrimes{ 5941558Srgrimes ACPI_DMAR_HEADER Header; 5951558Srgrimes UINT32 Reserved; 59623675Speter UINT64 BaseAddress; 5971558Srgrimes UINT32 ProximityDomain; 5981558Srgrimes 5991558Srgrimes} ACPI_DMAR_RHSA; 60023675Speter 6011558Srgrimes 6021558Srgrimes/* 4: ACPI Namespace Device Declaration Structure */ 6031558Srgrimes 6041558Srgrimestypedef struct acpi_dmar_andd 6051558Srgrimes{ 60623675Speter ACPI_DMAR_HEADER Header; 6071558Srgrimes UINT8 Reserved[3]; 6081558Srgrimes UINT8 DeviceNumber; 6091558Srgrimes char DeviceName[1]; 6101558Srgrimes 6111558Srgrimes} ACPI_DMAR_ANDD; 6121558Srgrimes 6131558Srgrimes 6141558Srgrimes/******************************************************************************* 6151558Srgrimes * 6161558Srgrimes * HPET - High Precision Event Timer table 6171558Srgrimes * Version 1 6181558Srgrimes * 6191558Srgrimes * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 6201558Srgrimes * Version 1.0a, October 2004 6211558Srgrimes * 6221558Srgrimes ******************************************************************************/ 6231558Srgrimes 6241558Srgrimestypedef struct acpi_table_hpet 6251558Srgrimes{ 6261558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 6277586Sbde UINT32 Id; /* Hardware ID of event timer block */ 6281558Srgrimes ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 6291558Srgrimes UINT8 Sequence; /* HPET sequence number */ 6301558Srgrimes UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 6311558Srgrimes UINT8 Flags; 6321558Srgrimes 6331558Srgrimes} ACPI_TABLE_HPET; 6341558Srgrimes 6351558Srgrimes/* Masks for Flags field above */ 6361558Srgrimes 6371558Srgrimes#define ACPI_HPET_PAGE_PROTECT_MASK (3) 6381558Srgrimes 6391558Srgrimes/* Values for Page Protect flags */ 6401558Srgrimes 6411558Srgrimesenum AcpiHpetPageProtect 6421558Srgrimes{ 6431558Srgrimes ACPI_HPET_NO_PAGE_PROTECT = 0, 6441558Srgrimes ACPI_HPET_PAGE_PROTECT4 = 1, 6451558Srgrimes ACPI_HPET_PAGE_PROTECT64 = 2 6461558Srgrimes}; 6471558Srgrimes 6481558Srgrimes 6491558Srgrimes/******************************************************************************* 6501558Srgrimes * 65123675Speter * IBFT - Boot Firmware Table 6521558Srgrimes * Version 1 6531558Srgrimes * 6541558Srgrimes * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 65523675Speter * Specification", Version 1.01, March 1, 2007 6561558Srgrimes * 6571558Srgrimes * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 6581558Srgrimes * Therefore, it is not currently supported by the disassembler. 6591558Srgrimes * 6601558Srgrimes ******************************************************************************/ 6611558Srgrimes 6621558Srgrimestypedef struct acpi_table_ibft 6631558Srgrimes{ 6641558Srgrimes ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 6651558Srgrimes UINT8 Reserved[12]; 6661558Srgrimes 6671558Srgrimes} ACPI_TABLE_IBFT; 6681558Srgrimes 6691558Srgrimes 6701558Srgrimes/* IBFT common subtable header */ 6711558Srgrimes 6721558Srgrimestypedef struct acpi_ibft_header 6731558Srgrimes{ 6741558Srgrimes UINT8 Type; 6751558Srgrimes UINT8 Version; 6761558Srgrimes UINT16 Length; 6771558Srgrimes UINT8 Index; 6781558Srgrimes UINT8 Flags; 6791558Srgrimes 6801558Srgrimes} ACPI_IBFT_HEADER; 6811558Srgrimes 6821558Srgrimes/* Values for Type field above */ 6837585Sbde 6841558Srgrimesenum AcpiIbftType 6851558Srgrimes{ 6861558Srgrimes ACPI_IBFT_TYPE_NOT_USED = 0, 6871558Srgrimes ACPI_IBFT_TYPE_CONTROL = 1, 6881558Srgrimes ACPI_IBFT_TYPE_INITIATOR = 2, 6891558Srgrimes ACPI_IBFT_TYPE_NIC = 3, 6901558Srgrimes ACPI_IBFT_TYPE_TARGET = 4, 6911558Srgrimes ACPI_IBFT_TYPE_EXTENSIONS = 5, 6921558Srgrimes ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 6931558Srgrimes}; 6941558Srgrimes 6951558Srgrimes 6961558Srgrimes/* IBFT subtables */ 6971558Srgrimes 6981558Srgrimestypedef struct acpi_ibft_control 6991558Srgrimes{ 70023675Speter ACPI_IBFT_HEADER Header; 7011558Srgrimes UINT16 Extensions; 7021558Srgrimes UINT16 InitiatorOffset; 7031558Srgrimes UINT16 Nic0Offset; 7041558Srgrimes UINT16 Target0Offset; 7051558Srgrimes UINT16 Nic1Offset; 7061558Srgrimes UINT16 Target1Offset; 7071558Srgrimes 7081558Srgrimes} ACPI_IBFT_CONTROL; 7091558Srgrimes 7101558Srgrimestypedef struct acpi_ibft_initiator 7111558Srgrimes{ 7121558Srgrimes ACPI_IBFT_HEADER Header; 7131558Srgrimes UINT8 SnsServer[16]; 7141558Srgrimes UINT8 SlpServer[16]; 7151558Srgrimes UINT8 PrimaryServer[16]; 7161558Srgrimes UINT8 SecondaryServer[16]; 7171558Srgrimes UINT16 NameLength; 7181558Srgrimes UINT16 NameOffset; 7191558Srgrimes 7201558Srgrimes} ACPI_IBFT_INITIATOR; 7211558Srgrimes 7221558Srgrimestypedef struct acpi_ibft_nic 7231558Srgrimes{ 7241558Srgrimes ACPI_IBFT_HEADER Header; 7251558Srgrimes UINT8 IpAddress[16]; 7261558Srgrimes UINT8 SubnetMaskPrefix; 72723675Speter UINT8 Origin; 7281558Srgrimes UINT8 Gateway[16]; 72923675Speter UINT8 PrimaryDns[16]; 7301558Srgrimes UINT8 SecondaryDns[16]; 7311558Srgrimes UINT8 Dhcp[16]; 7321558Srgrimes UINT16 Vlan; 7331558Srgrimes UINT8 MacAddress[6]; 7341558Srgrimes UINT16 PciAddress; 7351558Srgrimes UINT16 NameLength; 7361558Srgrimes UINT16 NameOffset; 7371558Srgrimes 738} ACPI_IBFT_NIC; 739 740typedef struct acpi_ibft_target 741{ 742 ACPI_IBFT_HEADER Header; 743 UINT8 TargetIpAddress[16]; 744 UINT16 TargetIpSocket; 745 UINT8 TargetBootLun[8]; 746 UINT8 ChapType; 747 UINT8 NicAssociation; 748 UINT16 TargetNameLength; 749 UINT16 TargetNameOffset; 750 UINT16 ChapNameLength; 751 UINT16 ChapNameOffset; 752 UINT16 ChapSecretLength; 753 UINT16 ChapSecretOffset; 754 UINT16 ReverseChapNameLength; 755 UINT16 ReverseChapNameOffset; 756 UINT16 ReverseChapSecretLength; 757 UINT16 ReverseChapSecretOffset; 758 759} ACPI_IBFT_TARGET; 760 761 762/******************************************************************************* 763 * 764 * IORT - IO Remapping Table 765 * 766 * Conforms to "IO Remapping Table System Software on ARM Platforms", 767 * Document number: ARM DEN 0049B, October 2015 768 * 769 ******************************************************************************/ 770 771typedef struct acpi_table_iort 772{ 773 ACPI_TABLE_HEADER Header; 774 UINT32 NodeCount; 775 UINT32 NodeOffset; 776 UINT32 Reserved; 777 778} ACPI_TABLE_IORT; 779 780 781/* 782 * IORT subtables 783 */ 784typedef struct acpi_iort_node 785{ 786 UINT8 Type; 787 UINT16 Length; 788 UINT8 Revision; 789 UINT32 Reserved; 790 UINT32 MappingCount; 791 UINT32 MappingOffset; 792 char NodeData[1]; 793 794} ACPI_IORT_NODE; 795 796/* Values for subtable Type above */ 797 798enum AcpiIortNodeType 799{ 800 ACPI_IORT_NODE_ITS_GROUP = 0x00, 801 ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 802 ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 803 ACPI_IORT_NODE_SMMU = 0x03, 804 ACPI_IORT_NODE_SMMU_V3 = 0x04 805}; 806 807 808typedef struct acpi_iort_id_mapping 809{ 810 UINT32 InputBase; /* Lowest value in input range */ 811 UINT32 IdCount; /* Number of IDs */ 812 UINT32 OutputBase; /* Lowest value in output range */ 813 UINT32 OutputReference; /* A reference to the output node */ 814 UINT32 Flags; 815 816} ACPI_IORT_ID_MAPPING; 817 818/* Masks for Flags field above for IORT subtable */ 819 820#define ACPI_IORT_ID_SINGLE_MAPPING (1) 821 822 823typedef struct acpi_iort_memory_access 824{ 825 UINT32 CacheCoherency; 826 UINT8 Hints; 827 UINT16 Reserved; 828 UINT8 MemoryFlags; 829 830} ACPI_IORT_MEMORY_ACCESS; 831 832/* Values for CacheCoherency field above */ 833 834#define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 835#define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 836 837/* Masks for Hints field above */ 838 839#define ACPI_IORT_HT_TRANSIENT (1) 840#define ACPI_IORT_HT_WRITE (1<<1) 841#define ACPI_IORT_HT_READ (1<<2) 842#define ACPI_IORT_HT_OVERRIDE (1<<3) 843 844/* Masks for MemoryFlags field above */ 845 846#define ACPI_IORT_MF_COHERENCY (1) 847#define ACPI_IORT_MF_ATTRIBUTES (1<<1) 848 849 850/* 851 * IORT node specific subtables 852 */ 853typedef struct acpi_iort_its_group 854{ 855 UINT32 ItsCount; 856 UINT32 Identifiers[1]; /* GIC ITS identifier arrary */ 857 858} ACPI_IORT_ITS_GROUP; 859 860 861typedef struct acpi_iort_named_component 862{ 863 UINT32 NodeFlags; 864 UINT64 MemoryProperties; /* Memory access properties */ 865 UINT8 MemoryAddressLimit; /* Memory address size limit */ 866 char DeviceName[1]; /* Path of namespace object */ 867 868} ACPI_IORT_NAMED_COMPONENT; 869 870 871typedef struct acpi_iort_root_complex 872{ 873 UINT64 MemoryProperties; /* Memory access properties */ 874 UINT32 AtsAttribute; 875 UINT32 PciSegmentNumber; 876 877} ACPI_IORT_ROOT_COMPLEX; 878 879/* Values for AtsAttribute field above */ 880 881#define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 882#define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 883 884 885typedef struct acpi_iort_smmu 886{ 887 UINT64 BaseAddress; /* SMMU base address */ 888 UINT64 Span; /* Length of memory range */ 889 UINT32 Model; 890 UINT32 Flags; 891 UINT32 GlobalInterruptOffset; 892 UINT32 ContextInterruptCount; 893 UINT32 ContextInterruptOffset; 894 UINT32 PmuInterruptCount; 895 UINT32 PmuInterruptOffset; 896 UINT64 Interrupts[1]; /* Interrupt array */ 897 898} ACPI_IORT_SMMU; 899 900/* Values for Model field above */ 901 902#define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 903#define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 904#define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 905#define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 906 907/* Masks for Flags field above */ 908 909#define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 910#define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 911 912 913typedef struct acpi_iort_smmu_v3 914{ 915 UINT64 BaseAddress; /* SMMUv3 base address */ 916 UINT32 Flags; 917 UINT32 Reserved; 918 UINT64 VatosAddress; 919 UINT32 Model; /* O: generic SMMUv3 */ 920 UINT32 EventGsiv; 921 UINT32 PriGsiv; 922 UINT32 GerrGsiv; 923 UINT32 SyncGsiv; 924 925} ACPI_IORT_SMMU_V3; 926 927/* Masks for Flags field above */ 928 929#define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 930#define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) 931 932 933/******************************************************************************* 934 * 935 * IVRS - I/O Virtualization Reporting Structure 936 * Version 1 937 * 938 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 939 * Revision 1.26, February 2009. 940 * 941 ******************************************************************************/ 942 943typedef struct acpi_table_ivrs 944{ 945 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 946 UINT32 Info; /* Common virtualization info */ 947 UINT64 Reserved; 948 949} ACPI_TABLE_IVRS; 950 951/* Values for Info field above */ 952 953#define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 954#define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 955#define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 956 957 958/* IVRS subtable header */ 959 960typedef struct acpi_ivrs_header 961{ 962 UINT8 Type; /* Subtable type */ 963 UINT8 Flags; 964 UINT16 Length; /* Subtable length */ 965 UINT16 DeviceId; /* ID of IOMMU */ 966 967} ACPI_IVRS_HEADER; 968 969/* Values for subtable Type above */ 970 971enum AcpiIvrsType 972{ 973 ACPI_IVRS_TYPE_HARDWARE = 0x10, 974 ACPI_IVRS_TYPE_MEMORY1 = 0x20, 975 ACPI_IVRS_TYPE_MEMORY2 = 0x21, 976 ACPI_IVRS_TYPE_MEMORY3 = 0x22 977}; 978 979/* Masks for Flags field above for IVHD subtable */ 980 981#define ACPI_IVHD_TT_ENABLE (1) 982#define ACPI_IVHD_PASS_PW (1<<1) 983#define ACPI_IVHD_RES_PASS_PW (1<<2) 984#define ACPI_IVHD_ISOC (1<<3) 985#define ACPI_IVHD_IOTLB (1<<4) 986 987/* Masks for Flags field above for IVMD subtable */ 988 989#define ACPI_IVMD_UNITY (1) 990#define ACPI_IVMD_READ (1<<1) 991#define ACPI_IVMD_WRITE (1<<2) 992#define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 993 994 995/* 996 * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 997 */ 998 999/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 1000 1001typedef struct acpi_ivrs_hardware 1002{ 1003 ACPI_IVRS_HEADER Header; 1004 UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 1005 UINT64 BaseAddress; /* IOMMU control registers */ 1006 UINT16 PciSegmentGroup; 1007 UINT16 Info; /* MSI number and unit ID */ 1008 UINT32 Reserved; 1009 1010} ACPI_IVRS_HARDWARE; 1011 1012/* Masks for Info field above */ 1013 1014#define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 1015#define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 1016 1017 1018/* 1019 * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 1020 * Upper two bits of the Type field are the (encoded) length of the structure. 1021 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 1022 * are reserved for future use but not defined. 1023 */ 1024typedef struct acpi_ivrs_de_header 1025{ 1026 UINT8 Type; 1027 UINT16 Id; 1028 UINT8 DataSetting; 1029 1030} ACPI_IVRS_DE_HEADER; 1031 1032/* Length of device entry is in the top two bits of Type field above */ 1033 1034#define ACPI_IVHD_ENTRY_LENGTH 0xC0 1035 1036/* Values for device entry Type field above */ 1037 1038enum AcpiIvrsDeviceEntryType 1039{ 1040 /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 1041 1042 ACPI_IVRS_TYPE_PAD4 = 0, 1043 ACPI_IVRS_TYPE_ALL = 1, 1044 ACPI_IVRS_TYPE_SELECT = 2, 1045 ACPI_IVRS_TYPE_START = 3, 1046 ACPI_IVRS_TYPE_END = 4, 1047 1048 /* 8-byte device entries */ 1049 1050 ACPI_IVRS_TYPE_PAD8 = 64, 1051 ACPI_IVRS_TYPE_NOT_USED = 65, 1052 ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 1053 ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 1054 ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 1055 ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 1056 ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 1057}; 1058 1059/* Values for Data field above */ 1060 1061#define ACPI_IVHD_INIT_PASS (1) 1062#define ACPI_IVHD_EINT_PASS (1<<1) 1063#define ACPI_IVHD_NMI_PASS (1<<2) 1064#define ACPI_IVHD_SYSTEM_MGMT (3<<4) 1065#define ACPI_IVHD_LINT0_PASS (1<<6) 1066#define ACPI_IVHD_LINT1_PASS (1<<7) 1067 1068 1069/* Types 0-4: 4-byte device entry */ 1070 1071typedef struct acpi_ivrs_device4 1072{ 1073 ACPI_IVRS_DE_HEADER Header; 1074 1075} ACPI_IVRS_DEVICE4; 1076 1077/* Types 66-67: 8-byte device entry */ 1078 1079typedef struct acpi_ivrs_device8a 1080{ 1081 ACPI_IVRS_DE_HEADER Header; 1082 UINT8 Reserved1; 1083 UINT16 UsedId; 1084 UINT8 Reserved2; 1085 1086} ACPI_IVRS_DEVICE8A; 1087 1088/* Types 70-71: 8-byte device entry */ 1089 1090typedef struct acpi_ivrs_device8b 1091{ 1092 ACPI_IVRS_DE_HEADER Header; 1093 UINT32 ExtendedData; 1094 1095} ACPI_IVRS_DEVICE8B; 1096 1097/* Values for ExtendedData above */ 1098 1099#define ACPI_IVHD_ATS_DISABLED (1<<31) 1100 1101/* Type 72: 8-byte device entry */ 1102 1103typedef struct acpi_ivrs_device8c 1104{ 1105 ACPI_IVRS_DE_HEADER Header; 1106 UINT8 Handle; 1107 UINT16 UsedId; 1108 UINT8 Variety; 1109 1110} ACPI_IVRS_DEVICE8C; 1111 1112/* Values for Variety field above */ 1113 1114#define ACPI_IVHD_IOAPIC 1 1115#define ACPI_IVHD_HPET 2 1116 1117 1118/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 1119 1120typedef struct acpi_ivrs_memory 1121{ 1122 ACPI_IVRS_HEADER Header; 1123 UINT16 AuxData; 1124 UINT64 Reserved; 1125 UINT64 StartAddress; 1126 UINT64 MemoryLength; 1127 1128} ACPI_IVRS_MEMORY; 1129 1130 1131/******************************************************************************* 1132 * 1133 * LPIT - Low Power Idle Table 1134 * 1135 * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1136 * 1137 ******************************************************************************/ 1138 1139typedef struct acpi_table_lpit 1140{ 1141 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1142 1143} ACPI_TABLE_LPIT; 1144 1145 1146/* LPIT subtable header */ 1147 1148typedef struct acpi_lpit_header 1149{ 1150 UINT32 Type; /* Subtable type */ 1151 UINT32 Length; /* Subtable length */ 1152 UINT16 UniqueId; 1153 UINT16 Reserved; 1154 UINT32 Flags; 1155 1156} ACPI_LPIT_HEADER; 1157 1158/* Values for subtable Type above */ 1159 1160enum AcpiLpitType 1161{ 1162 ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1163 ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1164}; 1165 1166/* Masks for Flags field above */ 1167 1168#define ACPI_LPIT_STATE_DISABLED (1) 1169#define ACPI_LPIT_NO_COUNTER (1<<1) 1170 1171/* 1172 * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1173 */ 1174 1175/* 0x00: Native C-state instruction based LPI structure */ 1176 1177typedef struct acpi_lpit_native 1178{ 1179 ACPI_LPIT_HEADER Header; 1180 ACPI_GENERIC_ADDRESS EntryTrigger; 1181 UINT32 Residency; 1182 UINT32 Latency; 1183 ACPI_GENERIC_ADDRESS ResidencyCounter; 1184 UINT64 CounterFrequency; 1185 1186} ACPI_LPIT_NATIVE; 1187 1188 1189/******************************************************************************* 1190 * 1191 * MCFG - PCI Memory Mapped Configuration table and subtable 1192 * Version 1 1193 * 1194 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1195 * 1196 ******************************************************************************/ 1197 1198typedef struct acpi_table_mcfg 1199{ 1200 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1201 UINT8 Reserved[8]; 1202 1203} ACPI_TABLE_MCFG; 1204 1205 1206/* Subtable */ 1207 1208typedef struct acpi_mcfg_allocation 1209{ 1210 UINT64 Address; /* Base address, processor-relative */ 1211 UINT16 PciSegment; /* PCI segment group number */ 1212 UINT8 StartBusNumber; /* Starting PCI Bus number */ 1213 UINT8 EndBusNumber; /* Final PCI Bus number */ 1214 UINT32 Reserved; 1215 1216} ACPI_MCFG_ALLOCATION; 1217 1218 1219/******************************************************************************* 1220 * 1221 * MCHI - Management Controller Host Interface Table 1222 * Version 1 1223 * 1224 * Conforms to "Management Component Transport Protocol (MCTP) Host 1225 * Interface Specification", Revision 1.0.0a, October 13, 2009 1226 * 1227 ******************************************************************************/ 1228 1229typedef struct acpi_table_mchi 1230{ 1231 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1232 UINT8 InterfaceType; 1233 UINT8 Protocol; 1234 UINT64 ProtocolData; 1235 UINT8 InterruptType; 1236 UINT8 Gpe; 1237 UINT8 PciDeviceFlag; 1238 UINT32 GlobalInterrupt; 1239 ACPI_GENERIC_ADDRESS ControlRegister; 1240 UINT8 PciSegment; 1241 UINT8 PciBus; 1242 UINT8 PciDevice; 1243 UINT8 PciFunction; 1244 1245} ACPI_TABLE_MCHI; 1246 1247 1248/******************************************************************************* 1249 * 1250 * MSDM - Microsoft Data Management table 1251 * 1252 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1253 * November 29, 2011. Copyright 2011 Microsoft 1254 * 1255 ******************************************************************************/ 1256 1257/* Basic MSDM table is only the common ACPI header */ 1258 1259typedef struct acpi_table_msdm 1260{ 1261 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1262 1263} ACPI_TABLE_MSDM; 1264 1265 1266/******************************************************************************* 1267 * 1268 * MTMR - MID Timer Table 1269 * Version 1 1270 * 1271 * Conforms to "Simple Firmware Interface Specification", 1272 * Draft 0.8.2, Oct 19, 2010 1273 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 1274 * 1275 ******************************************************************************/ 1276 1277typedef struct acpi_table_mtmr 1278{ 1279 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1280 1281} ACPI_TABLE_MTMR; 1282 1283/* MTMR entry */ 1284 1285typedef struct acpi_mtmr_entry 1286{ 1287 ACPI_GENERIC_ADDRESS PhysicalAddress; 1288 UINT32 Frequency; 1289 UINT32 Irq; 1290 1291} ACPI_MTMR_ENTRY; 1292 1293 1294/******************************************************************************* 1295 * 1296 * SLIC - Software Licensing Description Table 1297 * 1298 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 1299 * November 29, 2011. Copyright 2011 Microsoft 1300 * 1301 ******************************************************************************/ 1302 1303/* Basic SLIC table is only the common ACPI header */ 1304 1305typedef struct acpi_table_slic 1306{ 1307 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1308 1309} ACPI_TABLE_SLIC; 1310 1311 1312/******************************************************************************* 1313 * 1314 * SPCR - Serial Port Console Redirection table 1315 * Version 2 1316 * 1317 * Conforms to "Serial Port Console Redirection Table", 1318 * Version 1.03, August 10, 2015 1319 * 1320 ******************************************************************************/ 1321 1322typedef struct acpi_table_spcr 1323{ 1324 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1325 UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1326 UINT8 Reserved[3]; 1327 ACPI_GENERIC_ADDRESS SerialPort; 1328 UINT8 InterruptType; 1329 UINT8 PcInterrupt; 1330 UINT32 Interrupt; 1331 UINT8 BaudRate; 1332 UINT8 Parity; 1333 UINT8 StopBits; 1334 UINT8 FlowControl; 1335 UINT8 TerminalType; 1336 UINT8 Reserved1; 1337 UINT16 PciDeviceId; 1338 UINT16 PciVendorId; 1339 UINT8 PciBus; 1340 UINT8 PciDevice; 1341 UINT8 PciFunction; 1342 UINT32 PciFlags; 1343 UINT8 PciSegment; 1344 UINT32 Reserved2; 1345 1346} ACPI_TABLE_SPCR; 1347 1348/* Masks for PciFlags field above */ 1349 1350#define ACPI_SPCR_DO_NOT_DISABLE (1) 1351 1352/* Values for Interface Type: See the definition of the DBG2 table */ 1353 1354 1355/******************************************************************************* 1356 * 1357 * SPMI - Server Platform Management Interface table 1358 * Version 5 1359 * 1360 * Conforms to "Intelligent Platform Management Interface Specification 1361 * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1362 * June 12, 2009 markup. 1363 * 1364 ******************************************************************************/ 1365 1366typedef struct acpi_table_spmi 1367{ 1368 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1369 UINT8 InterfaceType; 1370 UINT8 Reserved; /* Must be 1 */ 1371 UINT16 SpecRevision; /* Version of IPMI */ 1372 UINT8 InterruptType; 1373 UINT8 GpeNumber; /* GPE assigned */ 1374 UINT8 Reserved1; 1375 UINT8 PciDeviceFlag; 1376 UINT32 Interrupt; 1377 ACPI_GENERIC_ADDRESS IpmiRegister; 1378 UINT8 PciSegment; 1379 UINT8 PciBus; 1380 UINT8 PciDevice; 1381 UINT8 PciFunction; 1382 UINT8 Reserved2; 1383 1384} ACPI_TABLE_SPMI; 1385 1386/* Values for InterfaceType above */ 1387 1388enum AcpiSpmiInterfaceTypes 1389{ 1390 ACPI_SPMI_NOT_USED = 0, 1391 ACPI_SPMI_KEYBOARD = 1, 1392 ACPI_SPMI_SMI = 2, 1393 ACPI_SPMI_BLOCK_TRANSFER = 3, 1394 ACPI_SPMI_SMBUS = 4, 1395 ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1396}; 1397 1398 1399/******************************************************************************* 1400 * 1401 * TCPA - Trusted Computing Platform Alliance table 1402 * Version 2 1403 * 1404 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1405 * December 19, 2014 1406 * 1407 * NOTE: There are two versions of the table with the same signature -- 1408 * the client version and the server version. The common PlatformClass 1409 * field is used to differentiate the two types of tables. 1410 * 1411 ******************************************************************************/ 1412 1413typedef struct acpi_table_tcpa_hdr 1414{ 1415 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1416 UINT16 PlatformClass; 1417 1418} ACPI_TABLE_TCPA_HDR; 1419 1420/* 1421 * Values for PlatformClass above. 1422 * This is how the client and server subtables are differentiated 1423 */ 1424#define ACPI_TCPA_CLIENT_TABLE 0 1425#define ACPI_TCPA_SERVER_TABLE 1 1426 1427 1428typedef struct acpi_table_tcpa_client 1429{ 1430 UINT32 MinimumLogLength; /* Minimum length for the event log area */ 1431 UINT64 LogAddress; /* Address of the event log area */ 1432 1433} ACPI_TABLE_TCPA_CLIENT; 1434 1435typedef struct acpi_table_tcpa_server 1436{ 1437 UINT16 Reserved; 1438 UINT64 MinimumLogLength; /* Minimum length for the event log area */ 1439 UINT64 LogAddress; /* Address of the event log area */ 1440 UINT16 SpecRevision; 1441 UINT8 DeviceFlags; 1442 UINT8 InterruptFlags; 1443 UINT8 GpeNumber; 1444 UINT8 Reserved2[3]; 1445 UINT32 GlobalInterrupt; 1446 ACPI_GENERIC_ADDRESS Address; 1447 UINT32 Reserved3; 1448 ACPI_GENERIC_ADDRESS ConfigAddress; 1449 UINT8 Group; 1450 UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 1451 UINT8 Device; 1452 UINT8 Function; 1453 1454} ACPI_TABLE_TCPA_SERVER; 1455 1456/* Values for DeviceFlags above */ 1457 1458#define ACPI_TCPA_PCI_DEVICE (1) 1459#define ACPI_TCPA_BUS_PNP (1<<1) 1460#define ACPI_TCPA_ADDRESS_VALID (1<<2) 1461 1462/* Values for InterruptFlags above */ 1463 1464#define ACPI_TCPA_INTERRUPT_MODE (1) 1465#define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 1466#define ACPI_TCPA_SCI_VIA_GPE (1<<2) 1467#define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 1468 1469 1470/******************************************************************************* 1471 * 1472 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 1473 * Version 4 1474 * 1475 * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1476 * December 19, 2014 1477 * 1478 ******************************************************************************/ 1479 1480typedef struct acpi_table_tpm2 1481{ 1482 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1483 UINT16 PlatformClass; 1484 UINT16 Reserved; 1485 UINT64 ControlAddress; 1486 UINT32 StartMethod; 1487 1488 /* Platform-specific data follows */ 1489 1490} ACPI_TABLE_TPM2; 1491 1492/* Values for StartMethod above */ 1493 1494#define ACPI_TPM2_NOT_ALLOWED 0 1495#define ACPI_TPM2_START_METHOD 2 1496#define ACPI_TPM2_MEMORY_MAPPED 6 1497#define ACPI_TPM2_COMMAND_BUFFER 7 1498#define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 1499 1500 1501/******************************************************************************* 1502 * 1503 * UEFI - UEFI Boot optimization Table 1504 * Version 1 1505 * 1506 * Conforms to "Unified Extensible Firmware Interface Specification", 1507 * Version 2.3, May 8, 2009 1508 * 1509 ******************************************************************************/ 1510 1511typedef struct acpi_table_uefi 1512{ 1513 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1514 UINT8 Identifier[16]; /* UUID identifier */ 1515 UINT16 DataOffset; /* Offset of remaining data in table */ 1516 1517} ACPI_TABLE_UEFI; 1518 1519 1520/******************************************************************************* 1521 * 1522 * VRTC - Virtual Real Time Clock Table 1523 * Version 1 1524 * 1525 * Conforms to "Simple Firmware Interface Specification", 1526 * Draft 0.8.2, Oct 19, 2010 1527 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 1528 * 1529 ******************************************************************************/ 1530 1531typedef struct acpi_table_vrtc 1532{ 1533 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1534 1535} ACPI_TABLE_VRTC; 1536 1537/* VRTC entry */ 1538 1539typedef struct acpi_vrtc_entry 1540{ 1541 ACPI_GENERIC_ADDRESS PhysicalAddress; 1542 UINT32 Irq; 1543 1544} ACPI_VRTC_ENTRY; 1545 1546 1547/******************************************************************************* 1548 * 1549 * WAET - Windows ACPI Emulated devices Table 1550 * Version 1 1551 * 1552 * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1553 * 1554 ******************************************************************************/ 1555 1556typedef struct acpi_table_waet 1557{ 1558 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1559 UINT32 Flags; 1560 1561} ACPI_TABLE_WAET; 1562 1563/* Masks for Flags field above */ 1564 1565#define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1566#define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1567 1568 1569/******************************************************************************* 1570 * 1571 * WDAT - Watchdog Action Table 1572 * Version 1 1573 * 1574 * Conforms to "Hardware Watchdog Timers Design Specification", 1575 * Copyright 2006 Microsoft Corporation. 1576 * 1577 ******************************************************************************/ 1578 1579typedef struct acpi_table_wdat 1580{ 1581 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1582 UINT32 HeaderLength; /* Watchdog Header Length */ 1583 UINT16 PciSegment; /* PCI Segment number */ 1584 UINT8 PciBus; /* PCI Bus number */ 1585 UINT8 PciDevice; /* PCI Device number */ 1586 UINT8 PciFunction; /* PCI Function number */ 1587 UINT8 Reserved[3]; 1588 UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1589 UINT32 MaxCount; /* Maximum counter value supported */ 1590 UINT32 MinCount; /* Minimum counter value */ 1591 UINT8 Flags; 1592 UINT8 Reserved2[3]; 1593 UINT32 Entries; /* Number of watchdog entries that follow */ 1594 1595} ACPI_TABLE_WDAT; 1596 1597/* Masks for Flags field above */ 1598 1599#define ACPI_WDAT_ENABLED (1) 1600#define ACPI_WDAT_STOPPED 0x80 1601 1602 1603/* WDAT Instruction Entries (actions) */ 1604 1605typedef struct acpi_wdat_entry 1606{ 1607 UINT8 Action; 1608 UINT8 Instruction; 1609 UINT16 Reserved; 1610 ACPI_GENERIC_ADDRESS RegisterRegion; 1611 UINT32 Value; /* Value used with Read/Write register */ 1612 UINT32 Mask; /* Bitmask required for this register instruction */ 1613 1614} ACPI_WDAT_ENTRY; 1615 1616/* Values for Action field above */ 1617 1618enum AcpiWdatActions 1619{ 1620 ACPI_WDAT_RESET = 1, 1621 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1622 ACPI_WDAT_GET_COUNTDOWN = 5, 1623 ACPI_WDAT_SET_COUNTDOWN = 6, 1624 ACPI_WDAT_GET_RUNNING_STATE = 8, 1625 ACPI_WDAT_SET_RUNNING_STATE = 9, 1626 ACPI_WDAT_GET_STOPPED_STATE = 10, 1627 ACPI_WDAT_SET_STOPPED_STATE = 11, 1628 ACPI_WDAT_GET_REBOOT = 16, 1629 ACPI_WDAT_SET_REBOOT = 17, 1630 ACPI_WDAT_GET_SHUTDOWN = 18, 1631 ACPI_WDAT_SET_SHUTDOWN = 19, 1632 ACPI_WDAT_GET_STATUS = 32, 1633 ACPI_WDAT_SET_STATUS = 33, 1634 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1635}; 1636 1637/* Values for Instruction field above */ 1638 1639enum AcpiWdatInstructions 1640{ 1641 ACPI_WDAT_READ_VALUE = 0, 1642 ACPI_WDAT_READ_COUNTDOWN = 1, 1643 ACPI_WDAT_WRITE_VALUE = 2, 1644 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1645 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1646 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1647}; 1648 1649 1650/******************************************************************************* 1651 * 1652 * WDDT - Watchdog Descriptor Table 1653 * Version 1 1654 * 1655 * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1656 * Version 001, September 2002 1657 * 1658 ******************************************************************************/ 1659 1660typedef struct acpi_table_wddt 1661{ 1662 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1663 UINT16 SpecVersion; 1664 UINT16 TableVersion; 1665 UINT16 PciVendorId; 1666 ACPI_GENERIC_ADDRESS Address; 1667 UINT16 MaxCount; /* Maximum counter value supported */ 1668 UINT16 MinCount; /* Minimum counter value supported */ 1669 UINT16 Period; 1670 UINT16 Status; 1671 UINT16 Capability; 1672 1673} ACPI_TABLE_WDDT; 1674 1675/* Flags for Status field above */ 1676 1677#define ACPI_WDDT_AVAILABLE (1) 1678#define ACPI_WDDT_ACTIVE (1<<1) 1679#define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1680#define ACPI_WDDT_USER_RESET (1<<11) 1681#define ACPI_WDDT_WDT_RESET (1<<12) 1682#define ACPI_WDDT_POWER_FAIL (1<<13) 1683#define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1684 1685/* Flags for Capability field above */ 1686 1687#define ACPI_WDDT_AUTO_RESET (1) 1688#define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1689 1690 1691/******************************************************************************* 1692 * 1693 * WDRT - Watchdog Resource Table 1694 * Version 1 1695 * 1696 * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1697 * Version 1.01, August 28, 2006 1698 * 1699 ******************************************************************************/ 1700 1701typedef struct acpi_table_wdrt 1702{ 1703 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1704 ACPI_GENERIC_ADDRESS ControlRegister; 1705 ACPI_GENERIC_ADDRESS CountRegister; 1706 UINT16 PciDeviceId; 1707 UINT16 PciVendorId; 1708 UINT8 PciBus; /* PCI Bus number */ 1709 UINT8 PciDevice; /* PCI Device number */ 1710 UINT8 PciFunction; /* PCI Function number */ 1711 UINT8 PciSegment; /* PCI Segment number */ 1712 UINT16 MaxCount; /* Maximum counter value supported */ 1713 UINT8 Units; 1714 1715} ACPI_TABLE_WDRT; 1716 1717 1718/* Reset to default packing */ 1719 1720#pragma pack() 1721 1722#endif /* __ACTBL2_H__ */ 1723