1*433d6423SLionel Sambuc /****************************************************************************** 2*433d6423SLionel Sambuc * 3*433d6423SLionel Sambuc * Name: actbl2.h - ACPI Specification Revision 2.0 Tables 4*433d6423SLionel Sambuc * 5*433d6423SLionel Sambuc *****************************************************************************/ 6*433d6423SLionel Sambuc 7*433d6423SLionel Sambuc /****************************************************************************** 8*433d6423SLionel Sambuc * 9*433d6423SLionel Sambuc * 1. Copyright Notice 10*433d6423SLionel Sambuc * 11*433d6423SLionel Sambuc * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. 12*433d6423SLionel Sambuc * All rights reserved. 13*433d6423SLionel Sambuc * 14*433d6423SLionel Sambuc * 2. License 15*433d6423SLionel Sambuc * 16*433d6423SLionel Sambuc * 2.1. This is your license from Intel Corp. under its intellectual property 17*433d6423SLionel Sambuc * rights. You may have additional license terms from the party that provided 18*433d6423SLionel Sambuc * you this software, covering your right to use that party's intellectual 19*433d6423SLionel Sambuc * property rights. 20*433d6423SLionel Sambuc * 21*433d6423SLionel Sambuc * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22*433d6423SLionel Sambuc * copy of the source code appearing in this file ("Covered Code") an 23*433d6423SLionel Sambuc * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24*433d6423SLionel Sambuc * base code distributed originally by Intel ("Original Intel Code") to copy, 25*433d6423SLionel Sambuc * make derivatives, distribute, use and display any portion of the Covered 26*433d6423SLionel Sambuc * Code in any form, with the right to sublicense such rights; and 27*433d6423SLionel Sambuc * 28*433d6423SLionel Sambuc * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29*433d6423SLionel Sambuc * license (with the right to sublicense), under only those claims of Intel 30*433d6423SLionel Sambuc * patents that are infringed by the Original Intel Code, to make, use, sell, 31*433d6423SLionel Sambuc * offer to sell, and import the Covered Code and derivative works thereof 32*433d6423SLionel Sambuc * solely to the minimum extent necessary to exercise the above copyright 33*433d6423SLionel Sambuc * license, and in no event shall the patent license extend to any additions 34*433d6423SLionel Sambuc * to or modifications of the Original Intel Code. No other license or right 35*433d6423SLionel Sambuc * is granted directly or by implication, estoppel or otherwise; 36*433d6423SLionel Sambuc * 37*433d6423SLionel Sambuc * The above copyright and patent license is granted only if the following 38*433d6423SLionel Sambuc * conditions are met: 39*433d6423SLionel Sambuc * 40*433d6423SLionel Sambuc * 3. Conditions 41*433d6423SLionel Sambuc * 42*433d6423SLionel Sambuc * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43*433d6423SLionel Sambuc * Redistribution of source code of any substantial portion of the Covered 44*433d6423SLionel Sambuc * Code or modification with rights to further distribute source must include 45*433d6423SLionel Sambuc * the above Copyright Notice, the above License, this list of Conditions, 46*433d6423SLionel Sambuc * and the following Disclaimer and Export Compliance provision. In addition, 47*433d6423SLionel Sambuc * Licensee must cause all Covered Code to which Licensee contributes to 48*433d6423SLionel Sambuc * contain a file documenting the changes Licensee made to create that Covered 49*433d6423SLionel Sambuc * Code and the date of any change. Licensee must include in that file the 50*433d6423SLionel Sambuc * documentation of any changes made by any predecessor Licensee. Licensee 51*433d6423SLionel Sambuc * must include a prominent statement that the modification is derived, 52*433d6423SLionel Sambuc * directly or indirectly, from Original Intel Code. 53*433d6423SLionel Sambuc * 54*433d6423SLionel Sambuc * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55*433d6423SLionel Sambuc * Redistribution of source code of any substantial portion of the Covered 56*433d6423SLionel Sambuc * Code or modification without rights to further distribute source must 57*433d6423SLionel Sambuc * include the following Disclaimer and Export Compliance provision in the 58*433d6423SLionel Sambuc * documentation and/or other materials provided with distribution. In 59*433d6423SLionel Sambuc * addition, Licensee may not authorize further sublicense of source of any 60*433d6423SLionel Sambuc * portion of the Covered Code, and must include terms to the effect that the 61*433d6423SLionel Sambuc * license from Licensee to its licensee is limited to the intellectual 62*433d6423SLionel Sambuc * property embodied in the software Licensee provides to its licensee, and 63*433d6423SLionel Sambuc * not to intellectual property embodied in modifications its licensee may 64*433d6423SLionel Sambuc * make. 65*433d6423SLionel Sambuc * 66*433d6423SLionel Sambuc * 3.3. Redistribution of Executable. Redistribution in executable form of any 67*433d6423SLionel Sambuc * substantial portion of the Covered Code or modification must reproduce the 68*433d6423SLionel Sambuc * above Copyright Notice, and the following Disclaimer and Export Compliance 69*433d6423SLionel Sambuc * provision in the documentation and/or other materials provided with the 70*433d6423SLionel Sambuc * distribution. 71*433d6423SLionel Sambuc * 72*433d6423SLionel Sambuc * 3.4. Intel retains all right, title, and interest in and to the Original 73*433d6423SLionel Sambuc * Intel Code. 74*433d6423SLionel Sambuc * 75*433d6423SLionel Sambuc * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76*433d6423SLionel Sambuc * Intel shall be used in advertising or otherwise to promote the sale, use or 77*433d6423SLionel Sambuc * other dealings in products derived from or relating to the Covered Code 78*433d6423SLionel Sambuc * without prior written authorization from Intel. 79*433d6423SLionel Sambuc * 80*433d6423SLionel Sambuc * 4. Disclaimer and Export Compliance 81*433d6423SLionel Sambuc * 82*433d6423SLionel Sambuc * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83*433d6423SLionel Sambuc * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84*433d6423SLionel Sambuc * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85*433d6423SLionel Sambuc * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86*433d6423SLionel Sambuc * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87*433d6423SLionel Sambuc * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88*433d6423SLionel Sambuc * PARTICULAR PURPOSE. 89*433d6423SLionel Sambuc * 90*433d6423SLionel Sambuc * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91*433d6423SLionel Sambuc * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92*433d6423SLionel Sambuc * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93*433d6423SLionel Sambuc * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94*433d6423SLionel Sambuc * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95*433d6423SLionel Sambuc * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96*433d6423SLionel Sambuc * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97*433d6423SLionel Sambuc * LIMITED REMEDY. 98*433d6423SLionel Sambuc * 99*433d6423SLionel Sambuc * 4.3. Licensee shall not export, either directly or indirectly, any of this 100*433d6423SLionel Sambuc * software or system incorporating such software without first obtaining any 101*433d6423SLionel Sambuc * required license or other approval from the U. S. Department of Commerce or 102*433d6423SLionel Sambuc * any other agency or department of the United States Government. In the 103*433d6423SLionel Sambuc * event Licensee exports any such software from the United States or 104*433d6423SLionel Sambuc * re-exports any such software from a foreign destination, Licensee shall 105*433d6423SLionel Sambuc * ensure that the distribution and export/re-export of the software is in 106*433d6423SLionel Sambuc * compliance with all laws, regulations, orders, or other restrictions of the 107*433d6423SLionel Sambuc * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108*433d6423SLionel Sambuc * any of its subsidiaries will export/re-export any technical data, process, 109*433d6423SLionel Sambuc * software, or service, directly or indirectly, to any country for which the 110*433d6423SLionel Sambuc * United States government or any agency thereof requires an export license, 111*433d6423SLionel Sambuc * other governmental approval, or letter of assurance, without first obtaining 112*433d6423SLionel Sambuc * such license, approval or letter. 113*433d6423SLionel Sambuc * 114*433d6423SLionel Sambuc *****************************************************************************/ 115*433d6423SLionel Sambuc 116*433d6423SLionel Sambuc #ifndef __ACTBL2_H__ 117*433d6423SLionel Sambuc #define __ACTBL2_H__ 118*433d6423SLionel Sambuc 119*433d6423SLionel Sambuc 120*433d6423SLionel Sambuc /******************************************************************************* 121*433d6423SLionel Sambuc * 122*433d6423SLionel Sambuc * Additional ACPI Tables (2) 123*433d6423SLionel Sambuc * 124*433d6423SLionel Sambuc * These tables are not consumed directly by the ACPICA subsystem, but are 125*433d6423SLionel Sambuc * included here to support device drivers and the AML disassembler. 126*433d6423SLionel Sambuc * 127*433d6423SLionel Sambuc * The tables in this file are defined by third-party specifications, and are 128*433d6423SLionel Sambuc * not defined directly by the ACPI specification itself. 129*433d6423SLionel Sambuc * 130*433d6423SLionel Sambuc ******************************************************************************/ 131*433d6423SLionel Sambuc 132*433d6423SLionel Sambuc 133*433d6423SLionel Sambuc /* 134*433d6423SLionel Sambuc * Values for description table header signatures for tables defined in this 135*433d6423SLionel Sambuc * file. Useful because they make it more difficult to inadvertently type in 136*433d6423SLionel Sambuc * the wrong signature. 137*433d6423SLionel Sambuc */ 138*433d6423SLionel Sambuc #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 139*433d6423SLionel Sambuc #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 140*433d6423SLionel Sambuc #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 141*433d6423SLionel Sambuc #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 142*433d6423SLionel Sambuc #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 143*433d6423SLionel Sambuc #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 144*433d6423SLionel Sambuc #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 145*433d6423SLionel Sambuc #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 146*433d6423SLionel Sambuc #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 147*433d6423SLionel Sambuc #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 148*433d6423SLionel Sambuc #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 149*433d6423SLionel Sambuc #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 150*433d6423SLionel Sambuc #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 151*433d6423SLionel Sambuc #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 152*433d6423SLionel Sambuc #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 153*433d6423SLionel Sambuc #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 154*433d6423SLionel Sambuc #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 155*433d6423SLionel Sambuc #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 156*433d6423SLionel Sambuc 157*433d6423SLionel Sambuc #ifdef ACPI_UNDEFINED_TABLES 158*433d6423SLionel Sambuc /* 159*433d6423SLionel Sambuc * These tables have been seen in the field, but no definition has been found 160*433d6423SLionel Sambuc */ 161*433d6423SLionel Sambuc #define ACPI_SIG_ATKG "ATKG" 162*433d6423SLionel Sambuc #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 163*433d6423SLionel Sambuc #define ACPI_SIG_IEIT "IEIT" 164*433d6423SLionel Sambuc #endif 165*433d6423SLionel Sambuc 166*433d6423SLionel Sambuc /* 167*433d6423SLionel Sambuc * All tables must be byte-packed to match the ACPI specification, since 168*433d6423SLionel Sambuc * the tables are provided by the system BIOS. 169*433d6423SLionel Sambuc */ 170*433d6423SLionel Sambuc #pragma pack(1) 171*433d6423SLionel Sambuc 172*433d6423SLionel Sambuc /* 173*433d6423SLionel Sambuc * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 174*433d6423SLionel Sambuc * This is the only type that is even remotely portable. Anything else is not 175*433d6423SLionel Sambuc * portable, so do not use any other bitfield types. 176*433d6423SLionel Sambuc */ 177*433d6423SLionel Sambuc 178*433d6423SLionel Sambuc 179*433d6423SLionel Sambuc /******************************************************************************* 180*433d6423SLionel Sambuc * 181*433d6423SLionel Sambuc * ASF - Alert Standard Format table (Signature "ASF!") 182*433d6423SLionel Sambuc * Revision 0x10 183*433d6423SLionel Sambuc * 184*433d6423SLionel Sambuc * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 185*433d6423SLionel Sambuc * 186*433d6423SLionel Sambuc ******************************************************************************/ 187*433d6423SLionel Sambuc 188*433d6423SLionel Sambuc typedef struct acpi_table_asf 189*433d6423SLionel Sambuc { 190*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 191*433d6423SLionel Sambuc 192*433d6423SLionel Sambuc } ACPI_TABLE_ASF; 193*433d6423SLionel Sambuc 194*433d6423SLionel Sambuc 195*433d6423SLionel Sambuc /* ASF subtable header */ 196*433d6423SLionel Sambuc 197*433d6423SLionel Sambuc typedef struct acpi_asf_header 198*433d6423SLionel Sambuc { 199*433d6423SLionel Sambuc UINT8 Type; 200*433d6423SLionel Sambuc UINT8 Reserved; 201*433d6423SLionel Sambuc UINT16 Length; 202*433d6423SLionel Sambuc 203*433d6423SLionel Sambuc } ACPI_ASF_HEADER; 204*433d6423SLionel Sambuc 205*433d6423SLionel Sambuc 206*433d6423SLionel Sambuc /* Values for Type field above */ 207*433d6423SLionel Sambuc 208*433d6423SLionel Sambuc enum AcpiAsfType 209*433d6423SLionel Sambuc { 210*433d6423SLionel Sambuc ACPI_ASF_TYPE_INFO = 0, 211*433d6423SLionel Sambuc ACPI_ASF_TYPE_ALERT = 1, 212*433d6423SLionel Sambuc ACPI_ASF_TYPE_CONTROL = 2, 213*433d6423SLionel Sambuc ACPI_ASF_TYPE_BOOT = 3, 214*433d6423SLionel Sambuc ACPI_ASF_TYPE_ADDRESS = 4, 215*433d6423SLionel Sambuc ACPI_ASF_TYPE_RESERVED = 5 216*433d6423SLionel Sambuc }; 217*433d6423SLionel Sambuc 218*433d6423SLionel Sambuc /* 219*433d6423SLionel Sambuc * ASF subtables 220*433d6423SLionel Sambuc */ 221*433d6423SLionel Sambuc 222*433d6423SLionel Sambuc /* 0: ASF Information */ 223*433d6423SLionel Sambuc 224*433d6423SLionel Sambuc typedef struct acpi_asf_info 225*433d6423SLionel Sambuc { 226*433d6423SLionel Sambuc ACPI_ASF_HEADER Header; 227*433d6423SLionel Sambuc UINT8 MinResetValue; 228*433d6423SLionel Sambuc UINT8 MinPollInterval; 229*433d6423SLionel Sambuc UINT16 SystemId; 230*433d6423SLionel Sambuc UINT32 MfgId; 231*433d6423SLionel Sambuc UINT8 Flags; 232*433d6423SLionel Sambuc UINT8 Reserved2[3]; 233*433d6423SLionel Sambuc 234*433d6423SLionel Sambuc } ACPI_ASF_INFO; 235*433d6423SLionel Sambuc 236*433d6423SLionel Sambuc /* Masks for Flags field above */ 237*433d6423SLionel Sambuc 238*433d6423SLionel Sambuc #define ACPI_ASF_SMBUS_PROTOCOLS (1) 239*433d6423SLionel Sambuc 240*433d6423SLionel Sambuc 241*433d6423SLionel Sambuc /* 1: ASF Alerts */ 242*433d6423SLionel Sambuc 243*433d6423SLionel Sambuc typedef struct acpi_asf_alert 244*433d6423SLionel Sambuc { 245*433d6423SLionel Sambuc ACPI_ASF_HEADER Header; 246*433d6423SLionel Sambuc UINT8 AssertMask; 247*433d6423SLionel Sambuc UINT8 DeassertMask; 248*433d6423SLionel Sambuc UINT8 Alerts; 249*433d6423SLionel Sambuc UINT8 DataLength; 250*433d6423SLionel Sambuc 251*433d6423SLionel Sambuc } ACPI_ASF_ALERT; 252*433d6423SLionel Sambuc 253*433d6423SLionel Sambuc typedef struct acpi_asf_alert_data 254*433d6423SLionel Sambuc { 255*433d6423SLionel Sambuc UINT8 Address; 256*433d6423SLionel Sambuc UINT8 Command; 257*433d6423SLionel Sambuc UINT8 Mask; 258*433d6423SLionel Sambuc UINT8 Value; 259*433d6423SLionel Sambuc UINT8 SensorType; 260*433d6423SLionel Sambuc UINT8 Type; 261*433d6423SLionel Sambuc UINT8 Offset; 262*433d6423SLionel Sambuc UINT8 SourceType; 263*433d6423SLionel Sambuc UINT8 Severity; 264*433d6423SLionel Sambuc UINT8 SensorNumber; 265*433d6423SLionel Sambuc UINT8 Entity; 266*433d6423SLionel Sambuc UINT8 Instance; 267*433d6423SLionel Sambuc 268*433d6423SLionel Sambuc } ACPI_ASF_ALERT_DATA; 269*433d6423SLionel Sambuc 270*433d6423SLionel Sambuc 271*433d6423SLionel Sambuc /* 2: ASF Remote Control */ 272*433d6423SLionel Sambuc 273*433d6423SLionel Sambuc typedef struct acpi_asf_remote 274*433d6423SLionel Sambuc { 275*433d6423SLionel Sambuc ACPI_ASF_HEADER Header; 276*433d6423SLionel Sambuc UINT8 Controls; 277*433d6423SLionel Sambuc UINT8 DataLength; 278*433d6423SLionel Sambuc UINT16 Reserved2; 279*433d6423SLionel Sambuc 280*433d6423SLionel Sambuc } ACPI_ASF_REMOTE; 281*433d6423SLionel Sambuc 282*433d6423SLionel Sambuc typedef struct acpi_asf_control_data 283*433d6423SLionel Sambuc { 284*433d6423SLionel Sambuc UINT8 Function; 285*433d6423SLionel Sambuc UINT8 Address; 286*433d6423SLionel Sambuc UINT8 Command; 287*433d6423SLionel Sambuc UINT8 Value; 288*433d6423SLionel Sambuc 289*433d6423SLionel Sambuc } ACPI_ASF_CONTROL_DATA; 290*433d6423SLionel Sambuc 291*433d6423SLionel Sambuc 292*433d6423SLionel Sambuc /* 3: ASF RMCP Boot Options */ 293*433d6423SLionel Sambuc 294*433d6423SLionel Sambuc typedef struct acpi_asf_rmcp 295*433d6423SLionel Sambuc { 296*433d6423SLionel Sambuc ACPI_ASF_HEADER Header; 297*433d6423SLionel Sambuc UINT8 Capabilities[7]; 298*433d6423SLionel Sambuc UINT8 CompletionCode; 299*433d6423SLionel Sambuc UINT32 EnterpriseId; 300*433d6423SLionel Sambuc UINT8 Command; 301*433d6423SLionel Sambuc UINT16 Parameter; 302*433d6423SLionel Sambuc UINT16 BootOptions; 303*433d6423SLionel Sambuc UINT16 OemParameters; 304*433d6423SLionel Sambuc 305*433d6423SLionel Sambuc } ACPI_ASF_RMCP; 306*433d6423SLionel Sambuc 307*433d6423SLionel Sambuc 308*433d6423SLionel Sambuc /* 4: ASF Address */ 309*433d6423SLionel Sambuc 310*433d6423SLionel Sambuc typedef struct acpi_asf_address 311*433d6423SLionel Sambuc { 312*433d6423SLionel Sambuc ACPI_ASF_HEADER Header; 313*433d6423SLionel Sambuc UINT8 EpromAddress; 314*433d6423SLionel Sambuc UINT8 Devices; 315*433d6423SLionel Sambuc 316*433d6423SLionel Sambuc } ACPI_ASF_ADDRESS; 317*433d6423SLionel Sambuc 318*433d6423SLionel Sambuc 319*433d6423SLionel Sambuc /******************************************************************************* 320*433d6423SLionel Sambuc * 321*433d6423SLionel Sambuc * BOOT - Simple Boot Flag Table 322*433d6423SLionel Sambuc * Version 1 323*433d6423SLionel Sambuc * 324*433d6423SLionel Sambuc * Conforms to the "Simple Boot Flag Specification", Version 2.1 325*433d6423SLionel Sambuc * 326*433d6423SLionel Sambuc ******************************************************************************/ 327*433d6423SLionel Sambuc 328*433d6423SLionel Sambuc typedef struct acpi_table_boot 329*433d6423SLionel Sambuc { 330*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 331*433d6423SLionel Sambuc UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 332*433d6423SLionel Sambuc UINT8 Reserved[3]; 333*433d6423SLionel Sambuc 334*433d6423SLionel Sambuc } ACPI_TABLE_BOOT; 335*433d6423SLionel Sambuc 336*433d6423SLionel Sambuc 337*433d6423SLionel Sambuc /******************************************************************************* 338*433d6423SLionel Sambuc * 339*433d6423SLionel Sambuc * DBGP - Debug Port table 340*433d6423SLionel Sambuc * Version 1 341*433d6423SLionel Sambuc * 342*433d6423SLionel Sambuc * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 343*433d6423SLionel Sambuc * 344*433d6423SLionel Sambuc ******************************************************************************/ 345*433d6423SLionel Sambuc 346*433d6423SLionel Sambuc typedef struct acpi_table_dbgp 347*433d6423SLionel Sambuc { 348*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 349*433d6423SLionel Sambuc UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 350*433d6423SLionel Sambuc UINT8 Reserved[3]; 351*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS DebugPort; 352*433d6423SLionel Sambuc 353*433d6423SLionel Sambuc } ACPI_TABLE_DBGP; 354*433d6423SLionel Sambuc 355*433d6423SLionel Sambuc 356*433d6423SLionel Sambuc /******************************************************************************* 357*433d6423SLionel Sambuc * 358*433d6423SLionel Sambuc * DMAR - DMA Remapping table 359*433d6423SLionel Sambuc * Version 1 360*433d6423SLionel Sambuc * 361*433d6423SLionel Sambuc * Conforms to "Intel Virtualization Technology for Directed I/O", 362*433d6423SLionel Sambuc * Version 1.2, Sept. 2008 363*433d6423SLionel Sambuc * 364*433d6423SLionel Sambuc ******************************************************************************/ 365*433d6423SLionel Sambuc 366*433d6423SLionel Sambuc typedef struct acpi_table_dmar 367*433d6423SLionel Sambuc { 368*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 369*433d6423SLionel Sambuc UINT8 Width; /* Host Address Width */ 370*433d6423SLionel Sambuc UINT8 Flags; 371*433d6423SLionel Sambuc UINT8 Reserved[10]; 372*433d6423SLionel Sambuc 373*433d6423SLionel Sambuc } ACPI_TABLE_DMAR; 374*433d6423SLionel Sambuc 375*433d6423SLionel Sambuc /* Masks for Flags field above */ 376*433d6423SLionel Sambuc 377*433d6423SLionel Sambuc #define ACPI_DMAR_INTR_REMAP (1) 378*433d6423SLionel Sambuc 379*433d6423SLionel Sambuc 380*433d6423SLionel Sambuc /* DMAR subtable header */ 381*433d6423SLionel Sambuc 382*433d6423SLionel Sambuc typedef struct acpi_dmar_header 383*433d6423SLionel Sambuc { 384*433d6423SLionel Sambuc UINT16 Type; 385*433d6423SLionel Sambuc UINT16 Length; 386*433d6423SLionel Sambuc 387*433d6423SLionel Sambuc } ACPI_DMAR_HEADER; 388*433d6423SLionel Sambuc 389*433d6423SLionel Sambuc /* Values for subtable type in ACPI_DMAR_HEADER */ 390*433d6423SLionel Sambuc 391*433d6423SLionel Sambuc enum AcpiDmarType 392*433d6423SLionel Sambuc { 393*433d6423SLionel Sambuc ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 394*433d6423SLionel Sambuc ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 395*433d6423SLionel Sambuc ACPI_DMAR_TYPE_ATSR = 2, 396*433d6423SLionel Sambuc ACPI_DMAR_HARDWARE_AFFINITY = 3, 397*433d6423SLionel Sambuc ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 398*433d6423SLionel Sambuc }; 399*433d6423SLionel Sambuc 400*433d6423SLionel Sambuc 401*433d6423SLionel Sambuc /* DMAR Device Scope structure */ 402*433d6423SLionel Sambuc 403*433d6423SLionel Sambuc typedef struct acpi_dmar_device_scope 404*433d6423SLionel Sambuc { 405*433d6423SLionel Sambuc UINT8 EntryType; 406*433d6423SLionel Sambuc UINT8 Length; 407*433d6423SLionel Sambuc UINT16 Reserved; 408*433d6423SLionel Sambuc UINT8 EnumerationId; 409*433d6423SLionel Sambuc UINT8 Bus; 410*433d6423SLionel Sambuc 411*433d6423SLionel Sambuc } ACPI_DMAR_DEVICE_SCOPE; 412*433d6423SLionel Sambuc 413*433d6423SLionel Sambuc /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 414*433d6423SLionel Sambuc 415*433d6423SLionel Sambuc enum AcpiDmarScopeType 416*433d6423SLionel Sambuc { 417*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 418*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 419*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 420*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 421*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_HPET = 4, 422*433d6423SLionel Sambuc ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 423*433d6423SLionel Sambuc }; 424*433d6423SLionel Sambuc 425*433d6423SLionel Sambuc typedef struct acpi_dmar_pci_path 426*433d6423SLionel Sambuc { 427*433d6423SLionel Sambuc UINT8 Device; 428*433d6423SLionel Sambuc UINT8 Function; 429*433d6423SLionel Sambuc 430*433d6423SLionel Sambuc } ACPI_DMAR_PCI_PATH; 431*433d6423SLionel Sambuc 432*433d6423SLionel Sambuc 433*433d6423SLionel Sambuc /* 434*433d6423SLionel Sambuc * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER 435*433d6423SLionel Sambuc */ 436*433d6423SLionel Sambuc 437*433d6423SLionel Sambuc /* 0: Hardware Unit Definition */ 438*433d6423SLionel Sambuc 439*433d6423SLionel Sambuc typedef struct acpi_dmar_hardware_unit 440*433d6423SLionel Sambuc { 441*433d6423SLionel Sambuc ACPI_DMAR_HEADER Header; 442*433d6423SLionel Sambuc UINT8 Flags; 443*433d6423SLionel Sambuc UINT8 Reserved; 444*433d6423SLionel Sambuc UINT16 Segment; 445*433d6423SLionel Sambuc UINT64 Address; /* Register Base Address */ 446*433d6423SLionel Sambuc 447*433d6423SLionel Sambuc } ACPI_DMAR_HARDWARE_UNIT; 448*433d6423SLionel Sambuc 449*433d6423SLionel Sambuc /* Masks for Flags field above */ 450*433d6423SLionel Sambuc 451*433d6423SLionel Sambuc #define ACPI_DMAR_INCLUDE_ALL (1) 452*433d6423SLionel Sambuc 453*433d6423SLionel Sambuc 454*433d6423SLionel Sambuc /* 1: Reserved Memory Defininition */ 455*433d6423SLionel Sambuc 456*433d6423SLionel Sambuc typedef struct acpi_dmar_reserved_memory 457*433d6423SLionel Sambuc { 458*433d6423SLionel Sambuc ACPI_DMAR_HEADER Header; 459*433d6423SLionel Sambuc UINT16 Reserved; 460*433d6423SLionel Sambuc UINT16 Segment; 461*433d6423SLionel Sambuc UINT64 BaseAddress; /* 4K aligned base address */ 462*433d6423SLionel Sambuc UINT64 EndAddress; /* 4K aligned limit address */ 463*433d6423SLionel Sambuc 464*433d6423SLionel Sambuc } ACPI_DMAR_RESERVED_MEMORY; 465*433d6423SLionel Sambuc 466*433d6423SLionel Sambuc /* Masks for Flags field above */ 467*433d6423SLionel Sambuc 468*433d6423SLionel Sambuc #define ACPI_DMAR_ALLOW_ALL (1) 469*433d6423SLionel Sambuc 470*433d6423SLionel Sambuc 471*433d6423SLionel Sambuc /* 2: Root Port ATS Capability Reporting Structure */ 472*433d6423SLionel Sambuc 473*433d6423SLionel Sambuc typedef struct acpi_dmar_atsr 474*433d6423SLionel Sambuc { 475*433d6423SLionel Sambuc ACPI_DMAR_HEADER Header; 476*433d6423SLionel Sambuc UINT8 Flags; 477*433d6423SLionel Sambuc UINT8 Reserved; 478*433d6423SLionel Sambuc UINT16 Segment; 479*433d6423SLionel Sambuc 480*433d6423SLionel Sambuc } ACPI_DMAR_ATSR; 481*433d6423SLionel Sambuc 482*433d6423SLionel Sambuc /* Masks for Flags field above */ 483*433d6423SLionel Sambuc 484*433d6423SLionel Sambuc #define ACPI_DMAR_ALL_PORTS (1) 485*433d6423SLionel Sambuc 486*433d6423SLionel Sambuc 487*433d6423SLionel Sambuc /* 3: Remapping Hardware Static Affinity Structure */ 488*433d6423SLionel Sambuc 489*433d6423SLionel Sambuc typedef struct acpi_dmar_rhsa 490*433d6423SLionel Sambuc { 491*433d6423SLionel Sambuc ACPI_DMAR_HEADER Header; 492*433d6423SLionel Sambuc UINT32 Reserved; 493*433d6423SLionel Sambuc UINT64 BaseAddress; 494*433d6423SLionel Sambuc UINT32 ProximityDomain; 495*433d6423SLionel Sambuc 496*433d6423SLionel Sambuc } ACPI_DMAR_RHSA; 497*433d6423SLionel Sambuc 498*433d6423SLionel Sambuc 499*433d6423SLionel Sambuc /******************************************************************************* 500*433d6423SLionel Sambuc * 501*433d6423SLionel Sambuc * HPET - High Precision Event Timer table 502*433d6423SLionel Sambuc * Version 1 503*433d6423SLionel Sambuc * 504*433d6423SLionel Sambuc * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 505*433d6423SLionel Sambuc * Version 1.0a, October 2004 506*433d6423SLionel Sambuc * 507*433d6423SLionel Sambuc ******************************************************************************/ 508*433d6423SLionel Sambuc 509*433d6423SLionel Sambuc typedef struct acpi_table_hpet 510*433d6423SLionel Sambuc { 511*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 512*433d6423SLionel Sambuc UINT32 Id; /* Hardware ID of event timer block */ 513*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 514*433d6423SLionel Sambuc UINT8 Sequence; /* HPET sequence number */ 515*433d6423SLionel Sambuc UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 516*433d6423SLionel Sambuc UINT8 Flags; 517*433d6423SLionel Sambuc 518*433d6423SLionel Sambuc } ACPI_TABLE_HPET; 519*433d6423SLionel Sambuc 520*433d6423SLionel Sambuc /* Masks for Flags field above */ 521*433d6423SLionel Sambuc 522*433d6423SLionel Sambuc #define ACPI_HPET_PAGE_PROTECT_MASK (3) 523*433d6423SLionel Sambuc 524*433d6423SLionel Sambuc /* Values for Page Protect flags */ 525*433d6423SLionel Sambuc 526*433d6423SLionel Sambuc enum AcpiHpetPageProtect 527*433d6423SLionel Sambuc { 528*433d6423SLionel Sambuc ACPI_HPET_NO_PAGE_PROTECT = 0, 529*433d6423SLionel Sambuc ACPI_HPET_PAGE_PROTECT4 = 1, 530*433d6423SLionel Sambuc ACPI_HPET_PAGE_PROTECT64 = 2 531*433d6423SLionel Sambuc }; 532*433d6423SLionel Sambuc 533*433d6423SLionel Sambuc 534*433d6423SLionel Sambuc /******************************************************************************* 535*433d6423SLionel Sambuc * 536*433d6423SLionel Sambuc * IBFT - Boot Firmware Table 537*433d6423SLionel Sambuc * Version 1 538*433d6423SLionel Sambuc * 539*433d6423SLionel Sambuc * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 540*433d6423SLionel Sambuc * Specification", Version 1.01, March 1, 2007 541*433d6423SLionel Sambuc * 542*433d6423SLionel Sambuc * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 543*433d6423SLionel Sambuc * Therefore, it is not currently supported by the disassembler. 544*433d6423SLionel Sambuc * 545*433d6423SLionel Sambuc ******************************************************************************/ 546*433d6423SLionel Sambuc 547*433d6423SLionel Sambuc typedef struct acpi_table_ibft 548*433d6423SLionel Sambuc { 549*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 550*433d6423SLionel Sambuc UINT8 Reserved[12]; 551*433d6423SLionel Sambuc 552*433d6423SLionel Sambuc } ACPI_TABLE_IBFT; 553*433d6423SLionel Sambuc 554*433d6423SLionel Sambuc 555*433d6423SLionel Sambuc /* IBFT common subtable header */ 556*433d6423SLionel Sambuc 557*433d6423SLionel Sambuc typedef struct acpi_ibft_header 558*433d6423SLionel Sambuc { 559*433d6423SLionel Sambuc UINT8 Type; 560*433d6423SLionel Sambuc UINT8 Version; 561*433d6423SLionel Sambuc UINT16 Length; 562*433d6423SLionel Sambuc UINT8 Index; 563*433d6423SLionel Sambuc UINT8 Flags; 564*433d6423SLionel Sambuc 565*433d6423SLionel Sambuc } ACPI_IBFT_HEADER; 566*433d6423SLionel Sambuc 567*433d6423SLionel Sambuc /* Values for Type field above */ 568*433d6423SLionel Sambuc 569*433d6423SLionel Sambuc enum AcpiIbftType 570*433d6423SLionel Sambuc { 571*433d6423SLionel Sambuc ACPI_IBFT_TYPE_NOT_USED = 0, 572*433d6423SLionel Sambuc ACPI_IBFT_TYPE_CONTROL = 1, 573*433d6423SLionel Sambuc ACPI_IBFT_TYPE_INITIATOR = 2, 574*433d6423SLionel Sambuc ACPI_IBFT_TYPE_NIC = 3, 575*433d6423SLionel Sambuc ACPI_IBFT_TYPE_TARGET = 4, 576*433d6423SLionel Sambuc ACPI_IBFT_TYPE_EXTENSIONS = 5, 577*433d6423SLionel Sambuc ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 578*433d6423SLionel Sambuc }; 579*433d6423SLionel Sambuc 580*433d6423SLionel Sambuc 581*433d6423SLionel Sambuc /* IBFT subtables */ 582*433d6423SLionel Sambuc 583*433d6423SLionel Sambuc typedef struct acpi_ibft_control 584*433d6423SLionel Sambuc { 585*433d6423SLionel Sambuc ACPI_IBFT_HEADER Header; 586*433d6423SLionel Sambuc UINT16 Extensions; 587*433d6423SLionel Sambuc UINT16 InitiatorOffset; 588*433d6423SLionel Sambuc UINT16 Nic0Offset; 589*433d6423SLionel Sambuc UINT16 Target0Offset; 590*433d6423SLionel Sambuc UINT16 Nic1Offset; 591*433d6423SLionel Sambuc UINT16 Target1Offset; 592*433d6423SLionel Sambuc 593*433d6423SLionel Sambuc } ACPI_IBFT_CONTROL; 594*433d6423SLionel Sambuc 595*433d6423SLionel Sambuc typedef struct acpi_ibft_initiator 596*433d6423SLionel Sambuc { 597*433d6423SLionel Sambuc ACPI_IBFT_HEADER Header; 598*433d6423SLionel Sambuc UINT8 SnsServer[16]; 599*433d6423SLionel Sambuc UINT8 SlpServer[16]; 600*433d6423SLionel Sambuc UINT8 PrimaryServer[16]; 601*433d6423SLionel Sambuc UINT8 SecondaryServer[16]; 602*433d6423SLionel Sambuc UINT16 NameLength; 603*433d6423SLionel Sambuc UINT16 NameOffset; 604*433d6423SLionel Sambuc 605*433d6423SLionel Sambuc } ACPI_IBFT_INITIATOR; 606*433d6423SLionel Sambuc 607*433d6423SLionel Sambuc typedef struct acpi_ibft_nic 608*433d6423SLionel Sambuc { 609*433d6423SLionel Sambuc ACPI_IBFT_HEADER Header; 610*433d6423SLionel Sambuc UINT8 IpAddress[16]; 611*433d6423SLionel Sambuc UINT8 SubnetMaskPrefix; 612*433d6423SLionel Sambuc UINT8 Origin; 613*433d6423SLionel Sambuc UINT8 Gateway[16]; 614*433d6423SLionel Sambuc UINT8 PrimaryDns[16]; 615*433d6423SLionel Sambuc UINT8 SecondaryDns[16]; 616*433d6423SLionel Sambuc UINT8 Dhcp[16]; 617*433d6423SLionel Sambuc UINT16 Vlan; 618*433d6423SLionel Sambuc UINT8 MacAddress[6]; 619*433d6423SLionel Sambuc UINT16 PciAddress; 620*433d6423SLionel Sambuc UINT16 NameLength; 621*433d6423SLionel Sambuc UINT16 NameOffset; 622*433d6423SLionel Sambuc 623*433d6423SLionel Sambuc } ACPI_IBFT_NIC; 624*433d6423SLionel Sambuc 625*433d6423SLionel Sambuc typedef struct acpi_ibft_target 626*433d6423SLionel Sambuc { 627*433d6423SLionel Sambuc ACPI_IBFT_HEADER Header; 628*433d6423SLionel Sambuc UINT8 TargetIpAddress[16]; 629*433d6423SLionel Sambuc UINT16 TargetIpSocket; 630*433d6423SLionel Sambuc UINT8 TargetBootLun[8]; 631*433d6423SLionel Sambuc UINT8 ChapType; 632*433d6423SLionel Sambuc UINT8 NicAssociation; 633*433d6423SLionel Sambuc UINT16 TargetNameLength; 634*433d6423SLionel Sambuc UINT16 TargetNameOffset; 635*433d6423SLionel Sambuc UINT16 ChapNameLength; 636*433d6423SLionel Sambuc UINT16 ChapNameOffset; 637*433d6423SLionel Sambuc UINT16 ChapSecretLength; 638*433d6423SLionel Sambuc UINT16 ChapSecretOffset; 639*433d6423SLionel Sambuc UINT16 ReverseChapNameLength; 640*433d6423SLionel Sambuc UINT16 ReverseChapNameOffset; 641*433d6423SLionel Sambuc UINT16 ReverseChapSecretLength; 642*433d6423SLionel Sambuc UINT16 ReverseChapSecretOffset; 643*433d6423SLionel Sambuc 644*433d6423SLionel Sambuc } ACPI_IBFT_TARGET; 645*433d6423SLionel Sambuc 646*433d6423SLionel Sambuc 647*433d6423SLionel Sambuc /******************************************************************************* 648*433d6423SLionel Sambuc * 649*433d6423SLionel Sambuc * IVRS - I/O Virtualization Reporting Structure 650*433d6423SLionel Sambuc * Version 1 651*433d6423SLionel Sambuc * 652*433d6423SLionel Sambuc * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 653*433d6423SLionel Sambuc * Revision 1.26, February 2009. 654*433d6423SLionel Sambuc * 655*433d6423SLionel Sambuc ******************************************************************************/ 656*433d6423SLionel Sambuc 657*433d6423SLionel Sambuc typedef struct acpi_table_ivrs 658*433d6423SLionel Sambuc { 659*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 660*433d6423SLionel Sambuc UINT32 Info; /* Common virtualization info */ 661*433d6423SLionel Sambuc UINT64 Reserved; 662*433d6423SLionel Sambuc 663*433d6423SLionel Sambuc } ACPI_TABLE_IVRS; 664*433d6423SLionel Sambuc 665*433d6423SLionel Sambuc /* Values for Info field above */ 666*433d6423SLionel Sambuc 667*433d6423SLionel Sambuc #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 668*433d6423SLionel Sambuc #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 669*433d6423SLionel Sambuc #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 670*433d6423SLionel Sambuc 671*433d6423SLionel Sambuc 672*433d6423SLionel Sambuc /* IVRS subtable header */ 673*433d6423SLionel Sambuc 674*433d6423SLionel Sambuc typedef struct acpi_ivrs_header 675*433d6423SLionel Sambuc { 676*433d6423SLionel Sambuc UINT8 Type; /* Subtable type */ 677*433d6423SLionel Sambuc UINT8 Flags; 678*433d6423SLionel Sambuc UINT16 Length; /* Subtable length */ 679*433d6423SLionel Sambuc UINT16 DeviceId; /* ID of IOMMU */ 680*433d6423SLionel Sambuc 681*433d6423SLionel Sambuc } ACPI_IVRS_HEADER; 682*433d6423SLionel Sambuc 683*433d6423SLionel Sambuc /* Values for subtable Type above */ 684*433d6423SLionel Sambuc 685*433d6423SLionel Sambuc enum AcpiIvrsType 686*433d6423SLionel Sambuc { 687*433d6423SLionel Sambuc ACPI_IVRS_TYPE_HARDWARE = 0x10, 688*433d6423SLionel Sambuc ACPI_IVRS_TYPE_MEMORY1 = 0x20, 689*433d6423SLionel Sambuc ACPI_IVRS_TYPE_MEMORY2 = 0x21, 690*433d6423SLionel Sambuc ACPI_IVRS_TYPE_MEMORY3 = 0x22 691*433d6423SLionel Sambuc }; 692*433d6423SLionel Sambuc 693*433d6423SLionel Sambuc /* Masks for Flags field above for IVHD subtable */ 694*433d6423SLionel Sambuc 695*433d6423SLionel Sambuc #define ACPI_IVHD_TT_ENABLE (1) 696*433d6423SLionel Sambuc #define ACPI_IVHD_PASS_PW (1<<1) 697*433d6423SLionel Sambuc #define ACPI_IVHD_RES_PASS_PW (1<<2) 698*433d6423SLionel Sambuc #define ACPI_IVHD_ISOC (1<<3) 699*433d6423SLionel Sambuc #define ACPI_IVHD_IOTLB (1<<4) 700*433d6423SLionel Sambuc 701*433d6423SLionel Sambuc /* Masks for Flags field above for IVMD subtable */ 702*433d6423SLionel Sambuc 703*433d6423SLionel Sambuc #define ACPI_IVMD_UNITY (1) 704*433d6423SLionel Sambuc #define ACPI_IVMD_READ (1<<1) 705*433d6423SLionel Sambuc #define ACPI_IVMD_WRITE (1<<2) 706*433d6423SLionel Sambuc #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 707*433d6423SLionel Sambuc 708*433d6423SLionel Sambuc 709*433d6423SLionel Sambuc /* 710*433d6423SLionel Sambuc * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER 711*433d6423SLionel Sambuc */ 712*433d6423SLionel Sambuc 713*433d6423SLionel Sambuc /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 714*433d6423SLionel Sambuc 715*433d6423SLionel Sambuc typedef struct acpi_ivrs_hardware 716*433d6423SLionel Sambuc { 717*433d6423SLionel Sambuc ACPI_IVRS_HEADER Header; 718*433d6423SLionel Sambuc UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ 719*433d6423SLionel Sambuc UINT64 BaseAddress; /* IOMMU control registers */ 720*433d6423SLionel Sambuc UINT16 PciSegmentGroup; 721*433d6423SLionel Sambuc UINT16 Info; /* MSI number and unit ID */ 722*433d6423SLionel Sambuc UINT32 Reserved; 723*433d6423SLionel Sambuc 724*433d6423SLionel Sambuc } ACPI_IVRS_HARDWARE; 725*433d6423SLionel Sambuc 726*433d6423SLionel Sambuc /* Masks for Info field above */ 727*433d6423SLionel Sambuc 728*433d6423SLionel Sambuc #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 729*433d6423SLionel Sambuc #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ 730*433d6423SLionel Sambuc 731*433d6423SLionel Sambuc 732*433d6423SLionel Sambuc /* 733*433d6423SLionel Sambuc * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. 734*433d6423SLionel Sambuc * Upper two bits of the Type field are the (encoded) length of the structure. 735*433d6423SLionel Sambuc * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 736*433d6423SLionel Sambuc * are reserved for future use but not defined. 737*433d6423SLionel Sambuc */ 738*433d6423SLionel Sambuc typedef struct acpi_ivrs_de_header 739*433d6423SLionel Sambuc { 740*433d6423SLionel Sambuc UINT8 Type; 741*433d6423SLionel Sambuc UINT16 Id; 742*433d6423SLionel Sambuc UINT8 DataSetting; 743*433d6423SLionel Sambuc 744*433d6423SLionel Sambuc } ACPI_IVRS_DE_HEADER; 745*433d6423SLionel Sambuc 746*433d6423SLionel Sambuc /* Length of device entry is in the top two bits of Type field above */ 747*433d6423SLionel Sambuc 748*433d6423SLionel Sambuc #define ACPI_IVHD_ENTRY_LENGTH 0xC0 749*433d6423SLionel Sambuc 750*433d6423SLionel Sambuc /* Values for device entry Type field above */ 751*433d6423SLionel Sambuc 752*433d6423SLionel Sambuc enum AcpiIvrsDeviceEntryType 753*433d6423SLionel Sambuc { 754*433d6423SLionel Sambuc /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ 755*433d6423SLionel Sambuc 756*433d6423SLionel Sambuc ACPI_IVRS_TYPE_PAD4 = 0, 757*433d6423SLionel Sambuc ACPI_IVRS_TYPE_ALL = 1, 758*433d6423SLionel Sambuc ACPI_IVRS_TYPE_SELECT = 2, 759*433d6423SLionel Sambuc ACPI_IVRS_TYPE_START = 3, 760*433d6423SLionel Sambuc ACPI_IVRS_TYPE_END = 4, 761*433d6423SLionel Sambuc 762*433d6423SLionel Sambuc /* 8-byte device entries */ 763*433d6423SLionel Sambuc 764*433d6423SLionel Sambuc ACPI_IVRS_TYPE_PAD8 = 64, 765*433d6423SLionel Sambuc ACPI_IVRS_TYPE_NOT_USED = 65, 766*433d6423SLionel Sambuc ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ 767*433d6423SLionel Sambuc ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ 768*433d6423SLionel Sambuc ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ 769*433d6423SLionel Sambuc ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ 770*433d6423SLionel Sambuc ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ 771*433d6423SLionel Sambuc }; 772*433d6423SLionel Sambuc 773*433d6423SLionel Sambuc /* Values for Data field above */ 774*433d6423SLionel Sambuc 775*433d6423SLionel Sambuc #define ACPI_IVHD_INIT_PASS (1) 776*433d6423SLionel Sambuc #define ACPI_IVHD_EINT_PASS (1<<1) 777*433d6423SLionel Sambuc #define ACPI_IVHD_NMI_PASS (1<<2) 778*433d6423SLionel Sambuc #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 779*433d6423SLionel Sambuc #define ACPI_IVHD_LINT0_PASS (1<<6) 780*433d6423SLionel Sambuc #define ACPI_IVHD_LINT1_PASS (1<<7) 781*433d6423SLionel Sambuc 782*433d6423SLionel Sambuc 783*433d6423SLionel Sambuc /* Types 0-4: 4-byte device entry */ 784*433d6423SLionel Sambuc 785*433d6423SLionel Sambuc typedef struct acpi_ivrs_device4 786*433d6423SLionel Sambuc { 787*433d6423SLionel Sambuc ACPI_IVRS_DE_HEADER Header; 788*433d6423SLionel Sambuc 789*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE4; 790*433d6423SLionel Sambuc 791*433d6423SLionel Sambuc /* Types 66-67: 8-byte device entry */ 792*433d6423SLionel Sambuc 793*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8a 794*433d6423SLionel Sambuc { 795*433d6423SLionel Sambuc ACPI_IVRS_DE_HEADER Header; 796*433d6423SLionel Sambuc UINT8 Reserved1; 797*433d6423SLionel Sambuc UINT16 UsedId; 798*433d6423SLionel Sambuc UINT8 Reserved2; 799*433d6423SLionel Sambuc 800*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8A; 801*433d6423SLionel Sambuc 802*433d6423SLionel Sambuc /* Types 70-71: 8-byte device entry */ 803*433d6423SLionel Sambuc 804*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8b 805*433d6423SLionel Sambuc { 806*433d6423SLionel Sambuc ACPI_IVRS_DE_HEADER Header; 807*433d6423SLionel Sambuc UINT32 ExtendedData; 808*433d6423SLionel Sambuc 809*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8B; 810*433d6423SLionel Sambuc 811*433d6423SLionel Sambuc /* Values for ExtendedData above */ 812*433d6423SLionel Sambuc 813*433d6423SLionel Sambuc #define ACPI_IVHD_ATS_DISABLED (1<<31) 814*433d6423SLionel Sambuc 815*433d6423SLionel Sambuc /* Type 72: 8-byte device entry */ 816*433d6423SLionel Sambuc 817*433d6423SLionel Sambuc typedef struct acpi_ivrs_device8c 818*433d6423SLionel Sambuc { 819*433d6423SLionel Sambuc ACPI_IVRS_DE_HEADER Header; 820*433d6423SLionel Sambuc UINT8 Handle; 821*433d6423SLionel Sambuc UINT16 UsedId; 822*433d6423SLionel Sambuc UINT8 Variety; 823*433d6423SLionel Sambuc 824*433d6423SLionel Sambuc } ACPI_IVRS_DEVICE8C; 825*433d6423SLionel Sambuc 826*433d6423SLionel Sambuc /* Values for Variety field above */ 827*433d6423SLionel Sambuc 828*433d6423SLionel Sambuc #define ACPI_IVHD_IOAPIC 1 829*433d6423SLionel Sambuc #define ACPI_IVHD_HPET 2 830*433d6423SLionel Sambuc 831*433d6423SLionel Sambuc 832*433d6423SLionel Sambuc /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 833*433d6423SLionel Sambuc 834*433d6423SLionel Sambuc typedef struct acpi_ivrs_memory 835*433d6423SLionel Sambuc { 836*433d6423SLionel Sambuc ACPI_IVRS_HEADER Header; 837*433d6423SLionel Sambuc UINT16 AuxData; 838*433d6423SLionel Sambuc UINT64 Reserved; 839*433d6423SLionel Sambuc UINT64 StartAddress; 840*433d6423SLionel Sambuc UINT64 MemoryLength; 841*433d6423SLionel Sambuc 842*433d6423SLionel Sambuc } ACPI_IVRS_MEMORY; 843*433d6423SLionel Sambuc 844*433d6423SLionel Sambuc 845*433d6423SLionel Sambuc /******************************************************************************* 846*433d6423SLionel Sambuc * 847*433d6423SLionel Sambuc * MCFG - PCI Memory Mapped Configuration table and sub-table 848*433d6423SLionel Sambuc * Version 1 849*433d6423SLionel Sambuc * 850*433d6423SLionel Sambuc * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 851*433d6423SLionel Sambuc * 852*433d6423SLionel Sambuc ******************************************************************************/ 853*433d6423SLionel Sambuc 854*433d6423SLionel Sambuc typedef struct acpi_table_mcfg 855*433d6423SLionel Sambuc { 856*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 857*433d6423SLionel Sambuc UINT8 Reserved[8]; 858*433d6423SLionel Sambuc 859*433d6423SLionel Sambuc } ACPI_TABLE_MCFG; 860*433d6423SLionel Sambuc 861*433d6423SLionel Sambuc 862*433d6423SLionel Sambuc /* Subtable */ 863*433d6423SLionel Sambuc 864*433d6423SLionel Sambuc typedef struct acpi_mcfg_allocation 865*433d6423SLionel Sambuc { 866*433d6423SLionel Sambuc UINT64 Address; /* Base address, processor-relative */ 867*433d6423SLionel Sambuc UINT16 PciSegment; /* PCI segment group number */ 868*433d6423SLionel Sambuc UINT8 StartBusNumber; /* Starting PCI Bus number */ 869*433d6423SLionel Sambuc UINT8 EndBusNumber; /* Final PCI Bus number */ 870*433d6423SLionel Sambuc UINT32 Reserved; 871*433d6423SLionel Sambuc 872*433d6423SLionel Sambuc } ACPI_MCFG_ALLOCATION; 873*433d6423SLionel Sambuc 874*433d6423SLionel Sambuc 875*433d6423SLionel Sambuc /******************************************************************************* 876*433d6423SLionel Sambuc * 877*433d6423SLionel Sambuc * MCHI - Management Controller Host Interface Table 878*433d6423SLionel Sambuc * Version 1 879*433d6423SLionel Sambuc * 880*433d6423SLionel Sambuc * Conforms to "Management Component Transport Protocol (MCTP) Host 881*433d6423SLionel Sambuc * Interface Specification", Revision 1.0.0a, October 13, 2009 882*433d6423SLionel Sambuc * 883*433d6423SLionel Sambuc ******************************************************************************/ 884*433d6423SLionel Sambuc 885*433d6423SLionel Sambuc typedef struct acpi_table_mchi 886*433d6423SLionel Sambuc { 887*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 888*433d6423SLionel Sambuc UINT8 InterfaceType; 889*433d6423SLionel Sambuc UINT8 Protocol; 890*433d6423SLionel Sambuc UINT64 ProtocolData; 891*433d6423SLionel Sambuc UINT8 InterruptType; 892*433d6423SLionel Sambuc UINT8 Gpe; 893*433d6423SLionel Sambuc UINT8 PciDeviceFlag; 894*433d6423SLionel Sambuc UINT32 GlobalInterrupt; 895*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS ControlRegister; 896*433d6423SLionel Sambuc UINT8 PciSegment; 897*433d6423SLionel Sambuc UINT8 PciBus; 898*433d6423SLionel Sambuc UINT8 PciDevice; 899*433d6423SLionel Sambuc UINT8 PciFunction; 900*433d6423SLionel Sambuc 901*433d6423SLionel Sambuc } ACPI_TABLE_MCHI; 902*433d6423SLionel Sambuc 903*433d6423SLionel Sambuc 904*433d6423SLionel Sambuc /******************************************************************************* 905*433d6423SLionel Sambuc * 906*433d6423SLionel Sambuc * SPCR - Serial Port Console Redirection table 907*433d6423SLionel Sambuc * Version 1 908*433d6423SLionel Sambuc * 909*433d6423SLionel Sambuc * Conforms to "Serial Port Console Redirection Table", 910*433d6423SLionel Sambuc * Version 1.00, January 11, 2002 911*433d6423SLionel Sambuc * 912*433d6423SLionel Sambuc ******************************************************************************/ 913*433d6423SLionel Sambuc 914*433d6423SLionel Sambuc typedef struct acpi_table_spcr 915*433d6423SLionel Sambuc { 916*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 917*433d6423SLionel Sambuc UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 918*433d6423SLionel Sambuc UINT8 Reserved[3]; 919*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS SerialPort; 920*433d6423SLionel Sambuc UINT8 InterruptType; 921*433d6423SLionel Sambuc UINT8 PcInterrupt; 922*433d6423SLionel Sambuc UINT32 Interrupt; 923*433d6423SLionel Sambuc UINT8 BaudRate; 924*433d6423SLionel Sambuc UINT8 Parity; 925*433d6423SLionel Sambuc UINT8 StopBits; 926*433d6423SLionel Sambuc UINT8 FlowControl; 927*433d6423SLionel Sambuc UINT8 TerminalType; 928*433d6423SLionel Sambuc UINT8 Reserved1; 929*433d6423SLionel Sambuc UINT16 PciDeviceId; 930*433d6423SLionel Sambuc UINT16 PciVendorId; 931*433d6423SLionel Sambuc UINT8 PciBus; 932*433d6423SLionel Sambuc UINT8 PciDevice; 933*433d6423SLionel Sambuc UINT8 PciFunction; 934*433d6423SLionel Sambuc UINT32 PciFlags; 935*433d6423SLionel Sambuc UINT8 PciSegment; 936*433d6423SLionel Sambuc UINT32 Reserved2; 937*433d6423SLionel Sambuc 938*433d6423SLionel Sambuc } ACPI_TABLE_SPCR; 939*433d6423SLionel Sambuc 940*433d6423SLionel Sambuc /* Masks for PciFlags field above */ 941*433d6423SLionel Sambuc 942*433d6423SLionel Sambuc #define ACPI_SPCR_DO_NOT_DISABLE (1) 943*433d6423SLionel Sambuc 944*433d6423SLionel Sambuc 945*433d6423SLionel Sambuc /******************************************************************************* 946*433d6423SLionel Sambuc * 947*433d6423SLionel Sambuc * SPMI - Server Platform Management Interface table 948*433d6423SLionel Sambuc * Version 5 949*433d6423SLionel Sambuc * 950*433d6423SLionel Sambuc * Conforms to "Intelligent Platform Management Interface Specification 951*433d6423SLionel Sambuc * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 952*433d6423SLionel Sambuc * June 12, 2009 markup. 953*433d6423SLionel Sambuc * 954*433d6423SLionel Sambuc ******************************************************************************/ 955*433d6423SLionel Sambuc 956*433d6423SLionel Sambuc typedef struct acpi_table_spmi 957*433d6423SLionel Sambuc { 958*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 959*433d6423SLionel Sambuc UINT8 InterfaceType; 960*433d6423SLionel Sambuc UINT8 Reserved; /* Must be 1 */ 961*433d6423SLionel Sambuc UINT16 SpecRevision; /* Version of IPMI */ 962*433d6423SLionel Sambuc UINT8 InterruptType; 963*433d6423SLionel Sambuc UINT8 GpeNumber; /* GPE assigned */ 964*433d6423SLionel Sambuc UINT8 Reserved1; 965*433d6423SLionel Sambuc UINT8 PciDeviceFlag; 966*433d6423SLionel Sambuc UINT32 Interrupt; 967*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS IpmiRegister; 968*433d6423SLionel Sambuc UINT8 PciSegment; 969*433d6423SLionel Sambuc UINT8 PciBus; 970*433d6423SLionel Sambuc UINT8 PciDevice; 971*433d6423SLionel Sambuc UINT8 PciFunction; 972*433d6423SLionel Sambuc UINT8 Reserved2; 973*433d6423SLionel Sambuc 974*433d6423SLionel Sambuc } ACPI_TABLE_SPMI; 975*433d6423SLionel Sambuc 976*433d6423SLionel Sambuc /* Values for InterfaceType above */ 977*433d6423SLionel Sambuc 978*433d6423SLionel Sambuc enum AcpiSpmiInterfaceTypes 979*433d6423SLionel Sambuc { 980*433d6423SLionel Sambuc ACPI_SPMI_NOT_USED = 0, 981*433d6423SLionel Sambuc ACPI_SPMI_KEYBOARD = 1, 982*433d6423SLionel Sambuc ACPI_SPMI_SMI = 2, 983*433d6423SLionel Sambuc ACPI_SPMI_BLOCK_TRANSFER = 3, 984*433d6423SLionel Sambuc ACPI_SPMI_SMBUS = 4, 985*433d6423SLionel Sambuc ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 986*433d6423SLionel Sambuc }; 987*433d6423SLionel Sambuc 988*433d6423SLionel Sambuc 989*433d6423SLionel Sambuc /******************************************************************************* 990*433d6423SLionel Sambuc * 991*433d6423SLionel Sambuc * TCPA - Trusted Computing Platform Alliance table 992*433d6423SLionel Sambuc * Version 1 993*433d6423SLionel Sambuc * 994*433d6423SLionel Sambuc * Conforms to "TCG PC Specific Implementation Specification", 995*433d6423SLionel Sambuc * Version 1.1, August 18, 2003 996*433d6423SLionel Sambuc * 997*433d6423SLionel Sambuc ******************************************************************************/ 998*433d6423SLionel Sambuc 999*433d6423SLionel Sambuc typedef struct acpi_table_tcpa 1000*433d6423SLionel Sambuc { 1001*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1002*433d6423SLionel Sambuc UINT16 Reserved; 1003*433d6423SLionel Sambuc UINT32 MaxLogLength; /* Maximum length for the event log area */ 1004*433d6423SLionel Sambuc UINT64 LogAddress; /* Address of the event log area */ 1005*433d6423SLionel Sambuc 1006*433d6423SLionel Sambuc } ACPI_TABLE_TCPA; 1007*433d6423SLionel Sambuc 1008*433d6423SLionel Sambuc 1009*433d6423SLionel Sambuc /******************************************************************************* 1010*433d6423SLionel Sambuc * 1011*433d6423SLionel Sambuc * UEFI - UEFI Boot optimization Table 1012*433d6423SLionel Sambuc * Version 1 1013*433d6423SLionel Sambuc * 1014*433d6423SLionel Sambuc * Conforms to "Unified Extensible Firmware Interface Specification", 1015*433d6423SLionel Sambuc * Version 2.3, May 8, 2009 1016*433d6423SLionel Sambuc * 1017*433d6423SLionel Sambuc ******************************************************************************/ 1018*433d6423SLionel Sambuc 1019*433d6423SLionel Sambuc typedef struct acpi_table_uefi 1020*433d6423SLionel Sambuc { 1021*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1022*433d6423SLionel Sambuc UINT8 Identifier[16]; /* UUID identifier */ 1023*433d6423SLionel Sambuc UINT16 DataOffset; /* Offset of remaining data in table */ 1024*433d6423SLionel Sambuc 1025*433d6423SLionel Sambuc } ACPI_TABLE_UEFI; 1026*433d6423SLionel Sambuc 1027*433d6423SLionel Sambuc 1028*433d6423SLionel Sambuc /******************************************************************************* 1029*433d6423SLionel Sambuc * 1030*433d6423SLionel Sambuc * WAET - Windows ACPI Emulated devices Table 1031*433d6423SLionel Sambuc * Version 1 1032*433d6423SLionel Sambuc * 1033*433d6423SLionel Sambuc * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 1034*433d6423SLionel Sambuc * 1035*433d6423SLionel Sambuc ******************************************************************************/ 1036*433d6423SLionel Sambuc 1037*433d6423SLionel Sambuc typedef struct acpi_table_waet 1038*433d6423SLionel Sambuc { 1039*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1040*433d6423SLionel Sambuc UINT32 Flags; 1041*433d6423SLionel Sambuc 1042*433d6423SLionel Sambuc } ACPI_TABLE_WAET; 1043*433d6423SLionel Sambuc 1044*433d6423SLionel Sambuc /* Masks for Flags field above */ 1045*433d6423SLionel Sambuc 1046*433d6423SLionel Sambuc #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 1047*433d6423SLionel Sambuc #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 1048*433d6423SLionel Sambuc 1049*433d6423SLionel Sambuc 1050*433d6423SLionel Sambuc /******************************************************************************* 1051*433d6423SLionel Sambuc * 1052*433d6423SLionel Sambuc * WDAT - Watchdog Action Table 1053*433d6423SLionel Sambuc * Version 1 1054*433d6423SLionel Sambuc * 1055*433d6423SLionel Sambuc * Conforms to "Hardware Watchdog Timers Design Specification", 1056*433d6423SLionel Sambuc * Copyright 2006 Microsoft Corporation. 1057*433d6423SLionel Sambuc * 1058*433d6423SLionel Sambuc ******************************************************************************/ 1059*433d6423SLionel Sambuc 1060*433d6423SLionel Sambuc typedef struct acpi_table_wdat 1061*433d6423SLionel Sambuc { 1062*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1063*433d6423SLionel Sambuc UINT32 HeaderLength; /* Watchdog Header Length */ 1064*433d6423SLionel Sambuc UINT16 PciSegment; /* PCI Segment number */ 1065*433d6423SLionel Sambuc UINT8 PciBus; /* PCI Bus number */ 1066*433d6423SLionel Sambuc UINT8 PciDevice; /* PCI Device number */ 1067*433d6423SLionel Sambuc UINT8 PciFunction; /* PCI Function number */ 1068*433d6423SLionel Sambuc UINT8 Reserved[3]; 1069*433d6423SLionel Sambuc UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1070*433d6423SLionel Sambuc UINT32 MaxCount; /* Maximum counter value supported */ 1071*433d6423SLionel Sambuc UINT32 MinCount; /* Minimum counter value */ 1072*433d6423SLionel Sambuc UINT8 Flags; 1073*433d6423SLionel Sambuc UINT8 Reserved2[3]; 1074*433d6423SLionel Sambuc UINT32 Entries; /* Number of watchdog entries that follow */ 1075*433d6423SLionel Sambuc 1076*433d6423SLionel Sambuc } ACPI_TABLE_WDAT; 1077*433d6423SLionel Sambuc 1078*433d6423SLionel Sambuc /* Masks for Flags field above */ 1079*433d6423SLionel Sambuc 1080*433d6423SLionel Sambuc #define ACPI_WDAT_ENABLED (1) 1081*433d6423SLionel Sambuc #define ACPI_WDAT_STOPPED 0x80 1082*433d6423SLionel Sambuc 1083*433d6423SLionel Sambuc 1084*433d6423SLionel Sambuc /* WDAT Instruction Entries (actions) */ 1085*433d6423SLionel Sambuc 1086*433d6423SLionel Sambuc typedef struct acpi_wdat_entry 1087*433d6423SLionel Sambuc { 1088*433d6423SLionel Sambuc UINT8 Action; 1089*433d6423SLionel Sambuc UINT8 Instruction; 1090*433d6423SLionel Sambuc UINT16 Reserved; 1091*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS RegisterRegion; 1092*433d6423SLionel Sambuc UINT32 Value; /* Value used with Read/Write register */ 1093*433d6423SLionel Sambuc UINT32 Mask; /* Bitmask required for this register instruction */ 1094*433d6423SLionel Sambuc 1095*433d6423SLionel Sambuc } ACPI_WDAT_ENTRY; 1096*433d6423SLionel Sambuc 1097*433d6423SLionel Sambuc /* Values for Action field above */ 1098*433d6423SLionel Sambuc 1099*433d6423SLionel Sambuc enum AcpiWdatActions 1100*433d6423SLionel Sambuc { 1101*433d6423SLionel Sambuc ACPI_WDAT_RESET = 1, 1102*433d6423SLionel Sambuc ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1103*433d6423SLionel Sambuc ACPI_WDAT_GET_COUNTDOWN = 5, 1104*433d6423SLionel Sambuc ACPI_WDAT_SET_COUNTDOWN = 6, 1105*433d6423SLionel Sambuc ACPI_WDAT_GET_RUNNING_STATE = 8, 1106*433d6423SLionel Sambuc ACPI_WDAT_SET_RUNNING_STATE = 9, 1107*433d6423SLionel Sambuc ACPI_WDAT_GET_STOPPED_STATE = 10, 1108*433d6423SLionel Sambuc ACPI_WDAT_SET_STOPPED_STATE = 11, 1109*433d6423SLionel Sambuc ACPI_WDAT_GET_REBOOT = 16, 1110*433d6423SLionel Sambuc ACPI_WDAT_SET_REBOOT = 17, 1111*433d6423SLionel Sambuc ACPI_WDAT_GET_SHUTDOWN = 18, 1112*433d6423SLionel Sambuc ACPI_WDAT_SET_SHUTDOWN = 19, 1113*433d6423SLionel Sambuc ACPI_WDAT_GET_STATUS = 32, 1114*433d6423SLionel Sambuc ACPI_WDAT_SET_STATUS = 33, 1115*433d6423SLionel Sambuc ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1116*433d6423SLionel Sambuc }; 1117*433d6423SLionel Sambuc 1118*433d6423SLionel Sambuc /* Values for Instruction field above */ 1119*433d6423SLionel Sambuc 1120*433d6423SLionel Sambuc enum AcpiWdatInstructions 1121*433d6423SLionel Sambuc { 1122*433d6423SLionel Sambuc ACPI_WDAT_READ_VALUE = 0, 1123*433d6423SLionel Sambuc ACPI_WDAT_READ_COUNTDOWN = 1, 1124*433d6423SLionel Sambuc ACPI_WDAT_WRITE_VALUE = 2, 1125*433d6423SLionel Sambuc ACPI_WDAT_WRITE_COUNTDOWN = 3, 1126*433d6423SLionel Sambuc ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1127*433d6423SLionel Sambuc ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1128*433d6423SLionel Sambuc }; 1129*433d6423SLionel Sambuc 1130*433d6423SLionel Sambuc 1131*433d6423SLionel Sambuc /******************************************************************************* 1132*433d6423SLionel Sambuc * 1133*433d6423SLionel Sambuc * WDDT - Watchdog Descriptor Table 1134*433d6423SLionel Sambuc * Version 1 1135*433d6423SLionel Sambuc * 1136*433d6423SLionel Sambuc * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 1137*433d6423SLionel Sambuc * Version 001, September 2002 1138*433d6423SLionel Sambuc * 1139*433d6423SLionel Sambuc ******************************************************************************/ 1140*433d6423SLionel Sambuc 1141*433d6423SLionel Sambuc typedef struct acpi_table_wddt 1142*433d6423SLionel Sambuc { 1143*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1144*433d6423SLionel Sambuc UINT16 SpecVersion; 1145*433d6423SLionel Sambuc UINT16 TableVersion; 1146*433d6423SLionel Sambuc UINT16 PciVendorId; 1147*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS Address; 1148*433d6423SLionel Sambuc UINT16 MaxCount; /* Maximum counter value supported */ 1149*433d6423SLionel Sambuc UINT16 MinCount; /* Minimum counter value supported */ 1150*433d6423SLionel Sambuc UINT16 Period; 1151*433d6423SLionel Sambuc UINT16 Status; 1152*433d6423SLionel Sambuc UINT16 Capability; 1153*433d6423SLionel Sambuc 1154*433d6423SLionel Sambuc } ACPI_TABLE_WDDT; 1155*433d6423SLionel Sambuc 1156*433d6423SLionel Sambuc /* Flags for Status field above */ 1157*433d6423SLionel Sambuc 1158*433d6423SLionel Sambuc #define ACPI_WDDT_AVAILABLE (1) 1159*433d6423SLionel Sambuc #define ACPI_WDDT_ACTIVE (1<<1) 1160*433d6423SLionel Sambuc #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 1161*433d6423SLionel Sambuc #define ACPI_WDDT_USER_RESET (1<<11) 1162*433d6423SLionel Sambuc #define ACPI_WDDT_WDT_RESET (1<<12) 1163*433d6423SLionel Sambuc #define ACPI_WDDT_POWER_FAIL (1<<13) 1164*433d6423SLionel Sambuc #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 1165*433d6423SLionel Sambuc 1166*433d6423SLionel Sambuc /* Flags for Capability field above */ 1167*433d6423SLionel Sambuc 1168*433d6423SLionel Sambuc #define ACPI_WDDT_AUTO_RESET (1) 1169*433d6423SLionel Sambuc #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 1170*433d6423SLionel Sambuc 1171*433d6423SLionel Sambuc 1172*433d6423SLionel Sambuc /******************************************************************************* 1173*433d6423SLionel Sambuc * 1174*433d6423SLionel Sambuc * WDRT - Watchdog Resource Table 1175*433d6423SLionel Sambuc * Version 1 1176*433d6423SLionel Sambuc * 1177*433d6423SLionel Sambuc * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 1178*433d6423SLionel Sambuc * Version 1.01, August 28, 2006 1179*433d6423SLionel Sambuc * 1180*433d6423SLionel Sambuc ******************************************************************************/ 1181*433d6423SLionel Sambuc 1182*433d6423SLionel Sambuc typedef struct acpi_table_wdrt 1183*433d6423SLionel Sambuc { 1184*433d6423SLionel Sambuc ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1185*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS ControlRegister; 1186*433d6423SLionel Sambuc ACPI_GENERIC_ADDRESS CountRegister; 1187*433d6423SLionel Sambuc UINT16 PciDeviceId; 1188*433d6423SLionel Sambuc UINT16 PciVendorId; 1189*433d6423SLionel Sambuc UINT8 PciBus; /* PCI Bus number */ 1190*433d6423SLionel Sambuc UINT8 PciDevice; /* PCI Device number */ 1191*433d6423SLionel Sambuc UINT8 PciFunction; /* PCI Function number */ 1192*433d6423SLionel Sambuc UINT8 PciSegment; /* PCI Segment number */ 1193*433d6423SLionel Sambuc UINT16 MaxCount; /* Maximum counter value supported */ 1194*433d6423SLionel Sambuc UINT8 Units; 1195*433d6423SLionel Sambuc 1196*433d6423SLionel Sambuc } ACPI_TABLE_WDRT; 1197*433d6423SLionel Sambuc 1198*433d6423SLionel Sambuc 1199*433d6423SLionel Sambuc /* Reset to default packing */ 1200*433d6423SLionel Sambuc 1201*433d6423SLionel Sambuc #pragma pack() 1202*433d6423SLionel Sambuc 1203*433d6423SLionel Sambuc #endif /* __ACTBL2_H__ */ 1204*433d6423SLionel Sambuc 1205