1d6dd1baeSJung-uk Kim /****************************************************************************** 2d6dd1baeSJung-uk Kim * 3dcbce41eSJung-uk Kim * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 4d6dd1baeSJung-uk Kim * 5d6dd1baeSJung-uk Kim *****************************************************************************/ 6d6dd1baeSJung-uk Kim 7d244b227SJung-uk Kim /* 81c0e1b6dSJung-uk Kim * Copyright (C) 2000 - 2015, Intel Corp. 9d6dd1baeSJung-uk Kim * All rights reserved. 10d6dd1baeSJung-uk Kim * 11d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 13d244b227SJung-uk Kim * are met: 14d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16d244b227SJung-uk Kim * without modification. 17d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21d244b227SJung-uk Kim * binary redistribution. 22d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24d244b227SJung-uk Kim * from this software without specific prior written permission. 25d6dd1baeSJung-uk Kim * 26d244b227SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28d244b227SJung-uk Kim * Software Foundation. 29d6dd1baeSJung-uk Kim * 30d244b227SJung-uk Kim * NO WARRANTY 31d244b227SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32d244b227SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33d244b227SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34d244b227SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35d244b227SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36d244b227SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37d244b227SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38d244b227SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39d244b227SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40d244b227SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41d244b227SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42d244b227SJung-uk Kim */ 43d6dd1baeSJung-uk Kim 44d6dd1baeSJung-uk Kim #ifndef __ACTBL2_H__ 45d6dd1baeSJung-uk Kim #define __ACTBL2_H__ 46d6dd1baeSJung-uk Kim 47d6dd1baeSJung-uk Kim 48d6dd1baeSJung-uk Kim /******************************************************************************* 49d6dd1baeSJung-uk Kim * 50d6dd1baeSJung-uk Kim * Additional ACPI Tables (2) 51d6dd1baeSJung-uk Kim * 52d6dd1baeSJung-uk Kim * These tables are not consumed directly by the ACPICA subsystem, but are 53d6dd1baeSJung-uk Kim * included here to support device drivers and the AML disassembler. 54d6dd1baeSJung-uk Kim * 55*5ef50723SJung-uk Kim * Generally, the tables in this file are defined by third-party specifications, 56*5ef50723SJung-uk Kim * and are not defined directly by the ACPI specification itself. 57d6dd1baeSJung-uk Kim * 58d6dd1baeSJung-uk Kim ******************************************************************************/ 59d6dd1baeSJung-uk Kim 60d6dd1baeSJung-uk Kim 61d6dd1baeSJung-uk Kim /* 62d6dd1baeSJung-uk Kim * Values for description table header signatures for tables defined in this 63d6dd1baeSJung-uk Kim * file. Useful because they make it more difficult to inadvertently type in 64d6dd1baeSJung-uk Kim * the wrong signature. 65d6dd1baeSJung-uk Kim */ 66d6dd1baeSJung-uk Kim #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 67d6dd1baeSJung-uk Kim #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 681df130f1SJung-uk Kim #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 691df130f1SJung-uk Kim #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 70d6dd1baeSJung-uk Kim #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 71d6dd1baeSJung-uk Kim #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 72d6dd1baeSJung-uk Kim #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 73d6dd1baeSJung-uk Kim #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 74a371a5fdSJung-uk Kim #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ 75d6dd1baeSJung-uk Kim #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 76313a0c13SJung-uk Kim #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 77d6dd1baeSJung-uk Kim #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 78ca3cf4faSJung-uk Kim #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 797cf3e94aSJung-uk Kim #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 809c48c75eSJung-uk Kim #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 81d6dd1baeSJung-uk Kim #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 82d6dd1baeSJung-uk Kim #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 83d6dd1baeSJung-uk Kim #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 84d6dd1baeSJung-uk Kim #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 85*5ef50723SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 86d6dd1baeSJung-uk Kim #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 879c48c75eSJung-uk Kim #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 88d6dd1baeSJung-uk Kim #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 89d6dd1baeSJung-uk Kim #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 90a88e22b7SJung-uk Kim #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 91d6dd1baeSJung-uk Kim #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 92d6dd1baeSJung-uk Kim 93a88e22b7SJung-uk Kim #ifdef ACPI_UNDEFINED_TABLES 94a88e22b7SJung-uk Kim /* 95a88e22b7SJung-uk Kim * These tables have been seen in the field, but no definition has been found 96a88e22b7SJung-uk Kim */ 97a88e22b7SJung-uk Kim #define ACPI_SIG_ATKG "ATKG" 98a88e22b7SJung-uk Kim #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 99a88e22b7SJung-uk Kim #define ACPI_SIG_IEIT "IEIT" 100a88e22b7SJung-uk Kim #endif 101d6dd1baeSJung-uk Kim 102d6dd1baeSJung-uk Kim /* 103d6dd1baeSJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 104d6dd1baeSJung-uk Kim * the tables are provided by the system BIOS. 105d6dd1baeSJung-uk Kim */ 106d6dd1baeSJung-uk Kim #pragma pack(1) 107d6dd1baeSJung-uk Kim 108d6dd1baeSJung-uk Kim /* 1091df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 1101df130f1SJung-uk Kim * 1111df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 1121df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 1131df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 1141df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 1151df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 1161df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 1171df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 118d6dd1baeSJung-uk Kim */ 119d6dd1baeSJung-uk Kim 120d6dd1baeSJung-uk Kim 121d6dd1baeSJung-uk Kim /******************************************************************************* 122d6dd1baeSJung-uk Kim * 123d6dd1baeSJung-uk Kim * ASF - Alert Standard Format table (Signature "ASF!") 124d6dd1baeSJung-uk Kim * Revision 0x10 125d6dd1baeSJung-uk Kim * 126d6dd1baeSJung-uk Kim * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 127d6dd1baeSJung-uk Kim * 128d6dd1baeSJung-uk Kim ******************************************************************************/ 129d6dd1baeSJung-uk Kim 130d6dd1baeSJung-uk Kim typedef struct acpi_table_asf 131d6dd1baeSJung-uk Kim { 132d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 133d6dd1baeSJung-uk Kim 134d6dd1baeSJung-uk Kim } ACPI_TABLE_ASF; 135d6dd1baeSJung-uk Kim 136d6dd1baeSJung-uk Kim 137d6dd1baeSJung-uk Kim /* ASF subtable header */ 138d6dd1baeSJung-uk Kim 139d6dd1baeSJung-uk Kim typedef struct acpi_asf_header 140d6dd1baeSJung-uk Kim { 141d6dd1baeSJung-uk Kim UINT8 Type; 142d6dd1baeSJung-uk Kim UINT8 Reserved; 143d6dd1baeSJung-uk Kim UINT16 Length; 144d6dd1baeSJung-uk Kim 145d6dd1baeSJung-uk Kim } ACPI_ASF_HEADER; 146d6dd1baeSJung-uk Kim 147d6dd1baeSJung-uk Kim 148d6dd1baeSJung-uk Kim /* Values for Type field above */ 149d6dd1baeSJung-uk Kim 150d6dd1baeSJung-uk Kim enum AcpiAsfType 151d6dd1baeSJung-uk Kim { 152d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_INFO = 0, 153d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ALERT = 1, 154d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_CONTROL = 2, 155d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_BOOT = 3, 156d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ADDRESS = 4, 157d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_RESERVED = 5 158d6dd1baeSJung-uk Kim }; 159d6dd1baeSJung-uk Kim 160d6dd1baeSJung-uk Kim /* 161d6dd1baeSJung-uk Kim * ASF subtables 162d6dd1baeSJung-uk Kim */ 163d6dd1baeSJung-uk Kim 164d6dd1baeSJung-uk Kim /* 0: ASF Information */ 165d6dd1baeSJung-uk Kim 166d6dd1baeSJung-uk Kim typedef struct acpi_asf_info 167d6dd1baeSJung-uk Kim { 168d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 169d6dd1baeSJung-uk Kim UINT8 MinResetValue; 170d6dd1baeSJung-uk Kim UINT8 MinPollInterval; 171d6dd1baeSJung-uk Kim UINT16 SystemId; 172d6dd1baeSJung-uk Kim UINT32 MfgId; 173d6dd1baeSJung-uk Kim UINT8 Flags; 174d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 175d6dd1baeSJung-uk Kim 176d6dd1baeSJung-uk Kim } ACPI_ASF_INFO; 177d6dd1baeSJung-uk Kim 178d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 179d6dd1baeSJung-uk Kim 180d6dd1baeSJung-uk Kim #define ACPI_ASF_SMBUS_PROTOCOLS (1) 181d6dd1baeSJung-uk Kim 182d6dd1baeSJung-uk Kim 183d6dd1baeSJung-uk Kim /* 1: ASF Alerts */ 184d6dd1baeSJung-uk Kim 185d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert 186d6dd1baeSJung-uk Kim { 187d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 188d6dd1baeSJung-uk Kim UINT8 AssertMask; 189d6dd1baeSJung-uk Kim UINT8 DeassertMask; 190d6dd1baeSJung-uk Kim UINT8 Alerts; 191d6dd1baeSJung-uk Kim UINT8 DataLength; 192d6dd1baeSJung-uk Kim 193d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT; 194d6dd1baeSJung-uk Kim 195d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert_data 196d6dd1baeSJung-uk Kim { 197d6dd1baeSJung-uk Kim UINT8 Address; 198d6dd1baeSJung-uk Kim UINT8 Command; 199d6dd1baeSJung-uk Kim UINT8 Mask; 200d6dd1baeSJung-uk Kim UINT8 Value; 201d6dd1baeSJung-uk Kim UINT8 SensorType; 202d6dd1baeSJung-uk Kim UINT8 Type; 203d6dd1baeSJung-uk Kim UINT8 Offset; 204d6dd1baeSJung-uk Kim UINT8 SourceType; 205d6dd1baeSJung-uk Kim UINT8 Severity; 206d6dd1baeSJung-uk Kim UINT8 SensorNumber; 207d6dd1baeSJung-uk Kim UINT8 Entity; 208d6dd1baeSJung-uk Kim UINT8 Instance; 209d6dd1baeSJung-uk Kim 210d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT_DATA; 211d6dd1baeSJung-uk Kim 212d6dd1baeSJung-uk Kim 213d6dd1baeSJung-uk Kim /* 2: ASF Remote Control */ 214d6dd1baeSJung-uk Kim 215d6dd1baeSJung-uk Kim typedef struct acpi_asf_remote 216d6dd1baeSJung-uk Kim { 217d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 218d6dd1baeSJung-uk Kim UINT8 Controls; 219d6dd1baeSJung-uk Kim UINT8 DataLength; 220d6dd1baeSJung-uk Kim UINT16 Reserved2; 221d6dd1baeSJung-uk Kim 222d6dd1baeSJung-uk Kim } ACPI_ASF_REMOTE; 223d6dd1baeSJung-uk Kim 224d6dd1baeSJung-uk Kim typedef struct acpi_asf_control_data 225d6dd1baeSJung-uk Kim { 226d6dd1baeSJung-uk Kim UINT8 Function; 227d6dd1baeSJung-uk Kim UINT8 Address; 228d6dd1baeSJung-uk Kim UINT8 Command; 229d6dd1baeSJung-uk Kim UINT8 Value; 230d6dd1baeSJung-uk Kim 231d6dd1baeSJung-uk Kim } ACPI_ASF_CONTROL_DATA; 232d6dd1baeSJung-uk Kim 233d6dd1baeSJung-uk Kim 234d6dd1baeSJung-uk Kim /* 3: ASF RMCP Boot Options */ 235d6dd1baeSJung-uk Kim 236d6dd1baeSJung-uk Kim typedef struct acpi_asf_rmcp 237d6dd1baeSJung-uk Kim { 238d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 239d6dd1baeSJung-uk Kim UINT8 Capabilities[7]; 240d6dd1baeSJung-uk Kim UINT8 CompletionCode; 241d6dd1baeSJung-uk Kim UINT32 EnterpriseId; 242d6dd1baeSJung-uk Kim UINT8 Command; 243d6dd1baeSJung-uk Kim UINT16 Parameter; 244d6dd1baeSJung-uk Kim UINT16 BootOptions; 245d6dd1baeSJung-uk Kim UINT16 OemParameters; 246d6dd1baeSJung-uk Kim 247d6dd1baeSJung-uk Kim } ACPI_ASF_RMCP; 248d6dd1baeSJung-uk Kim 249d6dd1baeSJung-uk Kim 250d6dd1baeSJung-uk Kim /* 4: ASF Address */ 251d6dd1baeSJung-uk Kim 252d6dd1baeSJung-uk Kim typedef struct acpi_asf_address 253d6dd1baeSJung-uk Kim { 254d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 255d6dd1baeSJung-uk Kim UINT8 EpromAddress; 256d6dd1baeSJung-uk Kim UINT8 Devices; 257d6dd1baeSJung-uk Kim 258d6dd1baeSJung-uk Kim } ACPI_ASF_ADDRESS; 259d6dd1baeSJung-uk Kim 260d6dd1baeSJung-uk Kim 261d6dd1baeSJung-uk Kim /******************************************************************************* 262d6dd1baeSJung-uk Kim * 263d6dd1baeSJung-uk Kim * BOOT - Simple Boot Flag Table 264d6dd1baeSJung-uk Kim * Version 1 265d6dd1baeSJung-uk Kim * 266d6dd1baeSJung-uk Kim * Conforms to the "Simple Boot Flag Specification", Version 2.1 267d6dd1baeSJung-uk Kim * 268d6dd1baeSJung-uk Kim ******************************************************************************/ 269d6dd1baeSJung-uk Kim 270d6dd1baeSJung-uk Kim typedef struct acpi_table_boot 271d6dd1baeSJung-uk Kim { 272d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 273d6dd1baeSJung-uk Kim UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 274d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 275d6dd1baeSJung-uk Kim 276d6dd1baeSJung-uk Kim } ACPI_TABLE_BOOT; 277d6dd1baeSJung-uk Kim 278d6dd1baeSJung-uk Kim 279d6dd1baeSJung-uk Kim /******************************************************************************* 280d6dd1baeSJung-uk Kim * 2811df130f1SJung-uk Kim * CSRT - Core System Resource Table 2821df130f1SJung-uk Kim * Version 0 2831df130f1SJung-uk Kim * 2841df130f1SJung-uk Kim * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 2851df130f1SJung-uk Kim * 2861df130f1SJung-uk Kim ******************************************************************************/ 2871df130f1SJung-uk Kim 2881df130f1SJung-uk Kim typedef struct acpi_table_csrt 2891df130f1SJung-uk Kim { 2901df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2911df130f1SJung-uk Kim 2921df130f1SJung-uk Kim } ACPI_TABLE_CSRT; 2931df130f1SJung-uk Kim 294efcc2a30SJung-uk Kim 2951df130f1SJung-uk Kim /* Resource Group subtable */ 2961df130f1SJung-uk Kim 2971df130f1SJung-uk Kim typedef struct acpi_csrt_group 2981df130f1SJung-uk Kim { 2991df130f1SJung-uk Kim UINT32 Length; 3001df130f1SJung-uk Kim UINT32 VendorId; 3011df130f1SJung-uk Kim UINT32 SubvendorId; 3021df130f1SJung-uk Kim UINT16 DeviceId; 3031df130f1SJung-uk Kim UINT16 SubdeviceId; 3041df130f1SJung-uk Kim UINT16 Revision; 3051df130f1SJung-uk Kim UINT16 Reserved; 306efcc2a30SJung-uk Kim UINT32 SharedInfoLength; 3071df130f1SJung-uk Kim 308efcc2a30SJung-uk Kim /* Shared data immediately follows (Length = SharedInfoLength) */ 3091df130f1SJung-uk Kim 3101df130f1SJung-uk Kim } ACPI_CSRT_GROUP; 3111df130f1SJung-uk Kim 312efcc2a30SJung-uk Kim /* Shared Info subtable */ 313efcc2a30SJung-uk Kim 314efcc2a30SJung-uk Kim typedef struct acpi_csrt_shared_info 315efcc2a30SJung-uk Kim { 316efcc2a30SJung-uk Kim UINT16 MajorVersion; 317efcc2a30SJung-uk Kim UINT16 MinorVersion; 318efcc2a30SJung-uk Kim UINT32 MmioBaseLow; 319efcc2a30SJung-uk Kim UINT32 MmioBaseHigh; 320efcc2a30SJung-uk Kim UINT32 GsiInterrupt; 321efcc2a30SJung-uk Kim UINT8 InterruptPolarity; 322efcc2a30SJung-uk Kim UINT8 InterruptMode; 323efcc2a30SJung-uk Kim UINT8 NumChannels; 324efcc2a30SJung-uk Kim UINT8 DmaAddressWidth; 325efcc2a30SJung-uk Kim UINT16 BaseRequestLine; 326efcc2a30SJung-uk Kim UINT16 NumHandshakeSignals; 327efcc2a30SJung-uk Kim UINT32 MaxBlockSize; 328efcc2a30SJung-uk Kim 329efcc2a30SJung-uk Kim /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 330efcc2a30SJung-uk Kim 331efcc2a30SJung-uk Kim } ACPI_CSRT_SHARED_INFO; 332efcc2a30SJung-uk Kim 3331df130f1SJung-uk Kim /* Resource Descriptor subtable */ 3341df130f1SJung-uk Kim 3351df130f1SJung-uk Kim typedef struct acpi_csrt_descriptor 3361df130f1SJung-uk Kim { 3371df130f1SJung-uk Kim UINT32 Length; 3381df130f1SJung-uk Kim UINT16 Type; 3391df130f1SJung-uk Kim UINT16 Subtype; 3401df130f1SJung-uk Kim UINT32 Uid; 3411df130f1SJung-uk Kim 3421df130f1SJung-uk Kim /* Resource-specific information immediately follows */ 3431df130f1SJung-uk Kim 3441df130f1SJung-uk Kim } ACPI_CSRT_DESCRIPTOR; 3451df130f1SJung-uk Kim 3461df130f1SJung-uk Kim 3471df130f1SJung-uk Kim /* Resource Types */ 3481df130f1SJung-uk Kim 3491df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 3501df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_TIMER 0x0002 3511df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_DMA 0x0003 3521df130f1SJung-uk Kim 3531df130f1SJung-uk Kim /* Resource Subtypes */ 3541df130f1SJung-uk Kim 3551df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_LINE 0x0000 3561df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 3571df130f1SJung-uk Kim #define ACPI_CSRT_TIMER 0x0000 3581df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CHANNEL 0x0000 3591df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CONTROLLER 0x0001 3601df130f1SJung-uk Kim 3611df130f1SJung-uk Kim 3621df130f1SJung-uk Kim /******************************************************************************* 3631df130f1SJung-uk Kim * 3641df130f1SJung-uk Kim * DBG2 - Debug Port Table 2 3651df130f1SJung-uk Kim * Version 0 (Both main table and subtables) 3661df130f1SJung-uk Kim * 3671df130f1SJung-uk Kim * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. 3681df130f1SJung-uk Kim * 3691df130f1SJung-uk Kim ******************************************************************************/ 3701df130f1SJung-uk Kim 3711df130f1SJung-uk Kim typedef struct acpi_table_dbg2 3721df130f1SJung-uk Kim { 3731df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 3741df130f1SJung-uk Kim UINT32 InfoOffset; 3751df130f1SJung-uk Kim UINT32 InfoCount; 3761df130f1SJung-uk Kim 3771df130f1SJung-uk Kim } ACPI_TABLE_DBG2; 3781df130f1SJung-uk Kim 3791df130f1SJung-uk Kim 380313a0c13SJung-uk Kim typedef struct acpi_dbg2_header 381313a0c13SJung-uk Kim { 382313a0c13SJung-uk Kim UINT32 InfoOffset; 383313a0c13SJung-uk Kim UINT32 InfoCount; 384313a0c13SJung-uk Kim 385313a0c13SJung-uk Kim } ACPI_DBG2_HEADER; 386313a0c13SJung-uk Kim 387313a0c13SJung-uk Kim 3881df130f1SJung-uk Kim /* Debug Device Information Subtable */ 3891df130f1SJung-uk Kim 3901df130f1SJung-uk Kim typedef struct acpi_dbg2_device 3911df130f1SJung-uk Kim { 3921df130f1SJung-uk Kim UINT8 Revision; 3931df130f1SJung-uk Kim UINT16 Length; 3941df130f1SJung-uk Kim UINT8 RegisterCount; /* Number of BaseAddress registers */ 3951df130f1SJung-uk Kim UINT16 NamepathLength; 3961df130f1SJung-uk Kim UINT16 NamepathOffset; 3971df130f1SJung-uk Kim UINT16 OemDataLength; 3981df130f1SJung-uk Kim UINT16 OemDataOffset; 3991df130f1SJung-uk Kim UINT16 PortType; 4001df130f1SJung-uk Kim UINT16 PortSubtype; 4011df130f1SJung-uk Kim UINT16 Reserved; 4021df130f1SJung-uk Kim UINT16 BaseAddressOffset; 4031df130f1SJung-uk Kim UINT16 AddressSizeOffset; 4041df130f1SJung-uk Kim /* 4051df130f1SJung-uk Kim * Data that follows: 4061df130f1SJung-uk Kim * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 4071df130f1SJung-uk Kim * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 4081df130f1SJung-uk Kim * Namepath (required) - Null terminated string. Single dot if not supported. 4091df130f1SJung-uk Kim * OemData (optional) - Length is OemDataLength. 4101df130f1SJung-uk Kim */ 4111df130f1SJung-uk Kim } ACPI_DBG2_DEVICE; 4121df130f1SJung-uk Kim 4131df130f1SJung-uk Kim /* Types for PortType field above */ 4141df130f1SJung-uk Kim 4151df130f1SJung-uk Kim #define ACPI_DBG2_SERIAL_PORT 0x8000 4161df130f1SJung-uk Kim #define ACPI_DBG2_1394_PORT 0x8001 4171df130f1SJung-uk Kim #define ACPI_DBG2_USB_PORT 0x8002 4181df130f1SJung-uk Kim #define ACPI_DBG2_NET_PORT 0x8003 4191df130f1SJung-uk Kim 4201df130f1SJung-uk Kim /* Subtypes for PortSubtype field above */ 4211df130f1SJung-uk Kim 4221df130f1SJung-uk Kim #define ACPI_DBG2_16550_COMPATIBLE 0x0000 4231df130f1SJung-uk Kim #define ACPI_DBG2_16550_SUBSET 0x0001 4241df130f1SJung-uk Kim 4251df130f1SJung-uk Kim #define ACPI_DBG2_1394_STANDARD 0x0000 4261df130f1SJung-uk Kim 4271df130f1SJung-uk Kim #define ACPI_DBG2_USB_XHCI 0x0000 4281df130f1SJung-uk Kim #define ACPI_DBG2_USB_EHCI 0x0001 4291df130f1SJung-uk Kim 4301df130f1SJung-uk Kim 4311df130f1SJung-uk Kim /******************************************************************************* 4321df130f1SJung-uk Kim * 433d6dd1baeSJung-uk Kim * DBGP - Debug Port table 434d6dd1baeSJung-uk Kim * Version 1 435d6dd1baeSJung-uk Kim * 436d6dd1baeSJung-uk Kim * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 437d6dd1baeSJung-uk Kim * 438d6dd1baeSJung-uk Kim ******************************************************************************/ 439d6dd1baeSJung-uk Kim 440d6dd1baeSJung-uk Kim typedef struct acpi_table_dbgp 441d6dd1baeSJung-uk Kim { 442d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 443d6dd1baeSJung-uk Kim UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 444d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 445d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS DebugPort; 446d6dd1baeSJung-uk Kim 447d6dd1baeSJung-uk Kim } ACPI_TABLE_DBGP; 448d6dd1baeSJung-uk Kim 449d6dd1baeSJung-uk Kim 450d6dd1baeSJung-uk Kim /******************************************************************************* 451d6dd1baeSJung-uk Kim * 452d6dd1baeSJung-uk Kim * DMAR - DMA Remapping table 453d6dd1baeSJung-uk Kim * Version 1 454d6dd1baeSJung-uk Kim * 455d6dd1baeSJung-uk Kim * Conforms to "Intel Virtualization Technology for Directed I/O", 456313a0c13SJung-uk Kim * Version 2.2, Sept. 2013 457d6dd1baeSJung-uk Kim * 458d6dd1baeSJung-uk Kim ******************************************************************************/ 459d6dd1baeSJung-uk Kim 460d6dd1baeSJung-uk Kim typedef struct acpi_table_dmar 461d6dd1baeSJung-uk Kim { 462d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 463d6dd1baeSJung-uk Kim UINT8 Width; /* Host Address Width */ 464d6dd1baeSJung-uk Kim UINT8 Flags; 465d6dd1baeSJung-uk Kim UINT8 Reserved[10]; 466d6dd1baeSJung-uk Kim 467d6dd1baeSJung-uk Kim } ACPI_TABLE_DMAR; 468d6dd1baeSJung-uk Kim 469d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 470d6dd1baeSJung-uk Kim 471d6dd1baeSJung-uk Kim #define ACPI_DMAR_INTR_REMAP (1) 4724c918926SKonstantin Belousov #define ACPI_DMAR_X2APIC_OPT_OUT (2) 473d6dd1baeSJung-uk Kim 474d6dd1baeSJung-uk Kim 475d6dd1baeSJung-uk Kim /* DMAR subtable header */ 476d6dd1baeSJung-uk Kim 477d6dd1baeSJung-uk Kim typedef struct acpi_dmar_header 478d6dd1baeSJung-uk Kim { 479d6dd1baeSJung-uk Kim UINT16 Type; 480d6dd1baeSJung-uk Kim UINT16 Length; 481d6dd1baeSJung-uk Kim 482d6dd1baeSJung-uk Kim } ACPI_DMAR_HEADER; 483d6dd1baeSJung-uk Kim 484d6dd1baeSJung-uk Kim /* Values for subtable type in ACPI_DMAR_HEADER */ 485d6dd1baeSJung-uk Kim 486d6dd1baeSJung-uk Kim enum AcpiDmarType 487d6dd1baeSJung-uk Kim { 488d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 489d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 490313a0c13SJung-uk Kim ACPI_DMAR_TYPE_ROOT_ATS = 2, 491313a0c13SJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 492313a0c13SJung-uk Kim ACPI_DMAR_TYPE_NAMESPACE = 4, 493313a0c13SJung-uk Kim ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 494d6dd1baeSJung-uk Kim }; 495d6dd1baeSJung-uk Kim 496d6dd1baeSJung-uk Kim 497d6dd1baeSJung-uk Kim /* DMAR Device Scope structure */ 498d6dd1baeSJung-uk Kim 499d6dd1baeSJung-uk Kim typedef struct acpi_dmar_device_scope 500d6dd1baeSJung-uk Kim { 501d6dd1baeSJung-uk Kim UINT8 EntryType; 502d6dd1baeSJung-uk Kim UINT8 Length; 503d6dd1baeSJung-uk Kim UINT16 Reserved; 504d6dd1baeSJung-uk Kim UINT8 EnumerationId; 505d6dd1baeSJung-uk Kim UINT8 Bus; 506d6dd1baeSJung-uk Kim 507d6dd1baeSJung-uk Kim } ACPI_DMAR_DEVICE_SCOPE; 508d6dd1baeSJung-uk Kim 509313a0c13SJung-uk Kim /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 510d6dd1baeSJung-uk Kim 511d6dd1baeSJung-uk Kim enum AcpiDmarScopeType 512d6dd1baeSJung-uk Kim { 513d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 514d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 515d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 516d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 517d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_HPET = 4, 518313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 519313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 520d6dd1baeSJung-uk Kim }; 521d6dd1baeSJung-uk Kim 522d6dd1baeSJung-uk Kim typedef struct acpi_dmar_pci_path 523d6dd1baeSJung-uk Kim { 524d6dd1baeSJung-uk Kim UINT8 Device; 525d6dd1baeSJung-uk Kim UINT8 Function; 526d6dd1baeSJung-uk Kim 527d6dd1baeSJung-uk Kim } ACPI_DMAR_PCI_PATH; 528d6dd1baeSJung-uk Kim 529d6dd1baeSJung-uk Kim 530d6dd1baeSJung-uk Kim /* 531313a0c13SJung-uk Kim * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 532d6dd1baeSJung-uk Kim */ 533d6dd1baeSJung-uk Kim 534d6dd1baeSJung-uk Kim /* 0: Hardware Unit Definition */ 535d6dd1baeSJung-uk Kim 536d6dd1baeSJung-uk Kim typedef struct acpi_dmar_hardware_unit 537d6dd1baeSJung-uk Kim { 538d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 539d6dd1baeSJung-uk Kim UINT8 Flags; 540d6dd1baeSJung-uk Kim UINT8 Reserved; 541d6dd1baeSJung-uk Kim UINT16 Segment; 542d6dd1baeSJung-uk Kim UINT64 Address; /* Register Base Address */ 543d6dd1baeSJung-uk Kim 544d6dd1baeSJung-uk Kim } ACPI_DMAR_HARDWARE_UNIT; 545d6dd1baeSJung-uk Kim 546d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 547d6dd1baeSJung-uk Kim 548d6dd1baeSJung-uk Kim #define ACPI_DMAR_INCLUDE_ALL (1) 549d6dd1baeSJung-uk Kim 550d6dd1baeSJung-uk Kim 551d6dd1baeSJung-uk Kim /* 1: Reserved Memory Defininition */ 552d6dd1baeSJung-uk Kim 553d6dd1baeSJung-uk Kim typedef struct acpi_dmar_reserved_memory 554d6dd1baeSJung-uk Kim { 555d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 556d6dd1baeSJung-uk Kim UINT16 Reserved; 557d6dd1baeSJung-uk Kim UINT16 Segment; 558d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* 4K aligned base address */ 559d6dd1baeSJung-uk Kim UINT64 EndAddress; /* 4K aligned limit address */ 560d6dd1baeSJung-uk Kim 561d6dd1baeSJung-uk Kim } ACPI_DMAR_RESERVED_MEMORY; 562d6dd1baeSJung-uk Kim 563d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 564d6dd1baeSJung-uk Kim 565d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALLOW_ALL (1) 566d6dd1baeSJung-uk Kim 567d6dd1baeSJung-uk Kim 568d6dd1baeSJung-uk Kim /* 2: Root Port ATS Capability Reporting Structure */ 569d6dd1baeSJung-uk Kim 570d6dd1baeSJung-uk Kim typedef struct acpi_dmar_atsr 571d6dd1baeSJung-uk Kim { 572d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 573d6dd1baeSJung-uk Kim UINT8 Flags; 574d6dd1baeSJung-uk Kim UINT8 Reserved; 575d6dd1baeSJung-uk Kim UINT16 Segment; 576d6dd1baeSJung-uk Kim 577d6dd1baeSJung-uk Kim } ACPI_DMAR_ATSR; 578d6dd1baeSJung-uk Kim 579d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 580d6dd1baeSJung-uk Kim 581d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALL_PORTS (1) 582d6dd1baeSJung-uk Kim 583d6dd1baeSJung-uk Kim 584d6dd1baeSJung-uk Kim /* 3: Remapping Hardware Static Affinity Structure */ 585d6dd1baeSJung-uk Kim 586d6dd1baeSJung-uk Kim typedef struct acpi_dmar_rhsa 587d6dd1baeSJung-uk Kim { 588d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 589d6dd1baeSJung-uk Kim UINT32 Reserved; 590d6dd1baeSJung-uk Kim UINT64 BaseAddress; 591d6dd1baeSJung-uk Kim UINT32 ProximityDomain; 592d6dd1baeSJung-uk Kim 593d6dd1baeSJung-uk Kim } ACPI_DMAR_RHSA; 594d6dd1baeSJung-uk Kim 595d6dd1baeSJung-uk Kim 596313a0c13SJung-uk Kim /* 4: ACPI Namespace Device Declaration Structure */ 597313a0c13SJung-uk Kim 598313a0c13SJung-uk Kim typedef struct acpi_dmar_andd 599313a0c13SJung-uk Kim { 600313a0c13SJung-uk Kim ACPI_DMAR_HEADER Header; 601313a0c13SJung-uk Kim UINT8 Reserved[3]; 602313a0c13SJung-uk Kim UINT8 DeviceNumber; 603313a0c13SJung-uk Kim char DeviceName[1]; 604313a0c13SJung-uk Kim 605313a0c13SJung-uk Kim } ACPI_DMAR_ANDD; 606313a0c13SJung-uk Kim 607313a0c13SJung-uk Kim 608d6dd1baeSJung-uk Kim /******************************************************************************* 609d6dd1baeSJung-uk Kim * 610d6dd1baeSJung-uk Kim * HPET - High Precision Event Timer table 611d6dd1baeSJung-uk Kim * Version 1 612d6dd1baeSJung-uk Kim * 613d6dd1baeSJung-uk Kim * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 614d6dd1baeSJung-uk Kim * Version 1.0a, October 2004 615d6dd1baeSJung-uk Kim * 616d6dd1baeSJung-uk Kim ******************************************************************************/ 617d6dd1baeSJung-uk Kim 618d6dd1baeSJung-uk Kim typedef struct acpi_table_hpet 619d6dd1baeSJung-uk Kim { 620d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 621d6dd1baeSJung-uk Kim UINT32 Id; /* Hardware ID of event timer block */ 622d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 623d6dd1baeSJung-uk Kim UINT8 Sequence; /* HPET sequence number */ 624d6dd1baeSJung-uk Kim UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 625d6dd1baeSJung-uk Kim UINT8 Flags; 626d6dd1baeSJung-uk Kim 627d6dd1baeSJung-uk Kim } ACPI_TABLE_HPET; 628d6dd1baeSJung-uk Kim 629d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 630d6dd1baeSJung-uk Kim 631d6dd1baeSJung-uk Kim #define ACPI_HPET_PAGE_PROTECT_MASK (3) 632d6dd1baeSJung-uk Kim 633d6dd1baeSJung-uk Kim /* Values for Page Protect flags */ 634d6dd1baeSJung-uk Kim 635d6dd1baeSJung-uk Kim enum AcpiHpetPageProtect 636d6dd1baeSJung-uk Kim { 637d6dd1baeSJung-uk Kim ACPI_HPET_NO_PAGE_PROTECT = 0, 638d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT4 = 1, 639d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT64 = 2 640d6dd1baeSJung-uk Kim }; 641d6dd1baeSJung-uk Kim 642d6dd1baeSJung-uk Kim 643d6dd1baeSJung-uk Kim /******************************************************************************* 644d6dd1baeSJung-uk Kim * 645d6dd1baeSJung-uk Kim * IBFT - Boot Firmware Table 646d6dd1baeSJung-uk Kim * Version 1 647d6dd1baeSJung-uk Kim * 648d6dd1baeSJung-uk Kim * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 649d6dd1baeSJung-uk Kim * Specification", Version 1.01, March 1, 2007 650d6dd1baeSJung-uk Kim * 651d6dd1baeSJung-uk Kim * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 652d6dd1baeSJung-uk Kim * Therefore, it is not currently supported by the disassembler. 653d6dd1baeSJung-uk Kim * 654d6dd1baeSJung-uk Kim ******************************************************************************/ 655d6dd1baeSJung-uk Kim 656d6dd1baeSJung-uk Kim typedef struct acpi_table_ibft 657d6dd1baeSJung-uk Kim { 658d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 659d6dd1baeSJung-uk Kim UINT8 Reserved[12]; 660d6dd1baeSJung-uk Kim 661d6dd1baeSJung-uk Kim } ACPI_TABLE_IBFT; 662d6dd1baeSJung-uk Kim 663d6dd1baeSJung-uk Kim 664d6dd1baeSJung-uk Kim /* IBFT common subtable header */ 665d6dd1baeSJung-uk Kim 666d6dd1baeSJung-uk Kim typedef struct acpi_ibft_header 667d6dd1baeSJung-uk Kim { 668d6dd1baeSJung-uk Kim UINT8 Type; 669d6dd1baeSJung-uk Kim UINT8 Version; 670d6dd1baeSJung-uk Kim UINT16 Length; 671d6dd1baeSJung-uk Kim UINT8 Index; 672d6dd1baeSJung-uk Kim UINT8 Flags; 673d6dd1baeSJung-uk Kim 674d6dd1baeSJung-uk Kim } ACPI_IBFT_HEADER; 675d6dd1baeSJung-uk Kim 676d6dd1baeSJung-uk Kim /* Values for Type field above */ 677d6dd1baeSJung-uk Kim 678d6dd1baeSJung-uk Kim enum AcpiIbftType 679d6dd1baeSJung-uk Kim { 680d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NOT_USED = 0, 681d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_CONTROL = 1, 682d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_INITIATOR = 2, 683d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NIC = 3, 684d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_TARGET = 4, 685d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_EXTENSIONS = 5, 686d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 687d6dd1baeSJung-uk Kim }; 688d6dd1baeSJung-uk Kim 689d6dd1baeSJung-uk Kim 690d6dd1baeSJung-uk Kim /* IBFT subtables */ 691d6dd1baeSJung-uk Kim 692d6dd1baeSJung-uk Kim typedef struct acpi_ibft_control 693d6dd1baeSJung-uk Kim { 694d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 695d6dd1baeSJung-uk Kim UINT16 Extensions; 696d6dd1baeSJung-uk Kim UINT16 InitiatorOffset; 697d6dd1baeSJung-uk Kim UINT16 Nic0Offset; 698d6dd1baeSJung-uk Kim UINT16 Target0Offset; 699d6dd1baeSJung-uk Kim UINT16 Nic1Offset; 700d6dd1baeSJung-uk Kim UINT16 Target1Offset; 701d6dd1baeSJung-uk Kim 702d6dd1baeSJung-uk Kim } ACPI_IBFT_CONTROL; 703d6dd1baeSJung-uk Kim 704d6dd1baeSJung-uk Kim typedef struct acpi_ibft_initiator 705d6dd1baeSJung-uk Kim { 706d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 707d6dd1baeSJung-uk Kim UINT8 SnsServer[16]; 708d6dd1baeSJung-uk Kim UINT8 SlpServer[16]; 709d6dd1baeSJung-uk Kim UINT8 PrimaryServer[16]; 710d6dd1baeSJung-uk Kim UINT8 SecondaryServer[16]; 711d6dd1baeSJung-uk Kim UINT16 NameLength; 712d6dd1baeSJung-uk Kim UINT16 NameOffset; 713d6dd1baeSJung-uk Kim 714d6dd1baeSJung-uk Kim } ACPI_IBFT_INITIATOR; 715d6dd1baeSJung-uk Kim 716d6dd1baeSJung-uk Kim typedef struct acpi_ibft_nic 717d6dd1baeSJung-uk Kim { 718d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 719d6dd1baeSJung-uk Kim UINT8 IpAddress[16]; 720d6dd1baeSJung-uk Kim UINT8 SubnetMaskPrefix; 721d6dd1baeSJung-uk Kim UINT8 Origin; 722d6dd1baeSJung-uk Kim UINT8 Gateway[16]; 723d6dd1baeSJung-uk Kim UINT8 PrimaryDns[16]; 724d6dd1baeSJung-uk Kim UINT8 SecondaryDns[16]; 725d6dd1baeSJung-uk Kim UINT8 Dhcp[16]; 726d6dd1baeSJung-uk Kim UINT16 Vlan; 727d6dd1baeSJung-uk Kim UINT8 MacAddress[6]; 728d6dd1baeSJung-uk Kim UINT16 PciAddress; 729d6dd1baeSJung-uk Kim UINT16 NameLength; 730d6dd1baeSJung-uk Kim UINT16 NameOffset; 731d6dd1baeSJung-uk Kim 732d6dd1baeSJung-uk Kim } ACPI_IBFT_NIC; 733d6dd1baeSJung-uk Kim 734d6dd1baeSJung-uk Kim typedef struct acpi_ibft_target 735d6dd1baeSJung-uk Kim { 736d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 737d6dd1baeSJung-uk Kim UINT8 TargetIpAddress[16]; 738d6dd1baeSJung-uk Kim UINT16 TargetIpSocket; 739d6dd1baeSJung-uk Kim UINT8 TargetBootLun[8]; 740d6dd1baeSJung-uk Kim UINT8 ChapType; 741d6dd1baeSJung-uk Kim UINT8 NicAssociation; 742d6dd1baeSJung-uk Kim UINT16 TargetNameLength; 743d6dd1baeSJung-uk Kim UINT16 TargetNameOffset; 744d6dd1baeSJung-uk Kim UINT16 ChapNameLength; 745d6dd1baeSJung-uk Kim UINT16 ChapNameOffset; 746d6dd1baeSJung-uk Kim UINT16 ChapSecretLength; 747d6dd1baeSJung-uk Kim UINT16 ChapSecretOffset; 748d6dd1baeSJung-uk Kim UINT16 ReverseChapNameLength; 749d6dd1baeSJung-uk Kim UINT16 ReverseChapNameOffset; 750d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretLength; 751d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretOffset; 752d6dd1baeSJung-uk Kim 753d6dd1baeSJung-uk Kim } ACPI_IBFT_TARGET; 754d6dd1baeSJung-uk Kim 755d6dd1baeSJung-uk Kim 756d6dd1baeSJung-uk Kim /******************************************************************************* 757d6dd1baeSJung-uk Kim * 758a371a5fdSJung-uk Kim * IORT - IO Remapping Table 759a371a5fdSJung-uk Kim * 760a371a5fdSJung-uk Kim * Conforms to "IO Remapping Table System Software on ARM Platforms", 761a371a5fdSJung-uk Kim * Document number: ARM DEN 0049A, 2015 762a371a5fdSJung-uk Kim * 763a371a5fdSJung-uk Kim ******************************************************************************/ 764a371a5fdSJung-uk Kim 765a371a5fdSJung-uk Kim typedef struct acpi_table_iort 766a371a5fdSJung-uk Kim { 767a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; 768a371a5fdSJung-uk Kim UINT32 NodeCount; 769a371a5fdSJung-uk Kim UINT32 NodeOffset; 770a371a5fdSJung-uk Kim UINT32 Reserved; 771a371a5fdSJung-uk Kim 772a371a5fdSJung-uk Kim } ACPI_TABLE_IORT; 773a371a5fdSJung-uk Kim 774a371a5fdSJung-uk Kim 775a371a5fdSJung-uk Kim /* 776a371a5fdSJung-uk Kim * IORT subtables 777a371a5fdSJung-uk Kim */ 778a371a5fdSJung-uk Kim typedef struct acpi_iort_node 779a371a5fdSJung-uk Kim { 780a371a5fdSJung-uk Kim UINT8 Type; 781a371a5fdSJung-uk Kim UINT16 Length; 782a371a5fdSJung-uk Kim UINT8 Revision; 783a371a5fdSJung-uk Kim UINT32 Reserved; 784a371a5fdSJung-uk Kim UINT32 MappingCount; 785a371a5fdSJung-uk Kim UINT32 MappingOffset; 786a371a5fdSJung-uk Kim char NodeData[1]; 787a371a5fdSJung-uk Kim 788a371a5fdSJung-uk Kim } ACPI_IORT_NODE; 789a371a5fdSJung-uk Kim 790a371a5fdSJung-uk Kim /* Values for subtable Type above */ 791a371a5fdSJung-uk Kim 792a371a5fdSJung-uk Kim enum AcpiIortNodeType 793a371a5fdSJung-uk Kim { 794a371a5fdSJung-uk Kim ACPI_IORT_NODE_ITS_GROUP = 0x00, 795a371a5fdSJung-uk Kim ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 796a371a5fdSJung-uk Kim ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 797a371a5fdSJung-uk Kim ACPI_IORT_NODE_SMMU = 0x03 798a371a5fdSJung-uk Kim }; 799a371a5fdSJung-uk Kim 800a371a5fdSJung-uk Kim 801a371a5fdSJung-uk Kim typedef struct acpi_iort_id_mapping 802a371a5fdSJung-uk Kim { 803a371a5fdSJung-uk Kim UINT32 InputBase; /* Lowest value in input range */ 804a371a5fdSJung-uk Kim UINT32 IdCount; /* Number of IDs */ 805a371a5fdSJung-uk Kim UINT32 OutputBase; /* Lowest value in output range */ 806a371a5fdSJung-uk Kim UINT32 OutputReference; /* A reference to the output node */ 807a371a5fdSJung-uk Kim UINT32 Flags; 808a371a5fdSJung-uk Kim 809a371a5fdSJung-uk Kim } ACPI_IORT_ID_MAPPING; 810a371a5fdSJung-uk Kim 811a371a5fdSJung-uk Kim /* Masks for Flags field above for IORT subtable */ 812a371a5fdSJung-uk Kim 813a371a5fdSJung-uk Kim #define ACPI_IORT_ID_SINGLE_MAPPING (1) 814a371a5fdSJung-uk Kim 815a371a5fdSJung-uk Kim 816a371a5fdSJung-uk Kim typedef struct acpi_iort_memory_access 817a371a5fdSJung-uk Kim { 818a371a5fdSJung-uk Kim UINT32 CacheCoherency; 819a371a5fdSJung-uk Kim UINT8 Hints; 820a371a5fdSJung-uk Kim UINT16 Reserved; 821a371a5fdSJung-uk Kim UINT8 MemoryFlags; 822a371a5fdSJung-uk Kim 823a371a5fdSJung-uk Kim } ACPI_IORT_MEMORY_ACCESS; 824a371a5fdSJung-uk Kim 825a371a5fdSJung-uk Kim /* Values for CacheCoherency field above */ 826a371a5fdSJung-uk Kim 827a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 828a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 829a371a5fdSJung-uk Kim 830a371a5fdSJung-uk Kim /* Masks for Hints field above */ 831a371a5fdSJung-uk Kim 832a371a5fdSJung-uk Kim #define ACPI_IORT_HT_TRANSIENT (1) 833a371a5fdSJung-uk Kim #define ACPI_IORT_HT_WRITE (1<<1) 834a371a5fdSJung-uk Kim #define ACPI_IORT_HT_READ (1<<2) 835a371a5fdSJung-uk Kim #define ACPI_IORT_HT_OVERRIDE (1<<3) 836a371a5fdSJung-uk Kim 837a371a5fdSJung-uk Kim /* Masks for MemoryFlags field above */ 838a371a5fdSJung-uk Kim 839a371a5fdSJung-uk Kim #define ACPI_IORT_MF_COHERENCY (1) 840a371a5fdSJung-uk Kim #define ACPI_IORT_MF_ATTRIBUTES (1<<1) 841a371a5fdSJung-uk Kim 842a371a5fdSJung-uk Kim 843a371a5fdSJung-uk Kim /* 844a371a5fdSJung-uk Kim * IORT node specific subtables 845a371a5fdSJung-uk Kim */ 846a371a5fdSJung-uk Kim typedef struct acpi_iort_its_group 847a371a5fdSJung-uk Kim { 848a371a5fdSJung-uk Kim UINT32 ItsCount; 849a371a5fdSJung-uk Kim UINT32 Identifiers[1]; /* GIC ITS identifier arrary */ 850a371a5fdSJung-uk Kim 851a371a5fdSJung-uk Kim } ACPI_IORT_ITS_GROUP; 852a371a5fdSJung-uk Kim 853a371a5fdSJung-uk Kim 854a371a5fdSJung-uk Kim typedef struct acpi_iort_named_component 855a371a5fdSJung-uk Kim { 856a371a5fdSJung-uk Kim UINT32 NodeFlags; 857a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 858a371a5fdSJung-uk Kim UINT8 MemoryAddressLimit; /* Memory address size limit */ 859a371a5fdSJung-uk Kim char DeviceName[1]; /* Path of namespace object */ 860a371a5fdSJung-uk Kim 861a371a5fdSJung-uk Kim } ACPI_IORT_NAMED_COMPONENT; 862a371a5fdSJung-uk Kim 863a371a5fdSJung-uk Kim 864a371a5fdSJung-uk Kim typedef struct acpi_iort_root_complex 865a371a5fdSJung-uk Kim { 866a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 867a371a5fdSJung-uk Kim UINT32 AtsAttribute; 868a371a5fdSJung-uk Kim UINT32 PciSegmentNumber; 869a371a5fdSJung-uk Kim 870a371a5fdSJung-uk Kim } ACPI_IORT_ROOT_COMPLEX; 871a371a5fdSJung-uk Kim 872a371a5fdSJung-uk Kim /* Values for AtsAttribute field above */ 873a371a5fdSJung-uk Kim 874a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 875a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 876a371a5fdSJung-uk Kim 877a371a5fdSJung-uk Kim 878a371a5fdSJung-uk Kim typedef struct acpi_iort_smmu 879a371a5fdSJung-uk Kim { 880a371a5fdSJung-uk Kim UINT64 BaseAddress; /* SMMU base address */ 881a371a5fdSJung-uk Kim UINT64 Span; /* Length of memory range */ 882a371a5fdSJung-uk Kim UINT32 Model; 883a371a5fdSJung-uk Kim UINT32 Flags; 884a371a5fdSJung-uk Kim UINT32 GlobalInterruptOffset; 885a371a5fdSJung-uk Kim UINT32 ContextInterruptCount; 886a371a5fdSJung-uk Kim UINT32 ContextInterruptOffset; 887a371a5fdSJung-uk Kim UINT32 PmuInterruptCount; 888a371a5fdSJung-uk Kim UINT32 PmuInterruptOffset; 889a371a5fdSJung-uk Kim UINT64 Interrupts[1]; /* Interrupt array */ 890a371a5fdSJung-uk Kim 891a371a5fdSJung-uk Kim } ACPI_IORT_SMMU; 892a371a5fdSJung-uk Kim 893a371a5fdSJung-uk Kim /* Values for Model field above */ 894a371a5fdSJung-uk Kim 895a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 896a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 897a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 898a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 899a371a5fdSJung-uk Kim 900a371a5fdSJung-uk Kim /* Masks for Flags field above */ 901a371a5fdSJung-uk Kim 902a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 903a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 904a371a5fdSJung-uk Kim 905a371a5fdSJung-uk Kim 906a371a5fdSJung-uk Kim /******************************************************************************* 907a371a5fdSJung-uk Kim * 908d6dd1baeSJung-uk Kim * IVRS - I/O Virtualization Reporting Structure 909d6dd1baeSJung-uk Kim * Version 1 910d6dd1baeSJung-uk Kim * 911d6dd1baeSJung-uk Kim * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 912d6dd1baeSJung-uk Kim * Revision 1.26, February 2009. 913d6dd1baeSJung-uk Kim * 914d6dd1baeSJung-uk Kim ******************************************************************************/ 915d6dd1baeSJung-uk Kim 916d6dd1baeSJung-uk Kim typedef struct acpi_table_ivrs 917d6dd1baeSJung-uk Kim { 918d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 919d6dd1baeSJung-uk Kim UINT32 Info; /* Common virtualization info */ 920d6dd1baeSJung-uk Kim UINT64 Reserved; 921d6dd1baeSJung-uk Kim 922d6dd1baeSJung-uk Kim } ACPI_TABLE_IVRS; 923d6dd1baeSJung-uk Kim 924d6dd1baeSJung-uk Kim /* Values for Info field above */ 925d6dd1baeSJung-uk Kim 926d6dd1baeSJung-uk Kim #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 927d6dd1baeSJung-uk Kim #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 928d6dd1baeSJung-uk Kim #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 929d6dd1baeSJung-uk Kim 930d6dd1baeSJung-uk Kim 931d6dd1baeSJung-uk Kim /* IVRS subtable header */ 932d6dd1baeSJung-uk Kim 933d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_header 934d6dd1baeSJung-uk Kim { 935d6dd1baeSJung-uk Kim UINT8 Type; /* Subtable type */ 936d6dd1baeSJung-uk Kim UINT8 Flags; 937d6dd1baeSJung-uk Kim UINT16 Length; /* Subtable length */ 938d6dd1baeSJung-uk Kim UINT16 DeviceId; /* ID of IOMMU */ 939d6dd1baeSJung-uk Kim 940d6dd1baeSJung-uk Kim } ACPI_IVRS_HEADER; 941d6dd1baeSJung-uk Kim 942d6dd1baeSJung-uk Kim /* Values for subtable Type above */ 943d6dd1baeSJung-uk Kim 944d6dd1baeSJung-uk Kim enum AcpiIvrsType 945d6dd1baeSJung-uk Kim { 946d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_HARDWARE = 0x10, 947d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY1 = 0x20, 948d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY2 = 0x21, 949d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY3 = 0x22 950d6dd1baeSJung-uk Kim }; 951d6dd1baeSJung-uk Kim 952d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVHD subtable */ 953d6dd1baeSJung-uk Kim 954d6dd1baeSJung-uk Kim #define ACPI_IVHD_TT_ENABLE (1) 955d6dd1baeSJung-uk Kim #define ACPI_IVHD_PASS_PW (1<<1) 956d6dd1baeSJung-uk Kim #define ACPI_IVHD_RES_PASS_PW (1<<2) 957d6dd1baeSJung-uk Kim #define ACPI_IVHD_ISOC (1<<3) 958d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOTLB (1<<4) 959d6dd1baeSJung-uk Kim 960d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVMD subtable */ 961d6dd1baeSJung-uk Kim 962d6dd1baeSJung-uk Kim #define ACPI_IVMD_UNITY (1) 963d6dd1baeSJung-uk Kim #define ACPI_IVMD_READ (1<<1) 964d6dd1baeSJung-uk Kim #define ACPI_IVMD_WRITE (1<<2) 965d6dd1baeSJung-uk Kim #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 966d6dd1baeSJung-uk Kim 967d6dd1baeSJung-uk Kim 968d6dd1baeSJung-uk Kim /* 969d6dd1baeSJung-uk Kim * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 970d6dd1baeSJung-uk Kim */ 971d6dd1baeSJung-uk Kim 972d6dd1baeSJung-uk Kim /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 973d6dd1baeSJung-uk Kim 974d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_hardware 975d6dd1baeSJung-uk Kim { 976d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 977d6dd1baeSJung-uk Kim UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 978d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* IOMMU control registers */ 979d6dd1baeSJung-uk Kim UINT16 PciSegmentGroup; 980d6dd1baeSJung-uk Kim UINT16 Info; /* MSI number and unit ID */ 981d6dd1baeSJung-uk Kim UINT32 Reserved; 982d6dd1baeSJung-uk Kim 983d6dd1baeSJung-uk Kim } ACPI_IVRS_HARDWARE; 984d6dd1baeSJung-uk Kim 985d6dd1baeSJung-uk Kim /* Masks for Info field above */ 986d6dd1baeSJung-uk Kim 987d6dd1baeSJung-uk Kim #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 988d6dd1baeSJung-uk Kim #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 989d6dd1baeSJung-uk Kim 990d6dd1baeSJung-uk Kim 991d6dd1baeSJung-uk Kim /* 992d6dd1baeSJung-uk Kim * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 993d6dd1baeSJung-uk Kim * Upper two bits of the Type field are the (encoded) length of the structure. 994d6dd1baeSJung-uk Kim * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 995d6dd1baeSJung-uk Kim * are reserved for future use but not defined. 996d6dd1baeSJung-uk Kim */ 997d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_de_header 998d6dd1baeSJung-uk Kim { 999d6dd1baeSJung-uk Kim UINT8 Type; 1000d6dd1baeSJung-uk Kim UINT16 Id; 1001d6dd1baeSJung-uk Kim UINT8 DataSetting; 1002d6dd1baeSJung-uk Kim 1003d6dd1baeSJung-uk Kim } ACPI_IVRS_DE_HEADER; 1004d6dd1baeSJung-uk Kim 1005d6dd1baeSJung-uk Kim /* Length of device entry is in the top two bits of Type field above */ 1006d6dd1baeSJung-uk Kim 1007d6dd1baeSJung-uk Kim #define ACPI_IVHD_ENTRY_LENGTH 0xC0 1008d6dd1baeSJung-uk Kim 1009d6dd1baeSJung-uk Kim /* Values for device entry Type field above */ 1010d6dd1baeSJung-uk Kim 1011d6dd1baeSJung-uk Kim enum AcpiIvrsDeviceEntryType 1012d6dd1baeSJung-uk Kim { 1013d6dd1baeSJung-uk Kim /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 1014d6dd1baeSJung-uk Kim 1015d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD4 = 0, 1016d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALL = 1, 1017d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SELECT = 2, 1018d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_START = 3, 1019d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_END = 4, 1020d6dd1baeSJung-uk Kim 1021d6dd1baeSJung-uk Kim /* 8-byte device entries */ 1022d6dd1baeSJung-uk Kim 1023d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD8 = 64, 1024d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_NOT_USED = 65, 1025d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 1026d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 1027d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 1028d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 1029d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 1030d6dd1baeSJung-uk Kim }; 1031d6dd1baeSJung-uk Kim 1032d6dd1baeSJung-uk Kim /* Values for Data field above */ 1033d6dd1baeSJung-uk Kim 1034d6dd1baeSJung-uk Kim #define ACPI_IVHD_INIT_PASS (1) 1035d6dd1baeSJung-uk Kim #define ACPI_IVHD_EINT_PASS (1<<1) 1036d6dd1baeSJung-uk Kim #define ACPI_IVHD_NMI_PASS (1<<2) 1037d6dd1baeSJung-uk Kim #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 1038d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT0_PASS (1<<6) 1039d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT1_PASS (1<<7) 1040d6dd1baeSJung-uk Kim 1041d6dd1baeSJung-uk Kim 1042d6dd1baeSJung-uk Kim /* Types 0-4: 4-byte device entry */ 1043d6dd1baeSJung-uk Kim 1044d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device4 1045d6dd1baeSJung-uk Kim { 1046d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1047d6dd1baeSJung-uk Kim 1048d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE4; 1049d6dd1baeSJung-uk Kim 1050d6dd1baeSJung-uk Kim /* Types 66-67: 8-byte device entry */ 1051d6dd1baeSJung-uk Kim 1052d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8a 1053d6dd1baeSJung-uk Kim { 1054d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1055d6dd1baeSJung-uk Kim UINT8 Reserved1; 1056d6dd1baeSJung-uk Kim UINT16 UsedId; 1057d6dd1baeSJung-uk Kim UINT8 Reserved2; 1058d6dd1baeSJung-uk Kim 1059d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8A; 1060d6dd1baeSJung-uk Kim 1061d6dd1baeSJung-uk Kim /* Types 70-71: 8-byte device entry */ 1062d6dd1baeSJung-uk Kim 1063d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8b 1064d6dd1baeSJung-uk Kim { 1065d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1066d6dd1baeSJung-uk Kim UINT32 ExtendedData; 1067d6dd1baeSJung-uk Kim 1068d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8B; 1069d6dd1baeSJung-uk Kim 1070d6dd1baeSJung-uk Kim /* Values for ExtendedData above */ 1071d6dd1baeSJung-uk Kim 1072d6dd1baeSJung-uk Kim #define ACPI_IVHD_ATS_DISABLED (1<<31) 1073d6dd1baeSJung-uk Kim 1074d6dd1baeSJung-uk Kim /* Type 72: 8-byte device entry */ 1075d6dd1baeSJung-uk Kim 1076d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8c 1077d6dd1baeSJung-uk Kim { 1078d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1079d6dd1baeSJung-uk Kim UINT8 Handle; 1080d6dd1baeSJung-uk Kim UINT16 UsedId; 1081d6dd1baeSJung-uk Kim UINT8 Variety; 1082d6dd1baeSJung-uk Kim 1083d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8C; 1084d6dd1baeSJung-uk Kim 1085d6dd1baeSJung-uk Kim /* Values for Variety field above */ 1086d6dd1baeSJung-uk Kim 1087d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOAPIC 1 1088d6dd1baeSJung-uk Kim #define ACPI_IVHD_HPET 2 1089d6dd1baeSJung-uk Kim 1090d6dd1baeSJung-uk Kim 1091d6dd1baeSJung-uk Kim /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 1092d6dd1baeSJung-uk Kim 1093d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_memory 1094d6dd1baeSJung-uk Kim { 1095d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 1096d6dd1baeSJung-uk Kim UINT16 AuxData; 1097d6dd1baeSJung-uk Kim UINT64 Reserved; 1098d6dd1baeSJung-uk Kim UINT64 StartAddress; 1099d6dd1baeSJung-uk Kim UINT64 MemoryLength; 1100d6dd1baeSJung-uk Kim 1101d6dd1baeSJung-uk Kim } ACPI_IVRS_MEMORY; 1102d6dd1baeSJung-uk Kim 1103d6dd1baeSJung-uk Kim 1104d6dd1baeSJung-uk Kim /******************************************************************************* 1105d6dd1baeSJung-uk Kim * 1106313a0c13SJung-uk Kim * LPIT - Low Power Idle Table 1107313a0c13SJung-uk Kim * 1108a371a5fdSJung-uk Kim * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1109313a0c13SJung-uk Kim * 1110313a0c13SJung-uk Kim ******************************************************************************/ 1111313a0c13SJung-uk Kim 1112313a0c13SJung-uk Kim typedef struct acpi_table_lpit 1113313a0c13SJung-uk Kim { 1114313a0c13SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1115313a0c13SJung-uk Kim 1116313a0c13SJung-uk Kim } ACPI_TABLE_LPIT; 1117313a0c13SJung-uk Kim 1118313a0c13SJung-uk Kim 1119313a0c13SJung-uk Kim /* LPIT subtable header */ 1120313a0c13SJung-uk Kim 1121313a0c13SJung-uk Kim typedef struct acpi_lpit_header 1122313a0c13SJung-uk Kim { 1123313a0c13SJung-uk Kim UINT32 Type; /* Subtable type */ 1124313a0c13SJung-uk Kim UINT32 Length; /* Subtable length */ 1125313a0c13SJung-uk Kim UINT16 UniqueId; 1126313a0c13SJung-uk Kim UINT16 Reserved; 1127313a0c13SJung-uk Kim UINT32 Flags; 1128313a0c13SJung-uk Kim 1129313a0c13SJung-uk Kim } ACPI_LPIT_HEADER; 1130313a0c13SJung-uk Kim 1131313a0c13SJung-uk Kim /* Values for subtable Type above */ 1132313a0c13SJung-uk Kim 1133313a0c13SJung-uk Kim enum AcpiLpitType 1134313a0c13SJung-uk Kim { 1135313a0c13SJung-uk Kim ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1136a371a5fdSJung-uk Kim ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1137313a0c13SJung-uk Kim }; 1138313a0c13SJung-uk Kim 1139313a0c13SJung-uk Kim /* Masks for Flags field above */ 1140313a0c13SJung-uk Kim 1141313a0c13SJung-uk Kim #define ACPI_LPIT_STATE_DISABLED (1) 1142313a0c13SJung-uk Kim #define ACPI_LPIT_NO_COUNTER (1<<1) 1143313a0c13SJung-uk Kim 1144313a0c13SJung-uk Kim /* 1145313a0c13SJung-uk Kim * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1146313a0c13SJung-uk Kim */ 1147313a0c13SJung-uk Kim 1148313a0c13SJung-uk Kim /* 0x00: Native C-state instruction based LPI structure */ 1149313a0c13SJung-uk Kim 1150313a0c13SJung-uk Kim typedef struct acpi_lpit_native 1151313a0c13SJung-uk Kim { 1152313a0c13SJung-uk Kim ACPI_LPIT_HEADER Header; 1153313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS EntryTrigger; 1154313a0c13SJung-uk Kim UINT32 Residency; 1155313a0c13SJung-uk Kim UINT32 Latency; 1156313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS ResidencyCounter; 1157313a0c13SJung-uk Kim UINT64 CounterFrequency; 1158313a0c13SJung-uk Kim 1159313a0c13SJung-uk Kim } ACPI_LPIT_NATIVE; 1160313a0c13SJung-uk Kim 1161313a0c13SJung-uk Kim 1162313a0c13SJung-uk Kim /******************************************************************************* 1163313a0c13SJung-uk Kim * 1164313a0c13SJung-uk Kim * MCFG - PCI Memory Mapped Configuration table and subtable 1165d6dd1baeSJung-uk Kim * Version 1 1166d6dd1baeSJung-uk Kim * 1167d6dd1baeSJung-uk Kim * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1168d6dd1baeSJung-uk Kim * 1169d6dd1baeSJung-uk Kim ******************************************************************************/ 1170d6dd1baeSJung-uk Kim 1171d6dd1baeSJung-uk Kim typedef struct acpi_table_mcfg 1172d6dd1baeSJung-uk Kim { 1173d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1174d6dd1baeSJung-uk Kim UINT8 Reserved[8]; 1175d6dd1baeSJung-uk Kim 1176d6dd1baeSJung-uk Kim } ACPI_TABLE_MCFG; 1177d6dd1baeSJung-uk Kim 1178d6dd1baeSJung-uk Kim 1179d6dd1baeSJung-uk Kim /* Subtable */ 1180d6dd1baeSJung-uk Kim 1181d6dd1baeSJung-uk Kim typedef struct acpi_mcfg_allocation 1182d6dd1baeSJung-uk Kim { 1183d6dd1baeSJung-uk Kim UINT64 Address; /* Base address, processor-relative */ 1184d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI segment group number */ 1185d6dd1baeSJung-uk Kim UINT8 StartBusNumber; /* Starting PCI Bus number */ 1186d6dd1baeSJung-uk Kim UINT8 EndBusNumber; /* Final PCI Bus number */ 1187d6dd1baeSJung-uk Kim UINT32 Reserved; 1188d6dd1baeSJung-uk Kim 1189d6dd1baeSJung-uk Kim } ACPI_MCFG_ALLOCATION; 1190d6dd1baeSJung-uk Kim 1191d6dd1baeSJung-uk Kim 1192d6dd1baeSJung-uk Kim /******************************************************************************* 1193d6dd1baeSJung-uk Kim * 1194ca3cf4faSJung-uk Kim * MCHI - Management Controller Host Interface Table 1195ca3cf4faSJung-uk Kim * Version 1 1196ca3cf4faSJung-uk Kim * 1197ca3cf4faSJung-uk Kim * Conforms to "Management Component Transport Protocol (MCTP) Host 1198ca3cf4faSJung-uk Kim * Interface Specification", Revision 1.0.0a, October 13, 2009 1199ca3cf4faSJung-uk Kim * 1200ca3cf4faSJung-uk Kim ******************************************************************************/ 1201ca3cf4faSJung-uk Kim 1202ca3cf4faSJung-uk Kim typedef struct acpi_table_mchi 1203ca3cf4faSJung-uk Kim { 1204ca3cf4faSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1205ca3cf4faSJung-uk Kim UINT8 InterfaceType; 1206ca3cf4faSJung-uk Kim UINT8 Protocol; 1207ca3cf4faSJung-uk Kim UINT64 ProtocolData; 1208ca3cf4faSJung-uk Kim UINT8 InterruptType; 1209ca3cf4faSJung-uk Kim UINT8 Gpe; 1210ca3cf4faSJung-uk Kim UINT8 PciDeviceFlag; 1211ca3cf4faSJung-uk Kim UINT32 GlobalInterrupt; 1212ca3cf4faSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1213ca3cf4faSJung-uk Kim UINT8 PciSegment; 1214ca3cf4faSJung-uk Kim UINT8 PciBus; 1215ca3cf4faSJung-uk Kim UINT8 PciDevice; 1216ca3cf4faSJung-uk Kim UINT8 PciFunction; 1217ca3cf4faSJung-uk Kim 1218ca3cf4faSJung-uk Kim } ACPI_TABLE_MCHI; 1219ca3cf4faSJung-uk Kim 1220ca3cf4faSJung-uk Kim 1221ca3cf4faSJung-uk Kim /******************************************************************************* 1222ca3cf4faSJung-uk Kim * 12237cf3e94aSJung-uk Kim * MSDM - Microsoft Data Management table 12247cf3e94aSJung-uk Kim * 12257cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 12267cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 12277cf3e94aSJung-uk Kim * 12287cf3e94aSJung-uk Kim ******************************************************************************/ 12297cf3e94aSJung-uk Kim 12307cf3e94aSJung-uk Kim /* Basic MSDM table is only the common ACPI header */ 12317cf3e94aSJung-uk Kim 12327cf3e94aSJung-uk Kim typedef struct acpi_table_msdm 12337cf3e94aSJung-uk Kim { 12347cf3e94aSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 12357cf3e94aSJung-uk Kim 12367cf3e94aSJung-uk Kim } ACPI_TABLE_MSDM; 12377cf3e94aSJung-uk Kim 12387cf3e94aSJung-uk Kim 12397cf3e94aSJung-uk Kim /******************************************************************************* 12407cf3e94aSJung-uk Kim * 12419c48c75eSJung-uk Kim * MTMR - MID Timer Table 12429c48c75eSJung-uk Kim * Version 1 12439c48c75eSJung-uk Kim * 12449c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 12459c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 12469c48c75eSJung-uk Kim * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 12479c48c75eSJung-uk Kim * 12489c48c75eSJung-uk Kim ******************************************************************************/ 12499c48c75eSJung-uk Kim 12509c48c75eSJung-uk Kim typedef struct acpi_table_mtmr 12519c48c75eSJung-uk Kim { 12529c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 12539c48c75eSJung-uk Kim 12549c48c75eSJung-uk Kim } ACPI_TABLE_MTMR; 12559c48c75eSJung-uk Kim 12569c48c75eSJung-uk Kim /* MTMR entry */ 12579c48c75eSJung-uk Kim 12589c48c75eSJung-uk Kim typedef struct acpi_mtmr_entry 12599c48c75eSJung-uk Kim { 12609c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 12619c48c75eSJung-uk Kim UINT32 Frequency; 12629c48c75eSJung-uk Kim UINT32 Irq; 12639c48c75eSJung-uk Kim 12649c48c75eSJung-uk Kim } ACPI_MTMR_ENTRY; 12659c48c75eSJung-uk Kim 12669c48c75eSJung-uk Kim 12679c48c75eSJung-uk Kim /******************************************************************************* 12689c48c75eSJung-uk Kim * 1269dcbce41eSJung-uk Kim * SLIC - Software Licensing Description Table 1270dcbce41eSJung-uk Kim * 12717cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 12727cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 1273dcbce41eSJung-uk Kim * 1274dcbce41eSJung-uk Kim ******************************************************************************/ 1275dcbce41eSJung-uk Kim 1276dcbce41eSJung-uk Kim /* Basic SLIC table is only the common ACPI header */ 1277dcbce41eSJung-uk Kim 1278dcbce41eSJung-uk Kim typedef struct acpi_table_slic 1279dcbce41eSJung-uk Kim { 1280dcbce41eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1281dcbce41eSJung-uk Kim 1282dcbce41eSJung-uk Kim } ACPI_TABLE_SLIC; 1283dcbce41eSJung-uk Kim 1284dcbce41eSJung-uk Kim 1285dcbce41eSJung-uk Kim /******************************************************************************* 1286dcbce41eSJung-uk Kim * 1287d6dd1baeSJung-uk Kim * SPCR - Serial Port Console Redirection table 1288d6dd1baeSJung-uk Kim * Version 1 1289d6dd1baeSJung-uk Kim * 1290d6dd1baeSJung-uk Kim * Conforms to "Serial Port Console Redirection Table", 1291d6dd1baeSJung-uk Kim * Version 1.00, January 11, 2002 1292d6dd1baeSJung-uk Kim * 1293d6dd1baeSJung-uk Kim ******************************************************************************/ 1294d6dd1baeSJung-uk Kim 1295d6dd1baeSJung-uk Kim typedef struct acpi_table_spcr 1296d6dd1baeSJung-uk Kim { 1297d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1298d6dd1baeSJung-uk Kim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1299d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1300d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS SerialPort; 1301d6dd1baeSJung-uk Kim UINT8 InterruptType; 1302d6dd1baeSJung-uk Kim UINT8 PcInterrupt; 1303d6dd1baeSJung-uk Kim UINT32 Interrupt; 1304d6dd1baeSJung-uk Kim UINT8 BaudRate; 1305d6dd1baeSJung-uk Kim UINT8 Parity; 1306d6dd1baeSJung-uk Kim UINT8 StopBits; 1307d6dd1baeSJung-uk Kim UINT8 FlowControl; 1308d6dd1baeSJung-uk Kim UINT8 TerminalType; 1309d6dd1baeSJung-uk Kim UINT8 Reserved1; 1310d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1311d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1312d6dd1baeSJung-uk Kim UINT8 PciBus; 1313d6dd1baeSJung-uk Kim UINT8 PciDevice; 1314d6dd1baeSJung-uk Kim UINT8 PciFunction; 1315d6dd1baeSJung-uk Kim UINT32 PciFlags; 1316d6dd1baeSJung-uk Kim UINT8 PciSegment; 1317d6dd1baeSJung-uk Kim UINT32 Reserved2; 1318d6dd1baeSJung-uk Kim 1319d6dd1baeSJung-uk Kim } ACPI_TABLE_SPCR; 1320d6dd1baeSJung-uk Kim 1321d6dd1baeSJung-uk Kim /* Masks for PciFlags field above */ 1322d6dd1baeSJung-uk Kim 1323d6dd1baeSJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE (1) 1324d6dd1baeSJung-uk Kim 1325d6dd1baeSJung-uk Kim 1326d6dd1baeSJung-uk Kim /******************************************************************************* 1327d6dd1baeSJung-uk Kim * 1328d6dd1baeSJung-uk Kim * SPMI - Server Platform Management Interface table 1329d6dd1baeSJung-uk Kim * Version 5 1330d6dd1baeSJung-uk Kim * 1331d6dd1baeSJung-uk Kim * Conforms to "Intelligent Platform Management Interface Specification 1332d6dd1baeSJung-uk Kim * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1333d6dd1baeSJung-uk Kim * June 12, 2009 markup. 1334d6dd1baeSJung-uk Kim * 1335d6dd1baeSJung-uk Kim ******************************************************************************/ 1336d6dd1baeSJung-uk Kim 1337d6dd1baeSJung-uk Kim typedef struct acpi_table_spmi 1338d6dd1baeSJung-uk Kim { 1339d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1340d6dd1baeSJung-uk Kim UINT8 InterfaceType; 1341d6dd1baeSJung-uk Kim UINT8 Reserved; /* Must be 1 */ 1342d6dd1baeSJung-uk Kim UINT16 SpecRevision; /* Version of IPMI */ 1343d6dd1baeSJung-uk Kim UINT8 InterruptType; 1344d6dd1baeSJung-uk Kim UINT8 GpeNumber; /* GPE assigned */ 1345d6dd1baeSJung-uk Kim UINT8 Reserved1; 1346d6dd1baeSJung-uk Kim UINT8 PciDeviceFlag; 1347d6dd1baeSJung-uk Kim UINT32 Interrupt; 1348d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS IpmiRegister; 1349d6dd1baeSJung-uk Kim UINT8 PciSegment; 1350d6dd1baeSJung-uk Kim UINT8 PciBus; 1351d6dd1baeSJung-uk Kim UINT8 PciDevice; 1352d6dd1baeSJung-uk Kim UINT8 PciFunction; 1353d6dd1baeSJung-uk Kim UINT8 Reserved2; 1354d6dd1baeSJung-uk Kim 1355d6dd1baeSJung-uk Kim } ACPI_TABLE_SPMI; 1356d6dd1baeSJung-uk Kim 1357d6dd1baeSJung-uk Kim /* Values for InterfaceType above */ 1358d6dd1baeSJung-uk Kim 1359d6dd1baeSJung-uk Kim enum AcpiSpmiInterfaceTypes 1360d6dd1baeSJung-uk Kim { 1361d6dd1baeSJung-uk Kim ACPI_SPMI_NOT_USED = 0, 1362d6dd1baeSJung-uk Kim ACPI_SPMI_KEYBOARD = 1, 1363d6dd1baeSJung-uk Kim ACPI_SPMI_SMI = 2, 1364d6dd1baeSJung-uk Kim ACPI_SPMI_BLOCK_TRANSFER = 3, 1365d6dd1baeSJung-uk Kim ACPI_SPMI_SMBUS = 4, 1366d6dd1baeSJung-uk Kim ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1367d6dd1baeSJung-uk Kim }; 1368d6dd1baeSJung-uk Kim 1369d6dd1baeSJung-uk Kim 1370d6dd1baeSJung-uk Kim /******************************************************************************* 1371d6dd1baeSJung-uk Kim * 1372d6dd1baeSJung-uk Kim * TCPA - Trusted Computing Platform Alliance table 1373*5ef50723SJung-uk Kim * Version 2 1374d6dd1baeSJung-uk Kim * 1375*5ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1376*5ef50723SJung-uk Kim * December 19, 2014 1377*5ef50723SJung-uk Kim * 1378*5ef50723SJung-uk Kim * NOTE: There are two versions of the table with the same signature -- 1379*5ef50723SJung-uk Kim * the client version and the server version. 1380d6dd1baeSJung-uk Kim * 1381d6dd1baeSJung-uk Kim ******************************************************************************/ 1382d6dd1baeSJung-uk Kim 1383*5ef50723SJung-uk Kim typedef struct acpi_table_tcpa_client 1384d6dd1baeSJung-uk Kim { 1385d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1386*5ef50723SJung-uk Kim UINT16 PlatformClass; 1387*5ef50723SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 1388d6dd1baeSJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 1389d6dd1baeSJung-uk Kim 1390*5ef50723SJung-uk Kim } ACPI_TABLE_TCPA_CLIENT; 1391*5ef50723SJung-uk Kim 1392*5ef50723SJung-uk Kim typedef struct acpi_table_tcpa_server 1393*5ef50723SJung-uk Kim { 1394*5ef50723SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1395*5ef50723SJung-uk Kim UINT16 PlatformClass; 1396*5ef50723SJung-uk Kim UINT16 Reserved; 1397*5ef50723SJung-uk Kim UINT64 MinimumLogLength; /* Minimum length for the event log area */ 1398*5ef50723SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 1399*5ef50723SJung-uk Kim UINT16 SpecRevision; 1400*5ef50723SJung-uk Kim UINT8 DeviceFlags; 1401*5ef50723SJung-uk Kim UINT8 InterruptFlags; 1402*5ef50723SJung-uk Kim UINT8 GpeNumber; 1403*5ef50723SJung-uk Kim UINT8 Reserved2[3]; 1404*5ef50723SJung-uk Kim UINT32 GlobalInterrupt; 1405*5ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 1406*5ef50723SJung-uk Kim UINT32 Reserved3; 1407*5ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS ConfigAddress; 1408*5ef50723SJung-uk Kim UINT8 Group; 1409*5ef50723SJung-uk Kim UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 1410*5ef50723SJung-uk Kim UINT8 Device; 1411*5ef50723SJung-uk Kim UINT8 Function; 1412*5ef50723SJung-uk Kim 1413*5ef50723SJung-uk Kim } ACPI_TABLE_TCPA_SERVER; 1414*5ef50723SJung-uk Kim 1415*5ef50723SJung-uk Kim /* Values for DeviceFlags above */ 1416*5ef50723SJung-uk Kim 1417*5ef50723SJung-uk Kim #define ACPI_TCPA_PCI_DEVICE (1) 1418*5ef50723SJung-uk Kim #define ACPI_TCPA_BUS_PNP (1<<1) 1419*5ef50723SJung-uk Kim #define ACPI_TCPA_ADDRESS_VALID (1<<2) 1420*5ef50723SJung-uk Kim 1421*5ef50723SJung-uk Kim /* Values for InterruptFlags above */ 1422*5ef50723SJung-uk Kim 1423*5ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_MODE (1) 1424*5ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 1425*5ef50723SJung-uk Kim #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 1426*5ef50723SJung-uk Kim #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 1427*5ef50723SJung-uk Kim 1428*5ef50723SJung-uk Kim 1429*5ef50723SJung-uk Kim /******************************************************************************* 1430*5ef50723SJung-uk Kim * 1431*5ef50723SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 1432*5ef50723SJung-uk Kim * Version 4 1433*5ef50723SJung-uk Kim * 1434*5ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1435*5ef50723SJung-uk Kim * December 19, 2014 1436*5ef50723SJung-uk Kim * 1437*5ef50723SJung-uk Kim ******************************************************************************/ 1438*5ef50723SJung-uk Kim 1439*5ef50723SJung-uk Kim typedef struct acpi_table_tpm2 1440*5ef50723SJung-uk Kim { 1441*5ef50723SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1442*5ef50723SJung-uk Kim UINT16 PlatformClass; 1443*5ef50723SJung-uk Kim UINT16 Reserved; 1444*5ef50723SJung-uk Kim UINT64 ControlAddress; 1445*5ef50723SJung-uk Kim UINT32 StartMethod; 1446*5ef50723SJung-uk Kim 1447*5ef50723SJung-uk Kim /* Platform-specific data follows */ 1448*5ef50723SJung-uk Kim 1449*5ef50723SJung-uk Kim } ACPI_TABLE_TPM2; 1450*5ef50723SJung-uk Kim 1451*5ef50723SJung-uk Kim /* Values for StartMethod above */ 1452*5ef50723SJung-uk Kim 1453*5ef50723SJung-uk Kim #define ACPI_TPM2_NOT_ALLOWED 0 1454*5ef50723SJung-uk Kim #define ACPI_TPM2_START_METHOD 2 1455*5ef50723SJung-uk Kim #define ACPI_TPM2_MEMORY_MAPPED 6 1456*5ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER 7 1457*5ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 1458d6dd1baeSJung-uk Kim 1459d6dd1baeSJung-uk Kim 1460d6dd1baeSJung-uk Kim /******************************************************************************* 1461d6dd1baeSJung-uk Kim * 1462d6dd1baeSJung-uk Kim * UEFI - UEFI Boot optimization Table 1463d6dd1baeSJung-uk Kim * Version 1 1464d6dd1baeSJung-uk Kim * 1465d6dd1baeSJung-uk Kim * Conforms to "Unified Extensible Firmware Interface Specification", 1466d6dd1baeSJung-uk Kim * Version 2.3, May 8, 2009 1467d6dd1baeSJung-uk Kim * 1468d6dd1baeSJung-uk Kim ******************************************************************************/ 1469d6dd1baeSJung-uk Kim 1470d6dd1baeSJung-uk Kim typedef struct acpi_table_uefi 1471d6dd1baeSJung-uk Kim { 1472d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1473d6dd1baeSJung-uk Kim UINT8 Identifier[16]; /* UUID identifier */ 1474d6dd1baeSJung-uk Kim UINT16 DataOffset; /* Offset of remaining data in table */ 1475d6dd1baeSJung-uk Kim 1476d6dd1baeSJung-uk Kim } ACPI_TABLE_UEFI; 1477d6dd1baeSJung-uk Kim 1478d6dd1baeSJung-uk Kim 1479d6dd1baeSJung-uk Kim /******************************************************************************* 1480d6dd1baeSJung-uk Kim * 14819c48c75eSJung-uk Kim * VRTC - Virtual Real Time Clock Table 14829c48c75eSJung-uk Kim * Version 1 14839c48c75eSJung-uk Kim * 14849c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 14859c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 14869c48c75eSJung-uk Kim * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 14879c48c75eSJung-uk Kim * 14889c48c75eSJung-uk Kim ******************************************************************************/ 14899c48c75eSJung-uk Kim 14909c48c75eSJung-uk Kim typedef struct acpi_table_vrtc 14919c48c75eSJung-uk Kim { 14929c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14939c48c75eSJung-uk Kim 14949c48c75eSJung-uk Kim } ACPI_TABLE_VRTC; 14959c48c75eSJung-uk Kim 14969c48c75eSJung-uk Kim /* VRTC entry */ 14979c48c75eSJung-uk Kim 14989c48c75eSJung-uk Kim typedef struct acpi_vrtc_entry 14999c48c75eSJung-uk Kim { 15009c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 15019c48c75eSJung-uk Kim UINT32 Irq; 15029c48c75eSJung-uk Kim 15039c48c75eSJung-uk Kim } ACPI_VRTC_ENTRY; 15049c48c75eSJung-uk Kim 15059c48c75eSJung-uk Kim 15069c48c75eSJung-uk Kim /******************************************************************************* 15079c48c75eSJung-uk Kim * 1508d6dd1baeSJung-uk Kim * WAET - Windows ACPI Emulated devices Table 1509d6dd1baeSJung-uk Kim * Version 1 1510d6dd1baeSJung-uk Kim * 1511d6dd1baeSJung-uk Kim * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1512d6dd1baeSJung-uk Kim * 1513d6dd1baeSJung-uk Kim ******************************************************************************/ 1514d6dd1baeSJung-uk Kim 1515d6dd1baeSJung-uk Kim typedef struct acpi_table_waet 1516d6dd1baeSJung-uk Kim { 1517d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1518d6dd1baeSJung-uk Kim UINT32 Flags; 1519d6dd1baeSJung-uk Kim 1520d6dd1baeSJung-uk Kim } ACPI_TABLE_WAET; 1521d6dd1baeSJung-uk Kim 1522d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1523d6dd1baeSJung-uk Kim 1524d6dd1baeSJung-uk Kim #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1525d6dd1baeSJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1526d6dd1baeSJung-uk Kim 1527d6dd1baeSJung-uk Kim 1528d6dd1baeSJung-uk Kim /******************************************************************************* 1529d6dd1baeSJung-uk Kim * 1530d6dd1baeSJung-uk Kim * WDAT - Watchdog Action Table 1531d6dd1baeSJung-uk Kim * Version 1 1532d6dd1baeSJung-uk Kim * 1533d6dd1baeSJung-uk Kim * Conforms to "Hardware Watchdog Timers Design Specification", 1534d6dd1baeSJung-uk Kim * Copyright 2006 Microsoft Corporation. 1535d6dd1baeSJung-uk Kim * 1536d6dd1baeSJung-uk Kim ******************************************************************************/ 1537d6dd1baeSJung-uk Kim 1538d6dd1baeSJung-uk Kim typedef struct acpi_table_wdat 1539d6dd1baeSJung-uk Kim { 1540d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1541d6dd1baeSJung-uk Kim UINT32 HeaderLength; /* Watchdog Header Length */ 1542d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI Segment number */ 1543d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1544d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1545d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1546d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1547d6dd1baeSJung-uk Kim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1548d6dd1baeSJung-uk Kim UINT32 MaxCount; /* Maximum counter value supported */ 1549d6dd1baeSJung-uk Kim UINT32 MinCount; /* Minimum counter value */ 1550d6dd1baeSJung-uk Kim UINT8 Flags; 1551d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 1552d6dd1baeSJung-uk Kim UINT32 Entries; /* Number of watchdog entries that follow */ 1553d6dd1baeSJung-uk Kim 1554d6dd1baeSJung-uk Kim } ACPI_TABLE_WDAT; 1555d6dd1baeSJung-uk Kim 1556d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1557d6dd1baeSJung-uk Kim 1558d6dd1baeSJung-uk Kim #define ACPI_WDAT_ENABLED (1) 1559d6dd1baeSJung-uk Kim #define ACPI_WDAT_STOPPED 0x80 1560d6dd1baeSJung-uk Kim 1561d6dd1baeSJung-uk Kim 1562d6dd1baeSJung-uk Kim /* WDAT Instruction Entries (actions) */ 1563d6dd1baeSJung-uk Kim 1564d6dd1baeSJung-uk Kim typedef struct acpi_wdat_entry 1565d6dd1baeSJung-uk Kim { 1566d6dd1baeSJung-uk Kim UINT8 Action; 1567d6dd1baeSJung-uk Kim UINT8 Instruction; 1568d6dd1baeSJung-uk Kim UINT16 Reserved; 1569d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS RegisterRegion; 1570d6dd1baeSJung-uk Kim UINT32 Value; /* Value used with Read/Write register */ 1571d6dd1baeSJung-uk Kim UINT32 Mask; /* Bitmask required for this register instruction */ 1572d6dd1baeSJung-uk Kim 1573d6dd1baeSJung-uk Kim } ACPI_WDAT_ENTRY; 1574d6dd1baeSJung-uk Kim 1575d6dd1baeSJung-uk Kim /* Values for Action field above */ 1576d6dd1baeSJung-uk Kim 1577d6dd1baeSJung-uk Kim enum AcpiWdatActions 1578d6dd1baeSJung-uk Kim { 1579d6dd1baeSJung-uk Kim ACPI_WDAT_RESET = 1, 1580d6dd1baeSJung-uk Kim ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1581d6dd1baeSJung-uk Kim ACPI_WDAT_GET_COUNTDOWN = 5, 1582d6dd1baeSJung-uk Kim ACPI_WDAT_SET_COUNTDOWN = 6, 1583d6dd1baeSJung-uk Kim ACPI_WDAT_GET_RUNNING_STATE = 8, 1584d6dd1baeSJung-uk Kim ACPI_WDAT_SET_RUNNING_STATE = 9, 1585d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STOPPED_STATE = 10, 1586d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STOPPED_STATE = 11, 1587d6dd1baeSJung-uk Kim ACPI_WDAT_GET_REBOOT = 16, 1588d6dd1baeSJung-uk Kim ACPI_WDAT_SET_REBOOT = 17, 1589d6dd1baeSJung-uk Kim ACPI_WDAT_GET_SHUTDOWN = 18, 1590d6dd1baeSJung-uk Kim ACPI_WDAT_SET_SHUTDOWN = 19, 1591d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STATUS = 32, 1592d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STATUS = 33, 1593d6dd1baeSJung-uk Kim ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1594d6dd1baeSJung-uk Kim }; 1595d6dd1baeSJung-uk Kim 1596d6dd1baeSJung-uk Kim /* Values for Instruction field above */ 1597d6dd1baeSJung-uk Kim 1598d6dd1baeSJung-uk Kim enum AcpiWdatInstructions 1599d6dd1baeSJung-uk Kim { 1600d6dd1baeSJung-uk Kim ACPI_WDAT_READ_VALUE = 0, 1601d6dd1baeSJung-uk Kim ACPI_WDAT_READ_COUNTDOWN = 1, 1602d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_VALUE = 2, 1603d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_COUNTDOWN = 3, 1604d6dd1baeSJung-uk Kim ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1605d6dd1baeSJung-uk Kim ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1606d6dd1baeSJung-uk Kim }; 1607d6dd1baeSJung-uk Kim 1608d6dd1baeSJung-uk Kim 1609d6dd1baeSJung-uk Kim /******************************************************************************* 1610d6dd1baeSJung-uk Kim * 1611a88e22b7SJung-uk Kim * WDDT - Watchdog Descriptor Table 1612a88e22b7SJung-uk Kim * Version 1 1613a88e22b7SJung-uk Kim * 1614a88e22b7SJung-uk Kim * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1615a88e22b7SJung-uk Kim * Version 001, September 2002 1616a88e22b7SJung-uk Kim * 1617a88e22b7SJung-uk Kim ******************************************************************************/ 1618a88e22b7SJung-uk Kim 1619a88e22b7SJung-uk Kim typedef struct acpi_table_wddt 1620a88e22b7SJung-uk Kim { 1621a88e22b7SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1622a88e22b7SJung-uk Kim UINT16 SpecVersion; 1623a88e22b7SJung-uk Kim UINT16 TableVersion; 1624a88e22b7SJung-uk Kim UINT16 PciVendorId; 1625a88e22b7SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 1626a88e22b7SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1627a88e22b7SJung-uk Kim UINT16 MinCount; /* Minimum counter value supported */ 1628a88e22b7SJung-uk Kim UINT16 Period; 1629a88e22b7SJung-uk Kim UINT16 Status; 1630a88e22b7SJung-uk Kim UINT16 Capability; 1631a88e22b7SJung-uk Kim 1632a88e22b7SJung-uk Kim } ACPI_TABLE_WDDT; 1633a88e22b7SJung-uk Kim 1634a88e22b7SJung-uk Kim /* Flags for Status field above */ 1635a88e22b7SJung-uk Kim 1636a88e22b7SJung-uk Kim #define ACPI_WDDT_AVAILABLE (1) 1637a88e22b7SJung-uk Kim #define ACPI_WDDT_ACTIVE (1<<1) 1638a88e22b7SJung-uk Kim #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1639a88e22b7SJung-uk Kim #define ACPI_WDDT_USER_RESET (1<<11) 1640a88e22b7SJung-uk Kim #define ACPI_WDDT_WDT_RESET (1<<12) 1641a88e22b7SJung-uk Kim #define ACPI_WDDT_POWER_FAIL (1<<13) 1642a88e22b7SJung-uk Kim #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1643a88e22b7SJung-uk Kim 1644a88e22b7SJung-uk Kim /* Flags for Capability field above */ 1645a88e22b7SJung-uk Kim 1646a88e22b7SJung-uk Kim #define ACPI_WDDT_AUTO_RESET (1) 1647a88e22b7SJung-uk Kim #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1648a88e22b7SJung-uk Kim 1649a88e22b7SJung-uk Kim 1650a88e22b7SJung-uk Kim /******************************************************************************* 1651a88e22b7SJung-uk Kim * 1652d6dd1baeSJung-uk Kim * WDRT - Watchdog Resource Table 1653d6dd1baeSJung-uk Kim * Version 1 1654d6dd1baeSJung-uk Kim * 1655d6dd1baeSJung-uk Kim * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1656d6dd1baeSJung-uk Kim * Version 1.01, August 28, 2006 1657d6dd1baeSJung-uk Kim * 1658d6dd1baeSJung-uk Kim ******************************************************************************/ 1659d6dd1baeSJung-uk Kim 1660d6dd1baeSJung-uk Kim typedef struct acpi_table_wdrt 1661d6dd1baeSJung-uk Kim { 1662d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1663d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1664d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS CountRegister; 1665d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1666d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1667d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1668d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1669d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1670d6dd1baeSJung-uk Kim UINT8 PciSegment; /* PCI Segment number */ 1671d6dd1baeSJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1672d6dd1baeSJung-uk Kim UINT8 Units; 1673d6dd1baeSJung-uk Kim 1674d6dd1baeSJung-uk Kim } ACPI_TABLE_WDRT; 1675d6dd1baeSJung-uk Kim 1676d6dd1baeSJung-uk Kim 1677d6dd1baeSJung-uk Kim /* Reset to default packing */ 1678d6dd1baeSJung-uk Kim 1679d6dd1baeSJung-uk Kim #pragma pack() 1680d6dd1baeSJung-uk Kim 1681d6dd1baeSJung-uk Kim #endif /* __ACTBL2_H__ */ 1682