xref: /onnv-gate/usr/src/uts/intel/sys/acpi/actbl1.h (revision 7851:e828bbb1689c)
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