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 70d84335fSJung-uk Kim /****************************************************************************** 80d84335fSJung-uk Kim * 90d84335fSJung-uk Kim * 1. Copyright Notice 100d84335fSJung-uk Kim * 110d84335fSJung-uk Kim * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp. 12d6dd1baeSJung-uk Kim * All rights reserved. 13d6dd1baeSJung-uk Kim * 140d84335fSJung-uk Kim * 2. License 150d84335fSJung-uk Kim * 160d84335fSJung-uk Kim * 2.1. This is your license from Intel Corp. under its intellectual property 170d84335fSJung-uk Kim * rights. You may have additional license terms from the party that provided 180d84335fSJung-uk Kim * you this software, covering your right to use that party's intellectual 190d84335fSJung-uk Kim * property rights. 200d84335fSJung-uk Kim * 210d84335fSJung-uk Kim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 220d84335fSJung-uk Kim * copy of the source code appearing in this file ("Covered Code") an 230d84335fSJung-uk Kim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 240d84335fSJung-uk Kim * base code distributed originally by Intel ("Original Intel Code") to copy, 250d84335fSJung-uk Kim * make derivatives, distribute, use and display any portion of the Covered 260d84335fSJung-uk Kim * Code in any form, with the right to sublicense such rights; and 270d84335fSJung-uk Kim * 280d84335fSJung-uk Kim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 290d84335fSJung-uk Kim * license (with the right to sublicense), under only those claims of Intel 300d84335fSJung-uk Kim * patents that are infringed by the Original Intel Code, to make, use, sell, 310d84335fSJung-uk Kim * offer to sell, and import the Covered Code and derivative works thereof 320d84335fSJung-uk Kim * solely to the minimum extent necessary to exercise the above copyright 330d84335fSJung-uk Kim * license, and in no event shall the patent license extend to any additions 340d84335fSJung-uk Kim * to or modifications of the Original Intel Code. No other license or right 350d84335fSJung-uk Kim * is granted directly or by implication, estoppel or otherwise; 360d84335fSJung-uk Kim * 370d84335fSJung-uk Kim * The above copyright and patent license is granted only if the following 380d84335fSJung-uk Kim * conditions are met: 390d84335fSJung-uk Kim * 400d84335fSJung-uk Kim * 3. Conditions 410d84335fSJung-uk Kim * 420d84335fSJung-uk Kim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 430d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 440d84335fSJung-uk Kim * Code or modification with rights to further distribute source must include 450d84335fSJung-uk Kim * the above Copyright Notice, the above License, this list of Conditions, 460d84335fSJung-uk Kim * and the following Disclaimer and Export Compliance provision. In addition, 470d84335fSJung-uk Kim * Licensee must cause all Covered Code to which Licensee contributes to 480d84335fSJung-uk Kim * contain a file documenting the changes Licensee made to create that Covered 490d84335fSJung-uk Kim * Code and the date of any change. Licensee must include in that file the 500d84335fSJung-uk Kim * documentation of any changes made by any predecessor Licensee. Licensee 510d84335fSJung-uk Kim * must include a prominent statement that the modification is derived, 520d84335fSJung-uk Kim * directly or indirectly, from Original Intel Code. 530d84335fSJung-uk Kim * 540d84335fSJung-uk Kim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 550d84335fSJung-uk Kim * Redistribution of source code of any substantial portion of the Covered 560d84335fSJung-uk Kim * Code or modification without rights to further distribute source must 570d84335fSJung-uk Kim * include the following Disclaimer and Export Compliance provision in the 580d84335fSJung-uk Kim * documentation and/or other materials provided with distribution. In 590d84335fSJung-uk Kim * addition, Licensee may not authorize further sublicense of source of any 600d84335fSJung-uk Kim * portion of the Covered Code, and must include terms to the effect that the 610d84335fSJung-uk Kim * license from Licensee to its licensee is limited to the intellectual 620d84335fSJung-uk Kim * property embodied in the software Licensee provides to its licensee, and 630d84335fSJung-uk Kim * not to intellectual property embodied in modifications its licensee may 640d84335fSJung-uk Kim * make. 650d84335fSJung-uk Kim * 660d84335fSJung-uk Kim * 3.3. Redistribution of Executable. Redistribution in executable form of any 670d84335fSJung-uk Kim * substantial portion of the Covered Code or modification must reproduce the 680d84335fSJung-uk Kim * above Copyright Notice, and the following Disclaimer and Export Compliance 690d84335fSJung-uk Kim * provision in the documentation and/or other materials provided with the 700d84335fSJung-uk Kim * distribution. 710d84335fSJung-uk Kim * 720d84335fSJung-uk Kim * 3.4. Intel retains all right, title, and interest in and to the Original 730d84335fSJung-uk Kim * Intel Code. 740d84335fSJung-uk Kim * 750d84335fSJung-uk Kim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 760d84335fSJung-uk Kim * Intel shall be used in advertising or otherwise to promote the sale, use or 770d84335fSJung-uk Kim * other dealings in products derived from or relating to the Covered Code 780d84335fSJung-uk Kim * without prior written authorization from Intel. 790d84335fSJung-uk Kim * 800d84335fSJung-uk Kim * 4. Disclaimer and Export Compliance 810d84335fSJung-uk Kim * 820d84335fSJung-uk Kim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 830d84335fSJung-uk Kim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 840d84335fSJung-uk Kim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 850d84335fSJung-uk Kim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 860d84335fSJung-uk Kim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 870d84335fSJung-uk Kim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 880d84335fSJung-uk Kim * PARTICULAR PURPOSE. 890d84335fSJung-uk Kim * 900d84335fSJung-uk Kim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 910d84335fSJung-uk Kim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 920d84335fSJung-uk Kim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 930d84335fSJung-uk Kim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 940d84335fSJung-uk Kim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 950d84335fSJung-uk Kim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 960d84335fSJung-uk Kim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 970d84335fSJung-uk Kim * LIMITED REMEDY. 980d84335fSJung-uk Kim * 990d84335fSJung-uk Kim * 4.3. Licensee shall not export, either directly or indirectly, any of this 1000d84335fSJung-uk Kim * software or system incorporating such software without first obtaining any 1010d84335fSJung-uk Kim * required license or other approval from the U. S. Department of Commerce or 1020d84335fSJung-uk Kim * any other agency or department of the United States Government. In the 1030d84335fSJung-uk Kim * event Licensee exports any such software from the United States or 1040d84335fSJung-uk Kim * re-exports any such software from a foreign destination, Licensee shall 1050d84335fSJung-uk Kim * ensure that the distribution and export/re-export of the software is in 1060d84335fSJung-uk Kim * compliance with all laws, regulations, orders, or other restrictions of the 1070d84335fSJung-uk Kim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1080d84335fSJung-uk Kim * any of its subsidiaries will export/re-export any technical data, process, 1090d84335fSJung-uk Kim * software, or service, directly or indirectly, to any country for which the 1100d84335fSJung-uk Kim * United States government or any agency thereof requires an export license, 1110d84335fSJung-uk Kim * other governmental approval, or letter of assurance, without first obtaining 1120d84335fSJung-uk Kim * such license, approval or letter. 1130d84335fSJung-uk Kim * 1140d84335fSJung-uk Kim ***************************************************************************** 1150d84335fSJung-uk Kim * 1160d84335fSJung-uk Kim * Alternatively, you may choose to be licensed under the terms of the 1170d84335fSJung-uk Kim * following license: 1180d84335fSJung-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 * 1340d84335fSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1350d84335fSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1360d84335fSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1370d84335fSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1380d84335fSJung-uk Kim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 1390d84335fSJung-uk Kim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 1400d84335fSJung-uk Kim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1410d84335fSJung-uk Kim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 1420d84335fSJung-uk Kim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 1430d84335fSJung-uk Kim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 1440d84335fSJung-uk Kim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1450d84335fSJung-uk Kim * 1460d84335fSJung-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 * 1500d84335fSJung-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 */ 1895f9b24faSJung-uk Kim #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ 190d6dd1baeSJung-uk Kim #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 191d6dd1baeSJung-uk Kim #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 192d6dd1baeSJung-uk Kim #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 193d6dd1baeSJung-uk Kim #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 1945ef50723SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 195d6dd1baeSJung-uk Kim #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 1969c48c75eSJung-uk Kim #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 197d6dd1baeSJung-uk Kim #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 198d6dd1baeSJung-uk Kim #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 199a88e22b7SJung-uk Kim #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 200d6dd1baeSJung-uk Kim #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 201af051161SJung-uk Kim #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */ 2020d84335fSJung-uk Kim #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 203d6dd1baeSJung-uk Kim 204a88e22b7SJung-uk Kim #ifdef ACPI_UNDEFINED_TABLES 205a88e22b7SJung-uk Kim /* 206a88e22b7SJung-uk Kim * These tables have been seen in the field, but no definition has been found 207a88e22b7SJung-uk Kim */ 208a88e22b7SJung-uk Kim #define ACPI_SIG_ATKG "ATKG" 209a88e22b7SJung-uk Kim #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 210a88e22b7SJung-uk Kim #define ACPI_SIG_IEIT "IEIT" 211a88e22b7SJung-uk Kim #endif 212d6dd1baeSJung-uk Kim 213d6dd1baeSJung-uk Kim /* 214d6dd1baeSJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 215d6dd1baeSJung-uk Kim * the tables are provided by the system BIOS. 216d6dd1baeSJung-uk Kim */ 217d6dd1baeSJung-uk Kim #pragma pack(1) 218d6dd1baeSJung-uk Kim 219d6dd1baeSJung-uk Kim /* 2201df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 2211df130f1SJung-uk Kim * 2221df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 2231df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 2241df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 2251df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 2261df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 2271df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 2281df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 229d6dd1baeSJung-uk Kim */ 230d6dd1baeSJung-uk Kim 231d6dd1baeSJung-uk Kim 232d6dd1baeSJung-uk Kim /******************************************************************************* 233d6dd1baeSJung-uk Kim * 234d6dd1baeSJung-uk Kim * ASF - Alert Standard Format table (Signature "ASF!") 235d6dd1baeSJung-uk Kim * Revision 0x10 236d6dd1baeSJung-uk Kim * 237d6dd1baeSJung-uk Kim * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 238d6dd1baeSJung-uk Kim * 239d6dd1baeSJung-uk Kim ******************************************************************************/ 240d6dd1baeSJung-uk Kim 241d6dd1baeSJung-uk Kim typedef struct acpi_table_asf 242d6dd1baeSJung-uk Kim { 243d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 244d6dd1baeSJung-uk Kim 245d6dd1baeSJung-uk Kim } ACPI_TABLE_ASF; 246d6dd1baeSJung-uk Kim 247d6dd1baeSJung-uk Kim 248d6dd1baeSJung-uk Kim /* ASF subtable header */ 249d6dd1baeSJung-uk Kim 250d6dd1baeSJung-uk Kim typedef struct acpi_asf_header 251d6dd1baeSJung-uk Kim { 252d6dd1baeSJung-uk Kim UINT8 Type; 253d6dd1baeSJung-uk Kim UINT8 Reserved; 254d6dd1baeSJung-uk Kim UINT16 Length; 255d6dd1baeSJung-uk Kim 256d6dd1baeSJung-uk Kim } ACPI_ASF_HEADER; 257d6dd1baeSJung-uk Kim 258d6dd1baeSJung-uk Kim 259d6dd1baeSJung-uk Kim /* Values for Type field above */ 260d6dd1baeSJung-uk Kim 261d6dd1baeSJung-uk Kim enum AcpiAsfType 262d6dd1baeSJung-uk Kim { 263d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_INFO = 0, 264d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ALERT = 1, 265d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_CONTROL = 2, 266d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_BOOT = 3, 267d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_ADDRESS = 4, 268d6dd1baeSJung-uk Kim ACPI_ASF_TYPE_RESERVED = 5 269d6dd1baeSJung-uk Kim }; 270d6dd1baeSJung-uk Kim 271d6dd1baeSJung-uk Kim /* 272d6dd1baeSJung-uk Kim * ASF subtables 273d6dd1baeSJung-uk Kim */ 274d6dd1baeSJung-uk Kim 275d6dd1baeSJung-uk Kim /* 0: ASF Information */ 276d6dd1baeSJung-uk Kim 277d6dd1baeSJung-uk Kim typedef struct acpi_asf_info 278d6dd1baeSJung-uk Kim { 279d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 280d6dd1baeSJung-uk Kim UINT8 MinResetValue; 281d6dd1baeSJung-uk Kim UINT8 MinPollInterval; 282d6dd1baeSJung-uk Kim UINT16 SystemId; 283d6dd1baeSJung-uk Kim UINT32 MfgId; 284d6dd1baeSJung-uk Kim UINT8 Flags; 285d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 286d6dd1baeSJung-uk Kim 287d6dd1baeSJung-uk Kim } ACPI_ASF_INFO; 288d6dd1baeSJung-uk Kim 289d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 290d6dd1baeSJung-uk Kim 291d6dd1baeSJung-uk Kim #define ACPI_ASF_SMBUS_PROTOCOLS (1) 292d6dd1baeSJung-uk Kim 293d6dd1baeSJung-uk Kim 294d6dd1baeSJung-uk Kim /* 1: ASF Alerts */ 295d6dd1baeSJung-uk Kim 296d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert 297d6dd1baeSJung-uk Kim { 298d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 299d6dd1baeSJung-uk Kim UINT8 AssertMask; 300d6dd1baeSJung-uk Kim UINT8 DeassertMask; 301d6dd1baeSJung-uk Kim UINT8 Alerts; 302d6dd1baeSJung-uk Kim UINT8 DataLength; 303d6dd1baeSJung-uk Kim 304d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT; 305d6dd1baeSJung-uk Kim 306d6dd1baeSJung-uk Kim typedef struct acpi_asf_alert_data 307d6dd1baeSJung-uk Kim { 308d6dd1baeSJung-uk Kim UINT8 Address; 309d6dd1baeSJung-uk Kim UINT8 Command; 310d6dd1baeSJung-uk Kim UINT8 Mask; 311d6dd1baeSJung-uk Kim UINT8 Value; 312d6dd1baeSJung-uk Kim UINT8 SensorType; 313d6dd1baeSJung-uk Kim UINT8 Type; 314d6dd1baeSJung-uk Kim UINT8 Offset; 315d6dd1baeSJung-uk Kim UINT8 SourceType; 316d6dd1baeSJung-uk Kim UINT8 Severity; 317d6dd1baeSJung-uk Kim UINT8 SensorNumber; 318d6dd1baeSJung-uk Kim UINT8 Entity; 319d6dd1baeSJung-uk Kim UINT8 Instance; 320d6dd1baeSJung-uk Kim 321d6dd1baeSJung-uk Kim } ACPI_ASF_ALERT_DATA; 322d6dd1baeSJung-uk Kim 323d6dd1baeSJung-uk Kim 324d6dd1baeSJung-uk Kim /* 2: ASF Remote Control */ 325d6dd1baeSJung-uk Kim 326d6dd1baeSJung-uk Kim typedef struct acpi_asf_remote 327d6dd1baeSJung-uk Kim { 328d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 329d6dd1baeSJung-uk Kim UINT8 Controls; 330d6dd1baeSJung-uk Kim UINT8 DataLength; 331d6dd1baeSJung-uk Kim UINT16 Reserved2; 332d6dd1baeSJung-uk Kim 333d6dd1baeSJung-uk Kim } ACPI_ASF_REMOTE; 334d6dd1baeSJung-uk Kim 335d6dd1baeSJung-uk Kim typedef struct acpi_asf_control_data 336d6dd1baeSJung-uk Kim { 337d6dd1baeSJung-uk Kim UINT8 Function; 338d6dd1baeSJung-uk Kim UINT8 Address; 339d6dd1baeSJung-uk Kim UINT8 Command; 340d6dd1baeSJung-uk Kim UINT8 Value; 341d6dd1baeSJung-uk Kim 342d6dd1baeSJung-uk Kim } ACPI_ASF_CONTROL_DATA; 343d6dd1baeSJung-uk Kim 344d6dd1baeSJung-uk Kim 345d6dd1baeSJung-uk Kim /* 3: ASF RMCP Boot Options */ 346d6dd1baeSJung-uk Kim 347d6dd1baeSJung-uk Kim typedef struct acpi_asf_rmcp 348d6dd1baeSJung-uk Kim { 349d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 350d6dd1baeSJung-uk Kim UINT8 Capabilities[7]; 351d6dd1baeSJung-uk Kim UINT8 CompletionCode; 352d6dd1baeSJung-uk Kim UINT32 EnterpriseId; 353d6dd1baeSJung-uk Kim UINT8 Command; 354d6dd1baeSJung-uk Kim UINT16 Parameter; 355d6dd1baeSJung-uk Kim UINT16 BootOptions; 356d6dd1baeSJung-uk Kim UINT16 OemParameters; 357d6dd1baeSJung-uk Kim 358d6dd1baeSJung-uk Kim } ACPI_ASF_RMCP; 359d6dd1baeSJung-uk Kim 360d6dd1baeSJung-uk Kim 361d6dd1baeSJung-uk Kim /* 4: ASF Address */ 362d6dd1baeSJung-uk Kim 363d6dd1baeSJung-uk Kim typedef struct acpi_asf_address 364d6dd1baeSJung-uk Kim { 365d6dd1baeSJung-uk Kim ACPI_ASF_HEADER Header; 366d6dd1baeSJung-uk Kim UINT8 EpromAddress; 367d6dd1baeSJung-uk Kim UINT8 Devices; 368d6dd1baeSJung-uk Kim 369d6dd1baeSJung-uk Kim } ACPI_ASF_ADDRESS; 370d6dd1baeSJung-uk Kim 371d6dd1baeSJung-uk Kim 372d6dd1baeSJung-uk Kim /******************************************************************************* 373d6dd1baeSJung-uk Kim * 374d6dd1baeSJung-uk Kim * BOOT - Simple Boot Flag Table 375d6dd1baeSJung-uk Kim * Version 1 376d6dd1baeSJung-uk Kim * 377d6dd1baeSJung-uk Kim * Conforms to the "Simple Boot Flag Specification", Version 2.1 378d6dd1baeSJung-uk Kim * 379d6dd1baeSJung-uk Kim ******************************************************************************/ 380d6dd1baeSJung-uk Kim 381d6dd1baeSJung-uk Kim typedef struct acpi_table_boot 382d6dd1baeSJung-uk Kim { 383d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 384d6dd1baeSJung-uk Kim UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 385d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 386d6dd1baeSJung-uk Kim 387d6dd1baeSJung-uk Kim } ACPI_TABLE_BOOT; 388d6dd1baeSJung-uk Kim 389d6dd1baeSJung-uk Kim 390d6dd1baeSJung-uk Kim /******************************************************************************* 391d6dd1baeSJung-uk Kim * 3921df130f1SJung-uk Kim * CSRT - Core System Resource Table 3931df130f1SJung-uk Kim * Version 0 3941df130f1SJung-uk Kim * 3951df130f1SJung-uk Kim * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 3961df130f1SJung-uk Kim * 3971df130f1SJung-uk Kim ******************************************************************************/ 3981df130f1SJung-uk Kim 3991df130f1SJung-uk Kim typedef struct acpi_table_csrt 4001df130f1SJung-uk Kim { 4011df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4021df130f1SJung-uk Kim 4031df130f1SJung-uk Kim } ACPI_TABLE_CSRT; 4041df130f1SJung-uk Kim 405efcc2a30SJung-uk Kim 4061df130f1SJung-uk Kim /* Resource Group subtable */ 4071df130f1SJung-uk Kim 4081df130f1SJung-uk Kim typedef struct acpi_csrt_group 4091df130f1SJung-uk Kim { 4101df130f1SJung-uk Kim UINT32 Length; 4111df130f1SJung-uk Kim UINT32 VendorId; 4121df130f1SJung-uk Kim UINT32 SubvendorId; 4131df130f1SJung-uk Kim UINT16 DeviceId; 4141df130f1SJung-uk Kim UINT16 SubdeviceId; 4151df130f1SJung-uk Kim UINT16 Revision; 4161df130f1SJung-uk Kim UINT16 Reserved; 417efcc2a30SJung-uk Kim UINT32 SharedInfoLength; 4181df130f1SJung-uk Kim 419efcc2a30SJung-uk Kim /* Shared data immediately follows (Length = SharedInfoLength) */ 4201df130f1SJung-uk Kim 4211df130f1SJung-uk Kim } ACPI_CSRT_GROUP; 4221df130f1SJung-uk Kim 423efcc2a30SJung-uk Kim /* Shared Info subtable */ 424efcc2a30SJung-uk Kim 425efcc2a30SJung-uk Kim typedef struct acpi_csrt_shared_info 426efcc2a30SJung-uk Kim { 427efcc2a30SJung-uk Kim UINT16 MajorVersion; 428efcc2a30SJung-uk Kim UINT16 MinorVersion; 429efcc2a30SJung-uk Kim UINT32 MmioBaseLow; 430efcc2a30SJung-uk Kim UINT32 MmioBaseHigh; 431efcc2a30SJung-uk Kim UINT32 GsiInterrupt; 432efcc2a30SJung-uk Kim UINT8 InterruptPolarity; 433efcc2a30SJung-uk Kim UINT8 InterruptMode; 434efcc2a30SJung-uk Kim UINT8 NumChannels; 435efcc2a30SJung-uk Kim UINT8 DmaAddressWidth; 436efcc2a30SJung-uk Kim UINT16 BaseRequestLine; 437efcc2a30SJung-uk Kim UINT16 NumHandshakeSignals; 438efcc2a30SJung-uk Kim UINT32 MaxBlockSize; 439efcc2a30SJung-uk Kim 440efcc2a30SJung-uk Kim /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ 441efcc2a30SJung-uk Kim 442efcc2a30SJung-uk Kim } ACPI_CSRT_SHARED_INFO; 443efcc2a30SJung-uk Kim 4441df130f1SJung-uk Kim /* Resource Descriptor subtable */ 4451df130f1SJung-uk Kim 4461df130f1SJung-uk Kim typedef struct acpi_csrt_descriptor 4471df130f1SJung-uk Kim { 4481df130f1SJung-uk Kim UINT32 Length; 4491df130f1SJung-uk Kim UINT16 Type; 4501df130f1SJung-uk Kim UINT16 Subtype; 4511df130f1SJung-uk Kim UINT32 Uid; 4521df130f1SJung-uk Kim 4531df130f1SJung-uk Kim /* Resource-specific information immediately follows */ 4541df130f1SJung-uk Kim 4551df130f1SJung-uk Kim } ACPI_CSRT_DESCRIPTOR; 4561df130f1SJung-uk Kim 4571df130f1SJung-uk Kim 4581df130f1SJung-uk Kim /* Resource Types */ 4591df130f1SJung-uk Kim 4601df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 4611df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_TIMER 0x0002 4621df130f1SJung-uk Kim #define ACPI_CSRT_TYPE_DMA 0x0003 4631df130f1SJung-uk Kim 4641df130f1SJung-uk Kim /* Resource Subtypes */ 4651df130f1SJung-uk Kim 4661df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_LINE 0x0000 4671df130f1SJung-uk Kim #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 4681df130f1SJung-uk Kim #define ACPI_CSRT_TIMER 0x0000 4691df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CHANNEL 0x0000 4701df130f1SJung-uk Kim #define ACPI_CSRT_DMA_CONTROLLER 0x0001 4711df130f1SJung-uk Kim 4721df130f1SJung-uk Kim 4731df130f1SJung-uk Kim /******************************************************************************* 4741df130f1SJung-uk Kim * 4751df130f1SJung-uk Kim * DBG2 - Debug Port Table 2 4761df130f1SJung-uk Kim * Version 0 (Both main table and subtables) 4771df130f1SJung-uk Kim * 478f8146b88SJung-uk Kim * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015 4791df130f1SJung-uk Kim * 4801df130f1SJung-uk Kim ******************************************************************************/ 4811df130f1SJung-uk Kim 4821df130f1SJung-uk Kim typedef struct acpi_table_dbg2 4831df130f1SJung-uk Kim { 4841df130f1SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4851df130f1SJung-uk Kim UINT32 InfoOffset; 4861df130f1SJung-uk Kim UINT32 InfoCount; 4871df130f1SJung-uk Kim 4881df130f1SJung-uk Kim } ACPI_TABLE_DBG2; 4891df130f1SJung-uk Kim 4901df130f1SJung-uk Kim 491313a0c13SJung-uk Kim typedef struct acpi_dbg2_header 492313a0c13SJung-uk Kim { 493313a0c13SJung-uk Kim UINT32 InfoOffset; 494313a0c13SJung-uk Kim UINT32 InfoCount; 495313a0c13SJung-uk Kim 496313a0c13SJung-uk Kim } ACPI_DBG2_HEADER; 497313a0c13SJung-uk Kim 498313a0c13SJung-uk Kim 4991df130f1SJung-uk Kim /* Debug Device Information Subtable */ 5001df130f1SJung-uk Kim 5011df130f1SJung-uk Kim typedef struct acpi_dbg2_device 5021df130f1SJung-uk Kim { 5031df130f1SJung-uk Kim UINT8 Revision; 5041df130f1SJung-uk Kim UINT16 Length; 5051df130f1SJung-uk Kim UINT8 RegisterCount; /* Number of BaseAddress registers */ 5061df130f1SJung-uk Kim UINT16 NamepathLength; 5071df130f1SJung-uk Kim UINT16 NamepathOffset; 5081df130f1SJung-uk Kim UINT16 OemDataLength; 5091df130f1SJung-uk Kim UINT16 OemDataOffset; 5101df130f1SJung-uk Kim UINT16 PortType; 5111df130f1SJung-uk Kim UINT16 PortSubtype; 5121df130f1SJung-uk Kim UINT16 Reserved; 5131df130f1SJung-uk Kim UINT16 BaseAddressOffset; 5141df130f1SJung-uk Kim UINT16 AddressSizeOffset; 5151df130f1SJung-uk Kim /* 5161df130f1SJung-uk Kim * Data that follows: 5171df130f1SJung-uk Kim * BaseAddress (required) - Each in 12-byte Generic Address Structure format. 5181df130f1SJung-uk Kim * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. 5191df130f1SJung-uk Kim * Namepath (required) - Null terminated string. Single dot if not supported. 5201df130f1SJung-uk Kim * OemData (optional) - Length is OemDataLength. 5211df130f1SJung-uk Kim */ 5221df130f1SJung-uk Kim } ACPI_DBG2_DEVICE; 5231df130f1SJung-uk Kim 5241df130f1SJung-uk Kim /* Types for PortType field above */ 5251df130f1SJung-uk Kim 5261df130f1SJung-uk Kim #define ACPI_DBG2_SERIAL_PORT 0x8000 5271df130f1SJung-uk Kim #define ACPI_DBG2_1394_PORT 0x8001 5281df130f1SJung-uk Kim #define ACPI_DBG2_USB_PORT 0x8002 5291df130f1SJung-uk Kim #define ACPI_DBG2_NET_PORT 0x8003 5301df130f1SJung-uk Kim 5311df130f1SJung-uk Kim /* Subtypes for PortSubtype field above */ 5321df130f1SJung-uk Kim 5331df130f1SJung-uk Kim #define ACPI_DBG2_16550_COMPATIBLE 0x0000 5341df130f1SJung-uk Kim #define ACPI_DBG2_16550_SUBSET 0x0001 535f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_PL011 0x0003 536f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 537f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 538f8146b88SJung-uk Kim #define ACPI_DBG2_ARM_DCC 0x000F 539f8146b88SJung-uk Kim #define ACPI_DBG2_BCM2835 0x0010 5401df130f1SJung-uk Kim 5411df130f1SJung-uk Kim #define ACPI_DBG2_1394_STANDARD 0x0000 5421df130f1SJung-uk Kim 5431df130f1SJung-uk Kim #define ACPI_DBG2_USB_XHCI 0x0000 5441df130f1SJung-uk Kim #define ACPI_DBG2_USB_EHCI 0x0001 5451df130f1SJung-uk Kim 5461df130f1SJung-uk Kim 5471df130f1SJung-uk Kim /******************************************************************************* 5481df130f1SJung-uk Kim * 549d6dd1baeSJung-uk Kim * DBGP - Debug Port table 550d6dd1baeSJung-uk Kim * Version 1 551d6dd1baeSJung-uk Kim * 552d6dd1baeSJung-uk Kim * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 553d6dd1baeSJung-uk Kim * 554d6dd1baeSJung-uk Kim ******************************************************************************/ 555d6dd1baeSJung-uk Kim 556d6dd1baeSJung-uk Kim typedef struct acpi_table_dbgp 557d6dd1baeSJung-uk Kim { 558d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 559d6dd1baeSJung-uk Kim UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 560d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 561d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS DebugPort; 562d6dd1baeSJung-uk Kim 563d6dd1baeSJung-uk Kim } ACPI_TABLE_DBGP; 564d6dd1baeSJung-uk Kim 565d6dd1baeSJung-uk Kim 566d6dd1baeSJung-uk Kim /******************************************************************************* 567d6dd1baeSJung-uk Kim * 568d6dd1baeSJung-uk Kim * DMAR - DMA Remapping table 569d6dd1baeSJung-uk Kim * Version 1 570d6dd1baeSJung-uk Kim * 571d6dd1baeSJung-uk Kim * Conforms to "Intel Virtualization Technology for Directed I/O", 572f8146b88SJung-uk Kim * Version 2.3, October 2014 573d6dd1baeSJung-uk Kim * 574d6dd1baeSJung-uk Kim ******************************************************************************/ 575d6dd1baeSJung-uk Kim 576d6dd1baeSJung-uk Kim typedef struct acpi_table_dmar 577d6dd1baeSJung-uk Kim { 578d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 579d6dd1baeSJung-uk Kim UINT8 Width; /* Host Address Width */ 580d6dd1baeSJung-uk Kim UINT8 Flags; 581d6dd1baeSJung-uk Kim UINT8 Reserved[10]; 582d6dd1baeSJung-uk Kim 583d6dd1baeSJung-uk Kim } ACPI_TABLE_DMAR; 584d6dd1baeSJung-uk Kim 585d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 586d6dd1baeSJung-uk Kim 587d6dd1baeSJung-uk Kim #define ACPI_DMAR_INTR_REMAP (1) 588f8146b88SJung-uk Kim #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 589f8146b88SJung-uk Kim #define ACPI_DMAR_X2APIC_MODE (1<<2) 590d6dd1baeSJung-uk Kim 591d6dd1baeSJung-uk Kim 592d6dd1baeSJung-uk Kim /* DMAR subtable header */ 593d6dd1baeSJung-uk Kim 594d6dd1baeSJung-uk Kim typedef struct acpi_dmar_header 595d6dd1baeSJung-uk Kim { 596d6dd1baeSJung-uk Kim UINT16 Type; 597d6dd1baeSJung-uk Kim UINT16 Length; 598d6dd1baeSJung-uk Kim 599d6dd1baeSJung-uk Kim } ACPI_DMAR_HEADER; 600d6dd1baeSJung-uk Kim 601d6dd1baeSJung-uk Kim /* Values for subtable type in ACPI_DMAR_HEADER */ 602d6dd1baeSJung-uk Kim 603d6dd1baeSJung-uk Kim enum AcpiDmarType 604d6dd1baeSJung-uk Kim { 605d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 606d6dd1baeSJung-uk Kim ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 607313a0c13SJung-uk Kim ACPI_DMAR_TYPE_ROOT_ATS = 2, 608313a0c13SJung-uk Kim ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 609313a0c13SJung-uk Kim ACPI_DMAR_TYPE_NAMESPACE = 4, 610313a0c13SJung-uk Kim ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 611d6dd1baeSJung-uk Kim }; 612d6dd1baeSJung-uk Kim 613d6dd1baeSJung-uk Kim 614d6dd1baeSJung-uk Kim /* DMAR Device Scope structure */ 615d6dd1baeSJung-uk Kim 616d6dd1baeSJung-uk Kim typedef struct acpi_dmar_device_scope 617d6dd1baeSJung-uk Kim { 618d6dd1baeSJung-uk Kim UINT8 EntryType; 619d6dd1baeSJung-uk Kim UINT8 Length; 620d6dd1baeSJung-uk Kim UINT16 Reserved; 621d6dd1baeSJung-uk Kim UINT8 EnumerationId; 622d6dd1baeSJung-uk Kim UINT8 Bus; 623d6dd1baeSJung-uk Kim 624d6dd1baeSJung-uk Kim } ACPI_DMAR_DEVICE_SCOPE; 625d6dd1baeSJung-uk Kim 626313a0c13SJung-uk Kim /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */ 627d6dd1baeSJung-uk Kim 628d6dd1baeSJung-uk Kim enum AcpiDmarScopeType 629d6dd1baeSJung-uk Kim { 630d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 631d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 632d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 633d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 634d6dd1baeSJung-uk Kim ACPI_DMAR_SCOPE_TYPE_HPET = 4, 635313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 636313a0c13SJung-uk Kim ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 637d6dd1baeSJung-uk Kim }; 638d6dd1baeSJung-uk Kim 639d6dd1baeSJung-uk Kim typedef struct acpi_dmar_pci_path 640d6dd1baeSJung-uk Kim { 641d6dd1baeSJung-uk Kim UINT8 Device; 642d6dd1baeSJung-uk Kim UINT8 Function; 643d6dd1baeSJung-uk Kim 644d6dd1baeSJung-uk Kim } ACPI_DMAR_PCI_PATH; 645d6dd1baeSJung-uk Kim 646d6dd1baeSJung-uk Kim 647d6dd1baeSJung-uk Kim /* 648313a0c13SJung-uk Kim * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER 649d6dd1baeSJung-uk Kim */ 650d6dd1baeSJung-uk Kim 651d6dd1baeSJung-uk Kim /* 0: Hardware Unit Definition */ 652d6dd1baeSJung-uk Kim 653d6dd1baeSJung-uk Kim typedef struct acpi_dmar_hardware_unit 654d6dd1baeSJung-uk Kim { 655d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 656d6dd1baeSJung-uk Kim UINT8 Flags; 657d6dd1baeSJung-uk Kim UINT8 Reserved; 658d6dd1baeSJung-uk Kim UINT16 Segment; 659d6dd1baeSJung-uk Kim UINT64 Address; /* Register Base Address */ 660d6dd1baeSJung-uk Kim 661d6dd1baeSJung-uk Kim } ACPI_DMAR_HARDWARE_UNIT; 662d6dd1baeSJung-uk Kim 663d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 664d6dd1baeSJung-uk Kim 665d6dd1baeSJung-uk Kim #define ACPI_DMAR_INCLUDE_ALL (1) 666d6dd1baeSJung-uk Kim 667d6dd1baeSJung-uk Kim 668d6dd1baeSJung-uk Kim /* 1: Reserved Memory Defininition */ 669d6dd1baeSJung-uk Kim 670d6dd1baeSJung-uk Kim typedef struct acpi_dmar_reserved_memory 671d6dd1baeSJung-uk Kim { 672d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 673d6dd1baeSJung-uk Kim UINT16 Reserved; 674d6dd1baeSJung-uk Kim UINT16 Segment; 675d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* 4K aligned base address */ 676d6dd1baeSJung-uk Kim UINT64 EndAddress; /* 4K aligned limit address */ 677d6dd1baeSJung-uk Kim 678d6dd1baeSJung-uk Kim } ACPI_DMAR_RESERVED_MEMORY; 679d6dd1baeSJung-uk Kim 680d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 681d6dd1baeSJung-uk Kim 682d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALLOW_ALL (1) 683d6dd1baeSJung-uk Kim 684d6dd1baeSJung-uk Kim 685d6dd1baeSJung-uk Kim /* 2: Root Port ATS Capability Reporting Structure */ 686d6dd1baeSJung-uk Kim 687d6dd1baeSJung-uk Kim typedef struct acpi_dmar_atsr 688d6dd1baeSJung-uk Kim { 689d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 690d6dd1baeSJung-uk Kim UINT8 Flags; 691d6dd1baeSJung-uk Kim UINT8 Reserved; 692d6dd1baeSJung-uk Kim UINT16 Segment; 693d6dd1baeSJung-uk Kim 694d6dd1baeSJung-uk Kim } ACPI_DMAR_ATSR; 695d6dd1baeSJung-uk Kim 696d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 697d6dd1baeSJung-uk Kim 698d6dd1baeSJung-uk Kim #define ACPI_DMAR_ALL_PORTS (1) 699d6dd1baeSJung-uk Kim 700d6dd1baeSJung-uk Kim 701d6dd1baeSJung-uk Kim /* 3: Remapping Hardware Static Affinity Structure */ 702d6dd1baeSJung-uk Kim 703d6dd1baeSJung-uk Kim typedef struct acpi_dmar_rhsa 704d6dd1baeSJung-uk Kim { 705d6dd1baeSJung-uk Kim ACPI_DMAR_HEADER Header; 706d6dd1baeSJung-uk Kim UINT32 Reserved; 707d6dd1baeSJung-uk Kim UINT64 BaseAddress; 708d6dd1baeSJung-uk Kim UINT32 ProximityDomain; 709d6dd1baeSJung-uk Kim 710d6dd1baeSJung-uk Kim } ACPI_DMAR_RHSA; 711d6dd1baeSJung-uk Kim 712d6dd1baeSJung-uk Kim 713313a0c13SJung-uk Kim /* 4: ACPI Namespace Device Declaration Structure */ 714313a0c13SJung-uk Kim 715313a0c13SJung-uk Kim typedef struct acpi_dmar_andd 716313a0c13SJung-uk Kim { 717313a0c13SJung-uk Kim ACPI_DMAR_HEADER Header; 718313a0c13SJung-uk Kim UINT8 Reserved[3]; 719313a0c13SJung-uk Kim UINT8 DeviceNumber; 720313a0c13SJung-uk Kim char DeviceName[1]; 721313a0c13SJung-uk Kim 722313a0c13SJung-uk Kim } ACPI_DMAR_ANDD; 723313a0c13SJung-uk Kim 724313a0c13SJung-uk Kim 725d6dd1baeSJung-uk Kim /******************************************************************************* 726d6dd1baeSJung-uk Kim * 727d6dd1baeSJung-uk Kim * HPET - High Precision Event Timer table 728d6dd1baeSJung-uk Kim * Version 1 729d6dd1baeSJung-uk Kim * 730d6dd1baeSJung-uk Kim * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 731d6dd1baeSJung-uk Kim * Version 1.0a, October 2004 732d6dd1baeSJung-uk Kim * 733d6dd1baeSJung-uk Kim ******************************************************************************/ 734d6dd1baeSJung-uk Kim 735d6dd1baeSJung-uk Kim typedef struct acpi_table_hpet 736d6dd1baeSJung-uk Kim { 737d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 738d6dd1baeSJung-uk Kim UINT32 Id; /* Hardware ID of event timer block */ 739d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 740d6dd1baeSJung-uk Kim UINT8 Sequence; /* HPET sequence number */ 741d6dd1baeSJung-uk Kim UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 742d6dd1baeSJung-uk Kim UINT8 Flags; 743d6dd1baeSJung-uk Kim 744d6dd1baeSJung-uk Kim } ACPI_TABLE_HPET; 745d6dd1baeSJung-uk Kim 746d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 747d6dd1baeSJung-uk Kim 748d6dd1baeSJung-uk Kim #define ACPI_HPET_PAGE_PROTECT_MASK (3) 749d6dd1baeSJung-uk Kim 750d6dd1baeSJung-uk Kim /* Values for Page Protect flags */ 751d6dd1baeSJung-uk Kim 752d6dd1baeSJung-uk Kim enum AcpiHpetPageProtect 753d6dd1baeSJung-uk Kim { 754d6dd1baeSJung-uk Kim ACPI_HPET_NO_PAGE_PROTECT = 0, 755d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT4 = 1, 756d6dd1baeSJung-uk Kim ACPI_HPET_PAGE_PROTECT64 = 2 757d6dd1baeSJung-uk Kim }; 758d6dd1baeSJung-uk Kim 759d6dd1baeSJung-uk Kim 760d6dd1baeSJung-uk Kim /******************************************************************************* 761d6dd1baeSJung-uk Kim * 762d6dd1baeSJung-uk Kim * IBFT - Boot Firmware Table 763d6dd1baeSJung-uk Kim * Version 1 764d6dd1baeSJung-uk Kim * 765d6dd1baeSJung-uk Kim * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 766d6dd1baeSJung-uk Kim * Specification", Version 1.01, March 1, 2007 767d6dd1baeSJung-uk Kim * 768d6dd1baeSJung-uk Kim * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 769d6dd1baeSJung-uk Kim * Therefore, it is not currently supported by the disassembler. 770d6dd1baeSJung-uk Kim * 771d6dd1baeSJung-uk Kim ******************************************************************************/ 772d6dd1baeSJung-uk Kim 773d6dd1baeSJung-uk Kim typedef struct acpi_table_ibft 774d6dd1baeSJung-uk Kim { 775d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 776d6dd1baeSJung-uk Kim UINT8 Reserved[12]; 777d6dd1baeSJung-uk Kim 778d6dd1baeSJung-uk Kim } ACPI_TABLE_IBFT; 779d6dd1baeSJung-uk Kim 780d6dd1baeSJung-uk Kim 781d6dd1baeSJung-uk Kim /* IBFT common subtable header */ 782d6dd1baeSJung-uk Kim 783d6dd1baeSJung-uk Kim typedef struct acpi_ibft_header 784d6dd1baeSJung-uk Kim { 785d6dd1baeSJung-uk Kim UINT8 Type; 786d6dd1baeSJung-uk Kim UINT8 Version; 787d6dd1baeSJung-uk Kim UINT16 Length; 788d6dd1baeSJung-uk Kim UINT8 Index; 789d6dd1baeSJung-uk Kim UINT8 Flags; 790d6dd1baeSJung-uk Kim 791d6dd1baeSJung-uk Kim } ACPI_IBFT_HEADER; 792d6dd1baeSJung-uk Kim 793d6dd1baeSJung-uk Kim /* Values for Type field above */ 794d6dd1baeSJung-uk Kim 795d6dd1baeSJung-uk Kim enum AcpiIbftType 796d6dd1baeSJung-uk Kim { 797d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NOT_USED = 0, 798d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_CONTROL = 1, 799d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_INITIATOR = 2, 800d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_NIC = 3, 801d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_TARGET = 4, 802d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_EXTENSIONS = 5, 803d6dd1baeSJung-uk Kim ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 804d6dd1baeSJung-uk Kim }; 805d6dd1baeSJung-uk Kim 806d6dd1baeSJung-uk Kim 807d6dd1baeSJung-uk Kim /* IBFT subtables */ 808d6dd1baeSJung-uk Kim 809d6dd1baeSJung-uk Kim typedef struct acpi_ibft_control 810d6dd1baeSJung-uk Kim { 811d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 812d6dd1baeSJung-uk Kim UINT16 Extensions; 813d6dd1baeSJung-uk Kim UINT16 InitiatorOffset; 814d6dd1baeSJung-uk Kim UINT16 Nic0Offset; 815d6dd1baeSJung-uk Kim UINT16 Target0Offset; 816d6dd1baeSJung-uk Kim UINT16 Nic1Offset; 817d6dd1baeSJung-uk Kim UINT16 Target1Offset; 818d6dd1baeSJung-uk Kim 819d6dd1baeSJung-uk Kim } ACPI_IBFT_CONTROL; 820d6dd1baeSJung-uk Kim 821d6dd1baeSJung-uk Kim typedef struct acpi_ibft_initiator 822d6dd1baeSJung-uk Kim { 823d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 824d6dd1baeSJung-uk Kim UINT8 SnsServer[16]; 825d6dd1baeSJung-uk Kim UINT8 SlpServer[16]; 826d6dd1baeSJung-uk Kim UINT8 PrimaryServer[16]; 827d6dd1baeSJung-uk Kim UINT8 SecondaryServer[16]; 828d6dd1baeSJung-uk Kim UINT16 NameLength; 829d6dd1baeSJung-uk Kim UINT16 NameOffset; 830d6dd1baeSJung-uk Kim 831d6dd1baeSJung-uk Kim } ACPI_IBFT_INITIATOR; 832d6dd1baeSJung-uk Kim 833d6dd1baeSJung-uk Kim typedef struct acpi_ibft_nic 834d6dd1baeSJung-uk Kim { 835d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 836d6dd1baeSJung-uk Kim UINT8 IpAddress[16]; 837d6dd1baeSJung-uk Kim UINT8 SubnetMaskPrefix; 838d6dd1baeSJung-uk Kim UINT8 Origin; 839d6dd1baeSJung-uk Kim UINT8 Gateway[16]; 840d6dd1baeSJung-uk Kim UINT8 PrimaryDns[16]; 841d6dd1baeSJung-uk Kim UINT8 SecondaryDns[16]; 842d6dd1baeSJung-uk Kim UINT8 Dhcp[16]; 843d6dd1baeSJung-uk Kim UINT16 Vlan; 844d6dd1baeSJung-uk Kim UINT8 MacAddress[6]; 845d6dd1baeSJung-uk Kim UINT16 PciAddress; 846d6dd1baeSJung-uk Kim UINT16 NameLength; 847d6dd1baeSJung-uk Kim UINT16 NameOffset; 848d6dd1baeSJung-uk Kim 849d6dd1baeSJung-uk Kim } ACPI_IBFT_NIC; 850d6dd1baeSJung-uk Kim 851d6dd1baeSJung-uk Kim typedef struct acpi_ibft_target 852d6dd1baeSJung-uk Kim { 853d6dd1baeSJung-uk Kim ACPI_IBFT_HEADER Header; 854d6dd1baeSJung-uk Kim UINT8 TargetIpAddress[16]; 855d6dd1baeSJung-uk Kim UINT16 TargetIpSocket; 856d6dd1baeSJung-uk Kim UINT8 TargetBootLun[8]; 857d6dd1baeSJung-uk Kim UINT8 ChapType; 858d6dd1baeSJung-uk Kim UINT8 NicAssociation; 859d6dd1baeSJung-uk Kim UINT16 TargetNameLength; 860d6dd1baeSJung-uk Kim UINT16 TargetNameOffset; 861d6dd1baeSJung-uk Kim UINT16 ChapNameLength; 862d6dd1baeSJung-uk Kim UINT16 ChapNameOffset; 863d6dd1baeSJung-uk Kim UINT16 ChapSecretLength; 864d6dd1baeSJung-uk Kim UINT16 ChapSecretOffset; 865d6dd1baeSJung-uk Kim UINT16 ReverseChapNameLength; 866d6dd1baeSJung-uk Kim UINT16 ReverseChapNameOffset; 867d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretLength; 868d6dd1baeSJung-uk Kim UINT16 ReverseChapSecretOffset; 869d6dd1baeSJung-uk Kim 870d6dd1baeSJung-uk Kim } ACPI_IBFT_TARGET; 871d6dd1baeSJung-uk Kim 872d6dd1baeSJung-uk Kim 873d6dd1baeSJung-uk Kim /******************************************************************************* 874d6dd1baeSJung-uk Kim * 875a371a5fdSJung-uk Kim * IORT - IO Remapping Table 876a371a5fdSJung-uk Kim * 877a371a5fdSJung-uk Kim * Conforms to "IO Remapping Table System Software on ARM Platforms", 8785f9b24faSJung-uk Kim * Document number: ARM DEN 0049C, May 2017 879a371a5fdSJung-uk Kim * 880a371a5fdSJung-uk Kim ******************************************************************************/ 881a371a5fdSJung-uk Kim 882a371a5fdSJung-uk Kim typedef struct acpi_table_iort 883a371a5fdSJung-uk Kim { 884a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; 885a371a5fdSJung-uk Kim UINT32 NodeCount; 886a371a5fdSJung-uk Kim UINT32 NodeOffset; 887a371a5fdSJung-uk Kim UINT32 Reserved; 888a371a5fdSJung-uk Kim 889a371a5fdSJung-uk Kim } ACPI_TABLE_IORT; 890a371a5fdSJung-uk Kim 891a371a5fdSJung-uk Kim 892a371a5fdSJung-uk Kim /* 893a371a5fdSJung-uk Kim * IORT subtables 894a371a5fdSJung-uk Kim */ 895a371a5fdSJung-uk Kim typedef struct acpi_iort_node 896a371a5fdSJung-uk Kim { 897a371a5fdSJung-uk Kim UINT8 Type; 898a371a5fdSJung-uk Kim UINT16 Length; 899a371a5fdSJung-uk Kim UINT8 Revision; 900a371a5fdSJung-uk Kim UINT32 Reserved; 901a371a5fdSJung-uk Kim UINT32 MappingCount; 902a371a5fdSJung-uk Kim UINT32 MappingOffset; 903a371a5fdSJung-uk Kim char NodeData[1]; 904a371a5fdSJung-uk Kim 905a371a5fdSJung-uk Kim } ACPI_IORT_NODE; 906a371a5fdSJung-uk Kim 907a371a5fdSJung-uk Kim /* Values for subtable Type above */ 908a371a5fdSJung-uk Kim 909a371a5fdSJung-uk Kim enum AcpiIortNodeType 910a371a5fdSJung-uk Kim { 911a371a5fdSJung-uk Kim ACPI_IORT_NODE_ITS_GROUP = 0x00, 912a371a5fdSJung-uk Kim ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 913a371a5fdSJung-uk Kim ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 914f8146b88SJung-uk Kim ACPI_IORT_NODE_SMMU = 0x03, 915f8146b88SJung-uk Kim ACPI_IORT_NODE_SMMU_V3 = 0x04 916a371a5fdSJung-uk Kim }; 917a371a5fdSJung-uk Kim 918a371a5fdSJung-uk Kim 919a371a5fdSJung-uk Kim typedef struct acpi_iort_id_mapping 920a371a5fdSJung-uk Kim { 921a371a5fdSJung-uk Kim UINT32 InputBase; /* Lowest value in input range */ 922a371a5fdSJung-uk Kim UINT32 IdCount; /* Number of IDs */ 923a371a5fdSJung-uk Kim UINT32 OutputBase; /* Lowest value in output range */ 924a371a5fdSJung-uk Kim UINT32 OutputReference; /* A reference to the output node */ 925a371a5fdSJung-uk Kim UINT32 Flags; 926a371a5fdSJung-uk Kim 927a371a5fdSJung-uk Kim } ACPI_IORT_ID_MAPPING; 928a371a5fdSJung-uk Kim 929a371a5fdSJung-uk Kim /* Masks for Flags field above for IORT subtable */ 930a371a5fdSJung-uk Kim 931a371a5fdSJung-uk Kim #define ACPI_IORT_ID_SINGLE_MAPPING (1) 932a371a5fdSJung-uk Kim 933a371a5fdSJung-uk Kim 934a371a5fdSJung-uk Kim typedef struct acpi_iort_memory_access 935a371a5fdSJung-uk Kim { 936a371a5fdSJung-uk Kim UINT32 CacheCoherency; 937a371a5fdSJung-uk Kim UINT8 Hints; 938a371a5fdSJung-uk Kim UINT16 Reserved; 939a371a5fdSJung-uk Kim UINT8 MemoryFlags; 940a371a5fdSJung-uk Kim 941a371a5fdSJung-uk Kim } ACPI_IORT_MEMORY_ACCESS; 942a371a5fdSJung-uk Kim 943a371a5fdSJung-uk Kim /* Values for CacheCoherency field above */ 944a371a5fdSJung-uk Kim 945a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 946a371a5fdSJung-uk Kim #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 947a371a5fdSJung-uk Kim 948a371a5fdSJung-uk Kim /* Masks for Hints field above */ 949a371a5fdSJung-uk Kim 950a371a5fdSJung-uk Kim #define ACPI_IORT_HT_TRANSIENT (1) 951a371a5fdSJung-uk Kim #define ACPI_IORT_HT_WRITE (1<<1) 952a371a5fdSJung-uk Kim #define ACPI_IORT_HT_READ (1<<2) 953a371a5fdSJung-uk Kim #define ACPI_IORT_HT_OVERRIDE (1<<3) 954a371a5fdSJung-uk Kim 955a371a5fdSJung-uk Kim /* Masks for MemoryFlags field above */ 956a371a5fdSJung-uk Kim 957a371a5fdSJung-uk Kim #define ACPI_IORT_MF_COHERENCY (1) 958a371a5fdSJung-uk Kim #define ACPI_IORT_MF_ATTRIBUTES (1<<1) 959a371a5fdSJung-uk Kim 960a371a5fdSJung-uk Kim 961a371a5fdSJung-uk Kim /* 962a371a5fdSJung-uk Kim * IORT node specific subtables 963a371a5fdSJung-uk Kim */ 964a371a5fdSJung-uk Kim typedef struct acpi_iort_its_group 965a371a5fdSJung-uk Kim { 966a371a5fdSJung-uk Kim UINT32 ItsCount; 967a371a5fdSJung-uk Kim UINT32 Identifiers[1]; /* GIC ITS identifier arrary */ 968a371a5fdSJung-uk Kim 969a371a5fdSJung-uk Kim } ACPI_IORT_ITS_GROUP; 970a371a5fdSJung-uk Kim 971a371a5fdSJung-uk Kim 972a371a5fdSJung-uk Kim typedef struct acpi_iort_named_component 973a371a5fdSJung-uk Kim { 974a371a5fdSJung-uk Kim UINT32 NodeFlags; 975a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 976a371a5fdSJung-uk Kim UINT8 MemoryAddressLimit; /* Memory address size limit */ 977a371a5fdSJung-uk Kim char DeviceName[1]; /* Path of namespace object */ 978a371a5fdSJung-uk Kim 979a371a5fdSJung-uk Kim } ACPI_IORT_NAMED_COMPONENT; 980a371a5fdSJung-uk Kim 981a371a5fdSJung-uk Kim 982a371a5fdSJung-uk Kim typedef struct acpi_iort_root_complex 983a371a5fdSJung-uk Kim { 984a371a5fdSJung-uk Kim UINT64 MemoryProperties; /* Memory access properties */ 985a371a5fdSJung-uk Kim UINT32 AtsAttribute; 986a371a5fdSJung-uk Kim UINT32 PciSegmentNumber; 987a371a5fdSJung-uk Kim 988a371a5fdSJung-uk Kim } ACPI_IORT_ROOT_COMPLEX; 989a371a5fdSJung-uk Kim 990a371a5fdSJung-uk Kim /* Values for AtsAttribute field above */ 991a371a5fdSJung-uk Kim 992a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 993a371a5fdSJung-uk Kim #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 994a371a5fdSJung-uk Kim 995a371a5fdSJung-uk Kim 996a371a5fdSJung-uk Kim typedef struct acpi_iort_smmu 997a371a5fdSJung-uk Kim { 998a371a5fdSJung-uk Kim UINT64 BaseAddress; /* SMMU base address */ 999a371a5fdSJung-uk Kim UINT64 Span; /* Length of memory range */ 1000a371a5fdSJung-uk Kim UINT32 Model; 1001a371a5fdSJung-uk Kim UINT32 Flags; 1002a371a5fdSJung-uk Kim UINT32 GlobalInterruptOffset; 1003a371a5fdSJung-uk Kim UINT32 ContextInterruptCount; 1004a371a5fdSJung-uk Kim UINT32 ContextInterruptOffset; 1005a371a5fdSJung-uk Kim UINT32 PmuInterruptCount; 1006a371a5fdSJung-uk Kim UINT32 PmuInterruptOffset; 1007a371a5fdSJung-uk Kim UINT64 Interrupts[1]; /* Interrupt array */ 1008a371a5fdSJung-uk Kim 1009a371a5fdSJung-uk Kim } ACPI_IORT_SMMU; 1010a371a5fdSJung-uk Kim 1011a371a5fdSJung-uk Kim /* Values for Model field above */ 1012a371a5fdSJung-uk Kim 1013a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 1014a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 1015a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 1016a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 10175f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_CORELINK_MMU401 0x00000004 /* ARM Corelink MMU-401 */ 10185f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_CAVIUM_THUNDERX 0x00000005 /* Cavium ThunderX SMMUv2 */ 1019a371a5fdSJung-uk Kim 1020a371a5fdSJung-uk Kim /* Masks for Flags field above */ 1021a371a5fdSJung-uk Kim 1022a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 1023a371a5fdSJung-uk Kim #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 1024a371a5fdSJung-uk Kim 10250d84335fSJung-uk Kim /* Global interrupt format */ 10260d84335fSJung-uk Kim 10270d84335fSJung-uk Kim typedef struct acpi_iort_smmu_gsi 10280d84335fSJung-uk Kim { 10290d84335fSJung-uk Kim UINT32 NSgIrpt; 10300d84335fSJung-uk Kim UINT32 NSgIrptFlags; 10310d84335fSJung-uk Kim UINT32 NSgCfgIrpt; 10320d84335fSJung-uk Kim UINT32 NSgCfgIrptFlags; 1033*2f6a1a81SJung-uk Kim 10340d84335fSJung-uk Kim } ACPI_IORT_SMMU_GSI; 10350d84335fSJung-uk Kim 1036a371a5fdSJung-uk Kim 1037f8146b88SJung-uk Kim typedef struct acpi_iort_smmu_v3 1038f8146b88SJung-uk Kim { 1039f8146b88SJung-uk Kim UINT64 BaseAddress; /* SMMUv3 base address */ 1040f8146b88SJung-uk Kim UINT32 Flags; 1041f8146b88SJung-uk Kim UINT32 Reserved; 1042f8146b88SJung-uk Kim UINT64 VatosAddress; 10435f9b24faSJung-uk Kim UINT32 Model; 1044f8146b88SJung-uk Kim UINT32 EventGsiv; 1045f8146b88SJung-uk Kim UINT32 PriGsiv; 1046f8146b88SJung-uk Kim UINT32 GerrGsiv; 1047f8146b88SJung-uk Kim UINT32 SyncGsiv; 10485f9b24faSJung-uk Kim UINT8 Pxm; 10495f9b24faSJung-uk Kim UINT8 Reserved1; 10505f9b24faSJung-uk Kim UINT16 Reserved2; 1051f8146b88SJung-uk Kim 1052f8146b88SJung-uk Kim } ACPI_IORT_SMMU_V3; 1053f8146b88SJung-uk Kim 10545f9b24faSJung-uk Kim /* Values for Model field above */ 10555f9b24faSJung-uk Kim 10565f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_V3_GENERIC 0x00000000 /* Generic SMMUv3 */ 10575f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_V3_HISILICON_HI161X 0x00000001 /* HiSilicon Hi161x SMMUv3 */ 10585f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX 0x00000002 /* Cavium CN99xx SMMUv3 */ 10595f9b24faSJung-uk Kim 1060f8146b88SJung-uk Kim /* Masks for Flags field above */ 1061f8146b88SJung-uk Kim 1062f8146b88SJung-uk Kim #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 1063f8146b88SJung-uk Kim #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) 10645f9b24faSJung-uk Kim #define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) 1065f8146b88SJung-uk Kim 1066f8146b88SJung-uk Kim 1067a371a5fdSJung-uk Kim /******************************************************************************* 1068a371a5fdSJung-uk Kim * 1069d6dd1baeSJung-uk Kim * IVRS - I/O Virtualization Reporting Structure 1070d6dd1baeSJung-uk Kim * Version 1 1071d6dd1baeSJung-uk Kim * 1072d6dd1baeSJung-uk Kim * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 1073d6dd1baeSJung-uk Kim * Revision 1.26, February 2009. 1074d6dd1baeSJung-uk Kim * 1075d6dd1baeSJung-uk Kim ******************************************************************************/ 1076d6dd1baeSJung-uk Kim 1077d6dd1baeSJung-uk Kim typedef struct acpi_table_ivrs 1078d6dd1baeSJung-uk Kim { 1079d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1080d6dd1baeSJung-uk Kim UINT32 Info; /* Common virtualization info */ 1081d6dd1baeSJung-uk Kim UINT64 Reserved; 1082d6dd1baeSJung-uk Kim 1083d6dd1baeSJung-uk Kim } ACPI_TABLE_IVRS; 1084d6dd1baeSJung-uk Kim 1085d6dd1baeSJung-uk Kim /* Values for Info field above */ 1086d6dd1baeSJung-uk Kim 1087d6dd1baeSJung-uk Kim #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 1088d6dd1baeSJung-uk Kim #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 1089d6dd1baeSJung-uk Kim #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 1090d6dd1baeSJung-uk Kim 1091d6dd1baeSJung-uk Kim 1092d6dd1baeSJung-uk Kim /* IVRS subtable header */ 1093d6dd1baeSJung-uk Kim 1094d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_header 1095d6dd1baeSJung-uk Kim { 1096d6dd1baeSJung-uk Kim UINT8 Type; /* Subtable type */ 1097d6dd1baeSJung-uk Kim UINT8 Flags; 1098d6dd1baeSJung-uk Kim UINT16 Length; /* Subtable length */ 1099d6dd1baeSJung-uk Kim UINT16 DeviceId; /* ID of IOMMU */ 1100d6dd1baeSJung-uk Kim 1101d6dd1baeSJung-uk Kim } ACPI_IVRS_HEADER; 1102d6dd1baeSJung-uk Kim 1103d6dd1baeSJung-uk Kim /* Values for subtable Type above */ 1104d6dd1baeSJung-uk Kim 1105d6dd1baeSJung-uk Kim enum AcpiIvrsType 1106d6dd1baeSJung-uk Kim { 1107d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_HARDWARE = 0x10, 1108d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY1 = 0x20, 1109d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY2 = 0x21, 1110d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_MEMORY3 = 0x22 1111d6dd1baeSJung-uk Kim }; 1112d6dd1baeSJung-uk Kim 1113d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVHD subtable */ 1114d6dd1baeSJung-uk Kim 1115d6dd1baeSJung-uk Kim #define ACPI_IVHD_TT_ENABLE (1) 1116d6dd1baeSJung-uk Kim #define ACPI_IVHD_PASS_PW (1<<1) 1117d6dd1baeSJung-uk Kim #define ACPI_IVHD_RES_PASS_PW (1<<2) 1118d6dd1baeSJung-uk Kim #define ACPI_IVHD_ISOC (1<<3) 1119d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOTLB (1<<4) 1120d6dd1baeSJung-uk Kim 1121d6dd1baeSJung-uk Kim /* Masks for Flags field above for IVMD subtable */ 1122d6dd1baeSJung-uk Kim 1123d6dd1baeSJung-uk Kim #define ACPI_IVMD_UNITY (1) 1124d6dd1baeSJung-uk Kim #define ACPI_IVMD_READ (1<<1) 1125d6dd1baeSJung-uk Kim #define ACPI_IVMD_WRITE (1<<2) 1126d6dd1baeSJung-uk Kim #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 1127d6dd1baeSJung-uk Kim 1128d6dd1baeSJung-uk Kim 1129d6dd1baeSJung-uk Kim /* 1130d6dd1baeSJung-uk Kim * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 1131d6dd1baeSJung-uk Kim */ 1132d6dd1baeSJung-uk Kim 1133d6dd1baeSJung-uk Kim /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 1134d6dd1baeSJung-uk Kim 1135d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_hardware 1136d6dd1baeSJung-uk Kim { 1137d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 1138d6dd1baeSJung-uk Kim UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 1139d6dd1baeSJung-uk Kim UINT64 BaseAddress; /* IOMMU control registers */ 1140d6dd1baeSJung-uk Kim UINT16 PciSegmentGroup; 1141d6dd1baeSJung-uk Kim UINT16 Info; /* MSI number and unit ID */ 1142d6dd1baeSJung-uk Kim UINT32 Reserved; 1143d6dd1baeSJung-uk Kim 1144d6dd1baeSJung-uk Kim } ACPI_IVRS_HARDWARE; 1145d6dd1baeSJung-uk Kim 1146d6dd1baeSJung-uk Kim /* Masks for Info field above */ 1147d6dd1baeSJung-uk Kim 1148d6dd1baeSJung-uk Kim #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 1149d6dd1baeSJung-uk Kim #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 1150d6dd1baeSJung-uk Kim 1151d6dd1baeSJung-uk Kim 1152d6dd1baeSJung-uk Kim /* 1153d6dd1baeSJung-uk Kim * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 1154d6dd1baeSJung-uk Kim * Upper two bits of the Type field are the (encoded) length of the structure. 1155d6dd1baeSJung-uk Kim * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 1156d6dd1baeSJung-uk Kim * are reserved for future use but not defined. 1157d6dd1baeSJung-uk Kim */ 1158d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_de_header 1159d6dd1baeSJung-uk Kim { 1160d6dd1baeSJung-uk Kim UINT8 Type; 1161d6dd1baeSJung-uk Kim UINT16 Id; 1162d6dd1baeSJung-uk Kim UINT8 DataSetting; 1163d6dd1baeSJung-uk Kim 1164d6dd1baeSJung-uk Kim } ACPI_IVRS_DE_HEADER; 1165d6dd1baeSJung-uk Kim 1166d6dd1baeSJung-uk Kim /* Length of device entry is in the top two bits of Type field above */ 1167d6dd1baeSJung-uk Kim 1168d6dd1baeSJung-uk Kim #define ACPI_IVHD_ENTRY_LENGTH 0xC0 1169d6dd1baeSJung-uk Kim 1170d6dd1baeSJung-uk Kim /* Values for device entry Type field above */ 1171d6dd1baeSJung-uk Kim 1172d6dd1baeSJung-uk Kim enum AcpiIvrsDeviceEntryType 1173d6dd1baeSJung-uk Kim { 1174d6dd1baeSJung-uk Kim /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 1175d6dd1baeSJung-uk Kim 1176d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD4 = 0, 1177d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALL = 1, 1178d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SELECT = 2, 1179d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_START = 3, 1180d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_END = 4, 1181d6dd1baeSJung-uk Kim 1182d6dd1baeSJung-uk Kim /* 8-byte device entries */ 1183d6dd1baeSJung-uk Kim 1184d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_PAD8 = 64, 1185d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_NOT_USED = 65, 1186d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 1187d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 1188d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 1189d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 1190d6dd1baeSJung-uk Kim ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 1191d6dd1baeSJung-uk Kim }; 1192d6dd1baeSJung-uk Kim 1193d6dd1baeSJung-uk Kim /* Values for Data field above */ 1194d6dd1baeSJung-uk Kim 1195d6dd1baeSJung-uk Kim #define ACPI_IVHD_INIT_PASS (1) 1196d6dd1baeSJung-uk Kim #define ACPI_IVHD_EINT_PASS (1<<1) 1197d6dd1baeSJung-uk Kim #define ACPI_IVHD_NMI_PASS (1<<2) 1198d6dd1baeSJung-uk Kim #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 1199d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT0_PASS (1<<6) 1200d6dd1baeSJung-uk Kim #define ACPI_IVHD_LINT1_PASS (1<<7) 1201d6dd1baeSJung-uk Kim 1202d6dd1baeSJung-uk Kim 1203d6dd1baeSJung-uk Kim /* Types 0-4: 4-byte device entry */ 1204d6dd1baeSJung-uk Kim 1205d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device4 1206d6dd1baeSJung-uk Kim { 1207d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1208d6dd1baeSJung-uk Kim 1209d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE4; 1210d6dd1baeSJung-uk Kim 1211d6dd1baeSJung-uk Kim /* Types 66-67: 8-byte device entry */ 1212d6dd1baeSJung-uk Kim 1213d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8a 1214d6dd1baeSJung-uk Kim { 1215d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1216d6dd1baeSJung-uk Kim UINT8 Reserved1; 1217d6dd1baeSJung-uk Kim UINT16 UsedId; 1218d6dd1baeSJung-uk Kim UINT8 Reserved2; 1219d6dd1baeSJung-uk Kim 1220d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8A; 1221d6dd1baeSJung-uk Kim 1222d6dd1baeSJung-uk Kim /* Types 70-71: 8-byte device entry */ 1223d6dd1baeSJung-uk Kim 1224d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8b 1225d6dd1baeSJung-uk Kim { 1226d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1227d6dd1baeSJung-uk Kim UINT32 ExtendedData; 1228d6dd1baeSJung-uk Kim 1229d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8B; 1230d6dd1baeSJung-uk Kim 1231d6dd1baeSJung-uk Kim /* Values for ExtendedData above */ 1232d6dd1baeSJung-uk Kim 1233d6dd1baeSJung-uk Kim #define ACPI_IVHD_ATS_DISABLED (1<<31) 1234d6dd1baeSJung-uk Kim 1235d6dd1baeSJung-uk Kim /* Type 72: 8-byte device entry */ 1236d6dd1baeSJung-uk Kim 1237d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_device8c 1238d6dd1baeSJung-uk Kim { 1239d6dd1baeSJung-uk Kim ACPI_IVRS_DE_HEADER Header; 1240d6dd1baeSJung-uk Kim UINT8 Handle; 1241d6dd1baeSJung-uk Kim UINT16 UsedId; 1242d6dd1baeSJung-uk Kim UINT8 Variety; 1243d6dd1baeSJung-uk Kim 1244d6dd1baeSJung-uk Kim } ACPI_IVRS_DEVICE8C; 1245d6dd1baeSJung-uk Kim 1246d6dd1baeSJung-uk Kim /* Values for Variety field above */ 1247d6dd1baeSJung-uk Kim 1248d6dd1baeSJung-uk Kim #define ACPI_IVHD_IOAPIC 1 1249d6dd1baeSJung-uk Kim #define ACPI_IVHD_HPET 2 1250d6dd1baeSJung-uk Kim 1251d6dd1baeSJung-uk Kim 1252d6dd1baeSJung-uk Kim /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 1253d6dd1baeSJung-uk Kim 1254d6dd1baeSJung-uk Kim typedef struct acpi_ivrs_memory 1255d6dd1baeSJung-uk Kim { 1256d6dd1baeSJung-uk Kim ACPI_IVRS_HEADER Header; 1257d6dd1baeSJung-uk Kim UINT16 AuxData; 1258d6dd1baeSJung-uk Kim UINT64 Reserved; 1259d6dd1baeSJung-uk Kim UINT64 StartAddress; 1260d6dd1baeSJung-uk Kim UINT64 MemoryLength; 1261d6dd1baeSJung-uk Kim 1262d6dd1baeSJung-uk Kim } ACPI_IVRS_MEMORY; 1263d6dd1baeSJung-uk Kim 1264d6dd1baeSJung-uk Kim 1265d6dd1baeSJung-uk Kim /******************************************************************************* 1266d6dd1baeSJung-uk Kim * 1267313a0c13SJung-uk Kim * LPIT - Low Power Idle Table 1268313a0c13SJung-uk Kim * 1269a371a5fdSJung-uk Kim * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1270313a0c13SJung-uk Kim * 1271313a0c13SJung-uk Kim ******************************************************************************/ 1272313a0c13SJung-uk Kim 1273313a0c13SJung-uk Kim typedef struct acpi_table_lpit 1274313a0c13SJung-uk Kim { 1275313a0c13SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1276313a0c13SJung-uk Kim 1277313a0c13SJung-uk Kim } ACPI_TABLE_LPIT; 1278313a0c13SJung-uk Kim 1279313a0c13SJung-uk Kim 1280313a0c13SJung-uk Kim /* LPIT subtable header */ 1281313a0c13SJung-uk Kim 1282313a0c13SJung-uk Kim typedef struct acpi_lpit_header 1283313a0c13SJung-uk Kim { 1284313a0c13SJung-uk Kim UINT32 Type; /* Subtable type */ 1285313a0c13SJung-uk Kim UINT32 Length; /* Subtable length */ 1286313a0c13SJung-uk Kim UINT16 UniqueId; 1287313a0c13SJung-uk Kim UINT16 Reserved; 1288313a0c13SJung-uk Kim UINT32 Flags; 1289313a0c13SJung-uk Kim 1290313a0c13SJung-uk Kim } ACPI_LPIT_HEADER; 1291313a0c13SJung-uk Kim 1292313a0c13SJung-uk Kim /* Values for subtable Type above */ 1293313a0c13SJung-uk Kim 1294313a0c13SJung-uk Kim enum AcpiLpitType 1295313a0c13SJung-uk Kim { 1296313a0c13SJung-uk Kim ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 1297a371a5fdSJung-uk Kim ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1298313a0c13SJung-uk Kim }; 1299313a0c13SJung-uk Kim 1300313a0c13SJung-uk Kim /* Masks for Flags field above */ 1301313a0c13SJung-uk Kim 1302313a0c13SJung-uk Kim #define ACPI_LPIT_STATE_DISABLED (1) 1303313a0c13SJung-uk Kim #define ACPI_LPIT_NO_COUNTER (1<<1) 1304313a0c13SJung-uk Kim 1305313a0c13SJung-uk Kim /* 1306313a0c13SJung-uk Kim * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER 1307313a0c13SJung-uk Kim */ 1308313a0c13SJung-uk Kim 1309313a0c13SJung-uk Kim /* 0x00: Native C-state instruction based LPI structure */ 1310313a0c13SJung-uk Kim 1311313a0c13SJung-uk Kim typedef struct acpi_lpit_native 1312313a0c13SJung-uk Kim { 1313313a0c13SJung-uk Kim ACPI_LPIT_HEADER Header; 1314313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS EntryTrigger; 1315313a0c13SJung-uk Kim UINT32 Residency; 1316313a0c13SJung-uk Kim UINT32 Latency; 1317313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS ResidencyCounter; 1318313a0c13SJung-uk Kim UINT64 CounterFrequency; 1319313a0c13SJung-uk Kim 1320313a0c13SJung-uk Kim } ACPI_LPIT_NATIVE; 1321313a0c13SJung-uk Kim 1322313a0c13SJung-uk Kim 1323313a0c13SJung-uk Kim /******************************************************************************* 1324313a0c13SJung-uk Kim * 1325313a0c13SJung-uk Kim * MCFG - PCI Memory Mapped Configuration table and subtable 1326d6dd1baeSJung-uk Kim * Version 1 1327d6dd1baeSJung-uk Kim * 1328d6dd1baeSJung-uk Kim * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1329d6dd1baeSJung-uk Kim * 1330d6dd1baeSJung-uk Kim ******************************************************************************/ 1331d6dd1baeSJung-uk Kim 1332d6dd1baeSJung-uk Kim typedef struct acpi_table_mcfg 1333d6dd1baeSJung-uk Kim { 1334d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1335d6dd1baeSJung-uk Kim UINT8 Reserved[8]; 1336d6dd1baeSJung-uk Kim 1337d6dd1baeSJung-uk Kim } ACPI_TABLE_MCFG; 1338d6dd1baeSJung-uk Kim 1339d6dd1baeSJung-uk Kim 1340d6dd1baeSJung-uk Kim /* Subtable */ 1341d6dd1baeSJung-uk Kim 1342d6dd1baeSJung-uk Kim typedef struct acpi_mcfg_allocation 1343d6dd1baeSJung-uk Kim { 1344d6dd1baeSJung-uk Kim UINT64 Address; /* Base address, processor-relative */ 1345d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI segment group number */ 1346d6dd1baeSJung-uk Kim UINT8 StartBusNumber; /* Starting PCI Bus number */ 1347d6dd1baeSJung-uk Kim UINT8 EndBusNumber; /* Final PCI Bus number */ 1348d6dd1baeSJung-uk Kim UINT32 Reserved; 1349d6dd1baeSJung-uk Kim 1350d6dd1baeSJung-uk Kim } ACPI_MCFG_ALLOCATION; 1351d6dd1baeSJung-uk Kim 1352d6dd1baeSJung-uk Kim 1353d6dd1baeSJung-uk Kim /******************************************************************************* 1354d6dd1baeSJung-uk Kim * 1355ca3cf4faSJung-uk Kim * MCHI - Management Controller Host Interface Table 1356ca3cf4faSJung-uk Kim * Version 1 1357ca3cf4faSJung-uk Kim * 1358ca3cf4faSJung-uk Kim * Conforms to "Management Component Transport Protocol (MCTP) Host 1359ca3cf4faSJung-uk Kim * Interface Specification", Revision 1.0.0a, October 13, 2009 1360ca3cf4faSJung-uk Kim * 1361ca3cf4faSJung-uk Kim ******************************************************************************/ 1362ca3cf4faSJung-uk Kim 1363ca3cf4faSJung-uk Kim typedef struct acpi_table_mchi 1364ca3cf4faSJung-uk Kim { 1365ca3cf4faSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1366ca3cf4faSJung-uk Kim UINT8 InterfaceType; 1367ca3cf4faSJung-uk Kim UINT8 Protocol; 1368ca3cf4faSJung-uk Kim UINT64 ProtocolData; 1369ca3cf4faSJung-uk Kim UINT8 InterruptType; 1370ca3cf4faSJung-uk Kim UINT8 Gpe; 1371ca3cf4faSJung-uk Kim UINT8 PciDeviceFlag; 1372ca3cf4faSJung-uk Kim UINT32 GlobalInterrupt; 1373ca3cf4faSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1374ca3cf4faSJung-uk Kim UINT8 PciSegment; 1375ca3cf4faSJung-uk Kim UINT8 PciBus; 1376ca3cf4faSJung-uk Kim UINT8 PciDevice; 1377ca3cf4faSJung-uk Kim UINT8 PciFunction; 1378ca3cf4faSJung-uk Kim 1379ca3cf4faSJung-uk Kim } ACPI_TABLE_MCHI; 1380ca3cf4faSJung-uk Kim 1381ca3cf4faSJung-uk Kim 1382ca3cf4faSJung-uk Kim /******************************************************************************* 1383ca3cf4faSJung-uk Kim * 13847cf3e94aSJung-uk Kim * MSDM - Microsoft Data Management table 13857cf3e94aSJung-uk Kim * 13867cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 13877cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 13887cf3e94aSJung-uk Kim * 13897cf3e94aSJung-uk Kim ******************************************************************************/ 13907cf3e94aSJung-uk Kim 13917cf3e94aSJung-uk Kim /* Basic MSDM table is only the common ACPI header */ 13927cf3e94aSJung-uk Kim 13937cf3e94aSJung-uk Kim typedef struct acpi_table_msdm 13947cf3e94aSJung-uk Kim { 13957cf3e94aSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13967cf3e94aSJung-uk Kim 13977cf3e94aSJung-uk Kim } ACPI_TABLE_MSDM; 13987cf3e94aSJung-uk Kim 13997cf3e94aSJung-uk Kim 14007cf3e94aSJung-uk Kim /******************************************************************************* 14017cf3e94aSJung-uk Kim * 14029c48c75eSJung-uk Kim * MTMR - MID Timer Table 14039c48c75eSJung-uk Kim * Version 1 14049c48c75eSJung-uk Kim * 14059c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 14069c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 14079c48c75eSJung-uk Kim * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 14089c48c75eSJung-uk Kim * 14099c48c75eSJung-uk Kim ******************************************************************************/ 14109c48c75eSJung-uk Kim 14119c48c75eSJung-uk Kim typedef struct acpi_table_mtmr 14129c48c75eSJung-uk Kim { 14139c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14149c48c75eSJung-uk Kim 14159c48c75eSJung-uk Kim } ACPI_TABLE_MTMR; 14169c48c75eSJung-uk Kim 14179c48c75eSJung-uk Kim /* MTMR entry */ 14189c48c75eSJung-uk Kim 14199c48c75eSJung-uk Kim typedef struct acpi_mtmr_entry 14209c48c75eSJung-uk Kim { 14219c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 14229c48c75eSJung-uk Kim UINT32 Frequency; 14239c48c75eSJung-uk Kim UINT32 Irq; 14249c48c75eSJung-uk Kim 14259c48c75eSJung-uk Kim } ACPI_MTMR_ENTRY; 14269c48c75eSJung-uk Kim 14275f9b24faSJung-uk Kim /******************************************************************************* 14285f9b24faSJung-uk Kim * 14295f9b24faSJung-uk Kim * SDEI - Software Delegated Exception Interface Descriptor Table 14305f9b24faSJung-uk Kim * 14315f9b24faSJung-uk Kim * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A, 14325f9b24faSJung-uk Kim * May 8th, 2017. Copyright 2017 ARM Ltd. 14335f9b24faSJung-uk Kim * 14345f9b24faSJung-uk Kim ******************************************************************************/ 14355f9b24faSJung-uk Kim 14365f9b24faSJung-uk Kim typedef struct acpi_table_sdei 14375f9b24faSJung-uk Kim { 14385f9b24faSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14395f9b24faSJung-uk Kim 14405f9b24faSJung-uk Kim } ACPI_TABLE_SDEI; 14415f9b24faSJung-uk Kim 14429c48c75eSJung-uk Kim 14439c48c75eSJung-uk Kim /******************************************************************************* 14449c48c75eSJung-uk Kim * 1445dcbce41eSJung-uk Kim * SLIC - Software Licensing Description Table 1446dcbce41eSJung-uk Kim * 14477cf3e94aSJung-uk Kim * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 14487cf3e94aSJung-uk Kim * November 29, 2011. Copyright 2011 Microsoft 1449dcbce41eSJung-uk Kim * 1450dcbce41eSJung-uk Kim ******************************************************************************/ 1451dcbce41eSJung-uk Kim 1452dcbce41eSJung-uk Kim /* Basic SLIC table is only the common ACPI header */ 1453dcbce41eSJung-uk Kim 1454dcbce41eSJung-uk Kim typedef struct acpi_table_slic 1455dcbce41eSJung-uk Kim { 1456dcbce41eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1457dcbce41eSJung-uk Kim 1458dcbce41eSJung-uk Kim } ACPI_TABLE_SLIC; 1459dcbce41eSJung-uk Kim 1460dcbce41eSJung-uk Kim 1461dcbce41eSJung-uk Kim /******************************************************************************* 1462dcbce41eSJung-uk Kim * 1463d6dd1baeSJung-uk Kim * SPCR - Serial Port Console Redirection table 1464f8146b88SJung-uk Kim * Version 2 1465d6dd1baeSJung-uk Kim * 1466d6dd1baeSJung-uk Kim * Conforms to "Serial Port Console Redirection Table", 1467f8146b88SJung-uk Kim * Version 1.03, August 10, 2015 1468d6dd1baeSJung-uk Kim * 1469d6dd1baeSJung-uk Kim ******************************************************************************/ 1470d6dd1baeSJung-uk Kim 1471d6dd1baeSJung-uk Kim typedef struct acpi_table_spcr 1472d6dd1baeSJung-uk Kim { 1473d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1474d6dd1baeSJung-uk Kim UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 1475d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1476d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS SerialPort; 1477d6dd1baeSJung-uk Kim UINT8 InterruptType; 1478d6dd1baeSJung-uk Kim UINT8 PcInterrupt; 1479d6dd1baeSJung-uk Kim UINT32 Interrupt; 1480d6dd1baeSJung-uk Kim UINT8 BaudRate; 1481d6dd1baeSJung-uk Kim UINT8 Parity; 1482d6dd1baeSJung-uk Kim UINT8 StopBits; 1483d6dd1baeSJung-uk Kim UINT8 FlowControl; 1484d6dd1baeSJung-uk Kim UINT8 TerminalType; 1485d6dd1baeSJung-uk Kim UINT8 Reserved1; 1486d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1487d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1488d6dd1baeSJung-uk Kim UINT8 PciBus; 1489d6dd1baeSJung-uk Kim UINT8 PciDevice; 1490d6dd1baeSJung-uk Kim UINT8 PciFunction; 1491d6dd1baeSJung-uk Kim UINT32 PciFlags; 1492d6dd1baeSJung-uk Kim UINT8 PciSegment; 1493d6dd1baeSJung-uk Kim UINT32 Reserved2; 1494d6dd1baeSJung-uk Kim 1495d6dd1baeSJung-uk Kim } ACPI_TABLE_SPCR; 1496d6dd1baeSJung-uk Kim 1497d6dd1baeSJung-uk Kim /* Masks for PciFlags field above */ 1498d6dd1baeSJung-uk Kim 1499d6dd1baeSJung-uk Kim #define ACPI_SPCR_DO_NOT_DISABLE (1) 1500d6dd1baeSJung-uk Kim 1501f8146b88SJung-uk Kim /* Values for Interface Type: See the definition of the DBG2 table */ 1502f8146b88SJung-uk Kim 1503d6dd1baeSJung-uk Kim 1504d6dd1baeSJung-uk Kim /******************************************************************************* 1505d6dd1baeSJung-uk Kim * 1506d6dd1baeSJung-uk Kim * SPMI - Server Platform Management Interface table 1507d6dd1baeSJung-uk Kim * Version 5 1508d6dd1baeSJung-uk Kim * 1509d6dd1baeSJung-uk Kim * Conforms to "Intelligent Platform Management Interface Specification 1510d6dd1baeSJung-uk Kim * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 1511d6dd1baeSJung-uk Kim * June 12, 2009 markup. 1512d6dd1baeSJung-uk Kim * 1513d6dd1baeSJung-uk Kim ******************************************************************************/ 1514d6dd1baeSJung-uk Kim 1515d6dd1baeSJung-uk Kim typedef struct acpi_table_spmi 1516d6dd1baeSJung-uk Kim { 1517d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1518d6dd1baeSJung-uk Kim UINT8 InterfaceType; 1519d6dd1baeSJung-uk Kim UINT8 Reserved; /* Must be 1 */ 1520d6dd1baeSJung-uk Kim UINT16 SpecRevision; /* Version of IPMI */ 1521d6dd1baeSJung-uk Kim UINT8 InterruptType; 1522d6dd1baeSJung-uk Kim UINT8 GpeNumber; /* GPE assigned */ 1523d6dd1baeSJung-uk Kim UINT8 Reserved1; 1524d6dd1baeSJung-uk Kim UINT8 PciDeviceFlag; 1525d6dd1baeSJung-uk Kim UINT32 Interrupt; 1526d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS IpmiRegister; 1527d6dd1baeSJung-uk Kim UINT8 PciSegment; 1528d6dd1baeSJung-uk Kim UINT8 PciBus; 1529d6dd1baeSJung-uk Kim UINT8 PciDevice; 1530d6dd1baeSJung-uk Kim UINT8 PciFunction; 1531d6dd1baeSJung-uk Kim UINT8 Reserved2; 1532d6dd1baeSJung-uk Kim 1533d6dd1baeSJung-uk Kim } ACPI_TABLE_SPMI; 1534d6dd1baeSJung-uk Kim 1535d6dd1baeSJung-uk Kim /* Values for InterfaceType above */ 1536d6dd1baeSJung-uk Kim 1537d6dd1baeSJung-uk Kim enum AcpiSpmiInterfaceTypes 1538d6dd1baeSJung-uk Kim { 1539d6dd1baeSJung-uk Kim ACPI_SPMI_NOT_USED = 0, 1540d6dd1baeSJung-uk Kim ACPI_SPMI_KEYBOARD = 1, 1541d6dd1baeSJung-uk Kim ACPI_SPMI_SMI = 2, 1542d6dd1baeSJung-uk Kim ACPI_SPMI_BLOCK_TRANSFER = 3, 1543d6dd1baeSJung-uk Kim ACPI_SPMI_SMBUS = 4, 1544d6dd1baeSJung-uk Kim ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1545d6dd1baeSJung-uk Kim }; 1546d6dd1baeSJung-uk Kim 1547d6dd1baeSJung-uk Kim 1548d6dd1baeSJung-uk Kim /******************************************************************************* 1549d6dd1baeSJung-uk Kim * 1550d6dd1baeSJung-uk Kim * TCPA - Trusted Computing Platform Alliance table 15515ef50723SJung-uk Kim * Version 2 1552d6dd1baeSJung-uk Kim * 15535ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1554af051161SJung-uk Kim * Version 1.2, Revision 8 1555af051161SJung-uk Kim * February 27, 2017 15565ef50723SJung-uk Kim * 15575ef50723SJung-uk Kim * NOTE: There are two versions of the table with the same signature -- 1558fe0f0bbbSJung-uk Kim * the client version and the server version. The common PlatformClass 1559fe0f0bbbSJung-uk Kim * field is used to differentiate the two types of tables. 1560d6dd1baeSJung-uk Kim * 1561d6dd1baeSJung-uk Kim ******************************************************************************/ 1562d6dd1baeSJung-uk Kim 1563fe0f0bbbSJung-uk Kim typedef struct acpi_table_tcpa_hdr 1564d6dd1baeSJung-uk Kim { 1565d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 15665ef50723SJung-uk Kim UINT16 PlatformClass; 1567fe0f0bbbSJung-uk Kim 1568fe0f0bbbSJung-uk Kim } ACPI_TABLE_TCPA_HDR; 1569fe0f0bbbSJung-uk Kim 1570fe0f0bbbSJung-uk Kim /* 1571fe0f0bbbSJung-uk Kim * Values for PlatformClass above. 1572fe0f0bbbSJung-uk Kim * This is how the client and server subtables are differentiated 1573fe0f0bbbSJung-uk Kim */ 1574fe0f0bbbSJung-uk Kim #define ACPI_TCPA_CLIENT_TABLE 0 1575fe0f0bbbSJung-uk Kim #define ACPI_TCPA_SERVER_TABLE 1 1576fe0f0bbbSJung-uk Kim 1577fe0f0bbbSJung-uk Kim 1578fe0f0bbbSJung-uk Kim typedef struct acpi_table_tcpa_client 1579fe0f0bbbSJung-uk Kim { 15805ef50723SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 1581d6dd1baeSJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 1582d6dd1baeSJung-uk Kim 15835ef50723SJung-uk Kim } ACPI_TABLE_TCPA_CLIENT; 15845ef50723SJung-uk Kim 15855ef50723SJung-uk Kim typedef struct acpi_table_tcpa_server 15865ef50723SJung-uk Kim { 15875ef50723SJung-uk Kim UINT16 Reserved; 15885ef50723SJung-uk Kim UINT64 MinimumLogLength; /* Minimum length for the event log area */ 15895ef50723SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 15905ef50723SJung-uk Kim UINT16 SpecRevision; 15915ef50723SJung-uk Kim UINT8 DeviceFlags; 15925ef50723SJung-uk Kim UINT8 InterruptFlags; 15935ef50723SJung-uk Kim UINT8 GpeNumber; 15945ef50723SJung-uk Kim UINT8 Reserved2[3]; 15955ef50723SJung-uk Kim UINT32 GlobalInterrupt; 15965ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 15975ef50723SJung-uk Kim UINT32 Reserved3; 15985ef50723SJung-uk Kim ACPI_GENERIC_ADDRESS ConfigAddress; 15995ef50723SJung-uk Kim UINT8 Group; 16005ef50723SJung-uk Kim UINT8 Bus; /* PCI Bus/Segment/Function numbers */ 16015ef50723SJung-uk Kim UINT8 Device; 16025ef50723SJung-uk Kim UINT8 Function; 16035ef50723SJung-uk Kim 16045ef50723SJung-uk Kim } ACPI_TABLE_TCPA_SERVER; 16055ef50723SJung-uk Kim 16065ef50723SJung-uk Kim /* Values for DeviceFlags above */ 16075ef50723SJung-uk Kim 16085ef50723SJung-uk Kim #define ACPI_TCPA_PCI_DEVICE (1) 16095ef50723SJung-uk Kim #define ACPI_TCPA_BUS_PNP (1<<1) 16105ef50723SJung-uk Kim #define ACPI_TCPA_ADDRESS_VALID (1<<2) 16115ef50723SJung-uk Kim 16125ef50723SJung-uk Kim /* Values for InterruptFlags above */ 16135ef50723SJung-uk Kim 16145ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_MODE (1) 16155ef50723SJung-uk Kim #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 16165ef50723SJung-uk Kim #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 16175ef50723SJung-uk Kim #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 16185ef50723SJung-uk Kim 16195ef50723SJung-uk Kim 16205ef50723SJung-uk Kim /******************************************************************************* 16215ef50723SJung-uk Kim * 16225ef50723SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 16235ef50723SJung-uk Kim * Version 4 16245ef50723SJung-uk Kim * 16255ef50723SJung-uk Kim * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1626af051161SJung-uk Kim * Version 1.2, Revision 8 1627af051161SJung-uk Kim * February 27, 2017 16285ef50723SJung-uk Kim * 16295ef50723SJung-uk Kim ******************************************************************************/ 16305ef50723SJung-uk Kim 16315ef50723SJung-uk Kim typedef struct acpi_table_tpm2 16325ef50723SJung-uk Kim { 16335ef50723SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 16345ef50723SJung-uk Kim UINT16 PlatformClass; 16355ef50723SJung-uk Kim UINT16 Reserved; 16365ef50723SJung-uk Kim UINT64 ControlAddress; 16375ef50723SJung-uk Kim UINT32 StartMethod; 16385ef50723SJung-uk Kim 16395ef50723SJung-uk Kim /* Platform-specific data follows */ 16405ef50723SJung-uk Kim 16415ef50723SJung-uk Kim } ACPI_TABLE_TPM2; 16425ef50723SJung-uk Kim 16435ef50723SJung-uk Kim /* Values for StartMethod above */ 16445ef50723SJung-uk Kim 16455ef50723SJung-uk Kim #define ACPI_TPM2_NOT_ALLOWED 0 16465ef50723SJung-uk Kim #define ACPI_TPM2_START_METHOD 2 16475ef50723SJung-uk Kim #define ACPI_TPM2_MEMORY_MAPPED 6 16485ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER 7 16495ef50723SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 1650af051161SJung-uk Kim #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 1651af051161SJung-uk Kim 1652af051161SJung-uk Kim 1653af051161SJung-uk Kim /* Trailer appears after any StartMethod subtables */ 1654af051161SJung-uk Kim 1655af051161SJung-uk Kim typedef struct acpi_tpm2_trailer 1656af051161SJung-uk Kim { 1657af051161SJung-uk Kim UINT32 MinimumLogLength; /* Minimum length for the event log area */ 1658af051161SJung-uk Kim UINT64 LogAddress; /* Address of the event log area */ 1659af051161SJung-uk Kim 1660af051161SJung-uk Kim } ACPI_TPM2_TRAILER; 1661af051161SJung-uk Kim 1662af051161SJung-uk Kim 1663af051161SJung-uk Kim /* 1664af051161SJung-uk Kim * Subtables (StartMethod-specific) 1665af051161SJung-uk Kim */ 1666af051161SJung-uk Kim 1667af051161SJung-uk Kim /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 1668af051161SJung-uk Kim 1669af051161SJung-uk Kim typedef struct acpi_tpm2_arm_smc 1670af051161SJung-uk Kim { 1671af051161SJung-uk Kim UINT32 GlobalInterrupt; 1672af051161SJung-uk Kim UINT8 InterruptFlags; 1673af051161SJung-uk Kim UINT8 OperationFlags; 1674af051161SJung-uk Kim UINT16 Reserved; 1675af051161SJung-uk Kim UINT32 FunctionId; 1676af051161SJung-uk Kim 1677af051161SJung-uk Kim } ACPI_TPM2_ARM_SMC; 1678af051161SJung-uk Kim 1679af051161SJung-uk Kim /* Values for InterruptFlags above */ 1680af051161SJung-uk Kim 1681af051161SJung-uk Kim #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 1682af051161SJung-uk Kim 1683af051161SJung-uk Kim /* Values for OperationFlags above */ 1684af051161SJung-uk Kim 1685af051161SJung-uk Kim #define ACPI_TPM2_IDLE_SUPPORT (1) 1686d6dd1baeSJung-uk Kim 1687d6dd1baeSJung-uk Kim 1688d6dd1baeSJung-uk Kim /******************************************************************************* 1689d6dd1baeSJung-uk Kim * 1690d6dd1baeSJung-uk Kim * UEFI - UEFI Boot optimization Table 1691d6dd1baeSJung-uk Kim * Version 1 1692d6dd1baeSJung-uk Kim * 1693d6dd1baeSJung-uk Kim * Conforms to "Unified Extensible Firmware Interface Specification", 1694d6dd1baeSJung-uk Kim * Version 2.3, May 8, 2009 1695d6dd1baeSJung-uk Kim * 1696d6dd1baeSJung-uk Kim ******************************************************************************/ 1697d6dd1baeSJung-uk Kim 1698d6dd1baeSJung-uk Kim typedef struct acpi_table_uefi 1699d6dd1baeSJung-uk Kim { 1700d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1701d6dd1baeSJung-uk Kim UINT8 Identifier[16]; /* UUID identifier */ 1702d6dd1baeSJung-uk Kim UINT16 DataOffset; /* Offset of remaining data in table */ 1703d6dd1baeSJung-uk Kim 1704d6dd1baeSJung-uk Kim } ACPI_TABLE_UEFI; 1705d6dd1baeSJung-uk Kim 1706d6dd1baeSJung-uk Kim 1707d6dd1baeSJung-uk Kim /******************************************************************************* 1708d6dd1baeSJung-uk Kim * 17099c48c75eSJung-uk Kim * VRTC - Virtual Real Time Clock Table 17109c48c75eSJung-uk Kim * Version 1 17119c48c75eSJung-uk Kim * 17129c48c75eSJung-uk Kim * Conforms to "Simple Firmware Interface Specification", 17139c48c75eSJung-uk Kim * Draft 0.8.2, Oct 19, 2010 17149c48c75eSJung-uk Kim * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 17159c48c75eSJung-uk Kim * 17169c48c75eSJung-uk Kim ******************************************************************************/ 17179c48c75eSJung-uk Kim 17189c48c75eSJung-uk Kim typedef struct acpi_table_vrtc 17199c48c75eSJung-uk Kim { 17209c48c75eSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 17219c48c75eSJung-uk Kim 17229c48c75eSJung-uk Kim } ACPI_TABLE_VRTC; 17239c48c75eSJung-uk Kim 17249c48c75eSJung-uk Kim /* VRTC entry */ 17259c48c75eSJung-uk Kim 17269c48c75eSJung-uk Kim typedef struct acpi_vrtc_entry 17279c48c75eSJung-uk Kim { 17289c48c75eSJung-uk Kim ACPI_GENERIC_ADDRESS PhysicalAddress; 17299c48c75eSJung-uk Kim UINT32 Irq; 17309c48c75eSJung-uk Kim 17319c48c75eSJung-uk Kim } ACPI_VRTC_ENTRY; 17329c48c75eSJung-uk Kim 17339c48c75eSJung-uk Kim 17349c48c75eSJung-uk Kim /******************************************************************************* 17359c48c75eSJung-uk Kim * 1736d6dd1baeSJung-uk Kim * WAET - Windows ACPI Emulated devices Table 1737d6dd1baeSJung-uk Kim * Version 1 1738d6dd1baeSJung-uk Kim * 1739d6dd1baeSJung-uk Kim * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1740d6dd1baeSJung-uk Kim * 1741d6dd1baeSJung-uk Kim ******************************************************************************/ 1742d6dd1baeSJung-uk Kim 1743d6dd1baeSJung-uk Kim typedef struct acpi_table_waet 1744d6dd1baeSJung-uk Kim { 1745d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1746d6dd1baeSJung-uk Kim UINT32 Flags; 1747d6dd1baeSJung-uk Kim 1748d6dd1baeSJung-uk Kim } ACPI_TABLE_WAET; 1749d6dd1baeSJung-uk Kim 1750d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1751d6dd1baeSJung-uk Kim 1752d6dd1baeSJung-uk Kim #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1753d6dd1baeSJung-uk Kim #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1754d6dd1baeSJung-uk Kim 1755d6dd1baeSJung-uk Kim 1756d6dd1baeSJung-uk Kim /******************************************************************************* 1757d6dd1baeSJung-uk Kim * 1758d6dd1baeSJung-uk Kim * WDAT - Watchdog Action Table 1759d6dd1baeSJung-uk Kim * Version 1 1760d6dd1baeSJung-uk Kim * 1761d6dd1baeSJung-uk Kim * Conforms to "Hardware Watchdog Timers Design Specification", 1762d6dd1baeSJung-uk Kim * Copyright 2006 Microsoft Corporation. 1763d6dd1baeSJung-uk Kim * 1764d6dd1baeSJung-uk Kim ******************************************************************************/ 1765d6dd1baeSJung-uk Kim 1766d6dd1baeSJung-uk Kim typedef struct acpi_table_wdat 1767d6dd1baeSJung-uk Kim { 1768d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1769d6dd1baeSJung-uk Kim UINT32 HeaderLength; /* Watchdog Header Length */ 1770d6dd1baeSJung-uk Kim UINT16 PciSegment; /* PCI Segment number */ 1771d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1772d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1773d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1774d6dd1baeSJung-uk Kim UINT8 Reserved[3]; 1775d6dd1baeSJung-uk Kim UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1776d6dd1baeSJung-uk Kim UINT32 MaxCount; /* Maximum counter value supported */ 1777d6dd1baeSJung-uk Kim UINT32 MinCount; /* Minimum counter value */ 1778d6dd1baeSJung-uk Kim UINT8 Flags; 1779d6dd1baeSJung-uk Kim UINT8 Reserved2[3]; 1780d6dd1baeSJung-uk Kim UINT32 Entries; /* Number of watchdog entries that follow */ 1781d6dd1baeSJung-uk Kim 1782d6dd1baeSJung-uk Kim } ACPI_TABLE_WDAT; 1783d6dd1baeSJung-uk Kim 1784d6dd1baeSJung-uk Kim /* Masks for Flags field above */ 1785d6dd1baeSJung-uk Kim 1786d6dd1baeSJung-uk Kim #define ACPI_WDAT_ENABLED (1) 1787d6dd1baeSJung-uk Kim #define ACPI_WDAT_STOPPED 0x80 1788d6dd1baeSJung-uk Kim 1789d6dd1baeSJung-uk Kim 1790d6dd1baeSJung-uk Kim /* WDAT Instruction Entries (actions) */ 1791d6dd1baeSJung-uk Kim 1792d6dd1baeSJung-uk Kim typedef struct acpi_wdat_entry 1793d6dd1baeSJung-uk Kim { 1794d6dd1baeSJung-uk Kim UINT8 Action; 1795d6dd1baeSJung-uk Kim UINT8 Instruction; 1796d6dd1baeSJung-uk Kim UINT16 Reserved; 1797d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS RegisterRegion; 1798d6dd1baeSJung-uk Kim UINT32 Value; /* Value used with Read/Write register */ 1799d6dd1baeSJung-uk Kim UINT32 Mask; /* Bitmask required for this register instruction */ 1800d6dd1baeSJung-uk Kim 1801d6dd1baeSJung-uk Kim } ACPI_WDAT_ENTRY; 1802d6dd1baeSJung-uk Kim 1803d6dd1baeSJung-uk Kim /* Values for Action field above */ 1804d6dd1baeSJung-uk Kim 1805d6dd1baeSJung-uk Kim enum AcpiWdatActions 1806d6dd1baeSJung-uk Kim { 1807d6dd1baeSJung-uk Kim ACPI_WDAT_RESET = 1, 1808d6dd1baeSJung-uk Kim ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1809d6dd1baeSJung-uk Kim ACPI_WDAT_GET_COUNTDOWN = 5, 1810d6dd1baeSJung-uk Kim ACPI_WDAT_SET_COUNTDOWN = 6, 1811d6dd1baeSJung-uk Kim ACPI_WDAT_GET_RUNNING_STATE = 8, 1812d6dd1baeSJung-uk Kim ACPI_WDAT_SET_RUNNING_STATE = 9, 1813d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STOPPED_STATE = 10, 1814d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STOPPED_STATE = 11, 1815d6dd1baeSJung-uk Kim ACPI_WDAT_GET_REBOOT = 16, 1816d6dd1baeSJung-uk Kim ACPI_WDAT_SET_REBOOT = 17, 1817d6dd1baeSJung-uk Kim ACPI_WDAT_GET_SHUTDOWN = 18, 1818d6dd1baeSJung-uk Kim ACPI_WDAT_SET_SHUTDOWN = 19, 1819d6dd1baeSJung-uk Kim ACPI_WDAT_GET_STATUS = 32, 1820d6dd1baeSJung-uk Kim ACPI_WDAT_SET_STATUS = 33, 1821d6dd1baeSJung-uk Kim ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1822d6dd1baeSJung-uk Kim }; 1823d6dd1baeSJung-uk Kim 1824d6dd1baeSJung-uk Kim /* Values for Instruction field above */ 1825d6dd1baeSJung-uk Kim 1826d6dd1baeSJung-uk Kim enum AcpiWdatInstructions 1827d6dd1baeSJung-uk Kim { 1828d6dd1baeSJung-uk Kim ACPI_WDAT_READ_VALUE = 0, 1829d6dd1baeSJung-uk Kim ACPI_WDAT_READ_COUNTDOWN = 1, 1830d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_VALUE = 2, 1831d6dd1baeSJung-uk Kim ACPI_WDAT_WRITE_COUNTDOWN = 3, 1832d6dd1baeSJung-uk Kim ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1833d6dd1baeSJung-uk Kim ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1834d6dd1baeSJung-uk Kim }; 1835d6dd1baeSJung-uk Kim 1836d6dd1baeSJung-uk Kim 1837d6dd1baeSJung-uk Kim /******************************************************************************* 1838d6dd1baeSJung-uk Kim * 1839a88e22b7SJung-uk Kim * WDDT - Watchdog Descriptor Table 1840a88e22b7SJung-uk Kim * Version 1 1841a88e22b7SJung-uk Kim * 1842a88e22b7SJung-uk Kim * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1843a88e22b7SJung-uk Kim * Version 001, September 2002 1844a88e22b7SJung-uk Kim * 1845a88e22b7SJung-uk Kim ******************************************************************************/ 1846a88e22b7SJung-uk Kim 1847a88e22b7SJung-uk Kim typedef struct acpi_table_wddt 1848a88e22b7SJung-uk Kim { 1849a88e22b7SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1850a88e22b7SJung-uk Kim UINT16 SpecVersion; 1851a88e22b7SJung-uk Kim UINT16 TableVersion; 1852a88e22b7SJung-uk Kim UINT16 PciVendorId; 1853a88e22b7SJung-uk Kim ACPI_GENERIC_ADDRESS Address; 1854a88e22b7SJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1855a88e22b7SJung-uk Kim UINT16 MinCount; /* Minimum counter value supported */ 1856a88e22b7SJung-uk Kim UINT16 Period; 1857a88e22b7SJung-uk Kim UINT16 Status; 1858a88e22b7SJung-uk Kim UINT16 Capability; 1859a88e22b7SJung-uk Kim 1860a88e22b7SJung-uk Kim } ACPI_TABLE_WDDT; 1861a88e22b7SJung-uk Kim 1862a88e22b7SJung-uk Kim /* Flags for Status field above */ 1863a88e22b7SJung-uk Kim 1864a88e22b7SJung-uk Kim #define ACPI_WDDT_AVAILABLE (1) 1865a88e22b7SJung-uk Kim #define ACPI_WDDT_ACTIVE (1<<1) 1866a88e22b7SJung-uk Kim #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1867a88e22b7SJung-uk Kim #define ACPI_WDDT_USER_RESET (1<<11) 1868a88e22b7SJung-uk Kim #define ACPI_WDDT_WDT_RESET (1<<12) 1869a88e22b7SJung-uk Kim #define ACPI_WDDT_POWER_FAIL (1<<13) 1870a88e22b7SJung-uk Kim #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1871a88e22b7SJung-uk Kim 1872a88e22b7SJung-uk Kim /* Flags for Capability field above */ 1873a88e22b7SJung-uk Kim 1874a88e22b7SJung-uk Kim #define ACPI_WDDT_AUTO_RESET (1) 1875a88e22b7SJung-uk Kim #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1876a88e22b7SJung-uk Kim 1877a88e22b7SJung-uk Kim 1878a88e22b7SJung-uk Kim /******************************************************************************* 1879a88e22b7SJung-uk Kim * 1880d6dd1baeSJung-uk Kim * WDRT - Watchdog Resource Table 1881d6dd1baeSJung-uk Kim * Version 1 1882d6dd1baeSJung-uk Kim * 1883d6dd1baeSJung-uk Kim * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1884d6dd1baeSJung-uk Kim * Version 1.01, August 28, 2006 1885d6dd1baeSJung-uk Kim * 1886d6dd1baeSJung-uk Kim ******************************************************************************/ 1887d6dd1baeSJung-uk Kim 1888d6dd1baeSJung-uk Kim typedef struct acpi_table_wdrt 1889d6dd1baeSJung-uk Kim { 1890d6dd1baeSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1891d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS ControlRegister; 1892d6dd1baeSJung-uk Kim ACPI_GENERIC_ADDRESS CountRegister; 1893d6dd1baeSJung-uk Kim UINT16 PciDeviceId; 1894d6dd1baeSJung-uk Kim UINT16 PciVendorId; 1895d6dd1baeSJung-uk Kim UINT8 PciBus; /* PCI Bus number */ 1896d6dd1baeSJung-uk Kim UINT8 PciDevice; /* PCI Device number */ 1897d6dd1baeSJung-uk Kim UINT8 PciFunction; /* PCI Function number */ 1898d6dd1baeSJung-uk Kim UINT8 PciSegment; /* PCI Segment number */ 1899d6dd1baeSJung-uk Kim UINT16 MaxCount; /* Maximum counter value supported */ 1900d6dd1baeSJung-uk Kim UINT8 Units; 1901d6dd1baeSJung-uk Kim 1902d6dd1baeSJung-uk Kim } ACPI_TABLE_WDRT; 1903d6dd1baeSJung-uk Kim 1904d6dd1baeSJung-uk Kim 1905af051161SJung-uk Kim /******************************************************************************* 1906af051161SJung-uk Kim * 1907af051161SJung-uk Kim * WSMT - Windows SMM Security Migrations Table 1908af051161SJung-uk Kim * Version 1 1909af051161SJung-uk Kim * 1910af051161SJung-uk Kim * Conforms to "Windows SMM Security Migrations Table", 1911af051161SJung-uk Kim * Version 1.0, April 18, 2016 1912af051161SJung-uk Kim * 1913af051161SJung-uk Kim ******************************************************************************/ 1914af051161SJung-uk Kim 1915af051161SJung-uk Kim typedef struct acpi_table_wsmt 1916af051161SJung-uk Kim { 1917af051161SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1918af051161SJung-uk Kim UINT32 ProtectionFlags; 1919af051161SJung-uk Kim 1920af051161SJung-uk Kim } ACPI_TABLE_WSMT; 1921af051161SJung-uk Kim 1922af051161SJung-uk Kim /* Flags for ProtectionFlags field above */ 1923af051161SJung-uk Kim 1924af051161SJung-uk Kim #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 1925af051161SJung-uk Kim #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 1926af051161SJung-uk Kim #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 1927af051161SJung-uk Kim 1928af051161SJung-uk Kim 1929d6dd1baeSJung-uk Kim /* Reset to default packing */ 1930d6dd1baeSJung-uk Kim 1931d6dd1baeSJung-uk Kim #pragma pack() 1932d6dd1baeSJung-uk Kim 1933d6dd1baeSJung-uk Kim #endif /* __ACTBL2_H__ */ 1934