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