10Sstevel@tonic-gate /****************************************************************************** 20Sstevel@tonic-gate * 32623Smyers * Name: actbl1.h - Additional ACPI table definitions 4*7851SDana.Myers@Sun.COM * $Revision: 1.51 $ 50Sstevel@tonic-gate * 60Sstevel@tonic-gate *****************************************************************************/ 70Sstevel@tonic-gate 80Sstevel@tonic-gate /****************************************************************************** 90Sstevel@tonic-gate * 100Sstevel@tonic-gate * 1. Copyright Notice 110Sstevel@tonic-gate * 12*7851SDana.Myers@Sun.COM * Some or all of this work - Copyright (c) 1999 - 2008, Intel Corp. 130Sstevel@tonic-gate * All rights reserved. 140Sstevel@tonic-gate * 150Sstevel@tonic-gate * 2. License 160Sstevel@tonic-gate * 170Sstevel@tonic-gate * 2.1. This is your license from Intel Corp. under its intellectual property 180Sstevel@tonic-gate * rights. You may have additional license terms from the party that provided 190Sstevel@tonic-gate * you this software, covering your right to use that party's intellectual 200Sstevel@tonic-gate * property rights. 210Sstevel@tonic-gate * 220Sstevel@tonic-gate * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 230Sstevel@tonic-gate * copy of the source code appearing in this file ("Covered Code") an 240Sstevel@tonic-gate * irrevocable, perpetual, worldwide license under Intel's copyrights in the 250Sstevel@tonic-gate * base code distributed originally by Intel ("Original Intel Code") to copy, 260Sstevel@tonic-gate * make derivatives, distribute, use and display any portion of the Covered 270Sstevel@tonic-gate * Code in any form, with the right to sublicense such rights; and 280Sstevel@tonic-gate * 290Sstevel@tonic-gate * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 300Sstevel@tonic-gate * license (with the right to sublicense), under only those claims of Intel 310Sstevel@tonic-gate * patents that are infringed by the Original Intel Code, to make, use, sell, 320Sstevel@tonic-gate * offer to sell, and import the Covered Code and derivative works thereof 330Sstevel@tonic-gate * solely to the minimum extent necessary to exercise the above copyright 340Sstevel@tonic-gate * license, and in no event shall the patent license extend to any additions 350Sstevel@tonic-gate * to or modifications of the Original Intel Code. No other license or right 360Sstevel@tonic-gate * is granted directly or by implication, estoppel or otherwise; 370Sstevel@tonic-gate * 380Sstevel@tonic-gate * The above copyright and patent license is granted only if the following 390Sstevel@tonic-gate * conditions are met: 400Sstevel@tonic-gate * 410Sstevel@tonic-gate * 3. Conditions 420Sstevel@tonic-gate * 430Sstevel@tonic-gate * 3.1. Redistribution of Source with Rights to Further Distribute Source. 440Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 450Sstevel@tonic-gate * Code or modification with rights to further distribute source must include 460Sstevel@tonic-gate * the above Copyright Notice, the above License, this list of Conditions, 470Sstevel@tonic-gate * and the following Disclaimer and Export Compliance provision. In addition, 480Sstevel@tonic-gate * Licensee must cause all Covered Code to which Licensee contributes to 490Sstevel@tonic-gate * contain a file documenting the changes Licensee made to create that Covered 500Sstevel@tonic-gate * Code and the date of any change. Licensee must include in that file the 510Sstevel@tonic-gate * documentation of any changes made by any predecessor Licensee. Licensee 520Sstevel@tonic-gate * must include a prominent statement that the modification is derived, 530Sstevel@tonic-gate * directly or indirectly, from Original Intel Code. 540Sstevel@tonic-gate * 550Sstevel@tonic-gate * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 560Sstevel@tonic-gate * Redistribution of source code of any substantial portion of the Covered 570Sstevel@tonic-gate * Code or modification without rights to further distribute source must 580Sstevel@tonic-gate * include the following Disclaimer and Export Compliance provision in the 590Sstevel@tonic-gate * documentation and/or other materials provided with distribution. In 600Sstevel@tonic-gate * addition, Licensee may not authorize further sublicense of source of any 610Sstevel@tonic-gate * portion of the Covered Code, and must include terms to the effect that the 620Sstevel@tonic-gate * license from Licensee to its licensee is limited to the intellectual 630Sstevel@tonic-gate * property embodied in the software Licensee provides to its licensee, and 640Sstevel@tonic-gate * not to intellectual property embodied in modifications its licensee may 650Sstevel@tonic-gate * make. 660Sstevel@tonic-gate * 670Sstevel@tonic-gate * 3.3. Redistribution of Executable. Redistribution in executable form of any 680Sstevel@tonic-gate * substantial portion of the Covered Code or modification must reproduce the 690Sstevel@tonic-gate * above Copyright Notice, and the following Disclaimer and Export Compliance 700Sstevel@tonic-gate * provision in the documentation and/or other materials provided with the 710Sstevel@tonic-gate * distribution. 720Sstevel@tonic-gate * 730Sstevel@tonic-gate * 3.4. Intel retains all right, title, and interest in and to the Original 740Sstevel@tonic-gate * Intel Code. 750Sstevel@tonic-gate * 760Sstevel@tonic-gate * 3.5. Neither the name Intel nor any other trademark owned or controlled by 770Sstevel@tonic-gate * Intel shall be used in advertising or otherwise to promote the sale, use or 780Sstevel@tonic-gate * other dealings in products derived from or relating to the Covered Code 790Sstevel@tonic-gate * without prior written authorization from Intel. 800Sstevel@tonic-gate * 810Sstevel@tonic-gate * 4. Disclaimer and Export Compliance 820Sstevel@tonic-gate * 830Sstevel@tonic-gate * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 840Sstevel@tonic-gate * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 850Sstevel@tonic-gate * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 860Sstevel@tonic-gate * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 870Sstevel@tonic-gate * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 880Sstevel@tonic-gate * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 890Sstevel@tonic-gate * PARTICULAR PURPOSE. 900Sstevel@tonic-gate * 910Sstevel@tonic-gate * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 920Sstevel@tonic-gate * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 930Sstevel@tonic-gate * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 940Sstevel@tonic-gate * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 950Sstevel@tonic-gate * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 960Sstevel@tonic-gate * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 970Sstevel@tonic-gate * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 980Sstevel@tonic-gate * LIMITED REMEDY. 990Sstevel@tonic-gate * 1000Sstevel@tonic-gate * 4.3. Licensee shall not export, either directly or indirectly, any of this 1010Sstevel@tonic-gate * software or system incorporating such software without first obtaining any 1020Sstevel@tonic-gate * required license or other approval from the U. S. Department of Commerce or 1030Sstevel@tonic-gate * any other agency or department of the United States Government. In the 1040Sstevel@tonic-gate * event Licensee exports any such software from the United States or 1050Sstevel@tonic-gate * re-exports any such software from a foreign destination, Licensee shall 1060Sstevel@tonic-gate * ensure that the distribution and export/re-export of the software is in 1070Sstevel@tonic-gate * compliance with all laws, regulations, orders, or other restrictions of the 1080Sstevel@tonic-gate * U.S. Export Administration Regulations. Licensee agrees that neither it nor 1090Sstevel@tonic-gate * any of its subsidiaries will export/re-export any technical data, process, 1100Sstevel@tonic-gate * software, or service, directly or indirectly, to any country for which the 1110Sstevel@tonic-gate * United States government or any agency thereof requires an export license, 1120Sstevel@tonic-gate * other governmental approval, or letter of assurance, without first obtaining 1130Sstevel@tonic-gate * such license, approval or letter. 1140Sstevel@tonic-gate * 1150Sstevel@tonic-gate *****************************************************************************/ 1160Sstevel@tonic-gate 1170Sstevel@tonic-gate #ifndef __ACTBL1_H__ 1180Sstevel@tonic-gate #define __ACTBL1_H__ 1190Sstevel@tonic-gate 1202623Smyers 1212623Smyers /******************************************************************************* 1222623Smyers * 1232623Smyers * Additional ACPI Tables 1242623Smyers * 1252623Smyers * These tables are not consumed directly by the ACPICA subsystem, but are 1262623Smyers * included here to support device drivers and the AML disassembler. 1272623Smyers * 1282623Smyers ******************************************************************************/ 1292623Smyers 1300Sstevel@tonic-gate 1310Sstevel@tonic-gate /* 1322623Smyers * Values for description table header signatures. Useful because they make 1332623Smyers * it more difficult to inadvertently type in the wrong signature. 1340Sstevel@tonic-gate */ 1352623Smyers #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 136*7851SDana.Myers@Sun.COM #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 1372623Smyers #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 1382623Smyers #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 1392623Smyers #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 140*7851SDana.Myers@Sun.COM #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 1412623Smyers #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 142*7851SDana.Myers@Sun.COM #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 143*7851SDana.Myers@Sun.COM #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 144*7851SDana.Myers@Sun.COM #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 1452623Smyers #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 146*7851SDana.Myers@Sun.COM #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 1472623Smyers #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 1482623Smyers #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 1492623Smyers #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 150*7851SDana.Myers@Sun.COM #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 1512623Smyers #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 1522623Smyers #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 1532623Smyers #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 1542623Smyers #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 1552623Smyers #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 156*7851SDana.Myers@Sun.COM #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 157*7851SDana.Myers@Sun.COM #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 1582623Smyers #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 159347Smyers 1600Sstevel@tonic-gate 1610Sstevel@tonic-gate /* 1622623Smyers * All tables must be byte-packed to match the ACPI specification, since 1632623Smyers * the tables are provided by the system BIOS. 1642623Smyers */ 1652623Smyers #pragma pack(1) 1662623Smyers 1672623Smyers /* 1682623Smyers * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables. 1692623Smyers * This is the only type that is even remotely portable. Anything else is not 1702623Smyers * portable, so do not use any other bitfield types. 1712623Smyers */ 1722623Smyers 1732623Smyers 174*7851SDana.Myers@Sun.COM /* Common Subtable header (used in MADT, SRAT, etc.) */ 175*7851SDana.Myers@Sun.COM 176*7851SDana.Myers@Sun.COM typedef struct acpi_subtable_header 177*7851SDana.Myers@Sun.COM { 178*7851SDana.Myers@Sun.COM UINT8 Type; 179*7851SDana.Myers@Sun.COM UINT8 Length; 180*7851SDana.Myers@Sun.COM 181*7851SDana.Myers@Sun.COM } ACPI_SUBTABLE_HEADER; 182*7851SDana.Myers@Sun.COM 183*7851SDana.Myers@Sun.COM 184*7851SDana.Myers@Sun.COM /* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 185*7851SDana.Myers@Sun.COM 186*7851SDana.Myers@Sun.COM typedef struct acpi_whea_header 187*7851SDana.Myers@Sun.COM { 188*7851SDana.Myers@Sun.COM UINT8 Action; 189*7851SDana.Myers@Sun.COM UINT8 Instruction; 190*7851SDana.Myers@Sun.COM UINT8 Flags; 191*7851SDana.Myers@Sun.COM UINT8 Reserved; 192*7851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS RegisterRegion; 193*7851SDana.Myers@Sun.COM UINT64 Value; /* Value used with Read/Write register */ 194*7851SDana.Myers@Sun.COM UINT64 Mask; /* Bitmask required for this register instruction */ 195*7851SDana.Myers@Sun.COM 196*7851SDana.Myers@Sun.COM } ACPI_WHEA_HEADER; 197*7851SDana.Myers@Sun.COM 198*7851SDana.Myers@Sun.COM 1992623Smyers /******************************************************************************* 2002623Smyers * 2012623Smyers * ASF - Alert Standard Format table (Signature "ASF!") 2022623Smyers * 203*7851SDana.Myers@Sun.COM * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 204*7851SDana.Myers@Sun.COM * 2052623Smyers ******************************************************************************/ 2062623Smyers 2072623Smyers typedef struct acpi_table_asf 2082623Smyers { 209*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2102623Smyers 2112623Smyers } ACPI_TABLE_ASF; 2122623Smyers 213*7851SDana.Myers@Sun.COM 214*7851SDana.Myers@Sun.COM /* ASF subtable header */ 2152623Smyers 2162623Smyers typedef struct acpi_asf_header 2172623Smyers { 218*7851SDana.Myers@Sun.COM UINT8 Type; 219*7851SDana.Myers@Sun.COM UINT8 Reserved; 220*7851SDana.Myers@Sun.COM UINT16 Length; 2212623Smyers 2222623Smyers } ACPI_ASF_HEADER; 2232623Smyers 2242623Smyers 225*7851SDana.Myers@Sun.COM /* Values for Type field above */ 2262623Smyers 227*7851SDana.Myers@Sun.COM enum AcpiAsfType 228*7851SDana.Myers@Sun.COM { 229*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_INFO = 0, 230*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_ALERT = 1, 231*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_CONTROL = 2, 232*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_BOOT = 3, 233*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_ADDRESS = 4, 234*7851SDana.Myers@Sun.COM ACPI_ASF_TYPE_RESERVED = 5 235*7851SDana.Myers@Sun.COM }; 2362623Smyers 2372623Smyers /* 2382623Smyers * ASF subtables 2390Sstevel@tonic-gate */ 2402623Smyers 2412623Smyers /* 0: ASF Information */ 2422623Smyers 2432623Smyers typedef struct acpi_asf_info 2442623Smyers { 245*7851SDana.Myers@Sun.COM ACPI_ASF_HEADER Header; 2462623Smyers UINT8 MinResetValue; 2472623Smyers UINT8 MinPollInterval; 2482623Smyers UINT16 SystemId; 2492623Smyers UINT32 MfgId; 2502623Smyers UINT8 Flags; 2512623Smyers UINT8 Reserved2[3]; 2522623Smyers 2532623Smyers } ACPI_ASF_INFO; 2542623Smyers 2552623Smyers /* 1: ASF Alerts */ 2562623Smyers 2572623Smyers typedef struct acpi_asf_alert 2582623Smyers { 259*7851SDana.Myers@Sun.COM ACPI_ASF_HEADER Header; 2602623Smyers UINT8 AssertMask; 2612623Smyers UINT8 DeassertMask; 2622623Smyers UINT8 Alerts; 2632623Smyers UINT8 DataLength; 2642623Smyers 2652623Smyers } ACPI_ASF_ALERT; 2662623Smyers 267*7851SDana.Myers@Sun.COM typedef struct acpi_asf_alert_data 268*7851SDana.Myers@Sun.COM { 269*7851SDana.Myers@Sun.COM UINT8 Address; 270*7851SDana.Myers@Sun.COM UINT8 Command; 271*7851SDana.Myers@Sun.COM UINT8 Mask; 272*7851SDana.Myers@Sun.COM UINT8 Value; 273*7851SDana.Myers@Sun.COM UINT8 SensorType; 274*7851SDana.Myers@Sun.COM UINT8 Type; 275*7851SDana.Myers@Sun.COM UINT8 Offset; 276*7851SDana.Myers@Sun.COM UINT8 SourceType; 277*7851SDana.Myers@Sun.COM UINT8 Severity; 278*7851SDana.Myers@Sun.COM UINT8 SensorNumber; 279*7851SDana.Myers@Sun.COM UINT8 Entity; 280*7851SDana.Myers@Sun.COM UINT8 Instance; 281*7851SDana.Myers@Sun.COM 282*7851SDana.Myers@Sun.COM } ACPI_ASF_ALERT_DATA; 283*7851SDana.Myers@Sun.COM 2842623Smyers /* 2: ASF Remote Control */ 2852623Smyers 2862623Smyers typedef struct acpi_asf_remote 2872623Smyers { 288*7851SDana.Myers@Sun.COM ACPI_ASF_HEADER Header; 2892623Smyers UINT8 Controls; 2902623Smyers UINT8 DataLength; 2912623Smyers UINT16 Reserved2; 2922623Smyers 2932623Smyers } ACPI_ASF_REMOTE; 2942623Smyers 295*7851SDana.Myers@Sun.COM typedef struct acpi_asf_control_data 296*7851SDana.Myers@Sun.COM { 297*7851SDana.Myers@Sun.COM UINT8 Function; 298*7851SDana.Myers@Sun.COM UINT8 Address; 299*7851SDana.Myers@Sun.COM UINT8 Command; 300*7851SDana.Myers@Sun.COM UINT8 Value; 301*7851SDana.Myers@Sun.COM 302*7851SDana.Myers@Sun.COM } ACPI_ASF_CONTROL_DATA; 303*7851SDana.Myers@Sun.COM 3042623Smyers /* 3: ASF RMCP Boot Options */ 3052623Smyers 3062623Smyers typedef struct acpi_asf_rmcp 3072623Smyers { 308*7851SDana.Myers@Sun.COM ACPI_ASF_HEADER Header; 3092623Smyers UINT8 Capabilities[7]; 3102623Smyers UINT8 CompletionCode; 3112623Smyers UINT32 EnterpriseId; 3122623Smyers UINT8 Command; 3132623Smyers UINT16 Parameter; 3142623Smyers UINT16 BootOptions; 3152623Smyers UINT16 OemParameters; 3162623Smyers 3172623Smyers } ACPI_ASF_RMCP; 3182623Smyers 3192623Smyers /* 4: ASF Address */ 3202623Smyers 3212623Smyers typedef struct acpi_asf_address 3220Sstevel@tonic-gate { 323*7851SDana.Myers@Sun.COM ACPI_ASF_HEADER Header; 3242623Smyers UINT8 EpromAddress; 3252623Smyers UINT8 Devices; 3262623Smyers 3272623Smyers } ACPI_ASF_ADDRESS; 3282623Smyers 3292623Smyers 3302623Smyers /******************************************************************************* 3312623Smyers * 332*7851SDana.Myers@Sun.COM * BERT - Boot Error Record Table 333*7851SDana.Myers@Sun.COM * 334*7851SDana.Myers@Sun.COM ******************************************************************************/ 335*7851SDana.Myers@Sun.COM 336*7851SDana.Myers@Sun.COM typedef struct acpi_table_bert 337*7851SDana.Myers@Sun.COM { 338*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 339*7851SDana.Myers@Sun.COM UINT32 RegionLength; /* Length of the boot error region */ 340*7851SDana.Myers@Sun.COM UINT64 Address; /* Physical addresss of the error region */ 341*7851SDana.Myers@Sun.COM 342*7851SDana.Myers@Sun.COM } ACPI_TABLE_BERT; 343*7851SDana.Myers@Sun.COM 344*7851SDana.Myers@Sun.COM 345*7851SDana.Myers@Sun.COM /* Boot Error Region */ 346*7851SDana.Myers@Sun.COM 347*7851SDana.Myers@Sun.COM typedef struct acpi_bert_region 348*7851SDana.Myers@Sun.COM { 349*7851SDana.Myers@Sun.COM UINT32 BlockStatus; 350*7851SDana.Myers@Sun.COM UINT32 RawDataOffset; 351*7851SDana.Myers@Sun.COM UINT32 RawDataLength; 352*7851SDana.Myers@Sun.COM UINT32 DataLength; 353*7851SDana.Myers@Sun.COM UINT32 ErrorSeverity; 354*7851SDana.Myers@Sun.COM 355*7851SDana.Myers@Sun.COM } ACPI_BERT_REGION; 356*7851SDana.Myers@Sun.COM 357*7851SDana.Myers@Sun.COM /* BlockStatus Flags */ 358*7851SDana.Myers@Sun.COM 359*7851SDana.Myers@Sun.COM #define ACPI_BERT_UNCORRECTABLE (1) 360*7851SDana.Myers@Sun.COM #define ACPI_BERT_CORRECTABLE (2) 361*7851SDana.Myers@Sun.COM #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) 362*7851SDana.Myers@Sun.COM #define ACPI_BERT_MULTIPLE_CORRECTABLE (8) 363*7851SDana.Myers@Sun.COM 364*7851SDana.Myers@Sun.COM 365*7851SDana.Myers@Sun.COM /******************************************************************************* 366*7851SDana.Myers@Sun.COM * 3672623Smyers * BOOT - Simple Boot Flag Table 3682623Smyers * 3692623Smyers ******************************************************************************/ 3702623Smyers 3712623Smyers typedef struct acpi_table_boot 3722623Smyers { 373*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 3742623Smyers UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ 3752623Smyers UINT8 Reserved[3]; 3762623Smyers 3772623Smyers } ACPI_TABLE_BOOT; 3782623Smyers 3792623Smyers 3802623Smyers /******************************************************************************* 3812623Smyers * 3822623Smyers * CPEP - Corrected Platform Error Polling table 3832623Smyers * 3842623Smyers ******************************************************************************/ 3852623Smyers 3862623Smyers typedef struct acpi_table_cpep 3872623Smyers { 388*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 3892623Smyers UINT64 Reserved; 3902623Smyers 3912623Smyers } ACPI_TABLE_CPEP; 3922623Smyers 393*7851SDana.Myers@Sun.COM 3942623Smyers /* Subtable */ 3952623Smyers 3962623Smyers typedef struct acpi_cpep_polling 3972623Smyers { 3982623Smyers UINT8 Type; 3992623Smyers UINT8 Length; 400*7851SDana.Myers@Sun.COM UINT8 Id; /* Processor ID */ 401*7851SDana.Myers@Sun.COM UINT8 Eid; /* Processor EID */ 402*7851SDana.Myers@Sun.COM UINT32 Interval; /* Polling interval (msec) */ 4032623Smyers 4042623Smyers } ACPI_CPEP_POLLING; 4052623Smyers 4062623Smyers 4072623Smyers /******************************************************************************* 4082623Smyers * 4092623Smyers * DBGP - Debug Port table 4102623Smyers * 4112623Smyers ******************************************************************************/ 4122623Smyers 4132623Smyers typedef struct acpi_table_dbgp 4142623Smyers { 415*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 416*7851SDana.Myers@Sun.COM UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ 4172623Smyers UINT8 Reserved[3]; 4182623Smyers ACPI_GENERIC_ADDRESS DebugPort; 4192623Smyers 4202623Smyers } ACPI_TABLE_DBGP; 4212623Smyers 4222623Smyers 4232623Smyers /******************************************************************************* 4242623Smyers * 425*7851SDana.Myers@Sun.COM * DMAR - DMA Remapping table 426*7851SDana.Myers@Sun.COM * From "Intel Virtualization Technology for Directed I/O", Sept. 2007 427*7851SDana.Myers@Sun.COM * 428*7851SDana.Myers@Sun.COM ******************************************************************************/ 429*7851SDana.Myers@Sun.COM 430*7851SDana.Myers@Sun.COM typedef struct acpi_table_dmar 431*7851SDana.Myers@Sun.COM { 432*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 433*7851SDana.Myers@Sun.COM UINT8 Width; /* Host Address Width */ 434*7851SDana.Myers@Sun.COM UINT8 Flags; 435*7851SDana.Myers@Sun.COM UINT8 Reserved[10]; 436*7851SDana.Myers@Sun.COM 437*7851SDana.Myers@Sun.COM } ACPI_TABLE_DMAR; 438*7851SDana.Myers@Sun.COM 439*7851SDana.Myers@Sun.COM /* Flags */ 440*7851SDana.Myers@Sun.COM 441*7851SDana.Myers@Sun.COM #define ACPI_DMAR_INTR_REMAP (1) 442*7851SDana.Myers@Sun.COM 443*7851SDana.Myers@Sun.COM /* DMAR subtable header */ 444*7851SDana.Myers@Sun.COM 445*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_header 446*7851SDana.Myers@Sun.COM { 447*7851SDana.Myers@Sun.COM UINT16 Type; 448*7851SDana.Myers@Sun.COM UINT16 Length; 449*7851SDana.Myers@Sun.COM 450*7851SDana.Myers@Sun.COM } ACPI_DMAR_HEADER; 451*7851SDana.Myers@Sun.COM 452*7851SDana.Myers@Sun.COM /* Values for subtable type in ACPI_DMAR_HEADER */ 453*7851SDana.Myers@Sun.COM 454*7851SDana.Myers@Sun.COM enum AcpiDmarType 455*7851SDana.Myers@Sun.COM { 456*7851SDana.Myers@Sun.COM ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 457*7851SDana.Myers@Sun.COM ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 458*7851SDana.Myers@Sun.COM ACPI_DMAR_TYPE_ATSR = 2, 459*7851SDana.Myers@Sun.COM ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 460*7851SDana.Myers@Sun.COM }; 461*7851SDana.Myers@Sun.COM 462*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_device_scope 463*7851SDana.Myers@Sun.COM { 464*7851SDana.Myers@Sun.COM UINT8 EntryType; 465*7851SDana.Myers@Sun.COM UINT8 Length; 466*7851SDana.Myers@Sun.COM UINT16 Reserved; 467*7851SDana.Myers@Sun.COM UINT8 EnumerationId; 468*7851SDana.Myers@Sun.COM UINT8 Bus; 469*7851SDana.Myers@Sun.COM 470*7851SDana.Myers@Sun.COM } ACPI_DMAR_DEVICE_SCOPE; 471*7851SDana.Myers@Sun.COM 472*7851SDana.Myers@Sun.COM /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ 473*7851SDana.Myers@Sun.COM 474*7851SDana.Myers@Sun.COM enum AcpiDmarScopeType 475*7851SDana.Myers@Sun.COM { 476*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 477*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 478*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 479*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 480*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_HPET = 4, 481*7851SDana.Myers@Sun.COM ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 482*7851SDana.Myers@Sun.COM }; 483*7851SDana.Myers@Sun.COM 484*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_pci_path 485*7851SDana.Myers@Sun.COM { 486*7851SDana.Myers@Sun.COM UINT8 Device; 487*7851SDana.Myers@Sun.COM UINT8 Function; 488*7851SDana.Myers@Sun.COM 489*7851SDana.Myers@Sun.COM } ACPI_DMAR_PCI_PATH; 490*7851SDana.Myers@Sun.COM 491*7851SDana.Myers@Sun.COM /* 492*7851SDana.Myers@Sun.COM * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER 493*7851SDana.Myers@Sun.COM */ 494*7851SDana.Myers@Sun.COM 495*7851SDana.Myers@Sun.COM /* 0: Hardware Unit Definition */ 496*7851SDana.Myers@Sun.COM 497*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_hardware_unit 498*7851SDana.Myers@Sun.COM { 499*7851SDana.Myers@Sun.COM ACPI_DMAR_HEADER Header; 500*7851SDana.Myers@Sun.COM UINT8 Flags; 501*7851SDana.Myers@Sun.COM UINT8 Reserved; 502*7851SDana.Myers@Sun.COM UINT16 Segment; 503*7851SDana.Myers@Sun.COM UINT64 Address; /* Register Base Address */ 504*7851SDana.Myers@Sun.COM 505*7851SDana.Myers@Sun.COM } ACPI_DMAR_HARDWARE_UNIT; 506*7851SDana.Myers@Sun.COM 507*7851SDana.Myers@Sun.COM /* Flags */ 508*7851SDana.Myers@Sun.COM 509*7851SDana.Myers@Sun.COM #define ACPI_DMAR_INCLUDE_ALL (1) 510*7851SDana.Myers@Sun.COM 511*7851SDana.Myers@Sun.COM /* 1: Reserved Memory Defininition */ 512*7851SDana.Myers@Sun.COM 513*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_reserved_memory 514*7851SDana.Myers@Sun.COM { 515*7851SDana.Myers@Sun.COM ACPI_DMAR_HEADER Header; 516*7851SDana.Myers@Sun.COM UINT16 Reserved; 517*7851SDana.Myers@Sun.COM UINT16 Segment; 518*7851SDana.Myers@Sun.COM UINT64 BaseAddress; /* 4K aligned base address */ 519*7851SDana.Myers@Sun.COM UINT64 EndAddress; /* 4K aligned limit address */ 520*7851SDana.Myers@Sun.COM 521*7851SDana.Myers@Sun.COM } ACPI_DMAR_RESERVED_MEMORY; 522*7851SDana.Myers@Sun.COM 523*7851SDana.Myers@Sun.COM /* Flags */ 524*7851SDana.Myers@Sun.COM 525*7851SDana.Myers@Sun.COM #define ACPI_DMAR_ALLOW_ALL (1) 526*7851SDana.Myers@Sun.COM 527*7851SDana.Myers@Sun.COM /* 2: Root Port ATS Capability Reporting Structure */ 528*7851SDana.Myers@Sun.COM 529*7851SDana.Myers@Sun.COM typedef struct acpi_dmar_atsr 530*7851SDana.Myers@Sun.COM { 531*7851SDana.Myers@Sun.COM ACPI_DMAR_HEADER Header; 532*7851SDana.Myers@Sun.COM UINT8 Flags; 533*7851SDana.Myers@Sun.COM UINT8 Reserved; 534*7851SDana.Myers@Sun.COM UINT16 Segment; 535*7851SDana.Myers@Sun.COM 536*7851SDana.Myers@Sun.COM } ACPI_DMAR_ATSR; 537*7851SDana.Myers@Sun.COM 538*7851SDana.Myers@Sun.COM /* Flags */ 539*7851SDana.Myers@Sun.COM 540*7851SDana.Myers@Sun.COM #define ACPI_DMAR_ALL_PORTS (1) 541*7851SDana.Myers@Sun.COM 542*7851SDana.Myers@Sun.COM 543*7851SDana.Myers@Sun.COM /******************************************************************************* 544*7851SDana.Myers@Sun.COM * 5452623Smyers * ECDT - Embedded Controller Boot Resources Table 5462623Smyers * 5472623Smyers ******************************************************************************/ 5482623Smyers 549*7851SDana.Myers@Sun.COM typedef struct acpi_table_ecdt 550*7851SDana.Myers@Sun.COM { 551*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 552*7851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ 553*7851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ 554*7851SDana.Myers@Sun.COM UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ 555*7851SDana.Myers@Sun.COM UINT8 Gpe; /* The GPE for the EC */ 556*7851SDana.Myers@Sun.COM UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ 557*7851SDana.Myers@Sun.COM 558*7851SDana.Myers@Sun.COM } ACPI_TABLE_ECDT; 559*7851SDana.Myers@Sun.COM 560*7851SDana.Myers@Sun.COM 561*7851SDana.Myers@Sun.COM /******************************************************************************* 562*7851SDana.Myers@Sun.COM * 563*7851SDana.Myers@Sun.COM * EINJ - Error Injection Table 564*7851SDana.Myers@Sun.COM * 565*7851SDana.Myers@Sun.COM ******************************************************************************/ 566*7851SDana.Myers@Sun.COM 567*7851SDana.Myers@Sun.COM typedef struct acpi_table_einj 568*7851SDana.Myers@Sun.COM { 569*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 570*7851SDana.Myers@Sun.COM UINT32 HeaderLength; 571*7851SDana.Myers@Sun.COM UINT32 Reserved; 572*7851SDana.Myers@Sun.COM UINT32 Entries; 573*7851SDana.Myers@Sun.COM 574*7851SDana.Myers@Sun.COM } ACPI_TABLE_EINJ; 575*7851SDana.Myers@Sun.COM 576*7851SDana.Myers@Sun.COM /* EINJ Injection Instruction Entries (actions) */ 577*7851SDana.Myers@Sun.COM 578*7851SDana.Myers@Sun.COM typedef struct acpi_einj_entry 579*7851SDana.Myers@Sun.COM { 580*7851SDana.Myers@Sun.COM ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 581*7851SDana.Myers@Sun.COM 582*7851SDana.Myers@Sun.COM } ACPI_EINJ_ENTRY; 583*7851SDana.Myers@Sun.COM 584*7851SDana.Myers@Sun.COM /* Values for Action field above */ 585*7851SDana.Myers@Sun.COM 586*7851SDana.Myers@Sun.COM enum AcpiEinjActions 587*7851SDana.Myers@Sun.COM { 588*7851SDana.Myers@Sun.COM ACPI_EINJ_BEGIN_OPERATION = 0, 589*7851SDana.Myers@Sun.COM ACPI_EINJ_GET_TRIGGER_TABLE = 1, 590*7851SDana.Myers@Sun.COM ACPI_EINJ_SET_ERROR_TYPE = 2, 591*7851SDana.Myers@Sun.COM ACPI_EINJ_GET_ERROR_TYPE = 3, 592*7851SDana.Myers@Sun.COM ACPI_EINJ_END_OPERATION = 4, 593*7851SDana.Myers@Sun.COM ACPI_EINJ_EXECUTE_OPERATION = 5, 594*7851SDana.Myers@Sun.COM ACPI_EINJ_CHECK_BUSY_STATUS = 6, 595*7851SDana.Myers@Sun.COM ACPI_EINJ_GET_COMMAND_STATUS = 7, 596*7851SDana.Myers@Sun.COM ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 597*7851SDana.Myers@Sun.COM ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 598*7851SDana.Myers@Sun.COM }; 599*7851SDana.Myers@Sun.COM 600*7851SDana.Myers@Sun.COM /* Values for Instruction field above */ 601*7851SDana.Myers@Sun.COM 602*7851SDana.Myers@Sun.COM enum AcpiEinjInstructions 603*7851SDana.Myers@Sun.COM { 604*7851SDana.Myers@Sun.COM ACPI_EINJ_READ_REGISTER = 0, 605*7851SDana.Myers@Sun.COM ACPI_EINJ_READ_REGISTER_VALUE = 1, 606*7851SDana.Myers@Sun.COM ACPI_EINJ_WRITE_REGISTER = 2, 607*7851SDana.Myers@Sun.COM ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 608*7851SDana.Myers@Sun.COM ACPI_EINJ_NOOP = 4, 609*7851SDana.Myers@Sun.COM ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 610*7851SDana.Myers@Sun.COM }; 611*7851SDana.Myers@Sun.COM 612*7851SDana.Myers@Sun.COM /* EINJ Trigger Error Action Table */ 613*7851SDana.Myers@Sun.COM 614*7851SDana.Myers@Sun.COM typedef struct acpi_einj_trigger 615*7851SDana.Myers@Sun.COM { 616*7851SDana.Myers@Sun.COM UINT32 HeaderSize; 617*7851SDana.Myers@Sun.COM UINT32 Revision; 618*7851SDana.Myers@Sun.COM UINT32 TableSize; 619*7851SDana.Myers@Sun.COM UINT32 EntryCount; 620*7851SDana.Myers@Sun.COM 621*7851SDana.Myers@Sun.COM } ACPI_EINJ_TRIGGER; 622*7851SDana.Myers@Sun.COM 623*7851SDana.Myers@Sun.COM 624*7851SDana.Myers@Sun.COM /******************************************************************************* 625*7851SDana.Myers@Sun.COM * 626*7851SDana.Myers@Sun.COM * ERST - Error Record Serialization Table 627*7851SDana.Myers@Sun.COM * 628*7851SDana.Myers@Sun.COM ******************************************************************************/ 629*7851SDana.Myers@Sun.COM 630*7851SDana.Myers@Sun.COM typedef struct acpi_table_erst 631*7851SDana.Myers@Sun.COM { 632*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 633*7851SDana.Myers@Sun.COM UINT32 HeaderLength; 634*7851SDana.Myers@Sun.COM UINT32 Reserved; 635*7851SDana.Myers@Sun.COM UINT32 Entries; 636*7851SDana.Myers@Sun.COM 637*7851SDana.Myers@Sun.COM } ACPI_TABLE_ERST; 638*7851SDana.Myers@Sun.COM 639*7851SDana.Myers@Sun.COM /* ERST Serialization Entries (actions) */ 640*7851SDana.Myers@Sun.COM 641*7851SDana.Myers@Sun.COM typedef struct acpi_erst_entry 642*7851SDana.Myers@Sun.COM { 643*7851SDana.Myers@Sun.COM ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 644*7851SDana.Myers@Sun.COM 645*7851SDana.Myers@Sun.COM } ACPI_ERST_ENTRY; 646*7851SDana.Myers@Sun.COM 647*7851SDana.Myers@Sun.COM /* Values for Action field above */ 648*7851SDana.Myers@Sun.COM 649*7851SDana.Myers@Sun.COM enum AcpiErstActions 650*7851SDana.Myers@Sun.COM { 651*7851SDana.Myers@Sun.COM ACPI_ERST_BEGIN_WRITE_OPERATION = 0, 652*7851SDana.Myers@Sun.COM ACPI_ERST_BEGIN_READ_OPERATION = 1, 653*7851SDana.Myers@Sun.COM ACPI_ERST_BETGIN_CLEAR_OPERATION= 2, 654*7851SDana.Myers@Sun.COM ACPI_ERST_END_OPERATION = 3, 655*7851SDana.Myers@Sun.COM ACPI_ERST_SET_RECORD_OFFSET = 4, 656*7851SDana.Myers@Sun.COM ACPI_ERST_EXECUTE_OPERATION = 5, 657*7851SDana.Myers@Sun.COM ACPI_ERST_CHECK_BUSY_STATUS = 6, 658*7851SDana.Myers@Sun.COM ACPI_ERST_GET_COMMAND_STATUS = 7, 659*7851SDana.Myers@Sun.COM ACPI_ERST_GET_RECORD_IDENTIFIER = 8, 660*7851SDana.Myers@Sun.COM ACPI_ERST_SET_RECORD_IDENTIFIER = 9, 661*7851SDana.Myers@Sun.COM ACPI_ERST_GET_RECORD_COUNT = 10, 662*7851SDana.Myers@Sun.COM ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 663*7851SDana.Myers@Sun.COM ACPI_ERST_NOT_USED = 12, 664*7851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_RANGE = 13, 665*7851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_LENGTH = 14, 666*7851SDana.Myers@Sun.COM ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 667*7851SDana.Myers@Sun.COM ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 668*7851SDana.Myers@Sun.COM }; 669*7851SDana.Myers@Sun.COM 670*7851SDana.Myers@Sun.COM /* Values for Instruction field above */ 671*7851SDana.Myers@Sun.COM 672*7851SDana.Myers@Sun.COM enum AcpiErstInstructions 673*7851SDana.Myers@Sun.COM { 674*7851SDana.Myers@Sun.COM ACPI_ERST_READ_REGISTER = 0, 675*7851SDana.Myers@Sun.COM ACPI_ERST_READ_REGISTER_VALUE = 1, 676*7851SDana.Myers@Sun.COM ACPI_ERST_WRITE_REGISTER = 2, 677*7851SDana.Myers@Sun.COM ACPI_ERST_WRITE_REGISTER_VALUE = 3, 678*7851SDana.Myers@Sun.COM ACPI_ERST_NOOP = 4, 679*7851SDana.Myers@Sun.COM ACPI_ERST_LOAD_VAR1 = 5, 680*7851SDana.Myers@Sun.COM ACPI_ERST_LOAD_VAR2 = 6, 681*7851SDana.Myers@Sun.COM ACPI_ERST_STORE_VAR1 = 7, 682*7851SDana.Myers@Sun.COM ACPI_ERST_ADD = 8, 683*7851SDana.Myers@Sun.COM ACPI_ERST_SUBTRACT = 9, 684*7851SDana.Myers@Sun.COM ACPI_ERST_ADD_VALUE = 10, 685*7851SDana.Myers@Sun.COM ACPI_ERST_SUBTRACT_VALUE = 11, 686*7851SDana.Myers@Sun.COM ACPI_ERST_STALL = 12, 687*7851SDana.Myers@Sun.COM ACPI_ERST_STALL_WHILE_TRUE = 13, 688*7851SDana.Myers@Sun.COM ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 689*7851SDana.Myers@Sun.COM ACPI_ERST_GOTO = 15, 690*7851SDana.Myers@Sun.COM ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 691*7851SDana.Myers@Sun.COM ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 692*7851SDana.Myers@Sun.COM ACPI_ERST_MOVE_DATA = 18, 693*7851SDana.Myers@Sun.COM ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 694*7851SDana.Myers@Sun.COM }; 695*7851SDana.Myers@Sun.COM 696*7851SDana.Myers@Sun.COM 697*7851SDana.Myers@Sun.COM /******************************************************************************* 698*7851SDana.Myers@Sun.COM * 699*7851SDana.Myers@Sun.COM * HEST - Hardware Error Source Table 700*7851SDana.Myers@Sun.COM * 701*7851SDana.Myers@Sun.COM ******************************************************************************/ 702*7851SDana.Myers@Sun.COM 703*7851SDana.Myers@Sun.COM typedef struct acpi_table_hest 704*7851SDana.Myers@Sun.COM { 705*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 706*7851SDana.Myers@Sun.COM UINT32 ErrorSourceCount; 707*7851SDana.Myers@Sun.COM 708*7851SDana.Myers@Sun.COM } ACPI_TABLE_HEST; 709*7851SDana.Myers@Sun.COM 710*7851SDana.Myers@Sun.COM 711*7851SDana.Myers@Sun.COM /* HEST subtable header */ 712*7851SDana.Myers@Sun.COM 713*7851SDana.Myers@Sun.COM typedef struct acpi_hest_header 714*7851SDana.Myers@Sun.COM { 715*7851SDana.Myers@Sun.COM UINT16 Type; 716*7851SDana.Myers@Sun.COM 717*7851SDana.Myers@Sun.COM } ACPI_HEST_HEADER; 718*7851SDana.Myers@Sun.COM 719*7851SDana.Myers@Sun.COM 720*7851SDana.Myers@Sun.COM /* Values for Type field above for subtables */ 721*7851SDana.Myers@Sun.COM 722*7851SDana.Myers@Sun.COM enum AcpiHestTypes 723*7851SDana.Myers@Sun.COM { 724*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, 725*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, 726*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_XPF_UNUSED = 2, 727*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, 728*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, 729*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, 730*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 731*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_ENDPOINT = 7, 732*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_AER_BRIDGE = 8, 733*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, 734*7851SDana.Myers@Sun.COM ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 735*7851SDana.Myers@Sun.COM }; 736*7851SDana.Myers@Sun.COM 737*7851SDana.Myers@Sun.COM 738*7851SDana.Myers@Sun.COM /* 739*7851SDana.Myers@Sun.COM * HEST Sub-subtables 740*7851SDana.Myers@Sun.COM */ 741*7851SDana.Myers@Sun.COM 742*7851SDana.Myers@Sun.COM /* XPF Machine Check Error Bank */ 743*7851SDana.Myers@Sun.COM 744*7851SDana.Myers@Sun.COM typedef struct acpi_hest_xpf_error_bank 7452623Smyers { 746*7851SDana.Myers@Sun.COM UINT8 BankNumber; 747*7851SDana.Myers@Sun.COM UINT8 ClearStatusOnInit; 748*7851SDana.Myers@Sun.COM UINT8 StatusFormat; 749*7851SDana.Myers@Sun.COM UINT8 ConfigWriteEnable; 750*7851SDana.Myers@Sun.COM UINT32 ControlRegister; 751*7851SDana.Myers@Sun.COM UINT64 ControlInitData; 752*7851SDana.Myers@Sun.COM UINT32 StatusRegister; 753*7851SDana.Myers@Sun.COM UINT32 AddressRegister; 754*7851SDana.Myers@Sun.COM UINT32 MiscRegister; 755*7851SDana.Myers@Sun.COM 756*7851SDana.Myers@Sun.COM } ACPI_HEST_XPF_ERROR_BANK; 757*7851SDana.Myers@Sun.COM 758*7851SDana.Myers@Sun.COM 759*7851SDana.Myers@Sun.COM /* Generic Error Status */ 760*7851SDana.Myers@Sun.COM 761*7851SDana.Myers@Sun.COM typedef struct acpi_hest_generic_status 762*7851SDana.Myers@Sun.COM { 763*7851SDana.Myers@Sun.COM UINT32 BlockStatus; 764*7851SDana.Myers@Sun.COM UINT32 RawDataOffset; 765*7851SDana.Myers@Sun.COM UINT32 RawDataLength; 766*7851SDana.Myers@Sun.COM UINT32 DataLength; 767*7851SDana.Myers@Sun.COM UINT32 ErrorSeverity; 768*7851SDana.Myers@Sun.COM 769*7851SDana.Myers@Sun.COM } ACPI_HEST_GENERIC_STATUS; 770*7851SDana.Myers@Sun.COM 771*7851SDana.Myers@Sun.COM 772*7851SDana.Myers@Sun.COM /* Generic Error Data */ 773*7851SDana.Myers@Sun.COM 774*7851SDana.Myers@Sun.COM typedef struct acpi_hest_generic_data 775*7851SDana.Myers@Sun.COM { 776*7851SDana.Myers@Sun.COM UINT8 SectionType[16]; 777*7851SDana.Myers@Sun.COM UINT32 ErrorSeverity; 778*7851SDana.Myers@Sun.COM UINT16 Revision; 779*7851SDana.Myers@Sun.COM UINT8 ValidationBits; 780*7851SDana.Myers@Sun.COM UINT8 Flags; 781*7851SDana.Myers@Sun.COM UINT32 ErrorDataLength; 782*7851SDana.Myers@Sun.COM UINT8 FruId[16]; 783*7851SDana.Myers@Sun.COM UINT8 FruText[20]; 784*7851SDana.Myers@Sun.COM 785*7851SDana.Myers@Sun.COM } ACPI_HEST_GENERIC_DATA; 786*7851SDana.Myers@Sun.COM 787*7851SDana.Myers@Sun.COM 788*7851SDana.Myers@Sun.COM /* Common HEST structure for PCI/AER types below (6,7,8) */ 789*7851SDana.Myers@Sun.COM 790*7851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_common 791*7851SDana.Myers@Sun.COM { 792*7851SDana.Myers@Sun.COM UINT16 SourceId; 793*7851SDana.Myers@Sun.COM UINT16 ConfigWriteEnable; 794*7851SDana.Myers@Sun.COM UINT8 Flags; 795*7851SDana.Myers@Sun.COM UINT8 Enabled; 796*7851SDana.Myers@Sun.COM UINT32 RecordsToPreAllocate; 797*7851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 798*7851SDana.Myers@Sun.COM UINT32 Bus; 799*7851SDana.Myers@Sun.COM UINT16 Device; 800*7851SDana.Myers@Sun.COM UINT16 Function; 801*7851SDana.Myers@Sun.COM UINT16 DeviceControl; 802*7851SDana.Myers@Sun.COM UINT16 Reserved; 803*7851SDana.Myers@Sun.COM UINT32 UncorrectableErrorMask; 804*7851SDana.Myers@Sun.COM UINT32 UncorrectableErrorSeverity; 805*7851SDana.Myers@Sun.COM UINT32 CorrectableErrorMask; 806*7851SDana.Myers@Sun.COM UINT32 AdvancedErrorCababilities; 807*7851SDana.Myers@Sun.COM 808*7851SDana.Myers@Sun.COM } ACPI_HEST_AER_COMMON; 809*7851SDana.Myers@Sun.COM 810*7851SDana.Myers@Sun.COM 811*7851SDana.Myers@Sun.COM /* Hardware Error Notification */ 812*7851SDana.Myers@Sun.COM 813*7851SDana.Myers@Sun.COM typedef struct acpi_hest_notify 814*7851SDana.Myers@Sun.COM { 815*7851SDana.Myers@Sun.COM UINT8 Type; 816*7851SDana.Myers@Sun.COM UINT8 Length; 817*7851SDana.Myers@Sun.COM UINT16 ConfigWriteEnable; 818*7851SDana.Myers@Sun.COM UINT32 PollInterval; 819*7851SDana.Myers@Sun.COM UINT32 Vector; 820*7851SDana.Myers@Sun.COM UINT32 PollingThresholdValue; 821*7851SDana.Myers@Sun.COM UINT32 PollingThresholdWindow; 822*7851SDana.Myers@Sun.COM UINT32 ErrorThresholdValue; 823*7851SDana.Myers@Sun.COM UINT32 ErrorThresholdWindow; 824*7851SDana.Myers@Sun.COM 825*7851SDana.Myers@Sun.COM } ACPI_HEST_NOTIFY; 826*7851SDana.Myers@Sun.COM 827*7851SDana.Myers@Sun.COM /* Values for Notify Type field above */ 828*7851SDana.Myers@Sun.COM 829*7851SDana.Myers@Sun.COM enum AcpiHestNotifyTypes 830*7851SDana.Myers@Sun.COM { 831*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_POLLED = 0, 832*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_EXTERNAL = 1, 833*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_LOCAL = 2, 834*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_SCI = 3, 835*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_NMI = 4, 836*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 837*7851SDana.Myers@Sun.COM }; 838*7851SDana.Myers@Sun.COM 839*7851SDana.Myers@Sun.COM 840*7851SDana.Myers@Sun.COM /* 841*7851SDana.Myers@Sun.COM * HEST subtables 842*7851SDana.Myers@Sun.COM * 843*7851SDana.Myers@Sun.COM * From WHEA Design Document, 16 May 2007. 844*7851SDana.Myers@Sun.COM * Note: There is no subtable type 2 in this version of the document, 845*7851SDana.Myers@Sun.COM * and there are two different subtable type 3s. 846*7851SDana.Myers@Sun.COM */ 847*7851SDana.Myers@Sun.COM 848*7851SDana.Myers@Sun.COM /* 0: XPF Machine Check Exception */ 8492623Smyers 850*7851SDana.Myers@Sun.COM typedef struct acpi_hest_xpf_machine_check 851*7851SDana.Myers@Sun.COM { 852*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 853*7851SDana.Myers@Sun.COM UINT16 SourceId; 854*7851SDana.Myers@Sun.COM UINT16 ConfigWriteEnable; 855*7851SDana.Myers@Sun.COM UINT8 Flags; 856*7851SDana.Myers@Sun.COM UINT8 Reserved1; 857*7851SDana.Myers@Sun.COM UINT32 RecordsToPreAllocate; 858*7851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 859*7851SDana.Myers@Sun.COM UINT64 GlobalCapabilityData; 860*7851SDana.Myers@Sun.COM UINT64 GlobalControlData; 861*7851SDana.Myers@Sun.COM UINT8 NumHardwareBanks; 862*7851SDana.Myers@Sun.COM UINT8 Reserved2[7]; 863*7851SDana.Myers@Sun.COM 864*7851SDana.Myers@Sun.COM } ACPI_HEST_XPF_MACHINE_CHECK; 865*7851SDana.Myers@Sun.COM 866*7851SDana.Myers@Sun.COM 867*7851SDana.Myers@Sun.COM /* 1: XPF Corrected Machine Check */ 868*7851SDana.Myers@Sun.COM 869*7851SDana.Myers@Sun.COM typedef struct acpi_table_hest_xpf_corrected 870*7851SDana.Myers@Sun.COM { 871*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 872*7851SDana.Myers@Sun.COM UINT16 SourceId; 873*7851SDana.Myers@Sun.COM UINT16 ConfigWriteEnable; 874*7851SDana.Myers@Sun.COM UINT8 Flags; 875*7851SDana.Myers@Sun.COM UINT8 Enabled; 876*7851SDana.Myers@Sun.COM UINT32 RecordsToPreAllocate; 877*7851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 878*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY Notify; 879*7851SDana.Myers@Sun.COM UINT8 NumHardwareBanks; 880*7851SDana.Myers@Sun.COM UINT8 Reserved[3]; 881*7851SDana.Myers@Sun.COM 882*7851SDana.Myers@Sun.COM } ACPI_HEST_XPF_CORRECTED; 883*7851SDana.Myers@Sun.COM 884*7851SDana.Myers@Sun.COM 885*7851SDana.Myers@Sun.COM /* 3: XPF Non-Maskable Interrupt */ 886*7851SDana.Myers@Sun.COM 887*7851SDana.Myers@Sun.COM typedef struct acpi_hest_xpf_nmi 888*7851SDana.Myers@Sun.COM { 889*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 890*7851SDana.Myers@Sun.COM UINT16 SourceId; 891*7851SDana.Myers@Sun.COM UINT32 Reserved; 892*7851SDana.Myers@Sun.COM UINT32 RecordsToPreAllocate; 893*7851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 894*7851SDana.Myers@Sun.COM UINT32 MaxRawDataLength; 895*7851SDana.Myers@Sun.COM 896*7851SDana.Myers@Sun.COM } ACPI_HEST_XPF_NMI; 897*7851SDana.Myers@Sun.COM 898*7851SDana.Myers@Sun.COM 899*7851SDana.Myers@Sun.COM /* 4: IPF Corrected Machine Check */ 900*7851SDana.Myers@Sun.COM 901*7851SDana.Myers@Sun.COM typedef struct acpi_hest_ipf_corrected 902*7851SDana.Myers@Sun.COM { 903*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 904*7851SDana.Myers@Sun.COM UINT8 Enabled; 905*7851SDana.Myers@Sun.COM UINT8 Reserved; 906*7851SDana.Myers@Sun.COM 907*7851SDana.Myers@Sun.COM } ACPI_HEST_IPF_CORRECTED; 908*7851SDana.Myers@Sun.COM 909*7851SDana.Myers@Sun.COM 910*7851SDana.Myers@Sun.COM /* 5: IPF Corrected Platform Error */ 911*7851SDana.Myers@Sun.COM 912*7851SDana.Myers@Sun.COM typedef struct acpi_hest_ipf_corrected_platform 913*7851SDana.Myers@Sun.COM { 914*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 915*7851SDana.Myers@Sun.COM UINT8 Enabled; 916*7851SDana.Myers@Sun.COM UINT8 Reserved; 917*7851SDana.Myers@Sun.COM 918*7851SDana.Myers@Sun.COM } ACPI_HEST_IPF_CORRECTED_PLATFORM; 919*7851SDana.Myers@Sun.COM 920*7851SDana.Myers@Sun.COM 921*7851SDana.Myers@Sun.COM /* 6: PCI Express Root Port AER */ 922*7851SDana.Myers@Sun.COM 923*7851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_root 924*7851SDana.Myers@Sun.COM { 925*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 926*7851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 927*7851SDana.Myers@Sun.COM UINT32 RootErrorCommand; 928*7851SDana.Myers@Sun.COM 929*7851SDana.Myers@Sun.COM } ACPI_HEST_AER_ROOT; 930*7851SDana.Myers@Sun.COM 931*7851SDana.Myers@Sun.COM 932*7851SDana.Myers@Sun.COM /* 7: PCI Express AER (AER Endpoint) */ 933*7851SDana.Myers@Sun.COM 934*7851SDana.Myers@Sun.COM typedef struct acpi_hest_aer 935*7851SDana.Myers@Sun.COM { 936*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 937*7851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 938*7851SDana.Myers@Sun.COM 939*7851SDana.Myers@Sun.COM } ACPI_HEST_AER; 940*7851SDana.Myers@Sun.COM 941*7851SDana.Myers@Sun.COM 942*7851SDana.Myers@Sun.COM /* 8: PCI Express/PCI-X Bridge AER */ 943*7851SDana.Myers@Sun.COM 944*7851SDana.Myers@Sun.COM typedef struct acpi_hest_aer_bridge 945*7851SDana.Myers@Sun.COM { 946*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 947*7851SDana.Myers@Sun.COM ACPI_HEST_AER_COMMON Aer; 948*7851SDana.Myers@Sun.COM UINT32 SecondaryUncorrectableErrorMask; 949*7851SDana.Myers@Sun.COM UINT32 SecondaryUncorrectableErrorSeverity; 950*7851SDana.Myers@Sun.COM UINT32 SecondaryAdvancedCapabilities; 951*7851SDana.Myers@Sun.COM 952*7851SDana.Myers@Sun.COM } ACPI_HEST_AER_BRIDGE; 953*7851SDana.Myers@Sun.COM 954*7851SDana.Myers@Sun.COM 955*7851SDana.Myers@Sun.COM /* 9: Generic Hardware Error Source */ 956*7851SDana.Myers@Sun.COM 957*7851SDana.Myers@Sun.COM typedef struct acpi_hest_generic 958*7851SDana.Myers@Sun.COM { 959*7851SDana.Myers@Sun.COM ACPI_HEST_HEADER Header; 960*7851SDana.Myers@Sun.COM UINT16 SourceId; 961*7851SDana.Myers@Sun.COM UINT16 RelatedSourceId; 962*7851SDana.Myers@Sun.COM UINT8 ConfigWriteEnable; 963*7851SDana.Myers@Sun.COM UINT8 Enabled; 964*7851SDana.Myers@Sun.COM UINT32 RecordsToPreAllocate; 965*7851SDana.Myers@Sun.COM UINT32 MaxSectionsPerRecord; 966*7851SDana.Myers@Sun.COM UINT32 MaxRawDataLength; 967*7851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS ErrorStatusAddress; 968*7851SDana.Myers@Sun.COM ACPI_HEST_NOTIFY Notify; 969*7851SDana.Myers@Sun.COM UINT32 ErrorStatusBlockLength; 970*7851SDana.Myers@Sun.COM 971*7851SDana.Myers@Sun.COM } ACPI_HEST_GENERIC; 9722623Smyers 9732623Smyers 9742623Smyers /******************************************************************************* 9752623Smyers * 9762623Smyers * HPET - High Precision Event Timer table 9772623Smyers * 9782623Smyers ******************************************************************************/ 9792623Smyers 980*7851SDana.Myers@Sun.COM typedef struct acpi_table_hpet 981*7851SDana.Myers@Sun.COM { 982*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 983*7851SDana.Myers@Sun.COM UINT32 Id; /* Hardware ID of event timer block */ 984*7851SDana.Myers@Sun.COM ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ 985*7851SDana.Myers@Sun.COM UINT8 Sequence; /* HPET sequence number */ 986*7851SDana.Myers@Sun.COM UINT16 MinimumTick; /* Main counter min tick, periodic mode */ 987*7851SDana.Myers@Sun.COM UINT8 Flags; 988*7851SDana.Myers@Sun.COM 989*7851SDana.Myers@Sun.COM } ACPI_TABLE_HPET; 990*7851SDana.Myers@Sun.COM 991*7851SDana.Myers@Sun.COM /*! Flags */ 992*7851SDana.Myers@Sun.COM 993*7851SDana.Myers@Sun.COM #define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 994*7851SDana.Myers@Sun.COM #define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 995*7851SDana.Myers@Sun.COM #define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 996*7851SDana.Myers@Sun.COM 997*7851SDana.Myers@Sun.COM /*! [End] no source code translation !*/ 998*7851SDana.Myers@Sun.COM 999*7851SDana.Myers@Sun.COM 1000*7851SDana.Myers@Sun.COM /******************************************************************************* 1001*7851SDana.Myers@Sun.COM * 1002*7851SDana.Myers@Sun.COM * IBFT - Boot Firmware Table 1003*7851SDana.Myers@Sun.COM * 1004*7851SDana.Myers@Sun.COM ******************************************************************************/ 1005*7851SDana.Myers@Sun.COM 1006*7851SDana.Myers@Sun.COM typedef struct acpi_table_ibft 10072623Smyers { 1008*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1009*7851SDana.Myers@Sun.COM UINT8 Reserved[12]; 1010*7851SDana.Myers@Sun.COM 1011*7851SDana.Myers@Sun.COM } ACPI_TABLE_IBFT; 1012*7851SDana.Myers@Sun.COM 1013*7851SDana.Myers@Sun.COM 1014*7851SDana.Myers@Sun.COM /* IBFT common subtable header */ 1015*7851SDana.Myers@Sun.COM 1016*7851SDana.Myers@Sun.COM typedef struct acpi_ibft_header 1017*7851SDana.Myers@Sun.COM { 1018*7851SDana.Myers@Sun.COM UINT8 Type; 1019*7851SDana.Myers@Sun.COM UINT8 Version; 1020*7851SDana.Myers@Sun.COM UINT16 Length; 1021*7851SDana.Myers@Sun.COM UINT8 Index; 1022*7851SDana.Myers@Sun.COM UINT8 Flags; 1023*7851SDana.Myers@Sun.COM 1024*7851SDana.Myers@Sun.COM } ACPI_IBFT_HEADER; 1025*7851SDana.Myers@Sun.COM 1026*7851SDana.Myers@Sun.COM 1027*7851SDana.Myers@Sun.COM /* Values for Type field above */ 1028*7851SDana.Myers@Sun.COM 1029*7851SDana.Myers@Sun.COM enum AcpiIbftType 1030*7851SDana.Myers@Sun.COM { 1031*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_NOT_USED = 0, 1032*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_CONTROL = 1, 1033*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_INITIATOR = 2, 1034*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_NIC = 3, 1035*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_TARGET = 4, 1036*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_EXTENSIONS = 5, 1037*7851SDana.Myers@Sun.COM ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 1038*7851SDana.Myers@Sun.COM }; 1039*7851SDana.Myers@Sun.COM 1040*7851SDana.Myers@Sun.COM 1041*7851SDana.Myers@Sun.COM /* IBFT subtables */ 10422623Smyers 1043*7851SDana.Myers@Sun.COM typedef struct acpi_ibft_control 1044*7851SDana.Myers@Sun.COM { 1045*7851SDana.Myers@Sun.COM ACPI_IBFT_HEADER Header; 1046*7851SDana.Myers@Sun.COM UINT16 Extensions; 1047*7851SDana.Myers@Sun.COM UINT16 InitiatorOffset; 1048*7851SDana.Myers@Sun.COM UINT16 Nic0Offset; 1049*7851SDana.Myers@Sun.COM UINT16 Target0Offset; 1050*7851SDana.Myers@Sun.COM UINT16 Nic1Offset; 1051*7851SDana.Myers@Sun.COM UINT16 Target1Offset; 1052*7851SDana.Myers@Sun.COM 1053*7851SDana.Myers@Sun.COM } ACPI_IBFT_CONTROL; 1054*7851SDana.Myers@Sun.COM 1055*7851SDana.Myers@Sun.COM typedef struct acpi_ibft_initiator 1056*7851SDana.Myers@Sun.COM { 1057*7851SDana.Myers@Sun.COM ACPI_IBFT_HEADER Header; 1058*7851SDana.Myers@Sun.COM UINT8 SnsServer[16]; 1059*7851SDana.Myers@Sun.COM UINT8 SlpServer[16]; 1060*7851SDana.Myers@Sun.COM UINT8 PrimaryServer[16]; 1061*7851SDana.Myers@Sun.COM UINT8 SecondaryServer[16]; 1062*7851SDana.Myers@Sun.COM UINT16 NameLength; 1063*7851SDana.Myers@Sun.COM UINT16 NameOffset; 1064*7851SDana.Myers@Sun.COM 1065*7851SDana.Myers@Sun.COM } ACPI_IBFT_INITIATOR; 10662623Smyers 1067*7851SDana.Myers@Sun.COM typedef struct acpi_ibft_nic 1068*7851SDana.Myers@Sun.COM { 1069*7851SDana.Myers@Sun.COM ACPI_IBFT_HEADER Header; 1070*7851SDana.Myers@Sun.COM UINT8 IpAddress[16]; 1071*7851SDana.Myers@Sun.COM UINT8 SubnetMaskPrefix; 1072*7851SDana.Myers@Sun.COM UINT8 Origin; 1073*7851SDana.Myers@Sun.COM UINT8 Gateway[16]; 1074*7851SDana.Myers@Sun.COM UINT8 PrimaryDns[16]; 1075*7851SDana.Myers@Sun.COM UINT8 SecondaryDns[16]; 1076*7851SDana.Myers@Sun.COM UINT8 Dhcp[16]; 1077*7851SDana.Myers@Sun.COM UINT16 Vlan; 1078*7851SDana.Myers@Sun.COM UINT8 MacAddress[6]; 1079*7851SDana.Myers@Sun.COM UINT16 PciAddress; 1080*7851SDana.Myers@Sun.COM UINT16 NameLength; 1081*7851SDana.Myers@Sun.COM UINT16 NameOffset; 1082*7851SDana.Myers@Sun.COM 1083*7851SDana.Myers@Sun.COM } ACPI_IBFT_NIC; 1084*7851SDana.Myers@Sun.COM 1085*7851SDana.Myers@Sun.COM typedef struct acpi_ibft_target 1086*7851SDana.Myers@Sun.COM { 1087*7851SDana.Myers@Sun.COM ACPI_IBFT_HEADER Header; 1088*7851SDana.Myers@Sun.COM UINT8 TargetIpAddress[16]; 1089*7851SDana.Myers@Sun.COM UINT16 TargetIpSocket; 1090*7851SDana.Myers@Sun.COM UINT8 TargetBootLun[8]; 1091*7851SDana.Myers@Sun.COM UINT8 ChapType; 1092*7851SDana.Myers@Sun.COM UINT8 NicAssociation; 1093*7851SDana.Myers@Sun.COM UINT16 TargetNameLength; 1094*7851SDana.Myers@Sun.COM UINT16 TargetNameOffset; 1095*7851SDana.Myers@Sun.COM UINT16 ChapNameLength; 1096*7851SDana.Myers@Sun.COM UINT16 ChapNameOffset; 1097*7851SDana.Myers@Sun.COM UINT16 ChapSecretLength; 1098*7851SDana.Myers@Sun.COM UINT16 ChapSecretOffset; 1099*7851SDana.Myers@Sun.COM UINT16 ReverseChapNameLength; 1100*7851SDana.Myers@Sun.COM UINT16 ReverseChapNameOffset; 1101*7851SDana.Myers@Sun.COM UINT16 ReverseChapSecretLength; 1102*7851SDana.Myers@Sun.COM UINT16 ReverseChapSecretOffset; 1103*7851SDana.Myers@Sun.COM 1104*7851SDana.Myers@Sun.COM } ACPI_IBFT_TARGET; 11052623Smyers 11062623Smyers 11072623Smyers /******************************************************************************* 11082623Smyers * 11092623Smyers * MADT - Multiple APIC Description Table 11102623Smyers * 11112623Smyers ******************************************************************************/ 11122623Smyers 1113*7851SDana.Myers@Sun.COM typedef struct acpi_table_madt 11142623Smyers { 1115*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1116*7851SDana.Myers@Sun.COM UINT32 Address; /* Physical address of local APIC */ 1117*7851SDana.Myers@Sun.COM UINT32 Flags; 1118347Smyers 1119*7851SDana.Myers@Sun.COM } ACPI_TABLE_MADT; 1120347Smyers 1121*7851SDana.Myers@Sun.COM /* Flags */ 1122*7851SDana.Myers@Sun.COM 1123*7851SDana.Myers@Sun.COM #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 1124347Smyers 1125*7851SDana.Myers@Sun.COM /* Values for PCATCompat flag */ 11262623Smyers 1127*7851SDana.Myers@Sun.COM #define ACPI_MADT_DUAL_PIC 0 1128*7851SDana.Myers@Sun.COM #define ACPI_MADT_MULTIPLE_APIC 1 11292623Smyers 11302623Smyers 1131*7851SDana.Myers@Sun.COM /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 11322623Smyers 1133*7851SDana.Myers@Sun.COM enum AcpiMadtType 1134*7851SDana.Myers@Sun.COM { 1135*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC = 0, 1136*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_IO_APIC = 1, 1137*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 1138*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_NMI_SOURCE = 3, 1139*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 1140*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 1141*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_IO_SAPIC = 6, 1142*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 1143*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 1144*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_X2APIC = 9, 1145*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, 1146*7851SDana.Myers@Sun.COM ACPI_MADT_TYPE_RESERVED = 11 /* 11 and greater are reserved */ 1147*7851SDana.Myers@Sun.COM }; 11480Sstevel@tonic-gate 11490Sstevel@tonic-gate 11500Sstevel@tonic-gate /* 1151*7851SDana.Myers@Sun.COM * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 11520Sstevel@tonic-gate */ 11532623Smyers 1154*7851SDana.Myers@Sun.COM /* 0: Processor Local APIC */ 11552623Smyers 1156*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic 11572623Smyers { 1158*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 11592623Smyers UINT8 ProcessorId; /* ACPI processor id */ 1160*7851SDana.Myers@Sun.COM UINT8 Id; /* Processor's local APIC id */ 1161*7851SDana.Myers@Sun.COM UINT32 LapicFlags; 11622623Smyers 1163*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC; 11642623Smyers 11652623Smyers /* 1: IO APIC */ 11662623Smyers 1167*7851SDana.Myers@Sun.COM typedef struct acpi_madt_io_apic 11682623Smyers { 1169*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1170*7851SDana.Myers@Sun.COM UINT8 Id; /* I/O APIC ID */ 11712623Smyers UINT8 Reserved; /* Reserved - must be zero */ 11722623Smyers UINT32 Address; /* APIC physical address */ 1173*7851SDana.Myers@Sun.COM UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ 11742623Smyers 1175*7851SDana.Myers@Sun.COM } ACPI_MADT_IO_APIC; 11762623Smyers 11772623Smyers /* 2: Interrupt Override */ 11782623Smyers 1179*7851SDana.Myers@Sun.COM typedef struct acpi_madt_interrupt_override 11802623Smyers { 1181*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 11822623Smyers UINT8 Bus; /* 0 - ISA */ 1183*7851SDana.Myers@Sun.COM UINT8 SourceIrq; /* Interrupt source (IRQ) */ 1184*7851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 1185*7851SDana.Myers@Sun.COM UINT16 IntiFlags; 11862623Smyers 1187*7851SDana.Myers@Sun.COM } ACPI_MADT_INTERRUPT_OVERRIDE; 11882623Smyers 1189*7851SDana.Myers@Sun.COM /* 3: NMI Source */ 11902623Smyers 1191*7851SDana.Myers@Sun.COM typedef struct acpi_madt_nmi_source 11922623Smyers { 1193*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1194*7851SDana.Myers@Sun.COM UINT16 IntiFlags; 1195*7851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 11962623Smyers 1197*7851SDana.Myers@Sun.COM } ACPI_MADT_NMI_SOURCE; 11982623Smyers 11992623Smyers /* 4: Local APIC NMI */ 12002623Smyers 1201*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic_nmi 12022623Smyers { 1203*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 12042623Smyers UINT8 ProcessorId; /* ACPI processor id */ 1205*7851SDana.Myers@Sun.COM UINT16 IntiFlags; 12062623Smyers UINT8 Lint; /* LINTn to which NMI is connected */ 12072623Smyers 1208*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC_NMI; 12092623Smyers 12102623Smyers /* 5: Address Override */ 12112623Smyers 1212*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_apic_override 12132623Smyers { 1214*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 12152623Smyers UINT16 Reserved; /* Reserved, must be zero */ 12162623Smyers UINT64 Address; /* APIC physical address */ 12172623Smyers 1218*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_APIC_OVERRIDE; 12192623Smyers 12202623Smyers /* 6: I/O Sapic */ 12212623Smyers 1222*7851SDana.Myers@Sun.COM typedef struct acpi_madt_io_sapic 12232623Smyers { 1224*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1225*7851SDana.Myers@Sun.COM UINT8 Id; /* I/O SAPIC ID */ 12262623Smyers UINT8 Reserved; /* Reserved, must be zero */ 1227*7851SDana.Myers@Sun.COM UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ 12282623Smyers UINT64 Address; /* SAPIC physical address */ 12292623Smyers 1230*7851SDana.Myers@Sun.COM } ACPI_MADT_IO_SAPIC; 12312623Smyers 12322623Smyers /* 7: Local Sapic */ 12332623Smyers 1234*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_sapic 12352623Smyers { 1236*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 12372623Smyers UINT8 ProcessorId; /* ACPI processor id */ 1238*7851SDana.Myers@Sun.COM UINT8 Id; /* SAPIC ID */ 1239*7851SDana.Myers@Sun.COM UINT8 Eid; /* SAPIC EID */ 12402623Smyers UINT8 Reserved[3]; /* Reserved, must be zero */ 1241*7851SDana.Myers@Sun.COM UINT32 LapicFlags; 1242*7851SDana.Myers@Sun.COM UINT32 Uid; /* Numeric UID - ACPI 3.0 */ 1243*7851SDana.Myers@Sun.COM char UidString[1]; /* String UID - ACPI 3.0 */ 12442623Smyers 1245*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_SAPIC; 12462623Smyers 12472623Smyers /* 8: Platform Interrupt Source */ 12482623Smyers 1249*7851SDana.Myers@Sun.COM typedef struct acpi_madt_interrupt_source 12502623Smyers { 1251*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1252*7851SDana.Myers@Sun.COM UINT16 IntiFlags; 1253*7851SDana.Myers@Sun.COM UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ 1254*7851SDana.Myers@Sun.COM UINT8 Id; /* Processor ID */ 1255*7851SDana.Myers@Sun.COM UINT8 Eid; /* Processor EID */ 12562623Smyers UINT8 IoSapicVector; /* Vector value for PMI interrupts */ 1257*7851SDana.Myers@Sun.COM UINT32 GlobalIrq; /* Global system interrupt */ 12582623Smyers UINT32 Flags; /* Interrupt Source Flags */ 12592623Smyers 1260*7851SDana.Myers@Sun.COM } ACPI_MADT_INTERRUPT_SOURCE; 1261*7851SDana.Myers@Sun.COM 1262*7851SDana.Myers@Sun.COM /* Flags field above */ 1263*7851SDana.Myers@Sun.COM 1264*7851SDana.Myers@Sun.COM #define ACPI_MADT_CPEI_OVERRIDE (1) 1265*7851SDana.Myers@Sun.COM 1266*7851SDana.Myers@Sun.COM /* 9: Processor Local X2_APIC (07/2008) */ 12672623Smyers 1268*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_x2apic 1269*7851SDana.Myers@Sun.COM { 1270*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1271*7851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved - must be zero */ 1272*7851SDana.Myers@Sun.COM UINT32 LocalApicId; /* Processor X2_APIC ID */ 1273*7851SDana.Myers@Sun.COM UINT32 LapicFlags; 1274*7851SDana.Myers@Sun.COM UINT32 Uid; /* Extended X2_APIC processor ID */ 12757282Smishra 1276*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_X2APIC; 1277*7851SDana.Myers@Sun.COM 1278*7851SDana.Myers@Sun.COM /* 10: Local X2APIC NMI (07/2008) */ 1279*7851SDana.Myers@Sun.COM 1280*7851SDana.Myers@Sun.COM typedef struct acpi_madt_local_x2apic_nmi 12817282Smishra { 1282*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1283*7851SDana.Myers@Sun.COM UINT16 IntiFlags; 1284*7851SDana.Myers@Sun.COM UINT32 Uid; /* Processor X2_APIC ID */ 1285*7851SDana.Myers@Sun.COM UINT8 Lint; /* LINTn to which NMI is connected */ 1286*7851SDana.Myers@Sun.COM UINT8 Reserved[3]; 1287*7851SDana.Myers@Sun.COM 1288*7851SDana.Myers@Sun.COM } ACPI_MADT_LOCAL_X2APIC_NMI; 12897282Smishra 1290*7851SDana.Myers@Sun.COM 1291*7851SDana.Myers@Sun.COM /* 1292*7851SDana.Myers@Sun.COM * Common flags fields for MADT subtables 1293*7851SDana.Myers@Sun.COM */ 1294*7851SDana.Myers@Sun.COM 1295*7851SDana.Myers@Sun.COM /* MADT Local APIC flags (LapicFlags) */ 1296*7851SDana.Myers@Sun.COM 1297*7851SDana.Myers@Sun.COM #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 12987282Smishra 1299*7851SDana.Myers@Sun.COM /* MADT MPS INTI flags (IntiFlags) */ 1300*7851SDana.Myers@Sun.COM 1301*7851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 1302*7851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 1303*7851SDana.Myers@Sun.COM 1304*7851SDana.Myers@Sun.COM /* Values for MPS INTI flags */ 1305*7851SDana.Myers@Sun.COM 1306*7851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_CONFORMS 0 1307*7851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 1308*7851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_RESERVED 2 1309*7851SDana.Myers@Sun.COM #define ACPI_MADT_POLARITY_ACTIVE_LOW 3 1310*7851SDana.Myers@Sun.COM 1311*7851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_CONFORMS (0) 1312*7851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_EDGE (1<<2) 1313*7851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_RESERVED (2<<2) 1314*7851SDana.Myers@Sun.COM #define ACPI_MADT_TRIGGER_LEVEL (3<<2) 13157282Smishra 13162623Smyers 13172623Smyers /******************************************************************************* 13182623Smyers * 13192623Smyers * MCFG - PCI Memory Mapped Configuration table and sub-table 13202623Smyers * 13212623Smyers ******************************************************************************/ 13222623Smyers 13232623Smyers typedef struct acpi_table_mcfg 13242623Smyers { 1325*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13262623Smyers UINT8 Reserved[8]; 13272623Smyers 13282623Smyers } ACPI_TABLE_MCFG; 13292623Smyers 1330*7851SDana.Myers@Sun.COM 1331*7851SDana.Myers@Sun.COM /* Subtable */ 1332*7851SDana.Myers@Sun.COM 13332623Smyers typedef struct acpi_mcfg_allocation 13340Sstevel@tonic-gate { 1335*7851SDana.Myers@Sun.COM UINT64 Address; /* Base address, processor-relative */ 13362623Smyers UINT16 PciSegment; /* PCI segment group number */ 13372623Smyers UINT8 StartBusNumber; /* Starting PCI Bus number */ 13382623Smyers UINT8 EndBusNumber; /* Final PCI Bus number */ 13392623Smyers UINT32 Reserved; 13402623Smyers 13412623Smyers } ACPI_MCFG_ALLOCATION; 13422623Smyers 13432623Smyers 13442623Smyers /******************************************************************************* 13452623Smyers * 13462623Smyers * SBST - Smart Battery Specification Table 13472623Smyers * 13482623Smyers ******************************************************************************/ 13492623Smyers 1350*7851SDana.Myers@Sun.COM typedef struct acpi_table_sbst 13512623Smyers { 1352*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13532623Smyers UINT32 WarningLevel; 13542623Smyers UINT32 LowLevel; 13552623Smyers UINT32 CriticalLevel; 13562623Smyers 1357*7851SDana.Myers@Sun.COM } ACPI_TABLE_SBST; 13582623Smyers 13592623Smyers 13602623Smyers /******************************************************************************* 13612623Smyers * 13622623Smyers * SLIT - System Locality Distance Information Table 13632623Smyers * 13642623Smyers ******************************************************************************/ 13652623Smyers 1366*7851SDana.Myers@Sun.COM typedef struct acpi_table_slit 13672623Smyers { 1368*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13692623Smyers UINT64 LocalityCount; 1370*7851SDana.Myers@Sun.COM UINT8 Entry[1]; /* Real size = localities^2 */ 13712623Smyers 1372*7851SDana.Myers@Sun.COM } ACPI_TABLE_SLIT; 13732623Smyers 13742623Smyers 13752623Smyers /******************************************************************************* 13762623Smyers * 13772623Smyers * SPCR - Serial Port Console Redirection table 13782623Smyers * 13792623Smyers ******************************************************************************/ 13802623Smyers 13812623Smyers typedef struct acpi_table_spcr 13822623Smyers { 1383*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 13842623Smyers UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ 13852623Smyers UINT8 Reserved[3]; 13862623Smyers ACPI_GENERIC_ADDRESS SerialPort; 13872623Smyers UINT8 InterruptType; 13882623Smyers UINT8 PcInterrupt; 13892623Smyers UINT32 Interrupt; 13902623Smyers UINT8 BaudRate; 13912623Smyers UINT8 Parity; 13922623Smyers UINT8 StopBits; 13932623Smyers UINT8 FlowControl; 13942623Smyers UINT8 TerminalType; 1395*7851SDana.Myers@Sun.COM UINT8 Reserved1; 13962623Smyers UINT16 PciDeviceId; 13972623Smyers UINT16 PciVendorId; 13982623Smyers UINT8 PciBus; 13992623Smyers UINT8 PciDevice; 14002623Smyers UINT8 PciFunction; 14012623Smyers UINT32 PciFlags; 14022623Smyers UINT8 PciSegment; 1403*7851SDana.Myers@Sun.COM UINT32 Reserved2; 14042623Smyers 14052623Smyers } ACPI_TABLE_SPCR; 14062623Smyers 14072623Smyers 14082623Smyers /******************************************************************************* 14092623Smyers * 14102623Smyers * SPMI - Server Platform Management Interface table 14112623Smyers * 14122623Smyers ******************************************************************************/ 14132623Smyers 14142623Smyers typedef struct acpi_table_spmi 14152623Smyers { 1416*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 14172623Smyers UINT8 Reserved; 14182623Smyers UINT8 InterfaceType; 14192623Smyers UINT16 SpecRevision; /* Version of IPMI */ 14202623Smyers UINT8 InterruptType; 14212623Smyers UINT8 GpeNumber; /* GPE assigned */ 1422*7851SDana.Myers@Sun.COM UINT8 Reserved1; 14232623Smyers UINT8 PciDeviceFlag; 14242623Smyers UINT32 Interrupt; 14252623Smyers ACPI_GENERIC_ADDRESS IpmiRegister; 14262623Smyers UINT8 PciSegment; 14272623Smyers UINT8 PciBus; 14282623Smyers UINT8 PciDevice; 14292623Smyers UINT8 PciFunction; 14302623Smyers 14312623Smyers } ACPI_TABLE_SPMI; 14322623Smyers 14332623Smyers 14342623Smyers /******************************************************************************* 14352623Smyers * 14362623Smyers * SRAT - System Resource Affinity Table 14372623Smyers * 14382623Smyers ******************************************************************************/ 14392623Smyers 1440*7851SDana.Myers@Sun.COM typedef struct acpi_table_srat 14412623Smyers { 1442*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1443*7851SDana.Myers@Sun.COM UINT32 TableRevision; /* Must be value '1' */ 1444*7851SDana.Myers@Sun.COM UINT64 Reserved; /* Reserved, must be zero */ 14452623Smyers 1446*7851SDana.Myers@Sun.COM } ACPI_TABLE_SRAT; 14472623Smyers 1448*7851SDana.Myers@Sun.COM /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 14492623Smyers 1450*7851SDana.Myers@Sun.COM enum AcpiSratType 1451*7851SDana.Myers@Sun.COM { 1452*7851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 1453*7851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 1454*7851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 1455*7851SDana.Myers@Sun.COM ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 1456*7851SDana.Myers@Sun.COM }; 14572623Smyers 1458*7851SDana.Myers@Sun.COM /* 1459*7851SDana.Myers@Sun.COM * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER 1460*7851SDana.Myers@Sun.COM */ 14612623Smyers 1462*7851SDana.Myers@Sun.COM /* 0: Processor Local APIC/SAPIC Affinity */ 14632623Smyers 1464*7851SDana.Myers@Sun.COM typedef struct acpi_srat_cpu_affinity 14652623Smyers { 1466*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 14672623Smyers UINT8 ProximityDomainLo; 14682623Smyers UINT8 ApicId; 1469*7851SDana.Myers@Sun.COM UINT32 Flags; 14702623Smyers UINT8 LocalSapicEid; 14712623Smyers UINT8 ProximityDomainHi[3]; 1472*7851SDana.Myers@Sun.COM UINT32 Reserved; /* Reserved, must be zero */ 14732623Smyers 1474*7851SDana.Myers@Sun.COM } ACPI_SRAT_CPU_AFFINITY; 1475*7851SDana.Myers@Sun.COM 1476*7851SDana.Myers@Sun.COM /* 1: Memory Affinity */ 14772623Smyers 1478*7851SDana.Myers@Sun.COM typedef struct acpi_srat_mem_affinity 14792623Smyers { 1480*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 14812623Smyers UINT32 ProximityDomain; 1482*7851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved, must be zero */ 14832623Smyers UINT64 BaseAddress; 1484*7851SDana.Myers@Sun.COM UINT64 Length; 1485*7851SDana.Myers@Sun.COM UINT32 Reserved1; 1486*7851SDana.Myers@Sun.COM UINT32 Flags; 1487*7851SDana.Myers@Sun.COM UINT64 Reserved2; /* Reserved, must be zero */ 14882623Smyers 1489*7851SDana.Myers@Sun.COM } ACPI_SRAT_MEM_AFFINITY; 1490*7851SDana.Myers@Sun.COM 1491*7851SDana.Myers@Sun.COM /* Flags */ 1492*7851SDana.Myers@Sun.COM 1493*7851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 1494*7851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 1495*7851SDana.Myers@Sun.COM #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 14962623Smyers 1497*7851SDana.Myers@Sun.COM /* 2: Processor Local X2_APIC Affinity (07/2008) */ 14982623Smyers 1499*7851SDana.Myers@Sun.COM typedef struct acpi_srat_x2apic_cpu_affinity 1500*7851SDana.Myers@Sun.COM { 1501*7851SDana.Myers@Sun.COM ACPI_SUBTABLE_HEADER Header; 1502*7851SDana.Myers@Sun.COM UINT16 Reserved; /* Reserved, must be zero */ 1503*7851SDana.Myers@Sun.COM UINT32 ProximityDomain; 1504*7851SDana.Myers@Sun.COM UINT32 ApicId; 1505*7851SDana.Myers@Sun.COM UINT32 Flags; 15062623Smyers 1507*7851SDana.Myers@Sun.COM } ACPI_SRAT_X2APIC_CPU_AFFINITY; 1508*7851SDana.Myers@Sun.COM 1509*7851SDana.Myers@Sun.COM /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ 1510*7851SDana.Myers@Sun.COM 1511*7851SDana.Myers@Sun.COM #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 15122623Smyers 15132623Smyers 15142623Smyers /******************************************************************************* 15152623Smyers * 15162623Smyers * TCPA - Trusted Computing Platform Alliance table 15172623Smyers * 15182623Smyers ******************************************************************************/ 15192623Smyers 15202623Smyers typedef struct acpi_table_tcpa 15212623Smyers { 1522*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 15232623Smyers UINT16 Reserved; 15242623Smyers UINT32 MaxLogLength; /* Maximum length for the event log area */ 15252623Smyers UINT64 LogAddress; /* Address of the event log area */ 15262623Smyers 15272623Smyers } ACPI_TABLE_TCPA; 15282623Smyers 15292623Smyers 15302623Smyers /******************************************************************************* 15312623Smyers * 1532*7851SDana.Myers@Sun.COM * UEFI - UEFI Boot optimization Table 1533*7851SDana.Myers@Sun.COM * 1534*7851SDana.Myers@Sun.COM ******************************************************************************/ 1535*7851SDana.Myers@Sun.COM 1536*7851SDana.Myers@Sun.COM typedef struct acpi_table_uefi 1537*7851SDana.Myers@Sun.COM { 1538*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1539*7851SDana.Myers@Sun.COM UINT8 Identifier[16]; /* UUID identifier */ 1540*7851SDana.Myers@Sun.COM UINT16 DataOffset; /* Offset of remaining data in table */ 1541*7851SDana.Myers@Sun.COM UINT8 Data; 1542*7851SDana.Myers@Sun.COM 1543*7851SDana.Myers@Sun.COM } ACPI_TABLE_UEFI; 1544*7851SDana.Myers@Sun.COM 1545*7851SDana.Myers@Sun.COM 1546*7851SDana.Myers@Sun.COM /******************************************************************************* 1547*7851SDana.Myers@Sun.COM * 1548*7851SDana.Myers@Sun.COM * WDAT - Watchdog Action Table 1549*7851SDana.Myers@Sun.COM * 1550*7851SDana.Myers@Sun.COM ******************************************************************************/ 1551*7851SDana.Myers@Sun.COM 1552*7851SDana.Myers@Sun.COM typedef struct acpi_table_wdat 1553*7851SDana.Myers@Sun.COM { 1554*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1555*7851SDana.Myers@Sun.COM UINT32 HeaderLength; /* Watchdog Header Length */ 1556*7851SDana.Myers@Sun.COM UINT16 PciSegment; /* PCI Segment number */ 1557*7851SDana.Myers@Sun.COM UINT8 PciBus; /* PCI Bus number */ 1558*7851SDana.Myers@Sun.COM UINT8 PciDevice; /* PCI Device number */ 1559*7851SDana.Myers@Sun.COM UINT8 PciFunction; /* PCI Function number */ 1560*7851SDana.Myers@Sun.COM UINT8 Reserved[3]; 1561*7851SDana.Myers@Sun.COM UINT32 TimerPeriod; /* Period of one timer count (msec) */ 1562*7851SDana.Myers@Sun.COM UINT32 MaxCount; /* Maximum counter value supported */ 1563*7851SDana.Myers@Sun.COM UINT32 MinCount; /* Minimum counter value */ 1564*7851SDana.Myers@Sun.COM UINT8 Flags; 1565*7851SDana.Myers@Sun.COM UINT8 Reserved2[3]; 1566*7851SDana.Myers@Sun.COM UINT32 Entries; /* Number of watchdog entries that follow */ 1567*7851SDana.Myers@Sun.COM 1568*7851SDana.Myers@Sun.COM } ACPI_TABLE_WDAT; 1569*7851SDana.Myers@Sun.COM 1570*7851SDana.Myers@Sun.COM /* WDAT Instruction Entries (actions) */ 1571*7851SDana.Myers@Sun.COM 1572*7851SDana.Myers@Sun.COM typedef struct acpi_wdat_entry 1573*7851SDana.Myers@Sun.COM { 1574*7851SDana.Myers@Sun.COM ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ 1575*7851SDana.Myers@Sun.COM 1576*7851SDana.Myers@Sun.COM } ACPI_WDAT_ENTRY; 1577*7851SDana.Myers@Sun.COM 1578*7851SDana.Myers@Sun.COM /* Values for Action field above */ 1579*7851SDana.Myers@Sun.COM 1580*7851SDana.Myers@Sun.COM enum AcpiWdatActions 1581*7851SDana.Myers@Sun.COM { 1582*7851SDana.Myers@Sun.COM ACPI_WDAT_RESET = 1, 1583*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1584*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_COUNTDOWN = 5, 1585*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_COUNTDOWN = 6, 1586*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_RUNNING_STATE = 8, 1587*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_RUNNING_STATE = 9, 1588*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_STOPPED_STATE = 10, 1589*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_STOPPED_STATE = 11, 1590*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_REBOOT = 16, 1591*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_REBOOT = 17, 1592*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_SHUTDOWN = 18, 1593*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_SHUTDOWN = 19, 1594*7851SDana.Myers@Sun.COM ACPI_WDAT_GET_STATUS = 32, 1595*7851SDana.Myers@Sun.COM ACPI_WDAT_SET_STATUS = 33, 1596*7851SDana.Myers@Sun.COM ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1597*7851SDana.Myers@Sun.COM }; 1598*7851SDana.Myers@Sun.COM 1599*7851SDana.Myers@Sun.COM /* Values for Instruction field above */ 1600*7851SDana.Myers@Sun.COM 1601*7851SDana.Myers@Sun.COM enum AcpiWdatInstructions 1602*7851SDana.Myers@Sun.COM { 1603*7851SDana.Myers@Sun.COM ACPI_WDAT_READ_VALUE = 0, 1604*7851SDana.Myers@Sun.COM ACPI_WDAT_READ_COUNTDOWN = 1, 1605*7851SDana.Myers@Sun.COM ACPI_WDAT_WRITE_VALUE = 2, 1606*7851SDana.Myers@Sun.COM ACPI_WDAT_WRITE_COUNTDOWN = 3, 1607*7851SDana.Myers@Sun.COM ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1608*7851SDana.Myers@Sun.COM ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1609*7851SDana.Myers@Sun.COM }; 1610*7851SDana.Myers@Sun.COM 1611*7851SDana.Myers@Sun.COM 1612*7851SDana.Myers@Sun.COM /******************************************************************************* 1613*7851SDana.Myers@Sun.COM * 16142623Smyers * WDRT - Watchdog Resource Table 16152623Smyers * 16162623Smyers ******************************************************************************/ 16170Sstevel@tonic-gate 16182623Smyers typedef struct acpi_table_wdrt 16192623Smyers { 1620*7851SDana.Myers@Sun.COM ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 16212623Smyers UINT32 HeaderLength; /* Watchdog Header Length */ 16222623Smyers UINT8 PciSegment; /* PCI Segment number */ 16232623Smyers UINT8 PciBus; /* PCI Bus number */ 16242623Smyers UINT8 PciDevice; /* PCI Device number */ 16252623Smyers UINT8 PciFunction; /* PCI Function number */ 16262623Smyers UINT32 TimerPeriod; /* Period of one timer count (msec) */ 16272623Smyers UINT32 MaxCount; /* Maximum counter value supported */ 16282623Smyers UINT32 MinCount; /* Minimum counter value */ 16292623Smyers UINT8 Flags; 16302623Smyers UINT8 Reserved[3]; 16312623Smyers UINT32 Entries; /* Number of watchdog entries that follow */ 16322623Smyers 16332623Smyers } ACPI_TABLE_WDRT; 16342623Smyers 1635*7851SDana.Myers@Sun.COM /* Flags */ 16362623Smyers 1637*7851SDana.Myers@Sun.COM #define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ 16382623Smyers 16392623Smyers 16402623Smyers /* Reset to default packing */ 16410Sstevel@tonic-gate 16420Sstevel@tonic-gate #pragma pack() 16430Sstevel@tonic-gate 16440Sstevel@tonic-gate #endif /* __ACTBL1_H__ */ 1645