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 7*0d84335fSJung-uk Kim /****************************************************************************** 8*0d84335fSJung-uk Kim * 9*0d84335fSJung-uk Kim * 1. Copyright Notice 10*0d84335fSJung-uk Kim * 11*0d84335fSJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp. 12d6dd1baeSJung-uk Kim * All rights reserved. 13d6dd1baeSJung-uk Kim * 14*0d84335fSJung-uk Kim * 2. License 15*0d84335fSJung-uk Kim * 16*0d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 17*0d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 18*0d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 19*0d84335fSJung-uk Kim * property rights. 20*0d84335fSJung-uk Kim * 21*0d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22*0d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 23*0d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24*0d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 25*0d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 26*0d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 27*0d84335fSJung-uk Kim * 28*0d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29*0d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 30*0d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 31*0d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 32*0d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 33*0d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 34*0d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 35*0d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 36*0d84335fSJung-uk Kim * 37*0d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 38*0d84335fSJung-uk Kim * conditions are met: 39*0d84335fSJung-uk Kim * 40*0d84335fSJung-uk Kim * 3. Conditions 41*0d84335fSJung-uk Kim * 42*0d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43*0d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 44*0d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 45*0d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 46*0d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 47*0d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 48*0d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 49*0d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 50*0d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 51*0d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 52*0d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 53*0d84335fSJung-uk Kim * 54*0d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55*0d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 56*0d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 57*0d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 58*0d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 59*0d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 60*0d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 61*0d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 62*0d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 63*0d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 64*0d84335fSJung-uk Kim * make. 65*0d84335fSJung-uk Kim * 66*0d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 67*0d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 68*0d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 69*0d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 70*0d84335fSJung-uk Kim * distribution. 71*0d84335fSJung-uk Kim * 72*0d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 73*0d84335fSJung-uk Kim * Intel Code. 74*0d84335fSJung-uk Kim * 75*0d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76*0d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 77*0d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 78*0d84335fSJung-uk Kim * without prior written authorization from Intel. 79*0d84335fSJung-uk Kim * 80*0d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 81*0d84335fSJung-uk Kim * 82*0d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83*0d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84*0d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85*0d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86*0d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87*0d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88*0d84335fSJung-uk Kim * PARTICULAR PURPOSE. 89*0d84335fSJung-uk Kim * 90*0d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91*0d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92*0d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93*0d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94*0d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95*0d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96*0d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97*0d84335fSJung-uk Kim * LIMITED REMEDY. 98*0d84335fSJung-uk Kim * 99*0d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 100*0d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 101*0d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 102*0d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 103*0d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 104*0d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 105*0d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 106*0d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 107*0d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108*0d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 109*0d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 110*0d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 111*0d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 112*0d84335fSJung-uk Kim * such license, approval or letter. 113*0d84335fSJung-uk Kim * 114*0d84335fSJung-uk Kim ***************************************************************************** 115*0d84335fSJung-uk Kim * 116*0d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 117*0d84335fSJung-uk Kim * following license: 118*0d84335fSJung-uk Kim * 119d244b227SJung-uk Kim * Redistribution and use in source and binary forms, with or without 120d244b227SJung-uk Kim * modification, are permitted provided that the following conditions 121d244b227SJung-uk Kim * are met: 122d244b227SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 123d244b227SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 124d244b227SJung-uk Kim * without modification. 125d244b227SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126d244b227SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 127d244b227SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 128d244b227SJung-uk Kim * including a substantially similar Disclaimer requirement for further 129d244b227SJung-uk Kim * binary redistribution. 130d244b227SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 131d244b227SJung-uk Kim * of any contributors may be used to endorse or promote products derived 132d244b227SJung-uk Kim * from this software without specific prior written permission. 133d6dd1baeSJung-uk Kim * 134*0d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135*0d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136*0d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137*0d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138*0d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139*0d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140*0d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141*0d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142*0d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143*0d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144*0d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145*0d84335fSJung-uk Kim * 146*0d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 147d244b227SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 148d244b227SJung-uk Kim * Software Foundation. 149d6dd1baeSJung-uk Kim * 150*0d84335fSJung-uk Kim *****************************************************************************/ 151d6dd1baeSJung-uk Kim 152d6dd1baeSJung-uk Kim #ifndef __ACTBL2_H__ 153d6dd1baeSJung-uk Kim #define __ACTBL2_H__ 154d6dd1baeSJung-uk Kim 155d6dd1baeSJung-uk Kim 156d6dd1baeSJung-uk Kim /******************************************************************************* 157d6dd1baeSJung-uk Kim * 158d6dd1baeSJung-uk Kim * Additional ACPI Tables (2) 159d6dd1baeSJung-uk Kim * 160d6dd1baeSJung-uk Kim * These tables are not consumed directly by the ACPICA subsystem, but are 161d6dd1baeSJung-uk Kim * included here to support device drivers and the AML disassembler. 162d6dd1baeSJung-uk Kim * 1635ef50723SJung-uk Kim * Generally, the tables in this file are defined by third-party specifications, 1645ef50723SJung-uk Kim * and are not defined directly by the ACPI specification itself. 165d6dd1baeSJung-uk Kim * 166d6dd1baeSJung-uk Kim ******************************************************************************/ 167d6dd1baeSJung-uk Kim 168d6dd1baeSJung-uk Kim 169d6dd1baeSJung-uk Kim /* 170d6dd1baeSJung-uk Kim * Values for description table header signatures for tables defined in this 171d6dd1baeSJung-uk Kim * file. Useful because they make it more difficult to inadvertently type in 172d6dd1baeSJung-uk Kim * the wrong signature. 173d6dd1baeSJung-uk Kim */ 174d6dd1baeSJung-uk Kim #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 175d6dd1baeSJung-uk Kim #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 1761df130f1SJung-uk Kim #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 1771df130f1SJung-uk Kim #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 178d6dd1baeSJung-uk Kim #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 179d6dd1baeSJung-uk Kim #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 180d6dd1baeSJung-uk Kim #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 181d6dd1baeSJung-uk Kim #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 182a371a5fdSJung-uk Kim #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ 183d6dd1baeSJung-uk Kim #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 184313a0c13SJung-uk Kim #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 185d6dd1baeSJung-uk Kim #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 186ca3cf4faSJung-uk Kim #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 1877cf3e94aSJung-uk Kim #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 1889c48c75eSJung-uk Kim #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 189d6dd1baeSJung-uk Kim #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 190d6dd1baeSJung-uk Kim #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 191d6dd1baeSJung-uk Kim #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 192d6dd1baeSJung-uk Kim #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 1935ef50723SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 194d6dd1baeSJung-uk Kim #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 1959c48c75eSJung-uk Kim #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 196d6dd1baeSJung-uk Kim #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 197d6dd1baeSJung-uk Kim #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 198a88e22b7SJung-uk Kim #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 199d6dd1baeSJung-uk Kim #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 200*0d84335fSJung-uk Kim #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 201d6dd1baeSJung-uk Kim 202a88e22b7SJung-uk Kim #ifdef ACPI_UNDEFINED_TABLES 203a88e22b7SJung-uk Kim /* 204a88e22b7SJung-uk Kim * These tables have been seen in the field, but no definition has been found 205a88e22b7SJung-uk Kim */ 206a88e22b7SJung-uk Kim #define ACPI_SIG_ATKG "ATKG" 207a88e22b7SJung-uk Kim #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 208a88e22b7SJung-uk Kim #define ACPI_SIG_IEIT "IEIT" 209a88e22b7SJung-uk Kim #endif 210d6dd1baeSJung-uk Kim 211d6dd1baeSJung-uk Kim /* 212d6dd1baeSJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 213d6dd1baeSJung-uk Kim * the tables are provided by the system BIOS. 214d6dd1baeSJung-uk Kim */ 215d6dd1baeSJung-uk Kim #pragma pack(1) 216d6dd1baeSJung-uk Kim 217d6dd1baeSJung-uk Kim /* 2181df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 2191df130f1SJung-uk Kim * 2201df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 2211df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 2221df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 2231df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 2241df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 2251df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 2261df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 227d6dd1baeSJung-uk Kim */ 228d6dd1baeSJung-uk Kim 229d6dd1baeSJung-uk Kim 230d6dd1baeSJung-uk Kim /******************************************************************************* 231d6dd1baeSJung-uk Kim * 232d6dd1baeSJung-uk Kim * ASF - Alert Standard Format table (Signature "ASF!") 233d6dd1baeSJung-uk Kim * Revision 0x10 234d6dd1baeSJung-uk Kim * 235d6dd1baeSJung-uk Kim * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 236d6dd1baeSJung-uk Kim * 237d6dd1baeSJung-uk Kim ******************************************************************************/ 238d6dd1baeSJung-uk Kim 239d6dd1baeSJung-uk Kim typedef struct acpi_table_asf 240d6dd1baeSJung-uk Kim { 241d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 242d6dd1baeSJung-uk Kim 243d6dd1baeSJung-uk Kim } ACPI_TABLE_ASF; 244d6dd1baeSJung-uk Kim 245d6dd1baeSJung-uk Kim 246d6dd1baeSJung-uk Kim /* ASF subtable header */ 247d6dd1baeSJung-uk Kim 248d6dd1baeSJung-uk Kim typedef struct acpi_asf_header 249d6dd1baeSJung-uk Kim { 250d6dd1baeSJung-uk Kim UINT8 Type; 251d6dd1baeSJung-uk Kim UINT8 Reserved; 252d6dd1baeSJung-uk Kim UINT16 Length; 253d6dd1baeSJung-uk Kim 254d6dd1baeSJung-uk Kim } ACPI_ASF_HEADER; 255d6dd1baeSJung-uk Kim 256d6dd1baeSJung-uk Kim 257d6dd1baeSJung-uk Kim /* Values for Type field above */ 258d6dd1baeSJung-uk Kim 259d6dd1baeSJung-uk Kim enum AcpiAsfType 260d6dd1baeSJung-uk Kim { 261d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_INFO = 0, 262d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ALERT = 1, 263d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_CONTROL = 2, 264d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_BOOT = 3, 265d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ADDRESS = 4, 266d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_RESERVED = 5 267d6dd1baeSJung-uk Kim }; 268d6dd1baeSJung-uk Kim 269d6dd1baeSJung-uk Kim /* 270d6dd1baeSJung-uk Kim * ASF subtables 271d6dd1baeSJung-uk Kim */ 272d6dd1baeSJung-uk Kim 273d6dd1baeSJung-uk Kim /* 0: ASF Information */ 274d6dd1baeSJung-uk Kim 275d6dd1baeSJung-uk Kim typedef struct acpi_asf_info 276d6dd1baeSJung-uk Kim { 277d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 278d6dd1baeSJung-uk Kim UINT8 MinResetValue; 279d6dd1baeSJung-uk Kim UINT8 MinPollInterval; 280d6dd1baeSJung-uk Kim UINT16 SystemId; 281d6dd1baeSJung-uk Kim UINT32 MfgId; 282d6dd1baeSJung-uk Kim UINT8 Flags; 283d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 284d6dd1baeSJung-uk Kim 285d6dd1baeSJung-uk Kim } ACPI_ASF_INFO; 286d6dd1baeSJung-uk Kim 287d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 288d6dd1baeSJung-uk Kim 289d6dd1baeSJung-uk Kim #define ACPI_ASF_SMBUS_PROTOCOLS (1) 290d6dd1baeSJung-uk Kim 291d6dd1baeSJung-uk Kim 292d6dd1baeSJung-uk Kim /* 1: ASF Alerts */ 293d6dd1baeSJung-uk Kim 294d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert 295d6dd1baeSJung-uk Kim { 296d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 297d6dd1baeSJung-uk Kim UINT8 AssertMask; 298d6dd1baeSJung-uk Kim UINT8 DeassertMask; 299d6dd1baeSJung-uk Kim UINT8 Alerts; 300d6dd1baeSJung-uk Kim UINT8 DataLength; 301d6dd1baeSJung-uk Kim 302d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT; 303d6dd1baeSJung-uk Kim 304d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert_data 305d6dd1baeSJung-uk Kim { 306d6dd1baeSJung-uk Kim UINT8 Address; 307d6dd1baeSJung-uk Kim UINT8 Command; 308d6dd1baeSJung-uk Kim UINT8 Mask; 309d6dd1baeSJung-uk Kim UINT8 Value; 310d6dd1baeSJung-uk Kim UINT8 SensorType; 311d6dd1baeSJung-uk Kim UINT8 Type; 312d6dd1baeSJung-uk Kim UINT8 Offset; 313d6dd1baeSJung-uk Kim UINT8 SourceType; 314d6dd1baeSJung-uk Kim UINT8 Severity; 315d6dd1baeSJung-uk Kim UINT8 SensorNumber; 316d6dd1baeSJung-uk Kim UINT8 Entity; 317d6dd1baeSJung-uk Kim UINT8 Instance; 318d6dd1baeSJung-uk Kim 319d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT_DATA; 320d6dd1baeSJung-uk Kim 321d6dd1baeSJung-uk Kim 322d6dd1baeSJung-uk Kim /* 2: ASF Remote Control */ 323d6dd1baeSJung-uk Kim 324d6dd1baeSJung-uk Kim typedef struct acpi_asf_remote 325d6dd1baeSJung-uk Kim { 326d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 327d6dd1baeSJung-uk Kim UINT8 Controls; 328d6dd1baeSJung-uk Kim UINT8 DataLength; 329d6dd1baeSJung-uk Kim UINT16 Reserved2; 330d6dd1baeSJung-uk Kim 331d6dd1baeSJung-uk Kim } ACPI_ASF_REMOTE; 332d6dd1baeSJung-uk Kim 333d6dd1baeSJung-uk Kim typedef struct acpi_asf_control_data 334d6dd1baeSJung-uk Kim { 335d6dd1baeSJung-uk Kim UINT8 Function; 336d6dd1baeSJung-uk Kim UINT8 Address; 337d6dd1baeSJung-uk Kim UINT8 Command; 338d6dd1baeSJung-uk Kim UINT8 Value; 339d6dd1baeSJung-uk Kim 340d6dd1baeSJung-uk Kim } ACPI_ASF_CONTROL_DATA; 341d6dd1baeSJung-uk Kim 342d6dd1baeSJung-uk Kim 343d6dd1baeSJung-uk Kim /* 3: ASF RMCP Boot Options */ 344d6dd1baeSJung-uk Kim 345d6dd1baeSJung-uk Kim typedef struct acpi_asf_rmcp 346d6dd1baeSJung-uk Kim { 347d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 348d6dd1baeSJung-uk Kim UINT8 Capabilities[7]; 349d6dd1baeSJung-uk Kim UINT8 CompletionCode; 350d6dd1baeSJung-uk Kim UINT32 EnterpriseId; 351d6dd1baeSJung-uk Kim UINT8 Command; 352d6dd1baeSJung-uk Kim UINT16 Parameter; 353d6dd1baeSJung-uk Kim UINT16 BootOptions; 354d6dd1baeSJung-uk Kim UINT16 OemParameters; 355d6dd1baeSJung-uk Kim 356d6dd1baeSJung-uk Kim } ACPI_ASF_RMCP; 357d6dd1baeSJung-uk Kim 358d6dd1baeSJung-uk Kim 359d6dd1baeSJung-uk Kim /* 4: ASF Address */ 360d6dd1baeSJung-uk Kim 361d6dd1baeSJung-uk Kim typedef struct acpi_asf_address 362d6dd1baeSJung-uk Kim { 363d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 364d6dd1baeSJung-uk Kim UINT8 EpromAddress; 365d6dd1baeSJung-uk Kim UINT8 Devices; 366d6dd1baeSJung-uk Kim 367d6dd1baeSJung-uk Kim } ACPI_ASF_ADDRESS; 368d6dd1baeSJung-uk Kim 369d6dd1baeSJung-uk Kim 370d6dd1baeSJung-uk Kim /******************************************************************************* 371d6dd1baeSJung-uk Kim * 372d6dd1baeSJung-uk Kim * BOOT - Simple Boot Flag Table 373d6dd1baeSJung-uk Kim * Version 1 374d6dd1baeSJung-uk Kim * 375d6dd1baeSJung-uk Kim * Conforms to the "Simple Boot Flag Specification", Version 2.1 376d6dd1baeSJung-uk Kim * 377d6dd1baeSJung-uk Kim ******************************************************************************/ 378d6dd1baeSJung-uk Kim 379d6dd1baeSJung-uk Kim typedef struct acpi_table_boot 380d6dd1baeSJung-uk Kim { 381d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 382d6dd1baeSJung-uk Kim UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 383d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 384d6dd1baeSJung-uk Kim 385d6dd1baeSJung-uk Kim } ACPI_TABLE_BOOT; 386d6dd1baeSJung-uk Kim 387d6dd1baeSJung-uk Kim 388d6dd1baeSJung-uk Kim /******************************************************************************* 389d6dd1baeSJung-uk Kim * 3901df130f1SJung-uk Kim * CSRT - Core System Resource Table 3911df130f1SJung-uk Kim * Version 0 3921df130f1SJung-uk Kim * 3931df130f1SJung-uk Kim * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 3941df130f1SJung-uk Kim * 3951df130f1SJung-uk Kim ******************************************************************************/ 3961df130f1SJung-uk Kim 3971df130f1SJung-uk Kim typedef struct acpi_table_csrt 3981df130f1SJung-uk Kim { 3991df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4001df130f1SJung-uk Kim 4011df130f1SJung-uk Kim } ACPI_TABLE_CSRT; 4021df130f1SJung-uk Kim 403efcc2a30SJung-uk Kim 4041df130f1SJung-uk Kim /* Resource Group subtable */ 4051df130f1SJung-uk Kim 4061df130f1SJung-uk Kim typedef struct acpi_csrt_group 4071df130f1SJung-uk Kim { 4081df130f1SJung-uk Kim UINT32 Length; 4091df130f1SJung-uk Kim UINT32 VendorId; 4101df130f1SJung-uk Kim UINT32 SubvendorId; 4111df130f1SJung-uk Kim UINT16 DeviceId; 4121df130f1SJung-uk Kim UINT16 SubdeviceId; 4131df130f1SJung-uk Kim UINT16 Revision; 4141df130f1SJung-uk Kim UINT16 Reserved; 415efcc2a30SJung-uk Kim UINT32 SharedInfoLength; 4161df130f1SJung-uk Kim 417efcc2a30SJung-uk Kim /* Shared data immediately follows (Length = SharedInfoLength) */ 4181df130f1SJung-uk Kim 4191df130f1SJung-uk Kim } ACPI_CSRT_GROUP; 4201df130f1SJung-uk Kim 421efcc2a30SJung-uk Kim /* Shared Info subtable */ 422efcc2a30SJung-uk Kim 423efcc2a30SJung-uk Kim typedef struct acpi_csrt_shared_info 424efcc2a30SJung-uk Kim { 425efcc2a30SJung-uk Kim UINT16 MajorVersion; 426efcc2a30SJung-uk Kim UINT16 MinorVersion; 427efcc2a30SJung-uk Kim UINT32 MmioBaseLow; 428efcc2a30SJung-uk Kim UINT32 MmioBaseHigh; 429efcc2a30SJung-uk Kim UINT32 GsiInterrupt; 430efcc2a30SJung-uk Kim UINT8 InterruptPolarity; 431efcc2a30SJung-uk Kim UINT8 InterruptMode; 432efcc2a30SJung-uk Kim UINT8 NumChannels; 433efcc2a30SJung-uk Kim UINT8 DmaAddressWidth; 434efcc2a30SJung-uk Kim UINT16 BaseRequestLine; 435efcc2a30SJung-uk Kim UINT16 NumHandshakeSignals; 436efcc2a30SJung-uk Kim UINT32 MaxBlockSize; 437efcc2a30SJung-uk Kim 438efcc2a30SJung-uk Kim /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 439efcc2a30SJung-uk Kim 440efcc2a30SJung-uk Kim } ACPI_CSRT_SHARED_INFO; 441efcc2a30SJung-uk Kim 4421df130f1SJung-uk Kim /* Resource Descriptor subtable */ 4431df130f1SJung-uk Kim 4441df130f1SJung-uk Kim typedef struct acpi_csrt_descriptor 4451df130f1SJung-uk Kim { 4461df130f1SJung-uk Kim UINT32 Length; 4471df130f1SJung-uk Kim UINT16 Type; 4481df130f1SJung-uk Kim UINT16 Subtype; 4491df130f1SJung-uk Kim UINT32 Uid; 4501df130f1SJung-uk Kim 4511df130f1SJung-uk Kim /* Resource-specific information immediately follows */ 4521df130f1SJung-uk Kim 4531df130f1SJung-uk Kim } ACPI_CSRT_DESCRIPTOR; 4541df130f1SJung-uk Kim 4551df130f1SJung-uk Kim 4561df130f1SJung-uk Kim /* Resource Types */ 4571df130f1SJung-uk Kim 4581df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 4591df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_TIMER 0x0002 4601df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_DMA 0x0003 4611df130f1SJung-uk Kim 4621df130f1SJung-uk Kim /* Resource Subtypes */ 4631df130f1SJung-uk Kim 4641df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_LINE 0x0000 4651df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 4661df130f1SJung-uk Kim #define ACPI_CSRT_TIMER 0x0000 4671df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CHANNEL 0x0000 4681df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CONTROLLER 0x0001 4691df130f1SJung-uk Kim 4701df130f1SJung-uk Kim 4711df130f1SJung-uk Kim /******************************************************************************* 4721df130f1SJung-uk Kim * 4731df130f1SJung-uk Kim * DBG2 - Debug Port Table 2 4741df130f1SJung-uk Kim * Version 0 (Both main table and subtables) 4751df130f1SJung-uk Kim * 476f8146b88SJung-uk Kim * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015 4771df130f1SJung-uk Kim * 4781df130f1SJung-uk Kim ******************************************************************************/ 4791df130f1SJung-uk Kim 4801df130f1SJung-uk Kim typedef struct acpi_table_dbg2 4811df130f1SJung-uk Kim { 4821df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4831df130f1SJung-uk Kim UINT32 InfoOffset; 4841df130f1SJung-uk Kim UINT32 InfoCount; 4851df130f1SJung-uk Kim 4861df130f1SJung-uk Kim } ACPI_TABLE_DBG2; 4871df130f1SJung-uk Kim 4881df130f1SJung-uk Kim 489313a0c13SJung-uk Kim typedef struct acpi_dbg2_header 490313a0c13SJung-uk Kim { 491313a0c13SJung-uk Kim UINT32 InfoOffset; 492313a0c13SJung-uk Kim UINT32 InfoCount; 493313a0c13SJung-uk Kim 494313a0c13SJung-uk Kim } ACPI_DBG2_HEADER; 495313a0c13SJung-uk Kim 496313a0c13SJung-uk Kim 4971df130f1SJung-uk Kim /* Debug Device Information Subtable */ 4981df130f1SJung-uk Kim 4991df130f1SJung-uk Kim typedef struct acpi_dbg2_device 5001df130f1SJung-uk Kim { 5011df130f1SJung-uk Kim UINT8 Revision; 5021df130f1SJung-uk Kim UINT16 Length; 5031df130f1SJung-uk Kim UINT8 RegisterCount; /* Number of BaseAddress registers */ 5041df130f1SJung-uk Kim UINT16 NamepathLength; 5051df130f1SJung-uk Kim UINT16 NamepathOffset; 5061df130f1SJung-uk Kim UINT16 OemDataLength; 5071df130f1SJung-uk Kim UINT16 OemDataOffset; 5081df130f1SJung-uk Kim UINT16 PortType; 5091df130f1SJung-uk Kim UINT16 PortSubtype; 5101df130f1SJung-uk Kim UINT16 Reserved; 5111df130f1SJung-uk Kim UINT16 BaseAddressOffset; 5121df130f1SJung-uk Kim UINT16 AddressSizeOffset; 5131df130f1SJung-uk Kim /* 5141df130f1SJung-uk Kim * Data that follows: 5151df130f1SJung-uk Kim * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 5161df130f1SJung-uk Kim * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 5171df130f1SJung-uk Kim * Namepath (required) - Null terminated string. Single dot if not supported. 5181df130f1SJung-uk Kim * OemData (optional) - Length is OemDataLength. 5191df130f1SJung-uk Kim */ 5201df130f1SJung-uk Kim } ACPI_DBG2_DEVICE; 5211df130f1SJung-uk Kim 5221df130f1SJung-uk Kim /* Types for PortType field above */ 5231df130f1SJung-uk Kim 5241df130f1SJung-uk Kim #define ACPI_DBG2_SERIAL_PORT 0x8000 5251df130f1SJung-uk Kim #define ACPI_DBG2_1394_PORT 0x8001 5261df130f1SJung-uk Kim #define ACPI_DBG2_USB_PORT 0x8002 5271df130f1SJung-uk Kim #define ACPI_DBG2_NET_PORT 0x8003 5281df130f1SJung-uk Kim 5291df130f1SJung-uk Kim /* Subtypes for PortSubtype field above */ 5301df130f1SJung-uk Kim 5311df130f1SJung-uk Kim #define ACPI_DBG2_16550_COMPATIBLE 0x0000 5321df130f1SJung-uk Kim #define ACPI_DBG2_16550_SUBSET 0x0001 533f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_PL011 0x0003 534f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 535f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 536f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_DCC 0x000F 537f8146b88SJung-uk Kim #define ACPI_DBG2_BCM2835 0x0010 5381df130f1SJung-uk Kim 5391df130f1SJung-uk Kim #define ACPI_DBG2_1394_STANDARD 0x0000 5401df130f1SJung-uk Kim 5411df130f1SJung-uk Kim #define ACPI_DBG2_USB_XHCI 0x0000 5421df130f1SJung-uk Kim #define ACPI_DBG2_USB_EHCI 0x0001 5431df130f1SJung-uk Kim 5441df130f1SJung-uk Kim 5451df130f1SJung-uk Kim /******************************************************************************* 5461df130f1SJung-uk Kim * 547d6dd1baeSJung-uk Kim * DBGP - Debug Port table 548d6dd1baeSJung-uk Kim * Version 1 549d6dd1baeSJung-uk Kim * 550d6dd1baeSJung-uk Kim * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 551d6dd1baeSJung-uk Kim * 552d6dd1baeSJung-uk Kim ******************************************************************************/ 553d6dd1baeSJung-uk Kim 554d6dd1baeSJung-uk Kim typedef struct acpi_table_dbgp 555d6dd1baeSJung-uk Kim { 556d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 557d6dd1baeSJung-uk Kim UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 558d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 559d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS DebugPort; 560d6dd1baeSJung-uk Kim 561d6dd1baeSJung-uk Kim } ACPI_TABLE_DBGP; 562d6dd1baeSJung-uk Kim 563d6dd1baeSJung-uk Kim 564d6dd1baeSJung-uk Kim /******************************************************************************* 565d6dd1baeSJung-uk Kim * 566d6dd1baeSJung-uk Kim * DMAR - DMA Remapping table 567d6dd1baeSJung-uk Kim * Version 1 568d6dd1baeSJung-uk Kim * 569d6dd1baeSJung-uk Kim * Conforms to "Intel Virtualization Technology for Directed I/O", 570f8146b88SJung-uk Kim * Version 2.3, October 2014 571d6dd1baeSJung-uk Kim * 572d6dd1baeSJung-uk Kim ******************************************************************************/ 573d6dd1baeSJung-uk Kim 574d6dd1baeSJung-uk Kim typedef struct acpi_table_dmar 575d6dd1baeSJung-uk Kim { 576d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 577d6dd1baeSJung-uk Kim UINT8 Width; /* Host Address Width */ 578d6dd1baeSJung-uk Kim UINT8 Flags; 579d6dd1baeSJung-uk Kim UINT8 Reserved[10]; 580d6dd1baeSJung-uk Kim 581d6dd1baeSJung-uk Kim } ACPI_TABLE_DMAR; 582d6dd1baeSJung-uk Kim 583d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 584d6dd1baeSJung-uk Kim 585d6dd1baeSJung-uk Kim #define ACPI_DMAR_INTR_REMAP (1) 586f8146b88SJung-uk Kim #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 587f8146b88SJung-uk Kim #define ACPI_DMAR_X2APIC_MODE (1<<2) 588d6dd1baeSJung-uk Kim 589d6dd1baeSJung-uk Kim 590d6dd1baeSJung-uk Kim /* DMAR subtable header */ 591d6dd1baeSJung-uk Kim 592d6dd1baeSJung-uk Kim typedef struct acpi_dmar_header 593d6dd1baeSJung-uk Kim { 594d6dd1baeSJung-uk Kim UINT16 Type; 595d6dd1baeSJung-uk Kim UINT16 Length; 596d6dd1baeSJung-uk Kim 597d6dd1baeSJung-uk Kim } ACPI_DMAR_HEADER; 598d6dd1baeSJung-uk Kim 599d6dd1baeSJung-uk Kim /* Values for subtable type in ACPI_DMAR_HEADER */ 600d6dd1baeSJung-uk Kim 601d6dd1baeSJung-uk Kim enum AcpiDmarType 602d6dd1baeSJung-uk Kim { 603d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 604d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 605313a0c13SJung-uk Kim ACPI_DMAR_TYPE_ROOT_ATS = 2, 606313a0c13SJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 607313a0c13SJung-uk Kim ACPI_DMAR_TYPE_NAMESPACE = 4, 608313a0c13SJung-uk Kim ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 609d6dd1baeSJung-uk Kim }; 610d6dd1baeSJung-uk Kim 611d6dd1baeSJung-uk Kim 612d6dd1baeSJung-uk Kim /* DMAR Device Scope structure */ 613d6dd1baeSJung-uk Kim 614d6dd1baeSJung-uk Kim typedef struct acpi_dmar_device_scope 615d6dd1baeSJung-uk Kim { 616d6dd1baeSJung-uk Kim UINT8 EntryType; 617d6dd1baeSJung-uk Kim UINT8 Length; 618d6dd1baeSJung-uk Kim UINT16 Reserved; 619d6dd1baeSJung-uk Kim UINT8 EnumerationId; 620d6dd1baeSJung-uk Kim UINT8 Bus; 621d6dd1baeSJung-uk Kim 622d6dd1baeSJung-uk Kim } ACPI_DMAR_DEVICE_SCOPE; 623d6dd1baeSJung-uk Kim 624313a0c13SJung-uk Kim /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 625d6dd1baeSJung-uk Kim 626d6dd1baeSJung-uk Kim enum AcpiDmarScopeType 627d6dd1baeSJung-uk Kim { 628d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 629d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 630d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 631d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 632d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_HPET = 4, 633313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 634313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 635d6dd1baeSJung-uk Kim }; 636d6dd1baeSJung-uk Kim 637d6dd1baeSJung-uk Kim typedef struct acpi_dmar_pci_path 638d6dd1baeSJung-uk Kim { 639d6dd1baeSJung-uk Kim UINT8 Device; 640d6dd1baeSJung-uk Kim UINT8 Function; 641d6dd1baeSJung-uk Kim 642d6dd1baeSJung-uk Kim } ACPI_DMAR_PCI_PATH; 643d6dd1baeSJung-uk Kim 644d6dd1baeSJung-uk Kim 645d6dd1baeSJung-uk Kim /* 646313a0c13SJung-uk Kim * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 647d6dd1baeSJung-uk Kim */ 648d6dd1baeSJung-uk Kim 649d6dd1baeSJung-uk Kim /* 0: Hardware Unit Definition */ 650d6dd1baeSJung-uk Kim 651d6dd1baeSJung-uk Kim typedef struct acpi_dmar_hardware_unit 652d6dd1baeSJung-uk Kim { 653d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 654d6dd1baeSJung-uk Kim UINT8 Flags; 655d6dd1baeSJung-uk Kim UINT8 Reserved; 656d6dd1baeSJung-uk Kim UINT16 Segment; 657d6dd1baeSJung-uk Kim UINT64 Address; /* Register Base Address */ 658d6dd1baeSJung-uk Kim 659d6dd1baeSJung-uk Kim } ACPI_DMAR_HARDWARE_UNIT; 660d6dd1baeSJung-uk Kim 661d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 662d6dd1baeSJung-uk Kim 663d6dd1baeSJung-uk Kim #define ACPI_DMAR_INCLUDE_ALL (1) 664d6dd1baeSJung-uk Kim 665d6dd1baeSJung-uk Kim 666d6dd1baeSJung-uk Kim /* 1: Reserved Memory Defininition */ 667d6dd1baeSJung-uk Kim 668d6dd1baeSJung-uk Kim typedef struct acpi_dmar_reserved_memory 669d6dd1baeSJung-uk Kim { 670d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 671d6dd1baeSJung-uk Kim UINT16 Reserved; 672d6dd1baeSJung-uk Kim UINT16 Segment; 673d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* 4K aligned base address */ 674d6dd1baeSJung-uk Kim UINT64 EndAddress; /* 4K aligned limit address */ 675d6dd1baeSJung-uk Kim 676d6dd1baeSJung-uk Kim } ACPI_DMAR_RESERVED_MEMORY; 677d6dd1baeSJung-uk Kim 678d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 679d6dd1baeSJung-uk Kim 680d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALLOW_ALL (1) 681d6dd1baeSJung-uk Kim 682d6dd1baeSJung-uk Kim 683d6dd1baeSJung-uk Kim /* 2: Root Port ATS Capability Reporting Structure */ 684d6dd1baeSJung-uk Kim 685d6dd1baeSJung-uk Kim typedef struct acpi_dmar_atsr 686d6dd1baeSJung-uk Kim { 687d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 688d6dd1baeSJung-uk Kim UINT8 Flags; 689d6dd1baeSJung-uk Kim UINT8 Reserved; 690d6dd1baeSJung-uk Kim UINT16 Segment; 691d6dd1baeSJung-uk Kim 692d6dd1baeSJung-uk Kim } ACPI_DMAR_ATSR; 693d6dd1baeSJung-uk Kim 694d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 695d6dd1baeSJung-uk Kim 696d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALL_PORTS (1) 697d6dd1baeSJung-uk Kim 698d6dd1baeSJung-uk Kim 699d6dd1baeSJung-uk Kim /* 3: Remapping Hardware Static Affinity Structure */ 700d6dd1baeSJung-uk Kim 701d6dd1baeSJung-uk Kim typedef struct acpi_dmar_rhsa 702d6dd1baeSJung-uk Kim { 703d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 704d6dd1baeSJung-uk Kim UINT32 Reserved; 705d6dd1baeSJung-uk Kim UINT64 BaseAddress; 706d6dd1baeSJung-uk Kim UINT32 ProximityDomain; 707d6dd1baeSJung-uk Kim 708d6dd1baeSJung-uk Kim } ACPI_DMAR_RHSA; 709d6dd1baeSJung-uk Kim 710d6dd1baeSJung-uk Kim 711313a0c13SJung-uk Kim /* 4: ACPI Namespace Device Declaration Structure */ 712313a0c13SJung-uk Kim 713313a0c13SJung-uk Kim typedef struct acpi_dmar_andd 714313a0c13SJung-uk Kim { 715313a0c13SJung-uk Kim ACPI_DMAR_HEADER Header; 716313a0c13SJung-uk Kim UINT8 Reserved[3]; 717313a0c13SJung-uk Kim UINT8 DeviceNumber; 718313a0c13SJung-uk Kim char DeviceName[1]; 719313a0c13SJung-uk Kim 720313a0c13SJung-uk Kim } ACPI_DMAR_ANDD; 721313a0c13SJung-uk Kim 722313a0c13SJung-uk Kim 723d6dd1baeSJung-uk Kim /******************************************************************************* 724d6dd1baeSJung-uk Kim * 725d6dd1baeSJung-uk Kim * HPET - High Precision Event Timer table 726d6dd1baeSJung-uk Kim * Version 1 727d6dd1baeSJung-uk Kim * 728d6dd1baeSJung-uk Kim * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 729d6dd1baeSJung-uk Kim * Version 1.0a, October 2004 730d6dd1baeSJung-uk Kim * 731d6dd1baeSJung-uk Kim ******************************************************************************/ 732d6dd1baeSJung-uk Kim 733d6dd1baeSJung-uk Kim typedef struct acpi_table_hpet 734d6dd1baeSJung-uk Kim { 735d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 736d6dd1baeSJung-uk Kim UINT32 Id; /* Hardware ID of event timer block */ 737d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 738d6dd1baeSJung-uk Kim UINT8 Sequence; /* HPET sequence number */ 739d6dd1baeSJung-uk Kim UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 740d6dd1baeSJung-uk Kim UINT8 Flags; 741d6dd1baeSJung-uk Kim 742d6dd1baeSJung-uk Kim } ACPI_TABLE_HPET; 743d6dd1baeSJung-uk Kim 744d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 745d6dd1baeSJung-uk Kim 746d6dd1baeSJung-uk Kim #define ACPI_HPET_PAGE_PROTECT_MASK (3) 747d6dd1baeSJung-uk Kim 748d6dd1baeSJung-uk Kim /* Values for Page Protect flags */ 749d6dd1baeSJung-uk Kim 750d6dd1baeSJung-uk Kim enum AcpiHpetPageProtect 751d6dd1baeSJung-uk Kim { 752d6dd1baeSJung-uk Kim ACPI_HPET_NO_PAGE_PROTECT = 0, 753d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT4 = 1, 754d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT64 = 2 755d6dd1baeSJung-uk Kim }; 756d6dd1baeSJung-uk Kim 757d6dd1baeSJung-uk Kim 758d6dd1baeSJung-uk Kim /******************************************************************************* 759d6dd1baeSJung-uk Kim * 760d6dd1baeSJung-uk Kim * IBFT - Boot Firmware Table 761d6dd1baeSJung-uk Kim * Version 1 762d6dd1baeSJung-uk Kim * 763d6dd1baeSJung-uk Kim * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 764d6dd1baeSJung-uk Kim * Specification", Version 1.01, March 1, 2007 765d6dd1baeSJung-uk Kim * 766d6dd1baeSJung-uk Kim * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 767d6dd1baeSJung-uk Kim * Therefore, it is not currently supported by the disassembler. 768d6dd1baeSJung-uk Kim * 769d6dd1baeSJung-uk Kim ******************************************************************************/ 770d6dd1baeSJung-uk Kim 771d6dd1baeSJung-uk Kim typedef struct acpi_table_ibft 772d6dd1baeSJung-uk Kim { 773d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 774d6dd1baeSJung-uk Kim UINT8 Reserved[12]; 775d6dd1baeSJung-uk Kim 776d6dd1baeSJung-uk Kim } ACPI_TABLE_IBFT; 777d6dd1baeSJung-uk Kim 778d6dd1baeSJung-uk Kim 779d6dd1baeSJung-uk Kim /* IBFT common subtable header */ 780d6dd1baeSJung-uk Kim 781d6dd1baeSJung-uk Kim typedef struct acpi_ibft_header 782d6dd1baeSJung-uk Kim { 783d6dd1baeSJung-uk Kim UINT8 Type; 784d6dd1baeSJung-uk Kim UINT8 Version; 785d6dd1baeSJung-uk Kim UINT16 Length; 786d6dd1baeSJung-uk Kim UINT8 Index; 787d6dd1baeSJung-uk Kim UINT8 Flags; 788d6dd1baeSJung-uk Kim 789d6dd1baeSJung-uk Kim } ACPI_IBFT_HEADER; 790d6dd1baeSJung-uk Kim 791d6dd1baeSJung-uk Kim /* Values for Type field above */ 792d6dd1baeSJung-uk Kim 793d6dd1baeSJung-uk Kim enum AcpiIbftType 794d6dd1baeSJung-uk Kim { 795d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NOT_USED = 0, 796d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_CONTROL = 1, 797d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_INITIATOR = 2, 798d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NIC = 3, 799d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_TARGET = 4, 800d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_EXTENSIONS = 5, 801d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 802d6dd1baeSJung-uk Kim }; 803d6dd1baeSJung-uk Kim 804d6dd1baeSJung-uk Kim 805d6dd1baeSJung-uk Kim /* IBFT subtables */ 806d6dd1baeSJung-uk Kim 807d6dd1baeSJung-uk Kim typedef struct acpi_ibft_control 808d6dd1baeSJung-uk Kim { 809d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 810d6dd1baeSJung-uk Kim UINT16 Extensions; 811d6dd1baeSJung-uk Kim UINT16 InitiatorOffset; 812d6dd1baeSJung-uk Kim UINT16 Nic0Offset; 813d6dd1baeSJung-uk Kim UINT16 Target0Offset; 814d6dd1baeSJung-uk Kim UINT16 Nic1Offset; 815d6dd1baeSJung-uk Kim UINT16 Target1Offset; 816d6dd1baeSJung-uk Kim 817d6dd1baeSJung-uk Kim } ACPI_IBFT_CONTROL; 818d6dd1baeSJung-uk Kim 819d6dd1baeSJung-uk Kim typedef struct acpi_ibft_initiator 820d6dd1baeSJung-uk Kim { 821d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 822d6dd1baeSJung-uk Kim UINT8 SnsServer[16]; 823d6dd1baeSJung-uk Kim UINT8 SlpServer[16]; 824d6dd1baeSJung-uk Kim UINT8 PrimaryServer[16]; 825d6dd1baeSJung-uk Kim UINT8 SecondaryServer[16]; 826d6dd1baeSJung-uk Kim UINT16 NameLength; 827d6dd1baeSJung-uk Kim UINT16 NameOffset; 828d6dd1baeSJung-uk Kim 829d6dd1baeSJung-uk Kim } ACPI_IBFT_INITIATOR; 830d6dd1baeSJung-uk Kim 831d6dd1baeSJung-uk Kim typedef struct acpi_ibft_nic 832d6dd1baeSJung-uk Kim { 833d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 834d6dd1baeSJung-uk Kim UINT8 IpAddress[16]; 835d6dd1baeSJung-uk Kim UINT8 SubnetMaskPrefix; 836d6dd1baeSJung-uk Kim UINT8 Origin; 837d6dd1baeSJung-uk Kim UINT8 Gateway[16]; 838d6dd1baeSJung-uk Kim UINT8 PrimaryDns[16]; 839d6dd1baeSJung-uk Kim UINT8 SecondaryDns[16]; 840d6dd1baeSJung-uk Kim UINT8 Dhcp[16]; 841d6dd1baeSJung-uk Kim UINT16 Vlan; 842d6dd1baeSJung-uk Kim UINT8 MacAddress[6]; 843d6dd1baeSJung-uk Kim UINT16 PciAddress; 844d6dd1baeSJung-uk Kim UINT16 NameLength; 845d6dd1baeSJung-uk Kim UINT16 NameOffset; 846d6dd1baeSJung-uk Kim 847d6dd1baeSJung-uk Kim } ACPI_IBFT_NIC; 848d6dd1baeSJung-uk Kim 849d6dd1baeSJung-uk Kim typedef struct acpi_ibft_target 850d6dd1baeSJung-uk Kim { 851d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 852d6dd1baeSJung-uk Kim UINT8 TargetIpAddress[16]; 853d6dd1baeSJung-uk Kim UINT16 TargetIpSocket; 854d6dd1baeSJung-uk Kim UINT8 TargetBootLun[8]; 855d6dd1baeSJung-uk Kim UINT8 ChapType; 856d6dd1baeSJung-uk Kim UINT8 NicAssociation; 857d6dd1baeSJung-uk Kim UINT16 TargetNameLength; 858d6dd1baeSJung-uk Kim UINT16 TargetNameOffset; 859d6dd1baeSJung-uk Kim UINT16 ChapNameLength; 860d6dd1baeSJung-uk Kim UINT16 ChapNameOffset; 861d6dd1baeSJung-uk Kim UINT16 ChapSecretLength; 862d6dd1baeSJung-uk Kim UINT16 ChapSecretOffset; 863d6dd1baeSJung-uk Kim UINT16 ReverseChapNameLength; 864d6dd1baeSJung-uk Kim UINT16 ReverseChapNameOffset; 865d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretLength; 866d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretOffset; 867d6dd1baeSJung-uk Kim 868d6dd1baeSJung-uk Kim } ACPI_IBFT_TARGET; 869d6dd1baeSJung-uk Kim 870d6dd1baeSJung-uk Kim 871d6dd1baeSJung-uk Kim /******************************************************************************* 872d6dd1baeSJung-uk Kim * 873a371a5fdSJung-uk Kim * IORT - IO Remapping Table 874a371a5fdSJung-uk Kim * 875a371a5fdSJung-uk Kim * Conforms to "IO Remapping Table System Software on ARM Platforms", 876f8146b88SJung-uk Kim * Document number: ARM DEN 0049B, October 2015 877a371a5fdSJung-uk Kim * 878a371a5fdSJung-uk Kim ******************************************************************************/ 879a371a5fdSJung-uk Kim 880a371a5fdSJung-uk Kim typedef struct acpi_table_iort 881a371a5fdSJung-uk Kim { 882a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; 883a371a5fdSJung-uk Kim UINT32 NodeCount; 884a371a5fdSJung-uk Kim UINT32 NodeOffset; 885a371a5fdSJung-uk Kim UINT32 Reserved; 886a371a5fdSJung-uk Kim 887a371a5fdSJung-uk Kim } ACPI_TABLE_IORT; 888a371a5fdSJung-uk Kim 889a371a5fdSJung-uk Kim 890a371a5fdSJung-uk Kim /* 891a371a5fdSJung-uk Kim * IORT subtables 892a371a5fdSJung-uk Kim */ 893a371a5fdSJung-uk Kim typedef struct acpi_iort_node 894a371a5fdSJung-uk Kim { 895a371a5fdSJung-uk Kim UINT8 Type; 896a371a5fdSJung-uk Kim UINT16 Length; 897a371a5fdSJung-uk Kim UINT8 Revision; 898a371a5fdSJung-uk Kim UINT32 Reserved; 899a371a5fdSJung-uk Kim UINT32 MappingCount; 900a371a5fdSJung-uk Kim UINT32 MappingOffset; 901a371a5fdSJung-uk Kim char NodeData[1]; 902a371a5fdSJung-uk Kim 903a371a5fdSJung-uk Kim } ACPI_IORT_NODE; 904a371a5fdSJung-uk Kim 905a371a5fdSJung-uk Kim /* Values for subtable Type above */ 906a371a5fdSJung-uk Kim 907a371a5fdSJung-uk Kim enum AcpiIortNodeType 908a371a5fdSJung-uk Kim { 909a371a5fdSJung-uk Kim ACPI_IORT_NODE_ITS_GROUP = 0x00, 910a371a5fdSJung-uk Kim ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 911a371a5fdSJung-uk Kim ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 912f8146b88SJung-uk Kim ACPI_IORT_NODE_SMMU = 0x03, 913f8146b88SJung-uk Kim ACPI_IORT_NODE_SMMU_V3 = 0x04 914a371a5fdSJung-uk Kim }; 915a371a5fdSJung-uk Kim 916a371a5fdSJung-uk Kim 917a371a5fdSJung-uk Kim typedef struct acpi_iort_id_mapping 918a371a5fdSJung-uk Kim { 919a371a5fdSJung-uk Kim UINT32 InputBase; /* Lowest value in input range */ 920a371a5fdSJung-uk Kim UINT32 IdCount; /* Number of IDs */ 921a371a5fdSJung-uk Kim UINT32 OutputBase; /* Lowest value in output range */ 922a371a5fdSJung-uk Kim UINT32 OutputReference; /* A reference to the output node */ 923a371a5fdSJung-uk Kim UINT32 Flags; 924a371a5fdSJung-uk Kim 925a371a5fdSJung-uk Kim } ACPI_IORT_ID_MAPPING; 926a371a5fdSJung-uk Kim 927a371a5fdSJung-uk Kim /* Masks for Flags field above for IORT subtable */ 928a371a5fdSJung-uk Kim 929a371a5fdSJung-uk Kim #define ACPI_IORT_ID_SINGLE_MAPPING (1) 930a371a5fdSJung-uk Kim 931a371a5fdSJung-uk Kim 932a371a5fdSJung-uk Kim typedef struct acpi_iort_memory_access 933a371a5fdSJung-uk Kim { 934a371a5fdSJung-uk Kim UINT32 CacheCoherency; 935a371a5fdSJung-uk Kim UINT8 Hints; 936a371a5fdSJung-uk Kim UINT16 Reserved; 937a371a5fdSJung-uk Kim UINT8 MemoryFlags; 938a371a5fdSJung-uk Kim 939a371a5fdSJung-uk Kim } ACPI_IORT_MEMORY_ACCESS; 940a371a5fdSJung-uk Kim 941a371a5fdSJung-uk Kim /* Values for CacheCoherency field above */ 942a371a5fdSJung-uk Kim 943a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 944a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 945a371a5fdSJung-uk Kim 946a371a5fdSJung-uk Kim /* Masks for Hints field above */ 947a371a5fdSJung-uk Kim 948a371a5fdSJung-uk Kim #define ACPI_IORT_HT_TRANSIENT (1) 949a371a5fdSJung-uk Kim #define ACPI_IORT_HT_WRITE (1<<1) 950a371a5fdSJung-uk Kim #define ACPI_IORT_HT_READ (1<<2) 951a371a5fdSJung-uk Kim #define ACPI_IORT_HT_OVERRIDE (1<<3) 952a371a5fdSJung-uk Kim 953a371a5fdSJung-uk Kim /* Masks for MemoryFlags field above */ 954a371a5fdSJung-uk Kim 955a371a5fdSJung-uk Kim #define ACPI_IORT_MF_COHERENCY (1) 956a371a5fdSJung-uk Kim #define ACPI_IORT_MF_ATTRIBUTES (1<<1) 957a371a5fdSJung-uk Kim 958a371a5fdSJung-uk Kim 959a371a5fdSJung-uk Kim /* 960a371a5fdSJung-uk Kim * IORT node specific subtables 961a371a5fdSJung-uk Kim */ 962a371a5fdSJung-uk Kim typedef struct acpi_iort_its_group 963a371a5fdSJung-uk Kim { 964a371a5fdSJung-uk Kim UINT32 ItsCount; 965a371a5fdSJung-uk Kim UINT32 Identifiers[1]; /* GIC ITS identifier arrary */ 966a371a5fdSJung-uk Kim 967a371a5fdSJung-uk Kim } ACPI_IORT_ITS_GROUP; 968a371a5fdSJung-uk Kim 969a371a5fdSJung-uk Kim 970a371a5fdSJung-uk Kim typedef struct acpi_iort_named_component 971a371a5fdSJung-uk Kim { 972a371a5fdSJung-uk Kim UINT32 NodeFlags; 973a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 974a371a5fdSJung-uk Kim UINT8 MemoryAddressLimit; /* Memory address size limit */ 975a371a5fdSJung-uk Kim char DeviceName[1]; /* Path of namespace object */ 976a371a5fdSJung-uk Kim 977a371a5fdSJung-uk Kim } ACPI_IORT_NAMED_COMPONENT; 978a371a5fdSJung-uk Kim 979a371a5fdSJung-uk Kim 980a371a5fdSJung-uk Kim typedef struct acpi_iort_root_complex 981a371a5fdSJung-uk Kim { 982a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 983a371a5fdSJung-uk Kim UINT32 AtsAttribute; 984a371a5fdSJung-uk Kim UINT32 PciSegmentNumber; 985a371a5fdSJung-uk Kim 986a371a5fdSJung-uk Kim } ACPI_IORT_ROOT_COMPLEX; 987a371a5fdSJung-uk Kim 988a371a5fdSJung-uk Kim /* Values for AtsAttribute field above */ 989a371a5fdSJung-uk Kim 990a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 991a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 992a371a5fdSJung-uk Kim 993a371a5fdSJung-uk Kim 994a371a5fdSJung-uk Kim typedef struct acpi_iort_smmu 995a371a5fdSJung-uk Kim { 996a371a5fdSJung-uk Kim UINT64 BaseAddress; /* SMMU base address */ 997a371a5fdSJung-uk Kim UINT64 Span; /* Length of memory range */ 998a371a5fdSJung-uk Kim UINT32 Model; 999a371a5fdSJung-uk Kim UINT32 Flags; 1000a371a5fdSJung-uk Kim UINT32 GlobalInterruptOffset; 1001a371a5fdSJung-uk Kim UINT32 ContextInterruptCount; 1002a371a5fdSJung-uk Kim UINT32 ContextInterruptOffset; 1003a371a5fdSJung-uk Kim UINT32 PmuInterruptCount; 1004a371a5fdSJung-uk Kim UINT32 PmuInterruptOffset; 1005a371a5fdSJung-uk Kim UINT64 Interrupts[1]; /* Interrupt array */ 1006a371a5fdSJung-uk Kim 1007a371a5fdSJung-uk Kim } ACPI_IORT_SMMU; 1008a371a5fdSJung-uk Kim 1009a371a5fdSJung-uk Kim /* Values for Model field above */ 1010a371a5fdSJung-uk Kim 1011a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 1012a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 1013a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 1014a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 1015a371a5fdSJung-uk Kim 1016a371a5fdSJung-uk Kim /* Masks for Flags field above */ 1017a371a5fdSJung-uk Kim 1018a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 1019a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 1020a371a5fdSJung-uk Kim 1021*0d84335fSJung-uk Kim /* Global interrupt format */ 1022*0d84335fSJung-uk Kim 1023*0d84335fSJung-uk Kim typedef struct acpi_iort_smmu_gsi 1024*0d84335fSJung-uk Kim { 1025*0d84335fSJung-uk Kim UINT32 NSgIrpt; 1026*0d84335fSJung-uk Kim UINT32 NSgIrptFlags; 1027*0d84335fSJung-uk Kim UINT32 NSgCfgIrpt; 1028*0d84335fSJung-uk Kim UINT32 NSgCfgIrptFlags; 1029*0d84335fSJung-uk Kim } ACPI_IORT_SMMU_GSI; 1030*0d84335fSJung-uk Kim 1031a371a5fdSJung-uk Kim 1032f8146b88SJung-uk Kim typedef struct acpi_iort_smmu_v3 1033f8146b88SJung-uk Kim { 1034f8146b88SJung-uk Kim UINT64 BaseAddress; /* SMMUv3 base address */ 1035f8146b88SJung-uk Kim UINT32 Flags; 1036f8146b88SJung-uk Kim UINT32 Reserved; 1037f8146b88SJung-uk Kim UINT64 VatosAddress; 1038f8146b88SJung-uk Kim UINT32 Model; /* O: generic SMMUv3 */ 1039f8146b88SJung-uk Kim UINT32 EventGsiv; 1040f8146b88SJung-uk Kim UINT32 PriGsiv; 1041f8146b88SJung-uk Kim UINT32 GerrGsiv; 1042f8146b88SJung-uk Kim UINT32 SyncGsiv; 1043f8146b88SJung-uk Kim 1044f8146b88SJung-uk Kim } ACPI_IORT_SMMU_V3; 1045f8146b88SJung-uk Kim 1046f8146b88SJung-uk Kim /* Masks for Flags field above */ 1047f8146b88SJung-uk Kim 1048f8146b88SJung-uk Kim #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 1049f8146b88SJung-uk Kim #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) 1050f8146b88SJung-uk Kim 1051f8146b88SJung-uk Kim 1052a371a5fdSJung-uk Kim /******************************************************************************* 1053a371a5fdSJung-uk Kim * 1054d6dd1baeSJung-uk Kim * IVRS - I/O Virtualization Reporting Structure 1055d6dd1baeSJung-uk Kim * Version 1 1056d6dd1baeSJung-uk Kim * 1057d6dd1baeSJung-uk Kim * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 1058d6dd1baeSJung-uk Kim * Revision 1.26, February 2009. 1059d6dd1baeSJung-uk Kim * 1060d6dd1baeSJung-uk Kim ******************************************************************************/ 1061d6dd1baeSJung-uk Kim 1062d6dd1baeSJung-uk Kim typedef struct acpi_table_ivrs 1063d6dd1baeSJung-uk Kim { 1064d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1065d6dd1baeSJung-uk Kim UINT32 Info; /* Common virtualization info */ 1066d6dd1baeSJung-uk Kim UINT64 Reserved; 1067d6dd1baeSJung-uk Kim 1068d6dd1baeSJung-uk Kim } ACPI_TABLE_IVRS; 1069d6dd1baeSJung-uk Kim 1070d6dd1baeSJung-uk Kim /* Values for Info field above */ 1071d6dd1baeSJung-uk Kim 1072d6dd1baeSJung-uk Kim #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 1073d6dd1baeSJung-uk Kim #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 1074d6dd1baeSJung-uk Kim #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 1075d6dd1baeSJung-uk Kim 1076d6dd1baeSJung-uk Kim 1077d6dd1baeSJung-uk Kim /* IVRS subtable header */ 1078d6dd1baeSJung-uk Kim 1079d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_header 1080d6dd1baeSJung-uk Kim { 1081d6dd1baeSJung-uk Kim UINT8 Type; /* Subtable type */ 1082d6dd1baeSJung-uk Kim UINT8 Flags; 1083d6dd1baeSJung-uk Kim UINT16 Length; /* Subtable length */ 1084d6dd1baeSJung-uk Kim UINT16 DeviceId; /* ID of IOMMU */ 1085d6dd1baeSJung-uk Kim 1086d6dd1baeSJung-uk Kim } ACPI_IVRS_HEADER; 1087d6dd1baeSJung-uk Kim 1088d6dd1baeSJung-uk Kim /* Values for subtable Type above */ 1089d6dd1baeSJung-uk Kim 1090d6dd1baeSJung-uk Kim enum AcpiIvrsType 1091d6dd1baeSJung-uk Kim { 1092d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_HARDWARE = 0x10, 1093d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY1 = 0x20, 1094d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY2 = 0x21, 1095d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY3 = 0x22 1096d6dd1baeSJung-uk Kim }; 1097d6dd1baeSJung-uk Kim 1098d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVHD subtable */ 1099d6dd1baeSJung-uk Kim 1100d6dd1baeSJung-uk Kim #define ACPI_IVHD_TT_ENABLE (1) 1101d6dd1baeSJung-uk Kim #define ACPI_IVHD_PASS_PW (1<<1) 1102d6dd1baeSJung-uk Kim #define ACPI_IVHD_RES_PASS_PW (1<<2) 1103d6dd1baeSJung-uk Kim #define ACPI_IVHD_ISOC (1<<3) 1104d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOTLB (1<<4) 1105d6dd1baeSJung-uk Kim 1106d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVMD subtable */ 1107d6dd1baeSJung-uk Kim 1108d6dd1baeSJung-uk Kim #define ACPI_IVMD_UNITY (1) 1109d6dd1baeSJung-uk Kim #define ACPI_IVMD_READ (1<<1) 1110d6dd1baeSJung-uk Kim #define ACPI_IVMD_WRITE (1<<2) 1111d6dd1baeSJung-uk Kim #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 1112d6dd1baeSJung-uk Kim 1113d6dd1baeSJung-uk Kim 1114d6dd1baeSJung-uk Kim /* 1115d6dd1baeSJung-uk Kim * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 1116d6dd1baeSJung-uk Kim */ 1117d6dd1baeSJung-uk Kim 1118d6dd1baeSJung-uk Kim /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 1119d6dd1baeSJung-uk Kim 1120d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_hardware 1121d6dd1baeSJung-uk Kim { 1122d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 1123d6dd1baeSJung-uk Kim UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 1124d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* IOMMU control registers */ 1125d6dd1baeSJung-uk Kim UINT16 PciSegmentGroup; 1126d6dd1baeSJung-uk Kim UINT16 Info; /* MSI number and unit ID */ 1127d6dd1baeSJung-uk Kim UINT32 Reserved; 1128d6dd1baeSJung-uk Kim 1129d6dd1baeSJung-uk Kim } ACPI_IVRS_HARDWARE; 1130d6dd1baeSJung-uk Kim 1131d6dd1baeSJung-uk Kim /* Masks for Info field above */ 1132d6dd1baeSJung-uk Kim 1133d6dd1baeSJung-uk Kim #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 1134d6dd1baeSJung-uk Kim #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 1135d6dd1baeSJung-uk Kim 1136d6dd1baeSJung-uk Kim 1137d6dd1baeSJung-uk Kim /* 1138d6dd1baeSJung-uk Kim * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 1139d6dd1baeSJung-uk Kim * Upper two bits of the Type field are the (encoded) length of the structure. 1140d6dd1baeSJung-uk Kim * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 1141d6dd1baeSJung-uk Kim * are reserved for future use but not defined. 1142d6dd1baeSJung-uk Kim */ 1143d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_de_header 1144d6dd1baeSJung-uk Kim { 1145d6dd1baeSJung-uk Kim UINT8 Type; 1146d6dd1baeSJung-uk Kim UINT16 Id; 1147d6dd1baeSJung-uk Kim UINT8 DataSetting; 1148d6dd1baeSJung-uk Kim 1149d6dd1baeSJung-uk Kim } ACPI_IVRS_DE_HEADER; 1150d6dd1baeSJung-uk Kim 1151d6dd1baeSJung-uk Kim /* Length of device entry is in the top two bits of Type field above */ 1152d6dd1baeSJung-uk Kim 1153d6dd1baeSJung-uk Kim #define ACPI_IVHD_ENTRY_LENGTH 0xC0 1154d6dd1baeSJung-uk Kim 1155d6dd1baeSJung-uk Kim /* Values for device entry Type field above */ 1156d6dd1baeSJung-uk Kim 1157d6dd1baeSJung-uk Kim enum AcpiIvrsDeviceEntryType 1158d6dd1baeSJung-uk Kim { 1159d6dd1baeSJung-uk Kim /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 1160d6dd1baeSJung-uk Kim 1161d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD4 = 0, 1162d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALL = 1, 1163d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SELECT = 2, 1164d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_START = 3, 1165d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_END = 4, 1166d6dd1baeSJung-uk Kim 1167d6dd1baeSJung-uk Kim /* 8-byte device entries */ 1168d6dd1baeSJung-uk Kim 1169d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD8 = 64, 1170d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_NOT_USED = 65, 1171d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 1172d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 1173d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 1174d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 1175d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 1176d6dd1baeSJung-uk Kim }; 1177d6dd1baeSJung-uk Kim 1178d6dd1baeSJung-uk Kim /* Values for Data field above */ 1179d6dd1baeSJung-uk Kim 1180d6dd1baeSJung-uk Kim #define ACPI_IVHD_INIT_PASS (1) 1181d6dd1baeSJung-uk Kim #define ACPI_IVHD_EINT_PASS (1<<1) 1182d6dd1baeSJung-uk Kim #define ACPI_IVHD_NMI_PASS (1<<2) 1183d6dd1baeSJung-uk Kim #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 1184d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT0_PASS (1<<6) 1185d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT1_PASS (1<<7) 1186d6dd1baeSJung-uk Kim 1187d6dd1baeSJung-uk Kim 1188d6dd1baeSJung-uk Kim /* Types 0-4: 4-byte device entry */ 1189d6dd1baeSJung-uk Kim 1190d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device4 1191d6dd1baeSJung-uk Kim { 1192d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1193d6dd1baeSJung-uk Kim 1194d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE4; 1195d6dd1baeSJung-uk Kim 1196d6dd1baeSJung-uk Kim /* Types 66-67: 8-byte device entry */ 1197d6dd1baeSJung-uk Kim 1198d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8a 1199d6dd1baeSJung-uk Kim { 1200d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1201d6dd1baeSJung-uk Kim UINT8 Reserved1; 1202d6dd1baeSJung-uk Kim UINT16 UsedId; 1203d6dd1baeSJung-uk Kim UINT8 Reserved2; 1204d6dd1baeSJung-uk Kim 1205d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8A; 1206d6dd1baeSJung-uk Kim 1207d6dd1baeSJung-uk Kim /* Types 70-71: 8-byte device entry */ 1208d6dd1baeSJung-uk Kim 1209d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8b 1210d6dd1baeSJung-uk Kim { 1211d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1212d6dd1baeSJung-uk Kim UINT32 ExtendedData; 1213d6dd1baeSJung-uk Kim 1214d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8B; 1215d6dd1baeSJung-uk Kim 1216d6dd1baeSJung-uk Kim /* Values for ExtendedData above */ 1217d6dd1baeSJung-uk Kim 1218d6dd1baeSJung-uk Kim #define ACPI_IVHD_ATS_DISABLED (1<<31) 1219d6dd1baeSJung-uk Kim 1220d6dd1baeSJung-uk Kim /* Type 72: 8-byte device entry */ 1221d6dd1baeSJung-uk Kim 1222d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8c 1223d6dd1baeSJung-uk Kim { 1224d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1225d6dd1baeSJung-uk Kim UINT8 Handle; 1226d6dd1baeSJung-uk Kim UINT16 UsedId; 1227d6dd1baeSJung-uk Kim UINT8 Variety; 1228d6dd1baeSJung-uk Kim 1229d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8C; 1230d6dd1baeSJung-uk Kim 1231d6dd1baeSJung-uk Kim /* Values for Variety field above */ 1232d6dd1baeSJung-uk Kim 1233d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOAPIC 1 1234d6dd1baeSJung-uk Kim #define ACPI_IVHD_HPET 2 1235d6dd1baeSJung-uk Kim 1236d6dd1baeSJung-uk Kim 1237d6dd1baeSJung-uk Kim /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 1238d6dd1baeSJung-uk Kim 1239d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_memory 1240d6dd1baeSJung-uk Kim { 1241d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 1242d6dd1baeSJung-uk Kim UINT16 AuxData; 1243d6dd1baeSJung-uk Kim UINT64 Reserved; 1244d6dd1baeSJung-uk Kim UINT64 StartAddress; 1245d6dd1baeSJung-uk Kim UINT64 MemoryLength; 1246d6dd1baeSJung-uk Kim 1247d6dd1baeSJung-uk Kim } ACPI_IVRS_MEMORY; 1248d6dd1baeSJung-uk Kim 1249d6dd1baeSJung-uk Kim 1250d6dd1baeSJung-uk Kim /******************************************************************************* 1251d6dd1baeSJung-uk Kim * 1252313a0c13SJung-uk Kim * LPIT - Low Power Idle Table 1253313a0c13SJung-uk Kim * 1254a371a5fdSJung-uk Kim * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1255313a0c13SJung-uk Kim * 1256313a0c13SJung-uk Kim ******************************************************************************/ 1257313a0c13SJung-uk Kim 1258313a0c13SJung-uk Kim typedef struct acpi_table_lpit 1259313a0c13SJung-uk Kim { 1260313a0c13SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1261313a0c13SJung-uk Kim 1262313a0c13SJung-uk Kim } ACPI_TABLE_LPIT; 1263313a0c13SJung-uk Kim 1264313a0c13SJung-uk Kim 1265313a0c13SJung-uk Kim /* LPIT subtable header */ 1266313a0c13SJung-uk Kim 1267313a0c13SJung-uk Kim typedef struct acpi_lpit_header 1268313a0c13SJung-uk Kim { 1269313a0c13SJung-uk Kim UINT32 Type; /* Subtable type */ 1270313a0c13SJung-uk Kim UINT32 Length; /* Subtable length */ 1271313a0c13SJung-uk Kim UINT16 UniqueId; 1272313a0c13SJung-uk Kim UINT16 Reserved; 1273313a0c13SJung-uk Kim UINT32 Flags; 1274313a0c13SJung-uk Kim 1275313a0c13SJung-uk Kim } ACPI_LPIT_HEADER; 1276313a0c13SJung-uk Kim 1277313a0c13SJung-uk Kim /* Values for subtable Type above */ 1278313a0c13SJung-uk Kim 1279313a0c13SJung-uk Kim enum AcpiLpitType 1280313a0c13SJung-uk Kim { 1281313a0c13SJung-uk Kim ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1282a371a5fdSJung-uk Kim ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1283313a0c13SJung-uk Kim }; 1284313a0c13SJung-uk Kim 1285313a0c13SJung-uk Kim /* Masks for Flags field above */ 1286313a0c13SJung-uk Kim 1287313a0c13SJung-uk Kim #define ACPI_LPIT_STATE_DISABLED (1) 1288313a0c13SJung-uk Kim #define ACPI_LPIT_NO_COUNTER (1<<1) 1289313a0c13SJung-uk Kim 1290313a0c13SJung-uk Kim /* 1291313a0c13SJung-uk Kim * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1292313a0c13SJung-uk Kim */ 1293313a0c13SJung-uk Kim 1294313a0c13SJung-uk Kim /* 0x00: Native C-state instruction based LPI structure */ 1295313a0c13SJung-uk Kim 1296313a0c13SJung-uk Kim typedef struct acpi_lpit_native 1297313a0c13SJung-uk Kim { 1298313a0c13SJung-uk Kim ACPI_LPIT_HEADER Header; 1299313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS EntryTrigger; 1300313a0c13SJung-uk Kim UINT32 Residency; 1301313a0c13SJung-uk Kim UINT32 Latency; 1302313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS ResidencyCounter; 1303313a0c13SJung-uk Kim UINT64 CounterFrequency; 1304313a0c13SJung-uk Kim 1305313a0c13SJung-uk Kim } ACPI_LPIT_NATIVE; 1306313a0c13SJung-uk Kim 1307313a0c13SJung-uk Kim 1308313a0c13SJung-uk Kim /******************************************************************************* 1309313a0c13SJung-uk Kim * 1310313a0c13SJung-uk Kim * MCFG - PCI Memory Mapped Configuration table and subtable 1311d6dd1baeSJung-uk Kim * Version 1 1312d6dd1baeSJung-uk Kim * 1313d6dd1baeSJung-uk Kim * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1314d6dd1baeSJung-uk Kim * 1315d6dd1baeSJung-uk Kim ******************************************************************************/ 1316d6dd1baeSJung-uk Kim 1317d6dd1baeSJung-uk Kim typedef struct acpi_table_mcfg 1318d6dd1baeSJung-uk Kim { 1319d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1320d6dd1baeSJung-uk Kim UINT8 Reserved[8]; 1321d6dd1baeSJung-uk Kim 1322d6dd1baeSJung-uk Kim } ACPI_TABLE_MCFG; 1323d6dd1baeSJung-uk Kim 1324d6dd1baeSJung-uk Kim 1325d6dd1baeSJung-uk Kim /* Subtable */ 1326d6dd1baeSJung-uk Kim 1327d6dd1baeSJung-uk Kim typedef struct acpi_mcfg_allocation 1328d6dd1baeSJung-uk Kim { 1329d6dd1baeSJung-uk Kim UINT64 Address; /* Base address, processor-relative */ 1330d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI segment group number */ 1331d6dd1baeSJung-uk Kim UINT8 StartBusNumber; /* Starting PCI Bus number */ 1332d6dd1baeSJung-uk Kim UINT8 EndBusNumber; /* Final PCI Bus number */ 1333d6dd1baeSJung-uk Kim UINT32 Reserved; 1334d6dd1baeSJung-uk Kim 1335d6dd1baeSJung-uk Kim } ACPI_MCFG_ALLOCATION; 1336d6dd1baeSJung-uk Kim 1337d6dd1baeSJung-uk Kim 1338d6dd1baeSJung-uk Kim /******************************************************************************* 1339d6dd1baeSJung-uk Kim * 1340ca3cf4faSJung-uk Kim * MCHI - Management Controller Host Interface Table 1341ca3cf4faSJung-uk Kim * Version 1 1342ca3cf4faSJung-uk Kim * 1343ca3cf4faSJung-uk Kim * Conforms to "Management Component Transport Protocol (MCTP) Host 1344ca3cf4faSJung-uk Kim * Interface Specification", Revision 1.0.0a, October 13, 2009 1345ca3cf4faSJung-uk Kim * 1346ca3cf4faSJung-uk Kim ******************************************************************************/ 1347ca3cf4faSJung-uk Kim 1348ca3cf4faSJung-uk Kim typedef struct acpi_table_mchi 1349ca3cf4faSJung-uk Kim { 1350ca3cf4faSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1351ca3cf4faSJung-uk Kim UINT8 InterfaceType; 1352ca3cf4faSJung-uk Kim UINT8 Protocol; 1353ca3cf4faSJung-uk Kim UINT64 ProtocolData; 1354ca3cf4faSJung-uk Kim UINT8 InterruptType; 1355ca3cf4faSJung-uk Kim UINT8 Gpe; 1356ca3cf4faSJung-uk Kim UINT8 PciDeviceFlag; 1357ca3cf4faSJung-uk Kim UINT32 GlobalInterrupt; 1358ca3cf4faSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1359ca3cf4faSJung-uk Kim UINT8 PciSegment; 1360ca3cf4faSJung-uk Kim UINT8 PciBus; 1361ca3cf4faSJung-uk Kim UINT8 PciDevice; 1362ca3cf4faSJung-uk Kim UINT8 PciFunction; 1363ca3cf4faSJung-uk Kim 1364ca3cf4faSJung-uk Kim } ACPI_TABLE_MCHI; 1365ca3cf4faSJung-uk Kim 1366ca3cf4faSJung-uk Kim 1367ca3cf4faSJung-uk Kim /******************************************************************************* 1368ca3cf4faSJung-uk Kim * 13697cf3e94aSJung-uk Kim * MSDM - Microsoft Data Management table 13707cf3e94aSJung-uk Kim * 13717cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 13727cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 13737cf3e94aSJung-uk Kim * 13747cf3e94aSJung-uk Kim ******************************************************************************/ 13757cf3e94aSJung-uk Kim 13767cf3e94aSJung-uk Kim /* Basic MSDM table is only the common ACPI header */ 13777cf3e94aSJung-uk Kim 13787cf3e94aSJung-uk Kim typedef struct acpi_table_msdm 13797cf3e94aSJung-uk Kim { 13807cf3e94aSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13817cf3e94aSJung-uk Kim 13827cf3e94aSJung-uk Kim } ACPI_TABLE_MSDM; 13837cf3e94aSJung-uk Kim 13847cf3e94aSJung-uk Kim 13857cf3e94aSJung-uk Kim /******************************************************************************* 13867cf3e94aSJung-uk Kim * 13879c48c75eSJung-uk Kim * MTMR - MID Timer Table 13889c48c75eSJung-uk Kim * Version 1 13899c48c75eSJung-uk Kim * 13909c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 13919c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 13929c48c75eSJung-uk Kim * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 13939c48c75eSJung-uk Kim * 13949c48c75eSJung-uk Kim ******************************************************************************/ 13959c48c75eSJung-uk Kim 13969c48c75eSJung-uk Kim typedef struct acpi_table_mtmr 13979c48c75eSJung-uk Kim { 13989c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13999c48c75eSJung-uk Kim 14009c48c75eSJung-uk Kim } ACPI_TABLE_MTMR; 14019c48c75eSJung-uk Kim 14029c48c75eSJung-uk Kim /* MTMR entry */ 14039c48c75eSJung-uk Kim 14049c48c75eSJung-uk Kim typedef struct acpi_mtmr_entry 14059c48c75eSJung-uk Kim { 14069c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 14079c48c75eSJung-uk Kim UINT32 Frequency; 14089c48c75eSJung-uk Kim UINT32 Irq; 14099c48c75eSJung-uk Kim 14109c48c75eSJung-uk Kim } ACPI_MTMR_ENTRY; 14119c48c75eSJung-uk Kim 14129c48c75eSJung-uk Kim 14139c48c75eSJung-uk Kim /******************************************************************************* 14149c48c75eSJung-uk Kim * 1415dcbce41eSJung-uk Kim * SLIC - Software Licensing Description Table 1416dcbce41eSJung-uk Kim * 14177cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 14187cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 1419dcbce41eSJung-uk Kim * 1420dcbce41eSJung-uk Kim ******************************************************************************/ 1421dcbce41eSJung-uk Kim 1422dcbce41eSJung-uk Kim /* Basic SLIC table is only the common ACPI header */ 1423dcbce41eSJung-uk Kim 1424dcbce41eSJung-uk Kim typedef struct acpi_table_slic 1425dcbce41eSJung-uk Kim { 1426dcbce41eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1427dcbce41eSJung-uk Kim 1428dcbce41eSJung-uk Kim } ACPI_TABLE_SLIC; 1429dcbce41eSJung-uk Kim 1430dcbce41eSJung-uk Kim 1431dcbce41eSJung-uk Kim /******************************************************************************* 1432dcbce41eSJung-uk Kim * 1433d6dd1baeSJung-uk Kim * SPCR - Serial Port Console Redirection table 1434f8146b88SJung-uk Kim * Version 2 1435d6dd1baeSJung-uk Kim * 1436d6dd1baeSJung-uk Kim * Conforms to "Serial Port Console Redirection Table", 1437f8146b88SJung-uk Kim * Version 1.03, August 10, 2015 1438d6dd1baeSJung-uk Kim * 1439d6dd1baeSJung-uk Kim ******************************************************************************/ 1440d6dd1baeSJung-uk Kim 1441d6dd1baeSJung-uk Kim typedef struct acpi_table_spcr 1442d6dd1baeSJung-uk Kim { 1443d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1444d6dd1baeSJung-uk Kim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1445d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1446d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS SerialPort; 1447d6dd1baeSJung-uk Kim UINT8 InterruptType; 1448d6dd1baeSJung-uk Kim UINT8 PcInterrupt; 1449d6dd1baeSJung-uk Kim UINT32 Interrupt; 1450d6dd1baeSJung-uk Kim UINT8 BaudRate; 1451d6dd1baeSJung-uk Kim UINT8 Parity; 1452d6dd1baeSJung-uk Kim UINT8 StopBits; 1453d6dd1baeSJung-uk Kim UINT8 FlowControl; 1454d6dd1baeSJung-uk Kim UINT8 TerminalType; 1455d6dd1baeSJung-uk Kim UINT8 Reserved1; 1456d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1457d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1458d6dd1baeSJung-uk Kim UINT8 PciBus; 1459d6dd1baeSJung-uk Kim UINT8 PciDevice; 1460d6dd1baeSJung-uk Kim UINT8 PciFunction; 1461d6dd1baeSJung-uk Kim UINT32 PciFlags; 1462d6dd1baeSJung-uk Kim UINT8 PciSegment; 1463d6dd1baeSJung-uk Kim UINT32 Reserved2; 1464d6dd1baeSJung-uk Kim 1465d6dd1baeSJung-uk Kim } ACPI_TABLE_SPCR; 1466d6dd1baeSJung-uk Kim 1467d6dd1baeSJung-uk Kim /* Masks for PciFlags field above */ 1468d6dd1baeSJung-uk Kim 1469d6dd1baeSJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE (1) 1470d6dd1baeSJung-uk Kim 1471f8146b88SJung-uk Kim /* Values for Interface Type: See the definition of the DBG2 table */ 1472f8146b88SJung-uk Kim 1473d6dd1baeSJung-uk Kim 1474d6dd1baeSJung-uk Kim /******************************************************************************* 1475d6dd1baeSJung-uk Kim * 1476d6dd1baeSJung-uk Kim * SPMI - Server Platform Management Interface table 1477d6dd1baeSJung-uk Kim * Version 5 1478d6dd1baeSJung-uk Kim * 1479d6dd1baeSJung-uk Kim * Conforms to "Intelligent Platform Management Interface Specification 1480d6dd1baeSJung-uk Kim * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1481d6dd1baeSJung-uk Kim * June 12, 2009 markup. 1482d6dd1baeSJung-uk Kim * 1483d6dd1baeSJung-uk Kim ******************************************************************************/ 1484d6dd1baeSJung-uk Kim 1485d6dd1baeSJung-uk Kim typedef struct acpi_table_spmi 1486d6dd1baeSJung-uk Kim { 1487d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1488d6dd1baeSJung-uk Kim UINT8 InterfaceType; 1489d6dd1baeSJung-uk Kim UINT8 Reserved; /* Must be 1 */ 1490d6dd1baeSJung-uk Kim UINT16 SpecRevision; /* Version of IPMI */ 1491d6dd1baeSJung-uk Kim UINT8 InterruptType; 1492d6dd1baeSJung-uk Kim UINT8 GpeNumber; /* GPE assigned */ 1493d6dd1baeSJung-uk Kim UINT8 Reserved1; 1494d6dd1baeSJung-uk Kim UINT8 PciDeviceFlag; 1495d6dd1baeSJung-uk Kim UINT32 Interrupt; 1496d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS IpmiRegister; 1497d6dd1baeSJung-uk Kim UINT8 PciSegment; 1498d6dd1baeSJung-uk Kim UINT8 PciBus; 1499d6dd1baeSJung-uk Kim UINT8 PciDevice; 1500d6dd1baeSJung-uk Kim UINT8 PciFunction; 1501d6dd1baeSJung-uk Kim UINT8 Reserved2; 1502d6dd1baeSJung-uk Kim 1503d6dd1baeSJung-uk Kim } ACPI_TABLE_SPMI; 1504d6dd1baeSJung-uk Kim 1505d6dd1baeSJung-uk Kim /* Values for InterfaceType above */ 1506d6dd1baeSJung-uk Kim 1507d6dd1baeSJung-uk Kim enum AcpiSpmiInterfaceTypes 1508d6dd1baeSJung-uk Kim { 1509d6dd1baeSJung-uk Kim ACPI_SPMI_NOT_USED = 0, 1510d6dd1baeSJung-uk Kim ACPI_SPMI_KEYBOARD = 1, 1511d6dd1baeSJung-uk Kim ACPI_SPMI_SMI = 2, 1512d6dd1baeSJung-uk Kim ACPI_SPMI_BLOCK_TRANSFER = 3, 1513d6dd1baeSJung-uk Kim ACPI_SPMI_SMBUS = 4, 1514d6dd1baeSJung-uk Kim ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1515d6dd1baeSJung-uk Kim }; 1516d6dd1baeSJung-uk Kim 1517d6dd1baeSJung-uk Kim 1518d6dd1baeSJung-uk Kim /******************************************************************************* 1519d6dd1baeSJung-uk Kim * 1520d6dd1baeSJung-uk Kim * TCPA - Trusted Computing Platform Alliance table 15215ef50723SJung-uk Kim * Version 2 1522d6dd1baeSJung-uk Kim * 15235ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 15245ef50723SJung-uk Kim * December 19, 2014 15255ef50723SJung-uk Kim * 15265ef50723SJung-uk Kim * NOTE: There are two versions of the table with the same signature -- 1527fe0f0bbbSJung-uk Kim * the client version and the server version. The common PlatformClass 1528fe0f0bbbSJung-uk Kim * field is used to differentiate the two types of tables. 1529d6dd1baeSJung-uk Kim * 1530d6dd1baeSJung-uk Kim ******************************************************************************/ 1531d6dd1baeSJung-uk Kim 1532fe0f0bbbSJung-uk Kim typedef struct acpi_table_tcpa_hdr 1533d6dd1baeSJung-uk Kim { 1534d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 15355ef50723SJung-uk Kim UINT16 PlatformClass; 1536fe0f0bbbSJung-uk Kim 1537fe0f0bbbSJung-uk Kim } ACPI_TABLE_TCPA_HDR; 1538fe0f0bbbSJung-uk Kim 1539fe0f0bbbSJung-uk Kim /* 1540fe0f0bbbSJung-uk Kim * Values for PlatformClass above. 1541fe0f0bbbSJung-uk Kim * This is how the client and server subtables are differentiated 1542fe0f0bbbSJung-uk Kim */ 1543fe0f0bbbSJung-uk Kim #define ACPI_TCPA_CLIENT_TABLE 0 1544fe0f0bbbSJung-uk Kim #define ACPI_TCPA_SERVER_TABLE 1 1545fe0f0bbbSJung-uk Kim 1546fe0f0bbbSJung-uk Kim 1547fe0f0bbbSJung-uk Kim typedef struct acpi_table_tcpa_client 1548fe0f0bbbSJung-uk Kim { 15495ef50723SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 1550d6dd1baeSJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 1551d6dd1baeSJung-uk Kim 15525ef50723SJung-uk Kim } ACPI_TABLE_TCPA_CLIENT; 15535ef50723SJung-uk Kim 15545ef50723SJung-uk Kim typedef struct acpi_table_tcpa_server 15555ef50723SJung-uk Kim { 15565ef50723SJung-uk Kim UINT16 Reserved; 15575ef50723SJung-uk Kim UINT64 MinimumLogLength; /* Minimum length for the event log area */ 15585ef50723SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 15595ef50723SJung-uk Kim UINT16 SpecRevision; 15605ef50723SJung-uk Kim UINT8 DeviceFlags; 15615ef50723SJung-uk Kim UINT8 InterruptFlags; 15625ef50723SJung-uk Kim UINT8 GpeNumber; 15635ef50723SJung-uk Kim UINT8 Reserved2[3]; 15645ef50723SJung-uk Kim UINT32 GlobalInterrupt; 15655ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 15665ef50723SJung-uk Kim UINT32 Reserved3; 15675ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS ConfigAddress; 15685ef50723SJung-uk Kim UINT8 Group; 15695ef50723SJung-uk Kim UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 15705ef50723SJung-uk Kim UINT8 Device; 15715ef50723SJung-uk Kim UINT8 Function; 15725ef50723SJung-uk Kim 15735ef50723SJung-uk Kim } ACPI_TABLE_TCPA_SERVER; 15745ef50723SJung-uk Kim 15755ef50723SJung-uk Kim /* Values for DeviceFlags above */ 15765ef50723SJung-uk Kim 15775ef50723SJung-uk Kim #define ACPI_TCPA_PCI_DEVICE (1) 15785ef50723SJung-uk Kim #define ACPI_TCPA_BUS_PNP (1<<1) 15795ef50723SJung-uk Kim #define ACPI_TCPA_ADDRESS_VALID (1<<2) 15805ef50723SJung-uk Kim 15815ef50723SJung-uk Kim /* Values for InterruptFlags above */ 15825ef50723SJung-uk Kim 15835ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_MODE (1) 15845ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 15855ef50723SJung-uk Kim #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 15865ef50723SJung-uk Kim #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 15875ef50723SJung-uk Kim 15885ef50723SJung-uk Kim 15895ef50723SJung-uk Kim /******************************************************************************* 15905ef50723SJung-uk Kim * 15915ef50723SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 15925ef50723SJung-uk Kim * Version 4 15935ef50723SJung-uk Kim * 15945ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 15955ef50723SJung-uk Kim * December 19, 2014 15965ef50723SJung-uk Kim * 15975ef50723SJung-uk Kim ******************************************************************************/ 15985ef50723SJung-uk Kim 15995ef50723SJung-uk Kim typedef struct acpi_table_tpm2 16005ef50723SJung-uk Kim { 16015ef50723SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 16025ef50723SJung-uk Kim UINT16 PlatformClass; 16035ef50723SJung-uk Kim UINT16 Reserved; 16045ef50723SJung-uk Kim UINT64 ControlAddress; 16055ef50723SJung-uk Kim UINT32 StartMethod; 16065ef50723SJung-uk Kim 16075ef50723SJung-uk Kim /* Platform-specific data follows */ 16085ef50723SJung-uk Kim 16095ef50723SJung-uk Kim } ACPI_TABLE_TPM2; 16105ef50723SJung-uk Kim 16115ef50723SJung-uk Kim /* Values for StartMethod above */ 16125ef50723SJung-uk Kim 16135ef50723SJung-uk Kim #define ACPI_TPM2_NOT_ALLOWED 0 16145ef50723SJung-uk Kim #define ACPI_TPM2_START_METHOD 2 16155ef50723SJung-uk Kim #define ACPI_TPM2_MEMORY_MAPPED 6 16165ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER 7 16175ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 1618d6dd1baeSJung-uk Kim 1619d6dd1baeSJung-uk Kim 1620d6dd1baeSJung-uk Kim /******************************************************************************* 1621d6dd1baeSJung-uk Kim * 1622d6dd1baeSJung-uk Kim * UEFI - UEFI Boot optimization Table 1623d6dd1baeSJung-uk Kim * Version 1 1624d6dd1baeSJung-uk Kim * 1625d6dd1baeSJung-uk Kim * Conforms to "Unified Extensible Firmware Interface Specification", 1626d6dd1baeSJung-uk Kim * Version 2.3, May 8, 2009 1627d6dd1baeSJung-uk Kim * 1628d6dd1baeSJung-uk Kim ******************************************************************************/ 1629d6dd1baeSJung-uk Kim 1630d6dd1baeSJung-uk Kim typedef struct acpi_table_uefi 1631d6dd1baeSJung-uk Kim { 1632d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1633d6dd1baeSJung-uk Kim UINT8 Identifier[16]; /* UUID identifier */ 1634d6dd1baeSJung-uk Kim UINT16 DataOffset; /* Offset of remaining data in table */ 1635d6dd1baeSJung-uk Kim 1636d6dd1baeSJung-uk Kim } ACPI_TABLE_UEFI; 1637d6dd1baeSJung-uk Kim 1638d6dd1baeSJung-uk Kim 1639d6dd1baeSJung-uk Kim /******************************************************************************* 1640d6dd1baeSJung-uk Kim * 16419c48c75eSJung-uk Kim * VRTC - Virtual Real Time Clock Table 16429c48c75eSJung-uk Kim * Version 1 16439c48c75eSJung-uk Kim * 16449c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 16459c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 16469c48c75eSJung-uk Kim * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 16479c48c75eSJung-uk Kim * 16489c48c75eSJung-uk Kim ******************************************************************************/ 16499c48c75eSJung-uk Kim 16509c48c75eSJung-uk Kim typedef struct acpi_table_vrtc 16519c48c75eSJung-uk Kim { 16529c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 16539c48c75eSJung-uk Kim 16549c48c75eSJung-uk Kim } ACPI_TABLE_VRTC; 16559c48c75eSJung-uk Kim 16569c48c75eSJung-uk Kim /* VRTC entry */ 16579c48c75eSJung-uk Kim 16589c48c75eSJung-uk Kim typedef struct acpi_vrtc_entry 16599c48c75eSJung-uk Kim { 16609c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 16619c48c75eSJung-uk Kim UINT32 Irq; 16629c48c75eSJung-uk Kim 16639c48c75eSJung-uk Kim } ACPI_VRTC_ENTRY; 16649c48c75eSJung-uk Kim 16659c48c75eSJung-uk Kim 16669c48c75eSJung-uk Kim /******************************************************************************* 16679c48c75eSJung-uk Kim * 1668d6dd1baeSJung-uk Kim * WAET - Windows ACPI Emulated devices Table 1669d6dd1baeSJung-uk Kim * Version 1 1670d6dd1baeSJung-uk Kim * 1671d6dd1baeSJung-uk Kim * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1672d6dd1baeSJung-uk Kim * 1673d6dd1baeSJung-uk Kim ******************************************************************************/ 1674d6dd1baeSJung-uk Kim 1675d6dd1baeSJung-uk Kim typedef struct acpi_table_waet 1676d6dd1baeSJung-uk Kim { 1677d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1678d6dd1baeSJung-uk Kim UINT32 Flags; 1679d6dd1baeSJung-uk Kim 1680d6dd1baeSJung-uk Kim } ACPI_TABLE_WAET; 1681d6dd1baeSJung-uk Kim 1682d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1683d6dd1baeSJung-uk Kim 1684d6dd1baeSJung-uk Kim #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1685d6dd1baeSJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1686d6dd1baeSJung-uk Kim 1687d6dd1baeSJung-uk Kim 1688d6dd1baeSJung-uk Kim /******************************************************************************* 1689d6dd1baeSJung-uk Kim * 1690d6dd1baeSJung-uk Kim * WDAT - Watchdog Action Table 1691d6dd1baeSJung-uk Kim * Version 1 1692d6dd1baeSJung-uk Kim * 1693d6dd1baeSJung-uk Kim * Conforms to "Hardware Watchdog Timers Design Specification", 1694d6dd1baeSJung-uk Kim * Copyright 2006 Microsoft Corporation. 1695d6dd1baeSJung-uk Kim * 1696d6dd1baeSJung-uk Kim ******************************************************************************/ 1697d6dd1baeSJung-uk Kim 1698d6dd1baeSJung-uk Kim typedef struct acpi_table_wdat 1699d6dd1baeSJung-uk Kim { 1700d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1701d6dd1baeSJung-uk Kim UINT32 HeaderLength; /* Watchdog Header Length */ 1702d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI Segment number */ 1703d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1704d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1705d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1706d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1707d6dd1baeSJung-uk Kim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1708d6dd1baeSJung-uk Kim UINT32 MaxCount; /* Maximum counter value supported */ 1709d6dd1baeSJung-uk Kim UINT32 MinCount; /* Minimum counter value */ 1710d6dd1baeSJung-uk Kim UINT8 Flags; 1711d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 1712d6dd1baeSJung-uk Kim UINT32 Entries; /* Number of watchdog entries that follow */ 1713d6dd1baeSJung-uk Kim 1714d6dd1baeSJung-uk Kim } ACPI_TABLE_WDAT; 1715d6dd1baeSJung-uk Kim 1716d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1717d6dd1baeSJung-uk Kim 1718d6dd1baeSJung-uk Kim #define ACPI_WDAT_ENABLED (1) 1719d6dd1baeSJung-uk Kim #define ACPI_WDAT_STOPPED 0x80 1720d6dd1baeSJung-uk Kim 1721d6dd1baeSJung-uk Kim 1722d6dd1baeSJung-uk Kim /* WDAT Instruction Entries (actions) */ 1723d6dd1baeSJung-uk Kim 1724d6dd1baeSJung-uk Kim typedef struct acpi_wdat_entry 1725d6dd1baeSJung-uk Kim { 1726d6dd1baeSJung-uk Kim UINT8 Action; 1727d6dd1baeSJung-uk Kim UINT8 Instruction; 1728d6dd1baeSJung-uk Kim UINT16 Reserved; 1729d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS RegisterRegion; 1730d6dd1baeSJung-uk Kim UINT32 Value; /* Value used with Read/Write register */ 1731d6dd1baeSJung-uk Kim UINT32 Mask; /* Bitmask required for this register instruction */ 1732d6dd1baeSJung-uk Kim 1733d6dd1baeSJung-uk Kim } ACPI_WDAT_ENTRY; 1734d6dd1baeSJung-uk Kim 1735d6dd1baeSJung-uk Kim /* Values for Action field above */ 1736d6dd1baeSJung-uk Kim 1737d6dd1baeSJung-uk Kim enum AcpiWdatActions 1738d6dd1baeSJung-uk Kim { 1739d6dd1baeSJung-uk Kim ACPI_WDAT_RESET = 1, 1740d6dd1baeSJung-uk Kim ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1741d6dd1baeSJung-uk Kim ACPI_WDAT_GET_COUNTDOWN = 5, 1742d6dd1baeSJung-uk Kim ACPI_WDAT_SET_COUNTDOWN = 6, 1743d6dd1baeSJung-uk Kim ACPI_WDAT_GET_RUNNING_STATE = 8, 1744d6dd1baeSJung-uk Kim ACPI_WDAT_SET_RUNNING_STATE = 9, 1745d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STOPPED_STATE = 10, 1746d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STOPPED_STATE = 11, 1747d6dd1baeSJung-uk Kim ACPI_WDAT_GET_REBOOT = 16, 1748d6dd1baeSJung-uk Kim ACPI_WDAT_SET_REBOOT = 17, 1749d6dd1baeSJung-uk Kim ACPI_WDAT_GET_SHUTDOWN = 18, 1750d6dd1baeSJung-uk Kim ACPI_WDAT_SET_SHUTDOWN = 19, 1751d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STATUS = 32, 1752d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STATUS = 33, 1753d6dd1baeSJung-uk Kim ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1754d6dd1baeSJung-uk Kim }; 1755d6dd1baeSJung-uk Kim 1756d6dd1baeSJung-uk Kim /* Values for Instruction field above */ 1757d6dd1baeSJung-uk Kim 1758d6dd1baeSJung-uk Kim enum AcpiWdatInstructions 1759d6dd1baeSJung-uk Kim { 1760d6dd1baeSJung-uk Kim ACPI_WDAT_READ_VALUE = 0, 1761d6dd1baeSJung-uk Kim ACPI_WDAT_READ_COUNTDOWN = 1, 1762d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_VALUE = 2, 1763d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_COUNTDOWN = 3, 1764d6dd1baeSJung-uk Kim ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1765d6dd1baeSJung-uk Kim ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1766d6dd1baeSJung-uk Kim }; 1767d6dd1baeSJung-uk Kim 1768d6dd1baeSJung-uk Kim 1769d6dd1baeSJung-uk Kim /******************************************************************************* 1770d6dd1baeSJung-uk Kim * 1771a88e22b7SJung-uk Kim * WDDT - Watchdog Descriptor Table 1772a88e22b7SJung-uk Kim * Version 1 1773a88e22b7SJung-uk Kim * 1774a88e22b7SJung-uk Kim * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1775a88e22b7SJung-uk Kim * Version 001, September 2002 1776a88e22b7SJung-uk Kim * 1777a88e22b7SJung-uk Kim ******************************************************************************/ 1778a88e22b7SJung-uk Kim 1779a88e22b7SJung-uk Kim typedef struct acpi_table_wddt 1780a88e22b7SJung-uk Kim { 1781a88e22b7SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1782a88e22b7SJung-uk Kim UINT16 SpecVersion; 1783a88e22b7SJung-uk Kim UINT16 TableVersion; 1784a88e22b7SJung-uk Kim UINT16 PciVendorId; 1785a88e22b7SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 1786a88e22b7SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1787a88e22b7SJung-uk Kim UINT16 MinCount; /* Minimum counter value supported */ 1788a88e22b7SJung-uk Kim UINT16 Period; 1789a88e22b7SJung-uk Kim UINT16 Status; 1790a88e22b7SJung-uk Kim UINT16 Capability; 1791a88e22b7SJung-uk Kim 1792a88e22b7SJung-uk Kim } ACPI_TABLE_WDDT; 1793a88e22b7SJung-uk Kim 1794a88e22b7SJung-uk Kim /* Flags for Status field above */ 1795a88e22b7SJung-uk Kim 1796a88e22b7SJung-uk Kim #define ACPI_WDDT_AVAILABLE (1) 1797a88e22b7SJung-uk Kim #define ACPI_WDDT_ACTIVE (1<<1) 1798a88e22b7SJung-uk Kim #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1799a88e22b7SJung-uk Kim #define ACPI_WDDT_USER_RESET (1<<11) 1800a88e22b7SJung-uk Kim #define ACPI_WDDT_WDT_RESET (1<<12) 1801a88e22b7SJung-uk Kim #define ACPI_WDDT_POWER_FAIL (1<<13) 1802a88e22b7SJung-uk Kim #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1803a88e22b7SJung-uk Kim 1804a88e22b7SJung-uk Kim /* Flags for Capability field above */ 1805a88e22b7SJung-uk Kim 1806a88e22b7SJung-uk Kim #define ACPI_WDDT_AUTO_RESET (1) 1807a88e22b7SJung-uk Kim #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1808a88e22b7SJung-uk Kim 1809a88e22b7SJung-uk Kim 1810a88e22b7SJung-uk Kim /******************************************************************************* 1811a88e22b7SJung-uk Kim * 1812d6dd1baeSJung-uk Kim * WDRT - Watchdog Resource Table 1813d6dd1baeSJung-uk Kim * Version 1 1814d6dd1baeSJung-uk Kim * 1815d6dd1baeSJung-uk Kim * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1816d6dd1baeSJung-uk Kim * Version 1.01, August 28, 2006 1817d6dd1baeSJung-uk Kim * 1818d6dd1baeSJung-uk Kim ******************************************************************************/ 1819d6dd1baeSJung-uk Kim 1820d6dd1baeSJung-uk Kim typedef struct acpi_table_wdrt 1821d6dd1baeSJung-uk Kim { 1822d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1823d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1824d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS CountRegister; 1825d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1826d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1827d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1828d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1829d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1830d6dd1baeSJung-uk Kim UINT8 PciSegment; /* PCI Segment number */ 1831d6dd1baeSJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1832d6dd1baeSJung-uk Kim UINT8 Units; 1833d6dd1baeSJung-uk Kim 1834d6dd1baeSJung-uk Kim } ACPI_TABLE_WDRT; 1835d6dd1baeSJung-uk Kim 1836d6dd1baeSJung-uk Kim 1837d6dd1baeSJung-uk Kim /* Reset to default packing */ 1838d6dd1baeSJung-uk Kim 1839d6dd1baeSJung-uk Kim #pragma pack() 1840d6dd1baeSJung-uk Kim 1841d6dd1baeSJung-uk Kim #endif /* __ACTBL2_H__ */ 1842