10d02842fSSascha Wildner /******************************************************************************
20d02842fSSascha Wildner  *
30d02842fSSascha Wildner  * Name: actbl1.h - Additional ACPI table definitions
40d02842fSSascha Wildner  *
50d02842fSSascha Wildner  *****************************************************************************/
60d02842fSSascha Wildner 
7b4315fc7SSascha Wildner /******************************************************************************
8b4315fc7SSascha Wildner  *
9b4315fc7SSascha Wildner  * 1. Copyright Notice
10b4315fc7SSascha Wildner  *
11383048acSSascha Wildner  * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
120d02842fSSascha Wildner  * All rights reserved.
130d02842fSSascha Wildner  *
14b4315fc7SSascha Wildner  * 2. License
15b4315fc7SSascha Wildner  *
16b4315fc7SSascha Wildner  * 2.1. This is your license from Intel Corp. under its intellectual property
17b4315fc7SSascha Wildner  * rights. You may have additional license terms from the party that provided
18b4315fc7SSascha Wildner  * you this software, covering your right to use that party's intellectual
19b4315fc7SSascha Wildner  * property rights.
20b4315fc7SSascha Wildner  *
21b4315fc7SSascha Wildner  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22b4315fc7SSascha Wildner  * copy of the source code appearing in this file ("Covered Code") an
23b4315fc7SSascha Wildner  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24b4315fc7SSascha Wildner  * base code distributed originally by Intel ("Original Intel Code") to copy,
25b4315fc7SSascha Wildner  * make derivatives, distribute, use and display any portion of the Covered
26b4315fc7SSascha Wildner  * Code in any form, with the right to sublicense such rights; and
27b4315fc7SSascha Wildner  *
28b4315fc7SSascha Wildner  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29b4315fc7SSascha Wildner  * license (with the right to sublicense), under only those claims of Intel
30b4315fc7SSascha Wildner  * patents that are infringed by the Original Intel Code, to make, use, sell,
31b4315fc7SSascha Wildner  * offer to sell, and import the Covered Code and derivative works thereof
32b4315fc7SSascha Wildner  * solely to the minimum extent necessary to exercise the above copyright
33b4315fc7SSascha Wildner  * license, and in no event shall the patent license extend to any additions
34b4315fc7SSascha Wildner  * to or modifications of the Original Intel Code. No other license or right
35b4315fc7SSascha Wildner  * is granted directly or by implication, estoppel or otherwise;
36b4315fc7SSascha Wildner  *
37b4315fc7SSascha Wildner  * The above copyright and patent license is granted only if the following
38b4315fc7SSascha Wildner  * conditions are met:
39b4315fc7SSascha Wildner  *
40b4315fc7SSascha Wildner  * 3. Conditions
41b4315fc7SSascha Wildner  *
42b4315fc7SSascha Wildner  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43b4315fc7SSascha Wildner  * Redistribution of source code of any substantial portion of the Covered
44b4315fc7SSascha Wildner  * Code or modification with rights to further distribute source must include
45b4315fc7SSascha Wildner  * the above Copyright Notice, the above License, this list of Conditions,
46b4315fc7SSascha Wildner  * and the following Disclaimer and Export Compliance provision. In addition,
47b4315fc7SSascha Wildner  * Licensee must cause all Covered Code to which Licensee contributes to
48b4315fc7SSascha Wildner  * contain a file documenting the changes Licensee made to create that Covered
49b4315fc7SSascha Wildner  * Code and the date of any change. Licensee must include in that file the
50b4315fc7SSascha Wildner  * documentation of any changes made by any predecessor Licensee. Licensee
51b4315fc7SSascha Wildner  * must include a prominent statement that the modification is derived,
52b4315fc7SSascha Wildner  * directly or indirectly, from Original Intel Code.
53b4315fc7SSascha Wildner  *
54b4315fc7SSascha Wildner  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55b4315fc7SSascha Wildner  * Redistribution of source code of any substantial portion of the Covered
56b4315fc7SSascha Wildner  * Code or modification without rights to further distribute source must
57b4315fc7SSascha Wildner  * include the following Disclaimer and Export Compliance provision in the
58b4315fc7SSascha Wildner  * documentation and/or other materials provided with distribution. In
59b4315fc7SSascha Wildner  * addition, Licensee may not authorize further sublicense of source of any
60b4315fc7SSascha Wildner  * portion of the Covered Code, and must include terms to the effect that the
61b4315fc7SSascha Wildner  * license from Licensee to its licensee is limited to the intellectual
62b4315fc7SSascha Wildner  * property embodied in the software Licensee provides to its licensee, and
63b4315fc7SSascha Wildner  * not to intellectual property embodied in modifications its licensee may
64b4315fc7SSascha Wildner  * make.
65b4315fc7SSascha Wildner  *
66b4315fc7SSascha Wildner  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67b4315fc7SSascha Wildner  * substantial portion of the Covered Code or modification must reproduce the
68b4315fc7SSascha Wildner  * above Copyright Notice, and the following Disclaimer and Export Compliance
69b4315fc7SSascha Wildner  * provision in the documentation and/or other materials provided with the
70b4315fc7SSascha Wildner  * distribution.
71b4315fc7SSascha Wildner  *
72b4315fc7SSascha Wildner  * 3.4. Intel retains all right, title, and interest in and to the Original
73b4315fc7SSascha Wildner  * Intel Code.
74b4315fc7SSascha Wildner  *
75b4315fc7SSascha Wildner  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76b4315fc7SSascha Wildner  * Intel shall be used in advertising or otherwise to promote the sale, use or
77b4315fc7SSascha Wildner  * other dealings in products derived from or relating to the Covered Code
78b4315fc7SSascha Wildner  * without prior written authorization from Intel.
79b4315fc7SSascha Wildner  *
80b4315fc7SSascha Wildner  * 4. Disclaimer and Export Compliance
81b4315fc7SSascha Wildner  *
82b4315fc7SSascha Wildner  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83b4315fc7SSascha Wildner  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84b4315fc7SSascha Wildner  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85b4315fc7SSascha Wildner  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86b4315fc7SSascha Wildner  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87b4315fc7SSascha Wildner  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88b4315fc7SSascha Wildner  * PARTICULAR PURPOSE.
89b4315fc7SSascha Wildner  *
90b4315fc7SSascha Wildner  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91b4315fc7SSascha Wildner  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92b4315fc7SSascha Wildner  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93b4315fc7SSascha Wildner  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94b4315fc7SSascha Wildner  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95b4315fc7SSascha Wildner  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96b4315fc7SSascha Wildner  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97b4315fc7SSascha Wildner  * LIMITED REMEDY.
98b4315fc7SSascha Wildner  *
99b4315fc7SSascha Wildner  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100b4315fc7SSascha Wildner  * software or system incorporating such software without first obtaining any
101b4315fc7SSascha Wildner  * required license or other approval from the U. S. Department of Commerce or
102b4315fc7SSascha Wildner  * any other agency or department of the United States Government. In the
103b4315fc7SSascha Wildner  * event Licensee exports any such software from the United States or
104b4315fc7SSascha Wildner  * re-exports any such software from a foreign destination, Licensee shall
105b4315fc7SSascha Wildner  * ensure that the distribution and export/re-export of the software is in
106b4315fc7SSascha Wildner  * compliance with all laws, regulations, orders, or other restrictions of the
107b4315fc7SSascha Wildner  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108b4315fc7SSascha Wildner  * any of its subsidiaries will export/re-export any technical data, process,
109b4315fc7SSascha Wildner  * software, or service, directly or indirectly, to any country for which the
110b4315fc7SSascha Wildner  * United States government or any agency thereof requires an export license,
111b4315fc7SSascha Wildner  * other governmental approval, or letter of assurance, without first obtaining
112b4315fc7SSascha Wildner  * such license, approval or letter.
113b4315fc7SSascha Wildner  *
114b4315fc7SSascha Wildner  *****************************************************************************
115b4315fc7SSascha Wildner  *
116b4315fc7SSascha Wildner  * Alternatively, you may choose to be licensed under the terms of the
117b4315fc7SSascha Wildner  * following license:
118b4315fc7SSascha Wildner  *
1190d02842fSSascha Wildner  * Redistribution and use in source and binary forms, with or without
1200d02842fSSascha Wildner  * modification, are permitted provided that the following conditions
1210d02842fSSascha Wildner  * are met:
1220d02842fSSascha Wildner  * 1. Redistributions of source code must retain the above copyright
1230d02842fSSascha Wildner  *    notice, this list of conditions, and the following disclaimer,
1240d02842fSSascha Wildner  *    without modification.
1250d02842fSSascha Wildner  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1260d02842fSSascha Wildner  *    substantially similar to the "NO WARRANTY" disclaimer below
1270d02842fSSascha Wildner  *    ("Disclaimer") and any redistribution must be conditioned upon
1280d02842fSSascha Wildner  *    including a substantially similar Disclaimer requirement for further
1290d02842fSSascha Wildner  *    binary redistribution.
1300d02842fSSascha Wildner  * 3. Neither the names of the above-listed copyright holders nor the names
1310d02842fSSascha Wildner  *    of any contributors may be used to endorse or promote products derived
1320d02842fSSascha Wildner  *    from this software without specific prior written permission.
1330d02842fSSascha Wildner  *
134b4315fc7SSascha Wildner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135b4315fc7SSascha Wildner  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136b4315fc7SSascha Wildner  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137b4315fc7SSascha Wildner  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138b4315fc7SSascha Wildner  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139b4315fc7SSascha Wildner  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140b4315fc7SSascha Wildner  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141b4315fc7SSascha Wildner  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142b4315fc7SSascha Wildner  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143b4315fc7SSascha Wildner  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144b4315fc7SSascha Wildner  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145b4315fc7SSascha Wildner  *
146b4315fc7SSascha Wildner  * Alternatively, you may choose to be licensed under the terms of the
1470d02842fSSascha Wildner  * GNU General Public License ("GPL") version 2 as published by the Free
1480d02842fSSascha Wildner  * Software Foundation.
1490d02842fSSascha Wildner  *
150b4315fc7SSascha Wildner  *****************************************************************************/
1510d02842fSSascha Wildner 
1520d02842fSSascha Wildner #ifndef __ACTBL1_H__
1530d02842fSSascha Wildner #define __ACTBL1_H__
1540d02842fSSascha Wildner 
1550d02842fSSascha Wildner 
1560d02842fSSascha Wildner /*******************************************************************************
1570d02842fSSascha Wildner  *
1587bcb6cafSSascha Wildner  * Additional ACPI Tables
1590d02842fSSascha Wildner  *
1600d02842fSSascha Wildner  * These tables are not consumed directly by the ACPICA subsystem, but are
1610d02842fSSascha Wildner  * included here to support device drivers and the AML disassembler.
1620d02842fSSascha Wildner  *
1630d02842fSSascha Wildner  ******************************************************************************/
1640d02842fSSascha Wildner 
1650d02842fSSascha Wildner 
1660d02842fSSascha Wildner /*
1670d02842fSSascha Wildner  * Values for description table header signatures for tables defined in this
1680d02842fSSascha Wildner  * file. Useful because they make it more difficult to inadvertently type in
1690d02842fSSascha Wildner  * the wrong signature.
1700d02842fSSascha Wildner  */
171*0672a19bSSascha Wildner #define ACPI_SIG_AEST           "AEST"      /* Arm Error Source Table */
1727bcb6cafSSascha Wildner #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
1730d02842fSSascha Wildner #define ACPI_SIG_BERT           "BERT"      /* Boot Error Record Table */
1747bcb6cafSSascha Wildner #define ACPI_SIG_BGRT           "BGRT"      /* Boot Graphics Resource Table */
1757bcb6cafSSascha Wildner #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
17601d5d5dfSSascha Wildner #define ACPI_SIG_CEDT           "CEDT"      /* CXL Early Discovery Table */
1770d02842fSSascha Wildner #define ACPI_SIG_CPEP           "CPEP"      /* Corrected Platform Error Polling table */
1787bcb6cafSSascha Wildner #define ACPI_SIG_CSRT           "CSRT"      /* Core System Resource Table */
1797bcb6cafSSascha Wildner #define ACPI_SIG_DBG2           "DBG2"      /* Debug Port table type 2 */
1807bcb6cafSSascha Wildner #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
1817bcb6cafSSascha Wildner #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
1827bcb6cafSSascha Wildner #define ACPI_SIG_DRTM           "DRTM"      /* Dynamic Root of Trust for Measurement table */
1830d02842fSSascha Wildner #define ACPI_SIG_ECDT           "ECDT"      /* Embedded Controller Boot Resources Table */
1840d02842fSSascha Wildner #define ACPI_SIG_EINJ           "EINJ"      /* Error Injection table */
1850d02842fSSascha Wildner #define ACPI_SIG_ERST           "ERST"      /* Error Record Serialization Table */
1867bcb6cafSSascha Wildner #define ACPI_SIG_FPDT           "FPDT"      /* Firmware Performance Data Table */
1877bcb6cafSSascha Wildner #define ACPI_SIG_GTDT           "GTDT"      /* Generic Timer Description Table */
1880d02842fSSascha Wildner #define ACPI_SIG_HEST           "HEST"      /* Hardware Error Source Table */
1897bcb6cafSSascha Wildner #define ACPI_SIG_HMAT           "HMAT"      /* Heterogeneous Memory Attributes Table */
1907bcb6cafSSascha Wildner #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
1917bcb6cafSSascha Wildner #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
1920d02842fSSascha Wildner 
1937bcb6cafSSascha Wildner #define ACPI_SIG_S3PT           "S3PT"      /* S3 Performance (sub)Table */
1947bcb6cafSSascha Wildner #define ACPI_SIG_PCCS           "PCC"       /* PCC Shared Memory Region */
1957bcb6cafSSascha Wildner 
1967bcb6cafSSascha Wildner 
1977bcb6cafSSascha Wildner /* Reserved table signatures */
1987bcb6cafSSascha Wildner 
1997bcb6cafSSascha Wildner #define ACPI_SIG_MATR           "MATR"      /* Memory Address Translation Table */
2007bcb6cafSSascha Wildner #define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table */
2017bcb6cafSSascha Wildner 
2027bcb6cafSSascha Wildner /*
2037bcb6cafSSascha Wildner  * These tables have been seen in the field, but no definition has been found
2047bcb6cafSSascha Wildner  */
2057bcb6cafSSascha Wildner #ifdef ACPI_UNDEFINED_TABLES
2067bcb6cafSSascha Wildner #define ACPI_SIG_ATKG           "ATKG"
2077bcb6cafSSascha Wildner #define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
2087bcb6cafSSascha Wildner #define ACPI_SIG_IEIT           "IEIT"
2097bcb6cafSSascha Wildner #endif
2100d02842fSSascha Wildner 
2110d02842fSSascha Wildner /*
2120d02842fSSascha Wildner  * All tables must be byte-packed to match the ACPI specification, since
2130d02842fSSascha Wildner  * the tables are provided by the system BIOS.
2140d02842fSSascha Wildner  */
2150d02842fSSascha Wildner #pragma pack(1)
2160d02842fSSascha Wildner 
2170d02842fSSascha Wildner /*
2180d02842fSSascha Wildner  * Note: C bitfields are not used for this reason:
2190d02842fSSascha Wildner  *
2200d02842fSSascha Wildner  * "Bitfields are great and easy to read, but unfortunately the C language
2210d02842fSSascha Wildner  * does not specify the layout of bitfields in memory, which means they are
2220d02842fSSascha Wildner  * essentially useless for dealing with packed data in on-disk formats or
2230d02842fSSascha Wildner  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
2240d02842fSSascha Wildner  * this decision was a design error in C. Ritchie could have picked an order
2250d02842fSSascha Wildner  * and stuck with it." Norman Ramsey.
2260d02842fSSascha Wildner  * See http://stackoverflow.com/a/1053662/41661
2270d02842fSSascha Wildner  */
2280d02842fSSascha Wildner 
2290d02842fSSascha Wildner 
2300d02842fSSascha Wildner /*******************************************************************************
2310d02842fSSascha Wildner  *
2320d02842fSSascha Wildner  * Common subtable headers
2330d02842fSSascha Wildner  *
2340d02842fSSascha Wildner  ******************************************************************************/
2350d02842fSSascha Wildner 
2360d02842fSSascha Wildner /* Generic subtable header (used in MADT, SRAT, etc.) */
2370d02842fSSascha Wildner 
2380d02842fSSascha Wildner typedef struct acpi_subtable_header
2390d02842fSSascha Wildner {
2400d02842fSSascha Wildner     UINT8                   Type;
2410d02842fSSascha Wildner     UINT8                   Length;
2420d02842fSSascha Wildner 
2430d02842fSSascha Wildner } ACPI_SUBTABLE_HEADER;
2440d02842fSSascha Wildner 
2450d02842fSSascha Wildner 
2460d02842fSSascha Wildner /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
2470d02842fSSascha Wildner 
2480d02842fSSascha Wildner typedef struct acpi_whea_header
2490d02842fSSascha Wildner {
2500d02842fSSascha Wildner     UINT8                   Action;
2510d02842fSSascha Wildner     UINT8                   Instruction;
2520d02842fSSascha Wildner     UINT8                   Flags;
2530d02842fSSascha Wildner     UINT8                   Reserved;
2540d02842fSSascha Wildner     ACPI_GENERIC_ADDRESS    RegisterRegion;
2550d02842fSSascha Wildner     UINT64                  Value;              /* Value used with Read/Write register */
2560d02842fSSascha Wildner     UINT64                  Mask;               /* Bitmask required for this register instruction */
2570d02842fSSascha Wildner 
2580d02842fSSascha Wildner } ACPI_WHEA_HEADER;
2590d02842fSSascha Wildner 
2600d02842fSSascha Wildner 
2610d02842fSSascha Wildner /*******************************************************************************
2620d02842fSSascha Wildner  *
2637bcb6cafSSascha Wildner  * ASF - Alert Standard Format table (Signature "ASF!")
2647bcb6cafSSascha Wildner  *       Revision 0x10
2657bcb6cafSSascha Wildner  *
2667bcb6cafSSascha Wildner  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
2677bcb6cafSSascha Wildner  *
2687bcb6cafSSascha Wildner  ******************************************************************************/
2697bcb6cafSSascha Wildner 
2707bcb6cafSSascha Wildner typedef struct acpi_table_asf
2717bcb6cafSSascha Wildner {
2727bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
2737bcb6cafSSascha Wildner 
2747bcb6cafSSascha Wildner } ACPI_TABLE_ASF;
2757bcb6cafSSascha Wildner 
2767bcb6cafSSascha Wildner 
2777bcb6cafSSascha Wildner /* ASF subtable header */
2787bcb6cafSSascha Wildner 
2797bcb6cafSSascha Wildner typedef struct acpi_asf_header
2807bcb6cafSSascha Wildner {
2817bcb6cafSSascha Wildner     UINT8                   Type;
2827bcb6cafSSascha Wildner     UINT8                   Reserved;
2837bcb6cafSSascha Wildner     UINT16                  Length;
2847bcb6cafSSascha Wildner 
2857bcb6cafSSascha Wildner } ACPI_ASF_HEADER;
2867bcb6cafSSascha Wildner 
2877bcb6cafSSascha Wildner 
2887bcb6cafSSascha Wildner /* Values for Type field above */
2897bcb6cafSSascha Wildner 
2907bcb6cafSSascha Wildner enum AcpiAsfType
2917bcb6cafSSascha Wildner {
2927bcb6cafSSascha Wildner     ACPI_ASF_TYPE_INFO          = 0,
2937bcb6cafSSascha Wildner     ACPI_ASF_TYPE_ALERT         = 1,
2947bcb6cafSSascha Wildner     ACPI_ASF_TYPE_CONTROL       = 2,
2957bcb6cafSSascha Wildner     ACPI_ASF_TYPE_BOOT          = 3,
2967bcb6cafSSascha Wildner     ACPI_ASF_TYPE_ADDRESS       = 4,
2977bcb6cafSSascha Wildner     ACPI_ASF_TYPE_RESERVED      = 5
2987bcb6cafSSascha Wildner };
2997bcb6cafSSascha Wildner 
3007bcb6cafSSascha Wildner /*
3017bcb6cafSSascha Wildner  * ASF subtables
3027bcb6cafSSascha Wildner  */
3037bcb6cafSSascha Wildner 
3047bcb6cafSSascha Wildner /* 0: ASF Information */
3057bcb6cafSSascha Wildner 
3067bcb6cafSSascha Wildner typedef struct acpi_asf_info
3077bcb6cafSSascha Wildner {
3087bcb6cafSSascha Wildner     ACPI_ASF_HEADER         Header;
3097bcb6cafSSascha Wildner     UINT8                   MinResetValue;
3107bcb6cafSSascha Wildner     UINT8                   MinPollInterval;
3117bcb6cafSSascha Wildner     UINT16                  SystemId;
3127bcb6cafSSascha Wildner     UINT32                  MfgId;
3137bcb6cafSSascha Wildner     UINT8                   Flags;
3147bcb6cafSSascha Wildner     UINT8                   Reserved2[3];
3157bcb6cafSSascha Wildner 
3167bcb6cafSSascha Wildner } ACPI_ASF_INFO;
3177bcb6cafSSascha Wildner 
3187bcb6cafSSascha Wildner /* Masks for Flags field above */
3197bcb6cafSSascha Wildner 
3207bcb6cafSSascha Wildner #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
3217bcb6cafSSascha Wildner 
3227bcb6cafSSascha Wildner 
3237bcb6cafSSascha Wildner /* 1: ASF Alerts */
3247bcb6cafSSascha Wildner 
3257bcb6cafSSascha Wildner typedef struct acpi_asf_alert
3267bcb6cafSSascha Wildner {
3277bcb6cafSSascha Wildner     ACPI_ASF_HEADER         Header;
3287bcb6cafSSascha Wildner     UINT8                   AssertMask;
3297bcb6cafSSascha Wildner     UINT8                   DeassertMask;
3307bcb6cafSSascha Wildner     UINT8                   Alerts;
3317bcb6cafSSascha Wildner     UINT8                   DataLength;
3327bcb6cafSSascha Wildner 
3337bcb6cafSSascha Wildner } ACPI_ASF_ALERT;
3347bcb6cafSSascha Wildner 
3357bcb6cafSSascha Wildner typedef struct acpi_asf_alert_data
3367bcb6cafSSascha Wildner {
3377bcb6cafSSascha Wildner     UINT8                   Address;
3387bcb6cafSSascha Wildner     UINT8                   Command;
3397bcb6cafSSascha Wildner     UINT8                   Mask;
3407bcb6cafSSascha Wildner     UINT8                   Value;
3417bcb6cafSSascha Wildner     UINT8                   SensorType;
3427bcb6cafSSascha Wildner     UINT8                   Type;
3437bcb6cafSSascha Wildner     UINT8                   Offset;
3447bcb6cafSSascha Wildner     UINT8                   SourceType;
3457bcb6cafSSascha Wildner     UINT8                   Severity;
3467bcb6cafSSascha Wildner     UINT8                   SensorNumber;
3477bcb6cafSSascha Wildner     UINT8                   Entity;
3487bcb6cafSSascha Wildner     UINT8                   Instance;
3497bcb6cafSSascha Wildner 
3507bcb6cafSSascha Wildner } ACPI_ASF_ALERT_DATA;
3517bcb6cafSSascha Wildner 
3527bcb6cafSSascha Wildner 
3537bcb6cafSSascha Wildner /* 2: ASF Remote Control */
3547bcb6cafSSascha Wildner 
3557bcb6cafSSascha Wildner typedef struct acpi_asf_remote
3567bcb6cafSSascha Wildner {
3577bcb6cafSSascha Wildner     ACPI_ASF_HEADER         Header;
3587bcb6cafSSascha Wildner     UINT8                   Controls;
3597bcb6cafSSascha Wildner     UINT8                   DataLength;
3607bcb6cafSSascha Wildner     UINT16                  Reserved2;
3617bcb6cafSSascha Wildner 
3627bcb6cafSSascha Wildner } ACPI_ASF_REMOTE;
3637bcb6cafSSascha Wildner 
3647bcb6cafSSascha Wildner typedef struct acpi_asf_control_data
3657bcb6cafSSascha Wildner {
3667bcb6cafSSascha Wildner     UINT8                   Function;
3677bcb6cafSSascha Wildner     UINT8                   Address;
3687bcb6cafSSascha Wildner     UINT8                   Command;
3697bcb6cafSSascha Wildner     UINT8                   Value;
3707bcb6cafSSascha Wildner 
3717bcb6cafSSascha Wildner } ACPI_ASF_CONTROL_DATA;
3727bcb6cafSSascha Wildner 
3737bcb6cafSSascha Wildner 
3747bcb6cafSSascha Wildner /* 3: ASF RMCP Boot Options */
3757bcb6cafSSascha Wildner 
3767bcb6cafSSascha Wildner typedef struct acpi_asf_rmcp
3777bcb6cafSSascha Wildner {
3787bcb6cafSSascha Wildner     ACPI_ASF_HEADER         Header;
3797bcb6cafSSascha Wildner     UINT8                   Capabilities[7];
3807bcb6cafSSascha Wildner     UINT8                   CompletionCode;
3817bcb6cafSSascha Wildner     UINT32                  EnterpriseId;
3827bcb6cafSSascha Wildner     UINT8                   Command;
3837bcb6cafSSascha Wildner     UINT16                  Parameter;
3847bcb6cafSSascha Wildner     UINT16                  BootOptions;
3857bcb6cafSSascha Wildner     UINT16                  OemParameters;
3867bcb6cafSSascha Wildner 
3877bcb6cafSSascha Wildner } ACPI_ASF_RMCP;
3887bcb6cafSSascha Wildner 
3897bcb6cafSSascha Wildner 
3907bcb6cafSSascha Wildner /* 4: ASF Address */
3917bcb6cafSSascha Wildner 
3927bcb6cafSSascha Wildner typedef struct acpi_asf_address
3937bcb6cafSSascha Wildner {
3947bcb6cafSSascha Wildner     ACPI_ASF_HEADER         Header;
3957bcb6cafSSascha Wildner     UINT8                   EpromAddress;
3967bcb6cafSSascha Wildner     UINT8                   Devices;
3977bcb6cafSSascha Wildner 
3987bcb6cafSSascha Wildner } ACPI_ASF_ADDRESS;
3997bcb6cafSSascha Wildner 
4007bcb6cafSSascha Wildner 
4017bcb6cafSSascha Wildner /*******************************************************************************
4027bcb6cafSSascha Wildner  *
4030d02842fSSascha Wildner  * BERT - Boot Error Record Table (ACPI 4.0)
4040d02842fSSascha Wildner  *        Version 1
4050d02842fSSascha Wildner  *
4060d02842fSSascha Wildner  ******************************************************************************/
4070d02842fSSascha Wildner 
4080d02842fSSascha Wildner typedef struct acpi_table_bert
4090d02842fSSascha Wildner {
4100d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
4110d02842fSSascha Wildner     UINT32                  RegionLength;       /* Length of the boot error region */
4120d02842fSSascha Wildner     UINT64                  Address;            /* Physical address of the error region */
4130d02842fSSascha Wildner 
4140d02842fSSascha Wildner } ACPI_TABLE_BERT;
4150d02842fSSascha Wildner 
4160d02842fSSascha Wildner 
4170d02842fSSascha Wildner /* Boot Error Region (not a subtable, pointed to by Address field above) */
4180d02842fSSascha Wildner 
4190d02842fSSascha Wildner typedef struct acpi_bert_region
4200d02842fSSascha Wildner {
4210d02842fSSascha Wildner     UINT32                  BlockStatus;        /* Type of error information */
4220d02842fSSascha Wildner     UINT32                  RawDataOffset;      /* Offset to raw error data */
4230d02842fSSascha Wildner     UINT32                  RawDataLength;      /* Length of raw error data */
4240d02842fSSascha Wildner     UINT32                  DataLength;         /* Length of generic error data */
4250d02842fSSascha Wildner     UINT32                  ErrorSeverity;      /* Severity code */
4260d02842fSSascha Wildner 
4270d02842fSSascha Wildner } ACPI_BERT_REGION;
4280d02842fSSascha Wildner 
4290d02842fSSascha Wildner /* Values for BlockStatus flags above */
4300d02842fSSascha Wildner 
4310d02842fSSascha Wildner #define ACPI_BERT_UNCORRECTABLE             (1)
4320d02842fSSascha Wildner #define ACPI_BERT_CORRECTABLE               (1<<1)
4330d02842fSSascha Wildner #define ACPI_BERT_MULTIPLE_UNCORRECTABLE    (1<<2)
4340d02842fSSascha Wildner #define ACPI_BERT_MULTIPLE_CORRECTABLE      (1<<3)
4350d02842fSSascha Wildner #define ACPI_BERT_ERROR_ENTRY_COUNT         (0xFF<<4) /* 8 bits, error count */
4360d02842fSSascha Wildner 
4370d02842fSSascha Wildner /* Values for ErrorSeverity above */
4380d02842fSSascha Wildner 
4390d02842fSSascha Wildner enum AcpiBertErrorSeverity
4400d02842fSSascha Wildner {
4410d02842fSSascha Wildner     ACPI_BERT_ERROR_CORRECTABLE     = 0,
4420d02842fSSascha Wildner     ACPI_BERT_ERROR_FATAL           = 1,
4430d02842fSSascha Wildner     ACPI_BERT_ERROR_CORRECTED       = 2,
4440d02842fSSascha Wildner     ACPI_BERT_ERROR_NONE            = 3,
4450d02842fSSascha Wildner     ACPI_BERT_ERROR_RESERVED        = 4     /* 4 and greater are reserved */
4460d02842fSSascha Wildner };
4470d02842fSSascha Wildner 
4480d02842fSSascha Wildner /*
4490d02842fSSascha Wildner  * Note: The generic error data that follows the ErrorSeverity field above
4500d02842fSSascha Wildner  * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
4510d02842fSSascha Wildner  */
4520d02842fSSascha Wildner 
4530d02842fSSascha Wildner 
4540d02842fSSascha Wildner /*******************************************************************************
4550d02842fSSascha Wildner  *
4567bcb6cafSSascha Wildner  * BGRT - Boot Graphics Resource Table (ACPI 5.0)
4577bcb6cafSSascha Wildner  *        Version 1
4587bcb6cafSSascha Wildner  *
4597bcb6cafSSascha Wildner  ******************************************************************************/
4607bcb6cafSSascha Wildner 
4617bcb6cafSSascha Wildner typedef struct acpi_table_bgrt
4627bcb6cafSSascha Wildner {
4637bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
4647bcb6cafSSascha Wildner     UINT16                  Version;
4657bcb6cafSSascha Wildner     UINT8                   Status;
4667bcb6cafSSascha Wildner     UINT8                   ImageType;
4677bcb6cafSSascha Wildner     UINT64                  ImageAddress;
4687bcb6cafSSascha Wildner     UINT32                  ImageOffsetX;
4697bcb6cafSSascha Wildner     UINT32                  ImageOffsetY;
4707bcb6cafSSascha Wildner 
4717bcb6cafSSascha Wildner } ACPI_TABLE_BGRT;
4727bcb6cafSSascha Wildner 
4737bcb6cafSSascha Wildner /* Flags for Status field above */
4747bcb6cafSSascha Wildner 
4757bcb6cafSSascha Wildner #define ACPI_BGRT_DISPLAYED                 (1)
4767bcb6cafSSascha Wildner #define ACPI_BGRT_ORIENTATION_OFFSET        (3 << 1)
4777bcb6cafSSascha Wildner 
4787bcb6cafSSascha Wildner 
4797bcb6cafSSascha Wildner /*******************************************************************************
4807bcb6cafSSascha Wildner  *
4817bcb6cafSSascha Wildner  * BOOT - Simple Boot Flag Table
4827bcb6cafSSascha Wildner  *        Version 1
4837bcb6cafSSascha Wildner  *
4847bcb6cafSSascha Wildner  * Conforms to the "Simple Boot Flag Specification", Version 2.1
4857bcb6cafSSascha Wildner  *
4867bcb6cafSSascha Wildner  ******************************************************************************/
4877bcb6cafSSascha Wildner 
4887bcb6cafSSascha Wildner typedef struct acpi_table_boot
4897bcb6cafSSascha Wildner {
4907bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
4917bcb6cafSSascha Wildner     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
4927bcb6cafSSascha Wildner     UINT8                   Reserved[3];
4937bcb6cafSSascha Wildner 
4947bcb6cafSSascha Wildner } ACPI_TABLE_BOOT;
4957bcb6cafSSascha Wildner 
4967bcb6cafSSascha Wildner 
4977bcb6cafSSascha Wildner /*******************************************************************************
4987bcb6cafSSascha Wildner  *
49901d5d5dfSSascha Wildner  * CEDT - CXL Early Discovery Table
50001d5d5dfSSascha Wildner  *        Version 1
50101d5d5dfSSascha Wildner  *
50201d5d5dfSSascha Wildner  * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
50301d5d5dfSSascha Wildner  *
50401d5d5dfSSascha Wildner  ******************************************************************************/
50501d5d5dfSSascha Wildner 
50601d5d5dfSSascha Wildner typedef struct acpi_table_cedt
50701d5d5dfSSascha Wildner {
50801d5d5dfSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
50901d5d5dfSSascha Wildner 
51001d5d5dfSSascha Wildner } ACPI_TABLE_CEDT;
51101d5d5dfSSascha Wildner 
51201d5d5dfSSascha Wildner /* CEDT subtable header (Performance Record Structure) */
51301d5d5dfSSascha Wildner 
51401d5d5dfSSascha Wildner typedef struct acpi_cedt_header
51501d5d5dfSSascha Wildner {
51601d5d5dfSSascha Wildner     UINT8                   Type;
51701d5d5dfSSascha Wildner     UINT8                   Reserved;
51801d5d5dfSSascha Wildner     UINT16                  Length;
51901d5d5dfSSascha Wildner 
52001d5d5dfSSascha Wildner } ACPI_CEDT_HEADER;
52101d5d5dfSSascha Wildner 
52201d5d5dfSSascha Wildner /* Values for Type field above */
52301d5d5dfSSascha Wildner 
52401d5d5dfSSascha Wildner enum AcpiCedtType
52501d5d5dfSSascha Wildner {
52601d5d5dfSSascha Wildner     ACPI_CEDT_TYPE_CHBS                 = 0,
5274898bea4SSascha Wildner     ACPI_CEDT_TYPE_CFMWS                = 1,
5284898bea4SSascha Wildner     ACPI_CEDT_TYPE_RESERVED             = 2,
52901d5d5dfSSascha Wildner };
53001d5d5dfSSascha Wildner 
5314898bea4SSascha Wildner /* Values for version field above */
5324898bea4SSascha Wildner 
5334898bea4SSascha Wildner #define ACPI_CEDT_CHBS_VERSION_CXL11    (0)
5344898bea4SSascha Wildner #define ACPI_CEDT_CHBS_VERSION_CXL20    (1)
5354898bea4SSascha Wildner 
5364898bea4SSascha Wildner /* Values for length field above */
5374898bea4SSascha Wildner 
5384898bea4SSascha Wildner #define ACPI_CEDT_CHBS_LENGTH_CXL11     (0x2000)
5394898bea4SSascha Wildner #define ACPI_CEDT_CHBS_LENGTH_CXL20     (0x10000)
54001d5d5dfSSascha Wildner 
54101d5d5dfSSascha Wildner /*
54201d5d5dfSSascha Wildner  * CEDT subtables
54301d5d5dfSSascha Wildner  */
54401d5d5dfSSascha Wildner 
54501d5d5dfSSascha Wildner /* 0: CXL Host Bridge Structure */
54601d5d5dfSSascha Wildner 
54701d5d5dfSSascha Wildner typedef struct acpi_cedt_chbs
54801d5d5dfSSascha Wildner {
54901d5d5dfSSascha Wildner     ACPI_CEDT_HEADER        Header;
55001d5d5dfSSascha Wildner     UINT32                  Uid;
55101d5d5dfSSascha Wildner     UINT32                  CxlVersion;
55201d5d5dfSSascha Wildner     UINT32                  Reserved;
55301d5d5dfSSascha Wildner     UINT64                  Base;
55401d5d5dfSSascha Wildner     UINT64                  Length;
55501d5d5dfSSascha Wildner 
55601d5d5dfSSascha Wildner } ACPI_CEDT_CHBS;
55701d5d5dfSSascha Wildner 
55801d5d5dfSSascha Wildner 
5594898bea4SSascha Wildner /* 1: CXL Fixed Memory Window Structure */
5604898bea4SSascha Wildner 
5614898bea4SSascha Wildner typedef struct acpi_cedt_cfmws
5624898bea4SSascha Wildner {
5634898bea4SSascha Wildner     ACPI_CEDT_HEADER        Header;
5644898bea4SSascha Wildner     UINT32                  Reserved1;
5654898bea4SSascha Wildner     UINT64                  BaseHpa;
5664898bea4SSascha Wildner     UINT64                  WindowSize;
5674898bea4SSascha Wildner     UINT8                   InterleaveWays;
5684898bea4SSascha Wildner     UINT8                   InterleaveArithmetic;
5694898bea4SSascha Wildner     UINT16                  Reserved2;
5704898bea4SSascha Wildner     UINT32                  Granularity;
5714898bea4SSascha Wildner     UINT16                  Restrictions;
5724898bea4SSascha Wildner     UINT16                  QtgId;
5734898bea4SSascha Wildner     UINT32                  InterleaveTargets[];
5744898bea4SSascha Wildner 
5754898bea4SSascha Wildner } ACPI_CEDT_CFMWS;
5764898bea4SSascha Wildner 
5774898bea4SSascha Wildner /* Values for Interleave Arithmetic field above */
5784898bea4SSascha Wildner 
5794898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO	(0)
5804898bea4SSascha Wildner 
5814898bea4SSascha Wildner /* Values for Restrictions field above */
5824898bea4SSascha Wildner 
5834898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2		(1)
5844898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3		(1<<1)
5854898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE	(1<<2)
5864898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_PMEM		(1<<3)
5874898bea4SSascha Wildner #define ACPI_CEDT_CFMWS_RESTRICT_FIXED		(1<<4)
5884898bea4SSascha Wildner 
5894898bea4SSascha Wildner 
59001d5d5dfSSascha Wildner /*******************************************************************************
59101d5d5dfSSascha Wildner  *
5920d02842fSSascha Wildner  * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
5930d02842fSSascha Wildner  *        Version 1
5940d02842fSSascha Wildner  *
5950d02842fSSascha Wildner  ******************************************************************************/
5960d02842fSSascha Wildner 
5970d02842fSSascha Wildner typedef struct acpi_table_cpep
5980d02842fSSascha Wildner {
5990d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
6000d02842fSSascha Wildner     UINT64                  Reserved;
6010d02842fSSascha Wildner 
6020d02842fSSascha Wildner } ACPI_TABLE_CPEP;
6030d02842fSSascha Wildner 
6040d02842fSSascha Wildner 
6050d02842fSSascha Wildner /* Subtable */
6060d02842fSSascha Wildner 
6070d02842fSSascha Wildner typedef struct acpi_cpep_polling
6080d02842fSSascha Wildner {
6090d02842fSSascha Wildner     ACPI_SUBTABLE_HEADER    Header;
6100d02842fSSascha Wildner     UINT8                   Id;                 /* Processor ID */
6110d02842fSSascha Wildner     UINT8                   Eid;                /* Processor EID */
6120d02842fSSascha Wildner     UINT32                  Interval;           /* Polling interval (msec) */
6130d02842fSSascha Wildner 
6140d02842fSSascha Wildner } ACPI_CPEP_POLLING;
6150d02842fSSascha Wildner 
6160d02842fSSascha Wildner 
6170d02842fSSascha Wildner /*******************************************************************************
6180d02842fSSascha Wildner  *
6197bcb6cafSSascha Wildner  * CSRT - Core System Resource Table
6207bcb6cafSSascha Wildner  *        Version 0
6217bcb6cafSSascha Wildner  *
6227bcb6cafSSascha Wildner  * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
6237bcb6cafSSascha Wildner  *
6247bcb6cafSSascha Wildner  ******************************************************************************/
6257bcb6cafSSascha Wildner 
6267bcb6cafSSascha Wildner typedef struct acpi_table_csrt
6277bcb6cafSSascha Wildner {
6287bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
6297bcb6cafSSascha Wildner 
6307bcb6cafSSascha Wildner } ACPI_TABLE_CSRT;
6317bcb6cafSSascha Wildner 
6327bcb6cafSSascha Wildner 
6337bcb6cafSSascha Wildner /* Resource Group subtable */
6347bcb6cafSSascha Wildner 
6357bcb6cafSSascha Wildner typedef struct acpi_csrt_group
6367bcb6cafSSascha Wildner {
6377bcb6cafSSascha Wildner     UINT32                  Length;
6387bcb6cafSSascha Wildner     UINT32                  VendorId;
6397bcb6cafSSascha Wildner     UINT32                  SubvendorId;
6407bcb6cafSSascha Wildner     UINT16                  DeviceId;
6417bcb6cafSSascha Wildner     UINT16                  SubdeviceId;
6427bcb6cafSSascha Wildner     UINT16                  Revision;
6437bcb6cafSSascha Wildner     UINT16                  Reserved;
6447bcb6cafSSascha Wildner     UINT32                  SharedInfoLength;
6457bcb6cafSSascha Wildner 
6467bcb6cafSSascha Wildner     /* Shared data immediately follows (Length = SharedInfoLength) */
6477bcb6cafSSascha Wildner 
6487bcb6cafSSascha Wildner } ACPI_CSRT_GROUP;
6497bcb6cafSSascha Wildner 
6507bcb6cafSSascha Wildner /* Shared Info subtable */
6517bcb6cafSSascha Wildner 
6527bcb6cafSSascha Wildner typedef struct acpi_csrt_shared_info
6537bcb6cafSSascha Wildner {
6547bcb6cafSSascha Wildner     UINT16                  MajorVersion;
6557bcb6cafSSascha Wildner     UINT16                  MinorVersion;
6567bcb6cafSSascha Wildner     UINT32                  MmioBaseLow;
6577bcb6cafSSascha Wildner     UINT32                  MmioBaseHigh;
6587bcb6cafSSascha Wildner     UINT32                  GsiInterrupt;
6597bcb6cafSSascha Wildner     UINT8                   InterruptPolarity;
6607bcb6cafSSascha Wildner     UINT8                   InterruptMode;
6617bcb6cafSSascha Wildner     UINT8                   NumChannels;
6627bcb6cafSSascha Wildner     UINT8                   DmaAddressWidth;
6637bcb6cafSSascha Wildner     UINT16                  BaseRequestLine;
6647bcb6cafSSascha Wildner     UINT16                  NumHandshakeSignals;
6657bcb6cafSSascha Wildner     UINT32                  MaxBlockSize;
6667bcb6cafSSascha Wildner 
6677bcb6cafSSascha Wildner     /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
6687bcb6cafSSascha Wildner 
6697bcb6cafSSascha Wildner } ACPI_CSRT_SHARED_INFO;
6707bcb6cafSSascha Wildner 
6717bcb6cafSSascha Wildner /* Resource Descriptor subtable */
6727bcb6cafSSascha Wildner 
6737bcb6cafSSascha Wildner typedef struct acpi_csrt_descriptor
6747bcb6cafSSascha Wildner {
6757bcb6cafSSascha Wildner     UINT32                  Length;
6767bcb6cafSSascha Wildner     UINT16                  Type;
6777bcb6cafSSascha Wildner     UINT16                  Subtype;
6787bcb6cafSSascha Wildner     UINT32                  Uid;
6797bcb6cafSSascha Wildner 
6807bcb6cafSSascha Wildner     /* Resource-specific information immediately follows */
6817bcb6cafSSascha Wildner 
6827bcb6cafSSascha Wildner } ACPI_CSRT_DESCRIPTOR;
6837bcb6cafSSascha Wildner 
6847bcb6cafSSascha Wildner 
6857bcb6cafSSascha Wildner /* Resource Types */
6867bcb6cafSSascha Wildner 
6877bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_INTERRUPT    0x0001
6887bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_TIMER        0x0002
6897bcb6cafSSascha Wildner #define ACPI_CSRT_TYPE_DMA          0x0003
6907bcb6cafSSascha Wildner 
6917bcb6cafSSascha Wildner /* Resource Subtypes */
6927bcb6cafSSascha Wildner 
6937bcb6cafSSascha Wildner #define ACPI_CSRT_XRUPT_LINE        0x0000
6947bcb6cafSSascha Wildner #define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
6957bcb6cafSSascha Wildner #define ACPI_CSRT_TIMER             0x0000
6967bcb6cafSSascha Wildner #define ACPI_CSRT_DMA_CHANNEL       0x0000
6977bcb6cafSSascha Wildner #define ACPI_CSRT_DMA_CONTROLLER    0x0001
6987bcb6cafSSascha Wildner 
6997bcb6cafSSascha Wildner 
7007bcb6cafSSascha Wildner /*******************************************************************************
7017bcb6cafSSascha Wildner  *
7027bcb6cafSSascha Wildner  * DBG2 - Debug Port Table 2
7037bcb6cafSSascha Wildner  *        Version 0 (Both main table and subtables)
7047bcb6cafSSascha Wildner  *
705*0672a19bSSascha Wildner  * Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020
7067bcb6cafSSascha Wildner  *
7077bcb6cafSSascha Wildner  ******************************************************************************/
7087bcb6cafSSascha Wildner 
7097bcb6cafSSascha Wildner typedef struct acpi_table_dbg2
7107bcb6cafSSascha Wildner {
7117bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
7127bcb6cafSSascha Wildner     UINT32                  InfoOffset;
7137bcb6cafSSascha Wildner     UINT32                  InfoCount;
7147bcb6cafSSascha Wildner 
7157bcb6cafSSascha Wildner } ACPI_TABLE_DBG2;
7167bcb6cafSSascha Wildner 
7177bcb6cafSSascha Wildner 
7187bcb6cafSSascha Wildner typedef struct acpi_dbg2_header
7197bcb6cafSSascha Wildner {
7207bcb6cafSSascha Wildner     UINT32                  InfoOffset;
7217bcb6cafSSascha Wildner     UINT32                  InfoCount;
7227bcb6cafSSascha Wildner 
7237bcb6cafSSascha Wildner } ACPI_DBG2_HEADER;
7247bcb6cafSSascha Wildner 
7257bcb6cafSSascha Wildner 
7267bcb6cafSSascha Wildner /* Debug Device Information Subtable */
7277bcb6cafSSascha Wildner 
7287bcb6cafSSascha Wildner typedef struct acpi_dbg2_device
7297bcb6cafSSascha Wildner {
7307bcb6cafSSascha Wildner     UINT8                   Revision;
7317bcb6cafSSascha Wildner     UINT16                  Length;
7327bcb6cafSSascha Wildner     UINT8                   RegisterCount;      /* Number of BaseAddress registers */
7337bcb6cafSSascha Wildner     UINT16                  NamepathLength;
7347bcb6cafSSascha Wildner     UINT16                  NamepathOffset;
7357bcb6cafSSascha Wildner     UINT16                  OemDataLength;
7367bcb6cafSSascha Wildner     UINT16                  OemDataOffset;
7377bcb6cafSSascha Wildner     UINT16                  PortType;
7387bcb6cafSSascha Wildner     UINT16                  PortSubtype;
7397bcb6cafSSascha Wildner     UINT16                  Reserved;
7407bcb6cafSSascha Wildner     UINT16                  BaseAddressOffset;
7417bcb6cafSSascha Wildner     UINT16                  AddressSizeOffset;
7427bcb6cafSSascha Wildner     /*
7437bcb6cafSSascha Wildner      * Data that follows:
7447bcb6cafSSascha Wildner      *    BaseAddress (required) - Each in 12-byte Generic Address Structure format.
7457bcb6cafSSascha Wildner      *    AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
7467bcb6cafSSascha Wildner      *    Namepath    (required) - Null terminated string. Single dot if not supported.
7477bcb6cafSSascha Wildner      *    OemData     (optional) - Length is OemDataLength.
7487bcb6cafSSascha Wildner      */
7497bcb6cafSSascha Wildner } ACPI_DBG2_DEVICE;
7507bcb6cafSSascha Wildner 
7517bcb6cafSSascha Wildner /* Types for PortType field above */
7527bcb6cafSSascha Wildner 
7537bcb6cafSSascha Wildner #define ACPI_DBG2_SERIAL_PORT       0x8000
7547bcb6cafSSascha Wildner #define ACPI_DBG2_1394_PORT         0x8001
7557bcb6cafSSascha Wildner #define ACPI_DBG2_USB_PORT          0x8002
7567bcb6cafSSascha Wildner #define ACPI_DBG2_NET_PORT          0x8003
7577bcb6cafSSascha Wildner 
7587bcb6cafSSascha Wildner /* Subtypes for PortSubtype field above */
7597bcb6cafSSascha Wildner 
7607bcb6cafSSascha Wildner #define ACPI_DBG2_16550_COMPATIBLE  0x0000
7617bcb6cafSSascha Wildner #define ACPI_DBG2_16550_SUBSET      0x0001
762*0672a19bSSascha Wildner #define ACPI_DBG2_MAX311XE_SPI      0x0002
7637bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_PL011         0x0003
764*0672a19bSSascha Wildner #define ACPI_DBG2_MSM8X60           0x0004
765*0672a19bSSascha Wildner #define ACPI_DBG2_16550_NVIDIA      0x0005
766*0672a19bSSascha Wildner #define ACPI_DBG2_TI_OMAP           0x0006
767*0672a19bSSascha Wildner #define ACPI_DBG2_APM88XXXX         0x0008
768*0672a19bSSascha Wildner #define ACPI_DBG2_MSM8974           0x0009
769*0672a19bSSascha Wildner #define ACPI_DBG2_SAM5250           0x000A
770*0672a19bSSascha Wildner #define ACPI_DBG2_INTEL_USIF        0x000B
771*0672a19bSSascha Wildner #define ACPI_DBG2_IMX6              0x000C
7727bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_SBSA_32BIT    0x000D
7737bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_SBSA_GENERIC  0x000E
7747bcb6cafSSascha Wildner #define ACPI_DBG2_ARM_DCC           0x000F
7757bcb6cafSSascha Wildner #define ACPI_DBG2_BCM2835           0x0010
776*0672a19bSSascha Wildner #define ACPI_DBG2_SDM845_1_8432MHZ  0x0011
777*0672a19bSSascha Wildner #define ACPI_DBG2_16550_WITH_GAS    0x0012
778*0672a19bSSascha Wildner #define ACPI_DBG2_SDM845_7_372MHZ   0x0013
779*0672a19bSSascha Wildner #define ACPI_DBG2_INTEL_LPSS        0x0014
7807bcb6cafSSascha Wildner 
7817bcb6cafSSascha Wildner #define ACPI_DBG2_1394_STANDARD     0x0000
7827bcb6cafSSascha Wildner 
7837bcb6cafSSascha Wildner #define ACPI_DBG2_USB_XHCI          0x0000
7847bcb6cafSSascha Wildner #define ACPI_DBG2_USB_EHCI          0x0001
7857bcb6cafSSascha Wildner 
7867bcb6cafSSascha Wildner 
7877bcb6cafSSascha Wildner /*******************************************************************************
7887bcb6cafSSascha Wildner  *
7897bcb6cafSSascha Wildner  * DBGP - Debug Port table
7907bcb6cafSSascha Wildner  *        Version 1
7917bcb6cafSSascha Wildner  *
7927bcb6cafSSascha Wildner  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
7937bcb6cafSSascha Wildner  *
7947bcb6cafSSascha Wildner  ******************************************************************************/
7957bcb6cafSSascha Wildner 
7967bcb6cafSSascha Wildner typedef struct acpi_table_dbgp
7977bcb6cafSSascha Wildner {
7987bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
7997bcb6cafSSascha Wildner     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
8007bcb6cafSSascha Wildner     UINT8                   Reserved[3];
8017bcb6cafSSascha Wildner     ACPI_GENERIC_ADDRESS    DebugPort;
8027bcb6cafSSascha Wildner 
8037bcb6cafSSascha Wildner } ACPI_TABLE_DBGP;
8047bcb6cafSSascha Wildner 
8057bcb6cafSSascha Wildner 
8067bcb6cafSSascha Wildner /*******************************************************************************
8077bcb6cafSSascha Wildner  *
8087bcb6cafSSascha Wildner  * DMAR - DMA Remapping table
8097bcb6cafSSascha Wildner  *        Version 1
8107bcb6cafSSascha Wildner  *
8117bcb6cafSSascha Wildner  * Conforms to "Intel Virtualization Technology for Directed I/O",
8127bcb6cafSSascha Wildner  * Version 2.3, October 2014
8137bcb6cafSSascha Wildner  *
8147bcb6cafSSascha Wildner  ******************************************************************************/
8157bcb6cafSSascha Wildner 
8167bcb6cafSSascha Wildner typedef struct acpi_table_dmar
8177bcb6cafSSascha Wildner {
8187bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
8197bcb6cafSSascha Wildner     UINT8                   Width;              /* Host Address Width */
8207bcb6cafSSascha Wildner     UINT8                   Flags;
8217bcb6cafSSascha Wildner     UINT8                   Reserved[10];
8227bcb6cafSSascha Wildner 
8237bcb6cafSSascha Wildner } ACPI_TABLE_DMAR;
8247bcb6cafSSascha Wildner 
8257bcb6cafSSascha Wildner /* Masks for Flags field above */
8267bcb6cafSSascha Wildner 
8277bcb6cafSSascha Wildner #define ACPI_DMAR_INTR_REMAP        (1)
8287bcb6cafSSascha Wildner #define ACPI_DMAR_X2APIC_OPT_OUT    (1<<1)
8297bcb6cafSSascha Wildner #define ACPI_DMAR_X2APIC_MODE       (1<<2)
8307bcb6cafSSascha Wildner 
8317bcb6cafSSascha Wildner 
8327bcb6cafSSascha Wildner /* DMAR subtable header */
8337bcb6cafSSascha Wildner 
8347bcb6cafSSascha Wildner typedef struct acpi_dmar_header
8357bcb6cafSSascha Wildner {
8367bcb6cafSSascha Wildner     UINT16                  Type;
8377bcb6cafSSascha Wildner     UINT16                  Length;
8387bcb6cafSSascha Wildner 
8397bcb6cafSSascha Wildner } ACPI_DMAR_HEADER;
8407bcb6cafSSascha Wildner 
8417bcb6cafSSascha Wildner /* Values for subtable type in ACPI_DMAR_HEADER */
8427bcb6cafSSascha Wildner 
8437bcb6cafSSascha Wildner enum AcpiDmarType
8447bcb6cafSSascha Wildner {
8457bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
8467bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
8477bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_ROOT_ATS             = 2,
8487bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_HARDWARE_AFFINITY    = 3,
8497bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_NAMESPACE            = 4,
8507bcb6cafSSascha Wildner     ACPI_DMAR_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
8517bcb6cafSSascha Wildner };
8527bcb6cafSSascha Wildner 
8537bcb6cafSSascha Wildner 
8547bcb6cafSSascha Wildner /* DMAR Device Scope structure */
8557bcb6cafSSascha Wildner 
8567bcb6cafSSascha Wildner typedef struct acpi_dmar_device_scope
8577bcb6cafSSascha Wildner {
8587bcb6cafSSascha Wildner     UINT8                   EntryType;
8597bcb6cafSSascha Wildner     UINT8                   Length;
8607bcb6cafSSascha Wildner     UINT16                  Reserved;
8617bcb6cafSSascha Wildner     UINT8                   EnumerationId;
8627bcb6cafSSascha Wildner     UINT8                   Bus;
8637bcb6cafSSascha Wildner 
8647bcb6cafSSascha Wildner } ACPI_DMAR_DEVICE_SCOPE;
8657bcb6cafSSascha Wildner 
8667bcb6cafSSascha Wildner /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
8677bcb6cafSSascha Wildner 
8687bcb6cafSSascha Wildner enum AcpiDmarScopeType
8697bcb6cafSSascha Wildner {
8707bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
8717bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
8727bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
8737bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
8747bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
8757bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_NAMESPACE      = 5,
8767bcb6cafSSascha Wildner     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 6     /* 6 and greater are reserved */
8777bcb6cafSSascha Wildner };
8787bcb6cafSSascha Wildner 
8797bcb6cafSSascha Wildner typedef struct acpi_dmar_pci_path
8807bcb6cafSSascha Wildner {
8817bcb6cafSSascha Wildner     UINT8                   Device;
8827bcb6cafSSascha Wildner     UINT8                   Function;
8837bcb6cafSSascha Wildner 
8847bcb6cafSSascha Wildner } ACPI_DMAR_PCI_PATH;
8857bcb6cafSSascha Wildner 
8867bcb6cafSSascha Wildner 
8877bcb6cafSSascha Wildner /*
8887bcb6cafSSascha Wildner  * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
8897bcb6cafSSascha Wildner  */
8907bcb6cafSSascha Wildner 
8917bcb6cafSSascha Wildner /* 0: Hardware Unit Definition */
8927bcb6cafSSascha Wildner 
8937bcb6cafSSascha Wildner typedef struct acpi_dmar_hardware_unit
8947bcb6cafSSascha Wildner {
8957bcb6cafSSascha Wildner     ACPI_DMAR_HEADER        Header;
8967bcb6cafSSascha Wildner     UINT8                   Flags;
8977bcb6cafSSascha Wildner     UINT8                   Reserved;
8987bcb6cafSSascha Wildner     UINT16                  Segment;
8997bcb6cafSSascha Wildner     UINT64                  Address;            /* Register Base Address */
9007bcb6cafSSascha Wildner 
9017bcb6cafSSascha Wildner } ACPI_DMAR_HARDWARE_UNIT;
9027bcb6cafSSascha Wildner 
9037bcb6cafSSascha Wildner /* Masks for Flags field above */
9047bcb6cafSSascha Wildner 
9057bcb6cafSSascha Wildner #define ACPI_DMAR_INCLUDE_ALL       (1)
9067bcb6cafSSascha Wildner 
9077bcb6cafSSascha Wildner 
90800ffa116SSascha Wildner /* 1: Reserved Memory Definition */
9097bcb6cafSSascha Wildner 
9107bcb6cafSSascha Wildner typedef struct acpi_dmar_reserved_memory
9117bcb6cafSSascha Wildner {
9127bcb6cafSSascha Wildner     ACPI_DMAR_HEADER        Header;
9137bcb6cafSSascha Wildner     UINT16                  Reserved;
9147bcb6cafSSascha Wildner     UINT16                  Segment;
9157bcb6cafSSascha Wildner     UINT64                  BaseAddress;        /* 4K aligned base address */
9167bcb6cafSSascha Wildner     UINT64                  EndAddress;         /* 4K aligned limit address */
9177bcb6cafSSascha Wildner 
9187bcb6cafSSascha Wildner } ACPI_DMAR_RESERVED_MEMORY;
9197bcb6cafSSascha Wildner 
9207bcb6cafSSascha Wildner /* Masks for Flags field above */
9217bcb6cafSSascha Wildner 
9227bcb6cafSSascha Wildner #define ACPI_DMAR_ALLOW_ALL         (1)
9237bcb6cafSSascha Wildner 
9247bcb6cafSSascha Wildner 
9257bcb6cafSSascha Wildner /* 2: Root Port ATS Capability Reporting Structure */
9267bcb6cafSSascha Wildner 
9277bcb6cafSSascha Wildner typedef struct acpi_dmar_atsr
9287bcb6cafSSascha Wildner {
9297bcb6cafSSascha Wildner     ACPI_DMAR_HEADER        Header;
9307bcb6cafSSascha Wildner     UINT8                   Flags;
9317bcb6cafSSascha Wildner     UINT8                   Reserved;
9327bcb6cafSSascha Wildner     UINT16                  Segment;
9337bcb6cafSSascha Wildner 
9347bcb6cafSSascha Wildner } ACPI_DMAR_ATSR;
9357bcb6cafSSascha Wildner 
9367bcb6cafSSascha Wildner /* Masks for Flags field above */
9377bcb6cafSSascha Wildner 
9387bcb6cafSSascha Wildner #define ACPI_DMAR_ALL_PORTS         (1)
9397bcb6cafSSascha Wildner 
9407bcb6cafSSascha Wildner 
9417bcb6cafSSascha Wildner /* 3: Remapping Hardware Static Affinity Structure */
9427bcb6cafSSascha Wildner 
9437bcb6cafSSascha Wildner typedef struct acpi_dmar_rhsa
9447bcb6cafSSascha Wildner {
9457bcb6cafSSascha Wildner     ACPI_DMAR_HEADER        Header;
9467bcb6cafSSascha Wildner     UINT32                  Reserved;
9477bcb6cafSSascha Wildner     UINT64                  BaseAddress;
9487bcb6cafSSascha Wildner     UINT32                  ProximityDomain;
9497bcb6cafSSascha Wildner 
9507bcb6cafSSascha Wildner } ACPI_DMAR_RHSA;
9517bcb6cafSSascha Wildner 
9527bcb6cafSSascha Wildner 
9537bcb6cafSSascha Wildner /* 4: ACPI Namespace Device Declaration Structure */
9547bcb6cafSSascha Wildner 
9557bcb6cafSSascha Wildner typedef struct acpi_dmar_andd
9567bcb6cafSSascha Wildner {
9577bcb6cafSSascha Wildner     ACPI_DMAR_HEADER        Header;
9587bcb6cafSSascha Wildner     UINT8                   Reserved[3];
9597bcb6cafSSascha Wildner     UINT8                   DeviceNumber;
9607bcb6cafSSascha Wildner     char                    DeviceName[1];
9617bcb6cafSSascha Wildner 
9627bcb6cafSSascha Wildner } ACPI_DMAR_ANDD;
9637bcb6cafSSascha Wildner 
9647bcb6cafSSascha Wildner 
9657bcb6cafSSascha Wildner /*******************************************************************************
9667bcb6cafSSascha Wildner  *
9677bcb6cafSSascha Wildner  * DRTM - Dynamic Root of Trust for Measurement table
9687bcb6cafSSascha Wildner  * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
9697bcb6cafSSascha Wildner  * Table version 1
9707bcb6cafSSascha Wildner  *
9717bcb6cafSSascha Wildner  ******************************************************************************/
9727bcb6cafSSascha Wildner 
9737bcb6cafSSascha Wildner typedef struct acpi_table_drtm
9747bcb6cafSSascha Wildner {
9757bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
9767bcb6cafSSascha Wildner     UINT64                  EntryBaseAddress;
9777bcb6cafSSascha Wildner     UINT64                  EntryLength;
9787bcb6cafSSascha Wildner     UINT32                  EntryAddress32;
9797bcb6cafSSascha Wildner     UINT64                  EntryAddress64;
9807bcb6cafSSascha Wildner     UINT64                  ExitAddress;
9817bcb6cafSSascha Wildner     UINT64                  LogAreaAddress;
9827bcb6cafSSascha Wildner     UINT32                  LogAreaLength;
9837bcb6cafSSascha Wildner     UINT64                  ArchDependentAddress;
9847bcb6cafSSascha Wildner     UINT32                  Flags;
9857bcb6cafSSascha Wildner 
9867bcb6cafSSascha Wildner } ACPI_TABLE_DRTM;
9877bcb6cafSSascha Wildner 
9887bcb6cafSSascha Wildner /* Flag Definitions for above */
9897bcb6cafSSascha Wildner 
9907bcb6cafSSascha Wildner #define ACPI_DRTM_ACCESS_ALLOWED            (1)
9917bcb6cafSSascha Wildner #define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
9927bcb6cafSSascha Wildner #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
9937bcb6cafSSascha Wildner #define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
9947bcb6cafSSascha Wildner 
9957bcb6cafSSascha Wildner 
9967bcb6cafSSascha Wildner /* 1) Validated Tables List (64-bit addresses) */
9977bcb6cafSSascha Wildner 
9987bcb6cafSSascha Wildner typedef struct acpi_drtm_vtable_list
9997bcb6cafSSascha Wildner {
10007bcb6cafSSascha Wildner     UINT32                  ValidatedTableCount;
10017bcb6cafSSascha Wildner     UINT64                  ValidatedTables[1];
10027bcb6cafSSascha Wildner 
10037bcb6cafSSascha Wildner } ACPI_DRTM_VTABLE_LIST;
10047bcb6cafSSascha Wildner 
10057bcb6cafSSascha Wildner /* 2) Resources List (of Resource Descriptors) */
10067bcb6cafSSascha Wildner 
10077bcb6cafSSascha Wildner /* Resource Descriptor */
10087bcb6cafSSascha Wildner 
10097bcb6cafSSascha Wildner typedef struct acpi_drtm_resource
10107bcb6cafSSascha Wildner {
10117bcb6cafSSascha Wildner     UINT8                   Size[7];
10127bcb6cafSSascha Wildner     UINT8                   Type;
10137bcb6cafSSascha Wildner     UINT64                  Address;
10147bcb6cafSSascha Wildner 
10157bcb6cafSSascha Wildner } ACPI_DRTM_RESOURCE;
10167bcb6cafSSascha Wildner 
10177bcb6cafSSascha Wildner typedef struct acpi_drtm_resource_list
10187bcb6cafSSascha Wildner {
10197bcb6cafSSascha Wildner     UINT32                  ResourceCount;
10207bcb6cafSSascha Wildner     ACPI_DRTM_RESOURCE      Resources[1];
10217bcb6cafSSascha Wildner 
10227bcb6cafSSascha Wildner } ACPI_DRTM_RESOURCE_LIST;
10237bcb6cafSSascha Wildner 
10247bcb6cafSSascha Wildner /* 3) Platform-specific Identifiers List */
10257bcb6cafSSascha Wildner 
10267bcb6cafSSascha Wildner typedef struct acpi_drtm_dps_id
10277bcb6cafSSascha Wildner {
10287bcb6cafSSascha Wildner     UINT32                  DpsIdLength;
10297bcb6cafSSascha Wildner     UINT8                   DpsId[16];
10307bcb6cafSSascha Wildner 
10317bcb6cafSSascha Wildner } ACPI_DRTM_DPS_ID;
10327bcb6cafSSascha Wildner 
10337bcb6cafSSascha Wildner 
10347bcb6cafSSascha Wildner /*******************************************************************************
10357bcb6cafSSascha Wildner  *
10360d02842fSSascha Wildner  * ECDT - Embedded Controller Boot Resources Table
10370d02842fSSascha Wildner  *        Version 1
10380d02842fSSascha Wildner  *
10390d02842fSSascha Wildner  ******************************************************************************/
10400d02842fSSascha Wildner 
10410d02842fSSascha Wildner typedef struct acpi_table_ecdt
10420d02842fSSascha Wildner {
10430d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
10440d02842fSSascha Wildner     ACPI_GENERIC_ADDRESS    Control;            /* Address of EC command/status register */
10450d02842fSSascha Wildner     ACPI_GENERIC_ADDRESS    Data;               /* Address of EC data register */
10460d02842fSSascha Wildner     UINT32                  Uid;                /* Unique ID - must be same as the EC _UID method */
10470d02842fSSascha Wildner     UINT8                   Gpe;                /* The GPE for the EC */
10480d02842fSSascha Wildner     UINT8                   Id[1];              /* Full namepath of the EC in the ACPI namespace */
10490d02842fSSascha Wildner 
10500d02842fSSascha Wildner } ACPI_TABLE_ECDT;
10510d02842fSSascha Wildner 
10520d02842fSSascha Wildner 
10530d02842fSSascha Wildner /*******************************************************************************
10540d02842fSSascha Wildner  *
10550d02842fSSascha Wildner  * EINJ - Error Injection Table (ACPI 4.0)
10560d02842fSSascha Wildner  *        Version 1
10570d02842fSSascha Wildner  *
10580d02842fSSascha Wildner  ******************************************************************************/
10590d02842fSSascha Wildner 
10600d02842fSSascha Wildner typedef struct acpi_table_einj
10610d02842fSSascha Wildner {
10620d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
10630d02842fSSascha Wildner     UINT32                  HeaderLength;
10640d02842fSSascha Wildner     UINT8                   Flags;
10650d02842fSSascha Wildner     UINT8                   Reserved[3];
10660d02842fSSascha Wildner     UINT32                  Entries;
10670d02842fSSascha Wildner 
10680d02842fSSascha Wildner } ACPI_TABLE_EINJ;
10690d02842fSSascha Wildner 
10700d02842fSSascha Wildner 
10710d02842fSSascha Wildner /* EINJ Injection Instruction Entries (actions) */
10720d02842fSSascha Wildner 
10730d02842fSSascha Wildner typedef struct acpi_einj_entry
10740d02842fSSascha Wildner {
10750d02842fSSascha Wildner     ACPI_WHEA_HEADER        WheaHeader;         /* Common header for WHEA tables */
10760d02842fSSascha Wildner 
10770d02842fSSascha Wildner } ACPI_EINJ_ENTRY;
10780d02842fSSascha Wildner 
10790d02842fSSascha Wildner /* Masks for Flags field above */
10800d02842fSSascha Wildner 
10810d02842fSSascha Wildner #define ACPI_EINJ_PRESERVE          (1)
10820d02842fSSascha Wildner 
10830d02842fSSascha Wildner /* Values for Action field above */
10840d02842fSSascha Wildner 
10850d02842fSSascha Wildner enum AcpiEinjActions
10860d02842fSSascha Wildner {
10870d02842fSSascha Wildner     ACPI_EINJ_BEGIN_OPERATION               = 0,
10880d02842fSSascha Wildner     ACPI_EINJ_GET_TRIGGER_TABLE             = 1,
10890d02842fSSascha Wildner     ACPI_EINJ_SET_ERROR_TYPE                = 2,
10900d02842fSSascha Wildner     ACPI_EINJ_GET_ERROR_TYPE                = 3,
10910d02842fSSascha Wildner     ACPI_EINJ_END_OPERATION                 = 4,
10920d02842fSSascha Wildner     ACPI_EINJ_EXECUTE_OPERATION             = 5,
10930d02842fSSascha Wildner     ACPI_EINJ_CHECK_BUSY_STATUS             = 6,
10940d02842fSSascha Wildner     ACPI_EINJ_GET_COMMAND_STATUS            = 7,
10950d02842fSSascha Wildner     ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS   = 8,
10967c9678bcSSascha Wildner     ACPI_EINJ_GET_EXECUTE_TIMINGS           = 9,
10977c9678bcSSascha Wildner     ACPI_EINJ_ACTION_RESERVED               = 10,    /* 10 and greater are reserved */
10980d02842fSSascha Wildner     ACPI_EINJ_TRIGGER_ERROR                 = 0xFF   /* Except for this value */
10990d02842fSSascha Wildner };
11000d02842fSSascha Wildner 
11010d02842fSSascha Wildner /* Values for Instruction field above */
11020d02842fSSascha Wildner 
11030d02842fSSascha Wildner enum AcpiEinjInstructions
11040d02842fSSascha Wildner {
11050d02842fSSascha Wildner     ACPI_EINJ_READ_REGISTER         = 0,
11060d02842fSSascha Wildner     ACPI_EINJ_READ_REGISTER_VALUE   = 1,
11070d02842fSSascha Wildner     ACPI_EINJ_WRITE_REGISTER        = 2,
11080d02842fSSascha Wildner     ACPI_EINJ_WRITE_REGISTER_VALUE  = 3,
11090d02842fSSascha Wildner     ACPI_EINJ_NOOP                  = 4,
11100d02842fSSascha Wildner     ACPI_EINJ_FLUSH_CACHELINE       = 5,
11110d02842fSSascha Wildner     ACPI_EINJ_INSTRUCTION_RESERVED  = 6     /* 6 and greater are reserved */
11120d02842fSSascha Wildner };
11130d02842fSSascha Wildner 
11140d02842fSSascha Wildner typedef struct acpi_einj_error_type_with_addr
11150d02842fSSascha Wildner {
11160d02842fSSascha Wildner     UINT32                  ErrorType;
11170d02842fSSascha Wildner     UINT32                  VendorStructOffset;
11180d02842fSSascha Wildner     UINT32                  Flags;
11190d02842fSSascha Wildner     UINT32                  ApicId;
11200d02842fSSascha Wildner     UINT64                  Address;
11210d02842fSSascha Wildner     UINT64                  Range;
11220d02842fSSascha Wildner     UINT32                  PcieId;
11230d02842fSSascha Wildner 
11240d02842fSSascha Wildner } ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
11250d02842fSSascha Wildner 
11260d02842fSSascha Wildner typedef struct acpi_einj_vendor
11270d02842fSSascha Wildner {
11280d02842fSSascha Wildner     UINT32                  Length;
11290d02842fSSascha Wildner     UINT32                  PcieId;
11300d02842fSSascha Wildner     UINT16                  VendorId;
11310d02842fSSascha Wildner     UINT16                  DeviceId;
11320d02842fSSascha Wildner     UINT8                   RevisionId;
11330d02842fSSascha Wildner     UINT8                   Reserved[3];
11340d02842fSSascha Wildner 
11350d02842fSSascha Wildner } ACPI_EINJ_VENDOR;
11360d02842fSSascha Wildner 
11370d02842fSSascha Wildner 
11380d02842fSSascha Wildner /* EINJ Trigger Error Action Table */
11390d02842fSSascha Wildner 
11400d02842fSSascha Wildner typedef struct acpi_einj_trigger
11410d02842fSSascha Wildner {
11420d02842fSSascha Wildner     UINT32                  HeaderSize;
11430d02842fSSascha Wildner     UINT32                  Revision;
11440d02842fSSascha Wildner     UINT32                  TableSize;
11450d02842fSSascha Wildner     UINT32                  EntryCount;
11460d02842fSSascha Wildner 
11470d02842fSSascha Wildner } ACPI_EINJ_TRIGGER;
11480d02842fSSascha Wildner 
11490d02842fSSascha Wildner /* Command status return values */
11500d02842fSSascha Wildner 
11510d02842fSSascha Wildner enum AcpiEinjCommandStatus
11520d02842fSSascha Wildner {
11530d02842fSSascha Wildner     ACPI_EINJ_SUCCESS               = 0,
11540d02842fSSascha Wildner     ACPI_EINJ_FAILURE               = 1,
11550d02842fSSascha Wildner     ACPI_EINJ_INVALID_ACCESS        = 2,
11560d02842fSSascha Wildner     ACPI_EINJ_STATUS_RESERVED       = 3     /* 3 and greater are reserved */
11570d02842fSSascha Wildner };
11580d02842fSSascha Wildner 
11590d02842fSSascha Wildner 
11600d02842fSSascha Wildner /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
11610d02842fSSascha Wildner 
11620d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_CORRECTABLE     (1)
11630d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE   (1<<1)
11640d02842fSSascha Wildner #define ACPI_EINJ_PROCESSOR_FATAL           (1<<2)
11650d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_CORRECTABLE        (1<<3)
11660d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_UNCORRECTABLE      (1<<4)
11670d02842fSSascha Wildner #define ACPI_EINJ_MEMORY_FATAL              (1<<5)
11680d02842fSSascha Wildner #define ACPI_EINJ_PCIX_CORRECTABLE          (1<<6)
11690d02842fSSascha Wildner #define ACPI_EINJ_PCIX_UNCORRECTABLE        (1<<7)
11700d02842fSSascha Wildner #define ACPI_EINJ_PCIX_FATAL                (1<<8)
11710d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_CORRECTABLE      (1<<9)
11720d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_UNCORRECTABLE    (1<<10)
11730d02842fSSascha Wildner #define ACPI_EINJ_PLATFORM_FATAL            (1<<11)
11740d02842fSSascha Wildner #define ACPI_EINJ_VENDOR_DEFINED            (1<<31)
11750d02842fSSascha Wildner 
11760d02842fSSascha Wildner 
11770d02842fSSascha Wildner /*******************************************************************************
11780d02842fSSascha Wildner  *
11790d02842fSSascha Wildner  * ERST - Error Record Serialization Table (ACPI 4.0)
11800d02842fSSascha Wildner  *        Version 1
11810d02842fSSascha Wildner  *
11820d02842fSSascha Wildner  ******************************************************************************/
11830d02842fSSascha Wildner 
11840d02842fSSascha Wildner typedef struct acpi_table_erst
11850d02842fSSascha Wildner {
11860d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
11870d02842fSSascha Wildner     UINT32                  HeaderLength;
11880d02842fSSascha Wildner     UINT32                  Reserved;
11890d02842fSSascha Wildner     UINT32                  Entries;
11900d02842fSSascha Wildner 
11910d02842fSSascha Wildner } ACPI_TABLE_ERST;
11920d02842fSSascha Wildner 
11930d02842fSSascha Wildner 
11940d02842fSSascha Wildner /* ERST Serialization Entries (actions) */
11950d02842fSSascha Wildner 
11960d02842fSSascha Wildner typedef struct acpi_erst_entry
11970d02842fSSascha Wildner {
11980d02842fSSascha Wildner     ACPI_WHEA_HEADER        WheaHeader;         /* Common header for WHEA tables */
11990d02842fSSascha Wildner 
12000d02842fSSascha Wildner } ACPI_ERST_ENTRY;
12010d02842fSSascha Wildner 
12020d02842fSSascha Wildner /* Masks for Flags field above */
12030d02842fSSascha Wildner 
12040d02842fSSascha Wildner #define ACPI_ERST_PRESERVE          (1)
12050d02842fSSascha Wildner 
12060d02842fSSascha Wildner /* Values for Action field above */
12070d02842fSSascha Wildner 
12080d02842fSSascha Wildner enum AcpiErstActions
12090d02842fSSascha Wildner {
12100d02842fSSascha Wildner     ACPI_ERST_BEGIN_WRITE           = 0,
12110d02842fSSascha Wildner     ACPI_ERST_BEGIN_READ            = 1,
12120d02842fSSascha Wildner     ACPI_ERST_BEGIN_CLEAR           = 2,
12130d02842fSSascha Wildner     ACPI_ERST_END                   = 3,
12140d02842fSSascha Wildner     ACPI_ERST_SET_RECORD_OFFSET     = 4,
12150d02842fSSascha Wildner     ACPI_ERST_EXECUTE_OPERATION     = 5,
12160d02842fSSascha Wildner     ACPI_ERST_CHECK_BUSY_STATUS     = 6,
12170d02842fSSascha Wildner     ACPI_ERST_GET_COMMAND_STATUS    = 7,
12180d02842fSSascha Wildner     ACPI_ERST_GET_RECORD_ID         = 8,
12190d02842fSSascha Wildner     ACPI_ERST_SET_RECORD_ID         = 9,
12200d02842fSSascha Wildner     ACPI_ERST_GET_RECORD_COUNT      = 10,
12210d02842fSSascha Wildner     ACPI_ERST_BEGIN_DUMMY_WRIITE    = 11,
12220d02842fSSascha Wildner     ACPI_ERST_NOT_USED              = 12,
12230d02842fSSascha Wildner     ACPI_ERST_GET_ERROR_RANGE       = 13,
12240d02842fSSascha Wildner     ACPI_ERST_GET_ERROR_LENGTH      = 14,
12250d02842fSSascha Wildner     ACPI_ERST_GET_ERROR_ATTRIBUTES  = 15,
12267c9678bcSSascha Wildner     ACPI_ERST_EXECUTE_TIMINGS       = 16,
12277c9678bcSSascha Wildner     ACPI_ERST_ACTION_RESERVED       = 17    /* 17 and greater are reserved */
12280d02842fSSascha Wildner };
12290d02842fSSascha Wildner 
12300d02842fSSascha Wildner /* Values for Instruction field above */
12310d02842fSSascha Wildner 
12320d02842fSSascha Wildner enum AcpiErstInstructions
12330d02842fSSascha Wildner {
12340d02842fSSascha Wildner     ACPI_ERST_READ_REGISTER         = 0,
12350d02842fSSascha Wildner     ACPI_ERST_READ_REGISTER_VALUE   = 1,
12360d02842fSSascha Wildner     ACPI_ERST_WRITE_REGISTER        = 2,
12370d02842fSSascha Wildner     ACPI_ERST_WRITE_REGISTER_VALUE  = 3,
12380d02842fSSascha Wildner     ACPI_ERST_NOOP                  = 4,
12390d02842fSSascha Wildner     ACPI_ERST_LOAD_VAR1             = 5,
12400d02842fSSascha Wildner     ACPI_ERST_LOAD_VAR2             = 6,
12410d02842fSSascha Wildner     ACPI_ERST_STORE_VAR1            = 7,
12420d02842fSSascha Wildner     ACPI_ERST_ADD                   = 8,
12430d02842fSSascha Wildner     ACPI_ERST_SUBTRACT              = 9,
12440d02842fSSascha Wildner     ACPI_ERST_ADD_VALUE             = 10,
12450d02842fSSascha Wildner     ACPI_ERST_SUBTRACT_VALUE        = 11,
12460d02842fSSascha Wildner     ACPI_ERST_STALL                 = 12,
12470d02842fSSascha Wildner     ACPI_ERST_STALL_WHILE_TRUE      = 13,
12480d02842fSSascha Wildner     ACPI_ERST_SKIP_NEXT_IF_TRUE     = 14,
12490d02842fSSascha Wildner     ACPI_ERST_GOTO                  = 15,
12500d02842fSSascha Wildner     ACPI_ERST_SET_SRC_ADDRESS_BASE  = 16,
12510d02842fSSascha Wildner     ACPI_ERST_SET_DST_ADDRESS_BASE  = 17,
12520d02842fSSascha Wildner     ACPI_ERST_MOVE_DATA             = 18,
12530d02842fSSascha Wildner     ACPI_ERST_INSTRUCTION_RESERVED  = 19    /* 19 and greater are reserved */
12540d02842fSSascha Wildner };
12550d02842fSSascha Wildner 
12560d02842fSSascha Wildner /* Command status return values */
12570d02842fSSascha Wildner 
12580d02842fSSascha Wildner enum AcpiErstCommandStatus
12590d02842fSSascha Wildner {
1260ff3cb46dSSascha Wildner     ACPI_ERST_SUCCESS                = 0,
12610d02842fSSascha Wildner     ACPI_ERST_NO_SPACE              = 1,
12620d02842fSSascha Wildner     ACPI_ERST_NOT_AVAILABLE         = 2,
12630d02842fSSascha Wildner     ACPI_ERST_FAILURE               = 3,
12640d02842fSSascha Wildner     ACPI_ERST_RECORD_EMPTY          = 4,
12650d02842fSSascha Wildner     ACPI_ERST_NOT_FOUND             = 5,
12660d02842fSSascha Wildner     ACPI_ERST_STATUS_RESERVED       = 6     /* 6 and greater are reserved */
12670d02842fSSascha Wildner };
12680d02842fSSascha Wildner 
12690d02842fSSascha Wildner 
12700d02842fSSascha Wildner /* Error Record Serialization Information */
12710d02842fSSascha Wildner 
12720d02842fSSascha Wildner typedef struct acpi_erst_info
12730d02842fSSascha Wildner {
12740d02842fSSascha Wildner     UINT16                  Signature;          /* Should be "ER" */
12750d02842fSSascha Wildner     UINT8                   Data[48];
12760d02842fSSascha Wildner 
12770d02842fSSascha Wildner } ACPI_ERST_INFO;
12780d02842fSSascha Wildner 
12790d02842fSSascha Wildner 
12800d02842fSSascha Wildner /*******************************************************************************
12810d02842fSSascha Wildner  *
12827bcb6cafSSascha Wildner  * FPDT - Firmware Performance Data Table (ACPI 5.0)
12837bcb6cafSSascha Wildner  *        Version 1
12847bcb6cafSSascha Wildner  *
12857bcb6cafSSascha Wildner  ******************************************************************************/
12867bcb6cafSSascha Wildner 
12877bcb6cafSSascha Wildner typedef struct acpi_table_fpdt
12887bcb6cafSSascha Wildner {
12897bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
12907bcb6cafSSascha Wildner 
12917bcb6cafSSascha Wildner } ACPI_TABLE_FPDT;
12927bcb6cafSSascha Wildner 
12937bcb6cafSSascha Wildner 
12947bcb6cafSSascha Wildner /* FPDT subtable header (Performance Record Structure) */
12957bcb6cafSSascha Wildner 
12967bcb6cafSSascha Wildner typedef struct acpi_fpdt_header
12977bcb6cafSSascha Wildner {
12987bcb6cafSSascha Wildner     UINT16                  Type;
12997bcb6cafSSascha Wildner     UINT8                   Length;
13007bcb6cafSSascha Wildner     UINT8                   Revision;
13017bcb6cafSSascha Wildner 
13027bcb6cafSSascha Wildner } ACPI_FPDT_HEADER;
13037bcb6cafSSascha Wildner 
13047bcb6cafSSascha Wildner /* Values for Type field above */
13057bcb6cafSSascha Wildner 
13067bcb6cafSSascha Wildner enum AcpiFpdtType
13077bcb6cafSSascha Wildner {
13087bcb6cafSSascha Wildner     ACPI_FPDT_TYPE_BOOT                 = 0,
13097bcb6cafSSascha Wildner     ACPI_FPDT_TYPE_S3PERF               = 1
13107bcb6cafSSascha Wildner };
13117bcb6cafSSascha Wildner 
13127bcb6cafSSascha Wildner 
13137bcb6cafSSascha Wildner /*
13147bcb6cafSSascha Wildner  * FPDT subtables
13157bcb6cafSSascha Wildner  */
13167bcb6cafSSascha Wildner 
13177bcb6cafSSascha Wildner /* 0: Firmware Basic Boot Performance Record */
13187bcb6cafSSascha Wildner 
13197bcb6cafSSascha Wildner typedef struct acpi_fpdt_boot_pointer
13207bcb6cafSSascha Wildner {
13217bcb6cafSSascha Wildner     ACPI_FPDT_HEADER        Header;
13227bcb6cafSSascha Wildner     UINT8                   Reserved[4];
13237bcb6cafSSascha Wildner     UINT64                  Address;
13247bcb6cafSSascha Wildner 
13257bcb6cafSSascha Wildner } ACPI_FPDT_BOOT_POINTER;
13267bcb6cafSSascha Wildner 
13277bcb6cafSSascha Wildner 
13287bcb6cafSSascha Wildner /* 1: S3 Performance Table Pointer Record */
13297bcb6cafSSascha Wildner 
13307bcb6cafSSascha Wildner typedef struct acpi_fpdt_s3pt_pointer
13317bcb6cafSSascha Wildner {
13327bcb6cafSSascha Wildner     ACPI_FPDT_HEADER        Header;
13337bcb6cafSSascha Wildner     UINT8                   Reserved[4];
13347bcb6cafSSascha Wildner     UINT64                  Address;
13357bcb6cafSSascha Wildner 
13367bcb6cafSSascha Wildner } ACPI_FPDT_S3PT_POINTER;
13377bcb6cafSSascha Wildner 
13387bcb6cafSSascha Wildner 
13397bcb6cafSSascha Wildner /*
13407bcb6cafSSascha Wildner  * S3PT - S3 Performance Table. This table is pointed to by the
13417bcb6cafSSascha Wildner  * S3 Pointer Record above.
13427bcb6cafSSascha Wildner  */
13437bcb6cafSSascha Wildner typedef struct acpi_table_s3pt
13447bcb6cafSSascha Wildner {
13457bcb6cafSSascha Wildner     UINT8                   Signature[4]; /* "S3PT" */
13467bcb6cafSSascha Wildner     UINT32                  Length;
13477bcb6cafSSascha Wildner 
13487bcb6cafSSascha Wildner } ACPI_TABLE_S3PT;
13497bcb6cafSSascha Wildner 
13507bcb6cafSSascha Wildner 
13517bcb6cafSSascha Wildner /*
13527bcb6cafSSascha Wildner  * S3PT Subtables (Not part of the actual FPDT)
13537bcb6cafSSascha Wildner  */
13547bcb6cafSSascha Wildner 
13557bcb6cafSSascha Wildner /* Values for Type field in S3PT header */
13567bcb6cafSSascha Wildner 
13577bcb6cafSSascha Wildner enum AcpiS3ptType
13587bcb6cafSSascha Wildner {
13597bcb6cafSSascha Wildner     ACPI_S3PT_TYPE_RESUME               = 0,
13607bcb6cafSSascha Wildner     ACPI_S3PT_TYPE_SUSPEND              = 1,
13617bcb6cafSSascha Wildner     ACPI_FPDT_BOOT_PERFORMANCE          = 2
13627bcb6cafSSascha Wildner };
13637bcb6cafSSascha Wildner 
13647bcb6cafSSascha Wildner typedef struct acpi_s3pt_resume
13657bcb6cafSSascha Wildner {
13667bcb6cafSSascha Wildner     ACPI_FPDT_HEADER        Header;
13677bcb6cafSSascha Wildner     UINT32                  ResumeCount;
13687bcb6cafSSascha Wildner     UINT64                  FullResume;
13697bcb6cafSSascha Wildner     UINT64                  AverageResume;
13707bcb6cafSSascha Wildner 
13717bcb6cafSSascha Wildner } ACPI_S3PT_RESUME;
13727bcb6cafSSascha Wildner 
13737bcb6cafSSascha Wildner typedef struct acpi_s3pt_suspend
13747bcb6cafSSascha Wildner {
13757bcb6cafSSascha Wildner     ACPI_FPDT_HEADER        Header;
13767bcb6cafSSascha Wildner     UINT64                  SuspendStart;
13777bcb6cafSSascha Wildner     UINT64                  SuspendEnd;
13787bcb6cafSSascha Wildner 
13797bcb6cafSSascha Wildner } ACPI_S3PT_SUSPEND;
13807bcb6cafSSascha Wildner 
13817bcb6cafSSascha Wildner 
13827bcb6cafSSascha Wildner /*
13837bcb6cafSSascha Wildner  * FPDT Boot Performance Record (Not part of the actual FPDT)
13847bcb6cafSSascha Wildner  */
13857bcb6cafSSascha Wildner typedef struct acpi_fpdt_boot
13867bcb6cafSSascha Wildner {
13877bcb6cafSSascha Wildner     ACPI_FPDT_HEADER        Header;
13887bcb6cafSSascha Wildner     UINT8                   Reserved[4];
13897bcb6cafSSascha Wildner     UINT64                  ResetEnd;
13907bcb6cafSSascha Wildner     UINT64                  LoadStart;
13917bcb6cafSSascha Wildner     UINT64                  StartupStart;
13927bcb6cafSSascha Wildner     UINT64                  ExitServicesEntry;
13937bcb6cafSSascha Wildner     UINT64                  ExitServicesExit;
13947bcb6cafSSascha Wildner 
13957bcb6cafSSascha Wildner } ACPI_FPDT_BOOT;
13967bcb6cafSSascha Wildner 
13977bcb6cafSSascha Wildner 
13987bcb6cafSSascha Wildner /*******************************************************************************
13997bcb6cafSSascha Wildner  *
14007bcb6cafSSascha Wildner  * GTDT - Generic Timer Description Table (ACPI 5.1)
14017bcb6cafSSascha Wildner  *        Version 2
14027bcb6cafSSascha Wildner  *
14037bcb6cafSSascha Wildner  ******************************************************************************/
14047bcb6cafSSascha Wildner 
14057bcb6cafSSascha Wildner typedef struct acpi_table_gtdt
14067bcb6cafSSascha Wildner {
14077bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
14087bcb6cafSSascha Wildner     UINT64                  CounterBlockAddresss;
14097bcb6cafSSascha Wildner     UINT32                  Reserved;
14107bcb6cafSSascha Wildner     UINT32                  SecureEl1Interrupt;
14117bcb6cafSSascha Wildner     UINT32                  SecureEl1Flags;
14127bcb6cafSSascha Wildner     UINT32                  NonSecureEl1Interrupt;
14137bcb6cafSSascha Wildner     UINT32                  NonSecureEl1Flags;
14147bcb6cafSSascha Wildner     UINT32                  VirtualTimerInterrupt;
14157bcb6cafSSascha Wildner     UINT32                  VirtualTimerFlags;
14167bcb6cafSSascha Wildner     UINT32                  NonSecureEl2Interrupt;
14177bcb6cafSSascha Wildner     UINT32                  NonSecureEl2Flags;
14187bcb6cafSSascha Wildner     UINT64                  CounterReadBlockAddress;
14197bcb6cafSSascha Wildner     UINT32                  PlatformTimerCount;
14207bcb6cafSSascha Wildner     UINT32                  PlatformTimerOffset;
14217bcb6cafSSascha Wildner 
14227bcb6cafSSascha Wildner } ACPI_TABLE_GTDT;
14237bcb6cafSSascha Wildner 
14247bcb6cafSSascha Wildner /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
14257bcb6cafSSascha Wildner 
14267bcb6cafSSascha Wildner #define ACPI_GTDT_INTERRUPT_MODE        (1)
14277bcb6cafSSascha Wildner #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
14287bcb6cafSSascha Wildner #define ACPI_GTDT_ALWAYS_ON             (1<<2)
14297bcb6cafSSascha Wildner 
143000ffa116SSascha Wildner typedef struct acpi_gtdt_el2
143100ffa116SSascha Wildner {
143200ffa116SSascha Wildner     UINT32                  VirtualEL2TimerGsiv;
143300ffa116SSascha Wildner     UINT32                  VirtualEL2TimerFlags;
143400ffa116SSascha Wildner } ACPI_GTDT_EL2;
143500ffa116SSascha Wildner 
14367bcb6cafSSascha Wildner 
14377bcb6cafSSascha Wildner /* Common GTDT subtable header */
14387bcb6cafSSascha Wildner 
14397bcb6cafSSascha Wildner typedef struct acpi_gtdt_header
14407bcb6cafSSascha Wildner {
14417bcb6cafSSascha Wildner     UINT8                   Type;
14427bcb6cafSSascha Wildner     UINT16                  Length;
14437bcb6cafSSascha Wildner 
14447bcb6cafSSascha Wildner } ACPI_GTDT_HEADER;
14457bcb6cafSSascha Wildner 
14467bcb6cafSSascha Wildner /* Values for GTDT subtable type above */
14477bcb6cafSSascha Wildner 
14487bcb6cafSSascha Wildner enum AcpiGtdtType
14497bcb6cafSSascha Wildner {
14507bcb6cafSSascha Wildner     ACPI_GTDT_TYPE_TIMER_BLOCK      = 0,
14517bcb6cafSSascha Wildner     ACPI_GTDT_TYPE_WATCHDOG         = 1,
14527bcb6cafSSascha Wildner     ACPI_GTDT_TYPE_RESERVED         = 2    /* 2 and greater are reserved */
14537bcb6cafSSascha Wildner };
14547bcb6cafSSascha Wildner 
14557bcb6cafSSascha Wildner 
14567bcb6cafSSascha Wildner /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
14577bcb6cafSSascha Wildner 
14587bcb6cafSSascha Wildner /* 0: Generic Timer Block */
14597bcb6cafSSascha Wildner 
14607bcb6cafSSascha Wildner typedef struct acpi_gtdt_timer_block
14617bcb6cafSSascha Wildner {
14627bcb6cafSSascha Wildner     ACPI_GTDT_HEADER        Header;
14637bcb6cafSSascha Wildner     UINT8                   Reserved;
14647bcb6cafSSascha Wildner     UINT64                  BlockAddress;
14657bcb6cafSSascha Wildner     UINT32                  TimerCount;
14667bcb6cafSSascha Wildner     UINT32                  TimerOffset;
14677bcb6cafSSascha Wildner 
14687bcb6cafSSascha Wildner } ACPI_GTDT_TIMER_BLOCK;
14697bcb6cafSSascha Wildner 
14707bcb6cafSSascha Wildner /* Timer Sub-Structure, one per timer */
14717bcb6cafSSascha Wildner 
14727bcb6cafSSascha Wildner typedef struct acpi_gtdt_timer_entry
14737bcb6cafSSascha Wildner {
14747bcb6cafSSascha Wildner     UINT8                   FrameNumber;
14757bcb6cafSSascha Wildner     UINT8                   Reserved[3];
14767bcb6cafSSascha Wildner     UINT64                  BaseAddress;
14777bcb6cafSSascha Wildner     UINT64                  El0BaseAddress;
14787bcb6cafSSascha Wildner     UINT32                  TimerInterrupt;
14797bcb6cafSSascha Wildner     UINT32                  TimerFlags;
14807bcb6cafSSascha Wildner     UINT32                  VirtualTimerInterrupt;
14817bcb6cafSSascha Wildner     UINT32                  VirtualTimerFlags;
14827bcb6cafSSascha Wildner     UINT32                  CommonFlags;
14837bcb6cafSSascha Wildner 
14847bcb6cafSSascha Wildner } ACPI_GTDT_TIMER_ENTRY;
14857bcb6cafSSascha Wildner 
14867bcb6cafSSascha Wildner /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
14877bcb6cafSSascha Wildner 
14887bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IRQ_MODE               (1)
14897bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
14907bcb6cafSSascha Wildner 
14917bcb6cafSSascha Wildner /* Flag Definitions: CommonFlags above */
14927bcb6cafSSascha Wildner 
14937bcb6cafSSascha Wildner #define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
14947bcb6cafSSascha Wildner #define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
14957bcb6cafSSascha Wildner 
14967bcb6cafSSascha Wildner 
14977bcb6cafSSascha Wildner /* 1: SBSA Generic Watchdog Structure */
14987bcb6cafSSascha Wildner 
14997bcb6cafSSascha Wildner typedef struct acpi_gtdt_watchdog
15007bcb6cafSSascha Wildner {
15017bcb6cafSSascha Wildner     ACPI_GTDT_HEADER        Header;
15027bcb6cafSSascha Wildner     UINT8                   Reserved;
15037bcb6cafSSascha Wildner     UINT64                  RefreshFrameAddress;
15047bcb6cafSSascha Wildner     UINT64                  ControlFrameAddress;
15057bcb6cafSSascha Wildner     UINT32                  TimerInterrupt;
15067bcb6cafSSascha Wildner     UINT32                  TimerFlags;
15077bcb6cafSSascha Wildner 
15087bcb6cafSSascha Wildner } ACPI_GTDT_WATCHDOG;
15097bcb6cafSSascha Wildner 
15107bcb6cafSSascha Wildner /* Flag Definitions: TimerFlags above */
15117bcb6cafSSascha Wildner 
15127bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
15137bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
15147bcb6cafSSascha Wildner #define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
15157bcb6cafSSascha Wildner 
15167bcb6cafSSascha Wildner 
15177bcb6cafSSascha Wildner /*******************************************************************************
15187bcb6cafSSascha Wildner  *
15190d02842fSSascha Wildner  * HEST - Hardware Error Source Table (ACPI 4.0)
15200d02842fSSascha Wildner  *        Version 1
15210d02842fSSascha Wildner  *
15220d02842fSSascha Wildner  ******************************************************************************/
15230d02842fSSascha Wildner 
15240d02842fSSascha Wildner typedef struct acpi_table_hest
15250d02842fSSascha Wildner {
15260d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
15270d02842fSSascha Wildner     UINT32                  ErrorSourceCount;
15280d02842fSSascha Wildner 
15290d02842fSSascha Wildner } ACPI_TABLE_HEST;
15300d02842fSSascha Wildner 
15310d02842fSSascha Wildner 
15320d02842fSSascha Wildner /* HEST subtable header */
15330d02842fSSascha Wildner 
15340d02842fSSascha Wildner typedef struct acpi_hest_header
15350d02842fSSascha Wildner {
15360d02842fSSascha Wildner     UINT16                  Type;
15370d02842fSSascha Wildner     UINT16                  SourceId;
15380d02842fSSascha Wildner 
15390d02842fSSascha Wildner } ACPI_HEST_HEADER;
15400d02842fSSascha Wildner 
15410d02842fSSascha Wildner 
15420d02842fSSascha Wildner /* Values for Type field above for subtables */
15430d02842fSSascha Wildner 
15440d02842fSSascha Wildner enum AcpiHestTypes
15450d02842fSSascha Wildner {
15460d02842fSSascha Wildner     ACPI_HEST_TYPE_IA32_CHECK           = 0,
15470d02842fSSascha Wildner     ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
15480d02842fSSascha Wildner     ACPI_HEST_TYPE_IA32_NMI             = 2,
15490d02842fSSascha Wildner     ACPI_HEST_TYPE_NOT_USED3            = 3,
15500d02842fSSascha Wildner     ACPI_HEST_TYPE_NOT_USED4            = 4,
15510d02842fSSascha Wildner     ACPI_HEST_TYPE_NOT_USED5            = 5,
15520d02842fSSascha Wildner     ACPI_HEST_TYPE_AER_ROOT_PORT        = 6,
15530d02842fSSascha Wildner     ACPI_HEST_TYPE_AER_ENDPOINT         = 7,
15540d02842fSSascha Wildner     ACPI_HEST_TYPE_AER_BRIDGE           = 8,
15550d02842fSSascha Wildner     ACPI_HEST_TYPE_GENERIC_ERROR        = 9,
15567c9678bcSSascha Wildner     ACPI_HEST_TYPE_GENERIC_ERROR_V2     = 10,
15571093ca81SSascha Wildner     ACPI_HEST_TYPE_IA32_DEFERRED_CHECK  = 11,
15581093ca81SSascha Wildner     ACPI_HEST_TYPE_RESERVED             = 12    /* 12 and greater are reserved */
15590d02842fSSascha Wildner };
15600d02842fSSascha Wildner 
15610d02842fSSascha Wildner 
15620d02842fSSascha Wildner /*
15630d02842fSSascha Wildner  * HEST substructures contained in subtables
15640d02842fSSascha Wildner  */
15650d02842fSSascha Wildner 
15660d02842fSSascha Wildner /*
15670d02842fSSascha Wildner  * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
15680d02842fSSascha Wildner  * ACPI_HEST_IA_CORRECTED structures.
15690d02842fSSascha Wildner  */
15700d02842fSSascha Wildner typedef struct acpi_hest_ia_error_bank
15710d02842fSSascha Wildner {
15720d02842fSSascha Wildner     UINT8                   BankNumber;
15730d02842fSSascha Wildner     UINT8                   ClearStatusOnInit;
15740d02842fSSascha Wildner     UINT8                   StatusFormat;
15750d02842fSSascha Wildner     UINT8                   Reserved;
15760d02842fSSascha Wildner     UINT32                  ControlRegister;
15770d02842fSSascha Wildner     UINT64                  ControlData;
15780d02842fSSascha Wildner     UINT32                  StatusRegister;
15790d02842fSSascha Wildner     UINT32                  AddressRegister;
15800d02842fSSascha Wildner     UINT32                  MiscRegister;
15810d02842fSSascha Wildner 
15820d02842fSSascha Wildner } ACPI_HEST_IA_ERROR_BANK;
15830d02842fSSascha Wildner 
15840d02842fSSascha Wildner 
15850d02842fSSascha Wildner /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
15860d02842fSSascha Wildner 
15870d02842fSSascha Wildner typedef struct acpi_hest_aer_common
15880d02842fSSascha Wildner {
15890d02842fSSascha Wildner     UINT16                  Reserved1;
15900d02842fSSascha Wildner     UINT8                   Flags;
15910d02842fSSascha Wildner     UINT8                   Enabled;
15920d02842fSSascha Wildner     UINT32                  RecordsToPreallocate;
15930d02842fSSascha Wildner     UINT32                  MaxSectionsPerRecord;
15940d02842fSSascha Wildner     UINT32                  Bus;                    /* Bus and Segment numbers */
15950d02842fSSascha Wildner     UINT16                  Device;
15960d02842fSSascha Wildner     UINT16                  Function;
15970d02842fSSascha Wildner     UINT16                  DeviceControl;
15980d02842fSSascha Wildner     UINT16                  Reserved2;
15990d02842fSSascha Wildner     UINT32                  UncorrectableMask;
16000d02842fSSascha Wildner     UINT32                  UncorrectableSeverity;
16010d02842fSSascha Wildner     UINT32                  CorrectableMask;
16020d02842fSSascha Wildner     UINT32                  AdvancedCapabilities;
16030d02842fSSascha Wildner 
16040d02842fSSascha Wildner } ACPI_HEST_AER_COMMON;
16050d02842fSSascha Wildner 
16060d02842fSSascha Wildner /* Masks for HEST Flags fields */
16070d02842fSSascha Wildner 
16080d02842fSSascha Wildner #define ACPI_HEST_FIRMWARE_FIRST        (1)
16090d02842fSSascha Wildner #define ACPI_HEST_GLOBAL                (1<<1)
16101093ca81SSascha Wildner #define ACPI_HEST_GHES_ASSIST           (1<<2)
16110d02842fSSascha Wildner 
16120d02842fSSascha Wildner /*
16130d02842fSSascha Wildner  * Macros to access the bus/segment numbers in Bus field above:
16140d02842fSSascha Wildner  *  Bus number is encoded in bits 7:0
16150d02842fSSascha Wildner  *  Segment number is encoded in bits 23:8
16160d02842fSSascha Wildner  */
16170d02842fSSascha Wildner #define ACPI_HEST_BUS(Bus)              ((Bus) & 0xFF)
16180d02842fSSascha Wildner #define ACPI_HEST_SEGMENT(Bus)          (((Bus) >> 8) & 0xFFFF)
16190d02842fSSascha Wildner 
16200d02842fSSascha Wildner 
16210d02842fSSascha Wildner /* Hardware Error Notification */
16220d02842fSSascha Wildner 
16230d02842fSSascha Wildner typedef struct acpi_hest_notify
16240d02842fSSascha Wildner {
16250d02842fSSascha Wildner     UINT8                   Type;
16260d02842fSSascha Wildner     UINT8                   Length;
16270d02842fSSascha Wildner     UINT16                  ConfigWriteEnable;
16280d02842fSSascha Wildner     UINT32                  PollInterval;
16290d02842fSSascha Wildner     UINT32                  Vector;
16300d02842fSSascha Wildner     UINT32                  PollingThresholdValue;
16310d02842fSSascha Wildner     UINT32                  PollingThresholdWindow;
16320d02842fSSascha Wildner     UINT32                  ErrorThresholdValue;
16330d02842fSSascha Wildner     UINT32                  ErrorThresholdWindow;
16340d02842fSSascha Wildner 
16350d02842fSSascha Wildner } ACPI_HEST_NOTIFY;
16360d02842fSSascha Wildner 
16370d02842fSSascha Wildner /* Values for Notify Type field above */
16380d02842fSSascha Wildner 
16390d02842fSSascha Wildner enum AcpiHestNotifyTypes
16400d02842fSSascha Wildner {
16410d02842fSSascha Wildner     ACPI_HEST_NOTIFY_POLLED             = 0,
16420d02842fSSascha Wildner     ACPI_HEST_NOTIFY_EXTERNAL           = 1,
16430d02842fSSascha Wildner     ACPI_HEST_NOTIFY_LOCAL              = 2,
16440d02842fSSascha Wildner     ACPI_HEST_NOTIFY_SCI                = 3,
16450d02842fSSascha Wildner     ACPI_HEST_NOTIFY_NMI                = 4,
16460d02842fSSascha Wildner     ACPI_HEST_NOTIFY_CMCI               = 5,    /* ACPI 5.0 */
16470d02842fSSascha Wildner     ACPI_HEST_NOTIFY_MCE                = 6,    /* ACPI 5.0 */
16482ffe9f16SSascha Wildner     ACPI_HEST_NOTIFY_GPIO               = 7,    /* ACPI 6.0 */
16492ffe9f16SSascha Wildner     ACPI_HEST_NOTIFY_SEA                = 8,    /* ACPI 6.1 */
16502ffe9f16SSascha Wildner     ACPI_HEST_NOTIFY_SEI                = 9,    /* ACPI 6.1 */
16512ffe9f16SSascha Wildner     ACPI_HEST_NOTIFY_GSIV               = 10,   /* ACPI 6.1 */
16521093ca81SSascha Wildner     ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11,   /* ACPI 6.2 */
16531093ca81SSascha Wildner     ACPI_HEST_NOTIFY_RESERVED           = 12    /* 12 and greater are reserved */
16540d02842fSSascha Wildner };
16550d02842fSSascha Wildner 
16560d02842fSSascha Wildner /* Values for ConfigWriteEnable bitfield above */
16570d02842fSSascha Wildner 
16580d02842fSSascha Wildner #define ACPI_HEST_TYPE                  (1)
16590d02842fSSascha Wildner #define ACPI_HEST_POLL_INTERVAL         (1<<1)
16600d02842fSSascha Wildner #define ACPI_HEST_POLL_THRESHOLD_VALUE  (1<<2)
16610d02842fSSascha Wildner #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
16620d02842fSSascha Wildner #define ACPI_HEST_ERR_THRESHOLD_VALUE   (1<<4)
16630d02842fSSascha Wildner #define ACPI_HEST_ERR_THRESHOLD_WINDOW  (1<<5)
16640d02842fSSascha Wildner 
16650d02842fSSascha Wildner 
16660d02842fSSascha Wildner /*
16670d02842fSSascha Wildner  * HEST subtables
16680d02842fSSascha Wildner  */
16690d02842fSSascha Wildner 
16700d02842fSSascha Wildner /* 0: IA32 Machine Check Exception */
16710d02842fSSascha Wildner 
16720d02842fSSascha Wildner typedef struct acpi_hest_ia_machine_check
16730d02842fSSascha Wildner {
16740d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
16750d02842fSSascha Wildner     UINT16                  Reserved1;
16761093ca81SSascha Wildner     UINT8                   Flags;              /* See flags ACPI_HEST_GLOBAL, etc. above */
16770d02842fSSascha Wildner     UINT8                   Enabled;
16780d02842fSSascha Wildner     UINT32                  RecordsToPreallocate;
16790d02842fSSascha Wildner     UINT32                  MaxSectionsPerRecord;
16800d02842fSSascha Wildner     UINT64                  GlobalCapabilityData;
16810d02842fSSascha Wildner     UINT64                  GlobalControlData;
16820d02842fSSascha Wildner     UINT8                   NumHardwareBanks;
16830d02842fSSascha Wildner     UINT8                   Reserved3[7];
16840d02842fSSascha Wildner 
16850d02842fSSascha Wildner } ACPI_HEST_IA_MACHINE_CHECK;
16860d02842fSSascha Wildner 
16870d02842fSSascha Wildner 
16880d02842fSSascha Wildner /* 1: IA32 Corrected Machine Check */
16890d02842fSSascha Wildner 
16900d02842fSSascha Wildner typedef struct acpi_hest_ia_corrected
16910d02842fSSascha Wildner {
16920d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
16930d02842fSSascha Wildner     UINT16                  Reserved1;
16941093ca81SSascha Wildner     UINT8                   Flags;              /* See flags ACPI_HEST_GLOBAL, etc. above */
16950d02842fSSascha Wildner     UINT8                   Enabled;
16960d02842fSSascha Wildner     UINT32                  RecordsToPreallocate;
16970d02842fSSascha Wildner     UINT32                  MaxSectionsPerRecord;
16980d02842fSSascha Wildner     ACPI_HEST_NOTIFY        Notify;
16990d02842fSSascha Wildner     UINT8                   NumHardwareBanks;
17000d02842fSSascha Wildner     UINT8                   Reserved2[3];
17010d02842fSSascha Wildner 
17020d02842fSSascha Wildner } ACPI_HEST_IA_CORRECTED;
17030d02842fSSascha Wildner 
17040d02842fSSascha Wildner 
17050d02842fSSascha Wildner /* 2: IA32 Non-Maskable Interrupt */
17060d02842fSSascha Wildner 
17070d02842fSSascha Wildner typedef struct acpi_hest_ia_nmi
17080d02842fSSascha Wildner {
17090d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
17100d02842fSSascha Wildner     UINT32                  Reserved;
17110d02842fSSascha Wildner     UINT32                  RecordsToPreallocate;
17120d02842fSSascha Wildner     UINT32                  MaxSectionsPerRecord;
17130d02842fSSascha Wildner     UINT32                  MaxRawDataLength;
17140d02842fSSascha Wildner 
17150d02842fSSascha Wildner } ACPI_HEST_IA_NMI;
17160d02842fSSascha Wildner 
17170d02842fSSascha Wildner 
17180d02842fSSascha Wildner /* 3,4,5: Not used */
17190d02842fSSascha Wildner 
17200d02842fSSascha Wildner /* 6: PCI Express Root Port AER */
17210d02842fSSascha Wildner 
17220d02842fSSascha Wildner typedef struct acpi_hest_aer_root
17230d02842fSSascha Wildner {
17240d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
17250d02842fSSascha Wildner     ACPI_HEST_AER_COMMON    Aer;
17260d02842fSSascha Wildner     UINT32                  RootErrorCommand;
17270d02842fSSascha Wildner 
17280d02842fSSascha Wildner } ACPI_HEST_AER_ROOT;
17290d02842fSSascha Wildner 
17300d02842fSSascha Wildner 
17310d02842fSSascha Wildner /* 7: PCI Express AER (AER Endpoint) */
17320d02842fSSascha Wildner 
17330d02842fSSascha Wildner typedef struct acpi_hest_aer
17340d02842fSSascha Wildner {
17350d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
17360d02842fSSascha Wildner     ACPI_HEST_AER_COMMON    Aer;
17370d02842fSSascha Wildner 
17380d02842fSSascha Wildner } ACPI_HEST_AER;
17390d02842fSSascha Wildner 
17400d02842fSSascha Wildner 
17410d02842fSSascha Wildner /* 8: PCI Express/PCI-X Bridge AER */
17420d02842fSSascha Wildner 
17430d02842fSSascha Wildner typedef struct acpi_hest_aer_bridge
17440d02842fSSascha Wildner {
17450d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
17460d02842fSSascha Wildner     ACPI_HEST_AER_COMMON    Aer;
17470d02842fSSascha Wildner     UINT32                  UncorrectableMask2;
17480d02842fSSascha Wildner     UINT32                  UncorrectableSeverity2;
17490d02842fSSascha Wildner     UINT32                  AdvancedCapabilities2;
17500d02842fSSascha Wildner 
17510d02842fSSascha Wildner } ACPI_HEST_AER_BRIDGE;
17520d02842fSSascha Wildner 
17530d02842fSSascha Wildner 
17540d02842fSSascha Wildner /* 9: Generic Hardware Error Source */
17550d02842fSSascha Wildner 
17560d02842fSSascha Wildner typedef struct acpi_hest_generic
17570d02842fSSascha Wildner {
17580d02842fSSascha Wildner     ACPI_HEST_HEADER        Header;
17590d02842fSSascha Wildner     UINT16                  RelatedSourceId;
17600d02842fSSascha Wildner     UINT8                   Reserved;
17610d02842fSSascha Wildner     UINT8                   Enabled;
17620d02842fSSascha Wildner     UINT32                  RecordsToPreallocate;
17630d02842fSSascha Wildner     UINT32                  MaxSectionsPerRecord;
17640d02842fSSascha Wildner     UINT32                  MaxRawDataLength;
17650d02842fSSascha Wildner     ACPI_GENERIC_ADDRESS    ErrorStatusAddress;
17660d02842fSSascha Wildner     ACPI_HEST_NOTIFY        Notify;
17670d02842fSSascha Wildner     UINT32                  ErrorBlockLength;
17680d02842fSSascha Wildner 
17690d02842fSSascha Wildner } ACPI_HEST_GENERIC;
17700d02842fSSascha Wildner 
17710d02842fSSascha Wildner 
17727c9678bcSSascha Wildner /* 10: Generic Hardware Error Source, version 2 */
17737c9678bcSSascha Wildner 
17747c9678bcSSascha Wildner typedef struct acpi_hest_generic_v2
17757c9678bcSSascha Wildner {
17767c9678bcSSascha Wildner     ACPI_HEST_HEADER        Header;
17777c9678bcSSascha Wildner     UINT16                  RelatedSourceId;
17787c9678bcSSascha Wildner     UINT8                   Reserved;
17797c9678bcSSascha Wildner     UINT8                   Enabled;
17807c9678bcSSascha Wildner     UINT32                  RecordsToPreallocate;
17817c9678bcSSascha Wildner     UINT32                  MaxSectionsPerRecord;
17827c9678bcSSascha Wildner     UINT32                  MaxRawDataLength;
17837c9678bcSSascha Wildner     ACPI_GENERIC_ADDRESS    ErrorStatusAddress;
17847c9678bcSSascha Wildner     ACPI_HEST_NOTIFY        Notify;
17857c9678bcSSascha Wildner     UINT32                  ErrorBlockLength;
17867c9678bcSSascha Wildner     ACPI_GENERIC_ADDRESS    ReadAckRegister;
17877c9678bcSSascha Wildner     UINT64                  ReadAckPreserve;
17887c9678bcSSascha Wildner     UINT64                  ReadAckWrite;
17897c9678bcSSascha Wildner 
17907c9678bcSSascha Wildner } ACPI_HEST_GENERIC_V2;
17917c9678bcSSascha Wildner 
17927c9678bcSSascha Wildner 
17930d02842fSSascha Wildner /* Generic Error Status block */
17940d02842fSSascha Wildner 
17950d02842fSSascha Wildner typedef struct acpi_hest_generic_status
17960d02842fSSascha Wildner {
17970d02842fSSascha Wildner     UINT32                  BlockStatus;
17980d02842fSSascha Wildner     UINT32                  RawDataOffset;
17990d02842fSSascha Wildner     UINT32                  RawDataLength;
18000d02842fSSascha Wildner     UINT32                  DataLength;
18010d02842fSSascha Wildner     UINT32                  ErrorSeverity;
18020d02842fSSascha Wildner 
18030d02842fSSascha Wildner } ACPI_HEST_GENERIC_STATUS;
18040d02842fSSascha Wildner 
18050d02842fSSascha Wildner /* Values for BlockStatus flags above */
18060d02842fSSascha Wildner 
18070d02842fSSascha Wildner #define ACPI_HEST_UNCORRECTABLE             (1)
18080d02842fSSascha Wildner #define ACPI_HEST_CORRECTABLE               (1<<1)
18090d02842fSSascha Wildner #define ACPI_HEST_MULTIPLE_UNCORRECTABLE    (1<<2)
18100d02842fSSascha Wildner #define ACPI_HEST_MULTIPLE_CORRECTABLE      (1<<3)
18110d02842fSSascha Wildner #define ACPI_HEST_ERROR_ENTRY_COUNT         (0xFF<<4) /* 8 bits, error count */
18120d02842fSSascha Wildner 
18130d02842fSSascha Wildner 
18140d02842fSSascha Wildner /* Generic Error Data entry */
18150d02842fSSascha Wildner 
18160d02842fSSascha Wildner typedef struct acpi_hest_generic_data
18170d02842fSSascha Wildner {
18180d02842fSSascha Wildner     UINT8                   SectionType[16];
18190d02842fSSascha Wildner     UINT32                  ErrorSeverity;
18200d02842fSSascha Wildner     UINT16                  Revision;
18210d02842fSSascha Wildner     UINT8                   ValidationBits;
18220d02842fSSascha Wildner     UINT8                   Flags;
18230d02842fSSascha Wildner     UINT32                  ErrorDataLength;
18240d02842fSSascha Wildner     UINT8                   FruId[16];
18250d02842fSSascha Wildner     UINT8                   FruText[20];
18269cefb7c8SSascha Wildner 
1827dbd7d990SSascha Wildner } ACPI_HEST_GENERIC_DATA;
18289cefb7c8SSascha Wildner 
18292ffe9f16SSascha Wildner /* Extension for revision 0x0300 */
18302ffe9f16SSascha Wildner 
18312ffe9f16SSascha Wildner typedef struct acpi_hest_generic_data_v300
18322ffe9f16SSascha Wildner {
18332ffe9f16SSascha Wildner     UINT8                   SectionType[16];
18342ffe9f16SSascha Wildner     UINT32                  ErrorSeverity;
18352ffe9f16SSascha Wildner     UINT16                  Revision;
18362ffe9f16SSascha Wildner     UINT8                   ValidationBits;
18372ffe9f16SSascha Wildner     UINT8                   Flags;
18382ffe9f16SSascha Wildner     UINT32                  ErrorDataLength;
18392ffe9f16SSascha Wildner     UINT8                   FruId[16];
18402ffe9f16SSascha Wildner     UINT8                   FruText[20];
18412ffe9f16SSascha Wildner     UINT64                  TimeStamp;
18422ffe9f16SSascha Wildner 
18432ffe9f16SSascha Wildner } ACPI_HEST_GENERIC_DATA_V300;
18442ffe9f16SSascha Wildner 
18452ffe9f16SSascha Wildner /* Values for ErrorSeverity above */
18462ffe9f16SSascha Wildner 
18472ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_RECOVERABLE     0
18482ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_FATAL           1
18492ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_CORRECTED       2
18502ffe9f16SSascha Wildner #define ACPI_HEST_GEN_ERROR_NONE            3
18512ffe9f16SSascha Wildner 
18522ffe9f16SSascha Wildner /* Flags for ValidationBits above */
18532ffe9f16SSascha Wildner 
18542ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_FRU_ID          (1)
18552ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_FRU_STRING      (1<<1)
18562ffe9f16SSascha Wildner #define ACPI_HEST_GEN_VALID_TIMESTAMP       (1<<2)
18572ffe9f16SSascha Wildner 
18580d02842fSSascha Wildner 
18591093ca81SSascha Wildner /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
18601093ca81SSascha Wildner 
18611093ca81SSascha Wildner typedef struct acpi_hest_ia_deferred_check
18621093ca81SSascha Wildner {
18631093ca81SSascha Wildner     ACPI_HEST_HEADER        Header;
18641093ca81SSascha Wildner     UINT16                  Reserved1;
18651093ca81SSascha Wildner     UINT8                   Flags;              /* See flags ACPI_HEST_GLOBAL, etc. above */
18661093ca81SSascha Wildner     UINT8                   Enabled;
18671093ca81SSascha Wildner     UINT32                  RecordsToPreallocate;
18681093ca81SSascha Wildner     UINT32                  MaxSectionsPerRecord;
18691093ca81SSascha Wildner     ACPI_HEST_NOTIFY        Notify;
18701093ca81SSascha Wildner     UINT8                   NumHardwareBanks;
18711093ca81SSascha Wildner     UINT8                   Reserved2[3];
18721093ca81SSascha Wildner 
18731093ca81SSascha Wildner } ACPI_HEST_IA_DEFERRED_CHECK;
18741093ca81SSascha Wildner 
18751093ca81SSascha Wildner 
18761093ca81SSascha Wildner /*******************************************************************************
18771093ca81SSascha Wildner  *
1878c5a52fd3SSascha Wildner  * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
18791093ca81SSascha Wildner  *
18801093ca81SSascha Wildner  ******************************************************************************/
18811093ca81SSascha Wildner 
18821093ca81SSascha Wildner typedef struct acpi_table_hmat
18831093ca81SSascha Wildner {
18841093ca81SSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
18851093ca81SSascha Wildner     UINT32                  Reserved;
18861093ca81SSascha Wildner 
18871093ca81SSascha Wildner } ACPI_TABLE_HMAT;
18881093ca81SSascha Wildner 
18891093ca81SSascha Wildner 
18901093ca81SSascha Wildner /* Values for HMAT structure types */
18911093ca81SSascha Wildner 
18921093ca81SSascha Wildner enum AcpiHmatType
18931093ca81SSascha Wildner {
189400ffa116SSascha Wildner     ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subsystem address range */
18951093ca81SSascha Wildner     ACPI_HMAT_TYPE_LOCALITY             = 1,   /* System locality latency and bandwidth information */
18961093ca81SSascha Wildner     ACPI_HMAT_TYPE_CACHE                = 2,   /* Memory side cache information */
18971093ca81SSascha Wildner     ACPI_HMAT_TYPE_RESERVED             = 3    /* 3 and greater are reserved */
18981093ca81SSascha Wildner };
18991093ca81SSascha Wildner 
19001093ca81SSascha Wildner typedef struct acpi_hmat_structure
19011093ca81SSascha Wildner {
19021093ca81SSascha Wildner     UINT16                  Type;
19031093ca81SSascha Wildner     UINT16                  Reserved;
19041093ca81SSascha Wildner     UINT32                  Length;
19051093ca81SSascha Wildner 
19061093ca81SSascha Wildner } ACPI_HMAT_STRUCTURE;
19071093ca81SSascha Wildner 
19081093ca81SSascha Wildner 
19091093ca81SSascha Wildner /*
19101093ca81SSascha Wildner  * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
19111093ca81SSascha Wildner  */
19121093ca81SSascha Wildner 
191300ffa116SSascha Wildner /* 0: Memory proximity domain attributes */
19141093ca81SSascha Wildner 
191500ffa116SSascha Wildner typedef struct acpi_hmat_proximity_domain
19161093ca81SSascha Wildner {
19171093ca81SSascha Wildner     ACPI_HMAT_STRUCTURE     Header;
19181093ca81SSascha Wildner     UINT16                  Flags;
19191093ca81SSascha Wildner     UINT16                  Reserved1;
1920c5a52fd3SSascha Wildner     UINT32                  InitiatorPD;            /* Attached Initiator proximity domain */
19211093ca81SSascha Wildner     UINT32                  MemoryPD;               /* Memory proximity domain */
19221093ca81SSascha Wildner     UINT32                  Reserved2;
192300ffa116SSascha Wildner     UINT64                  Reserved3;
192400ffa116SSascha Wildner     UINT64                  Reserved4;
19251093ca81SSascha Wildner 
192600ffa116SSascha Wildner } ACPI_HMAT_PROXIMITY_DOMAIN;
19271093ca81SSascha Wildner 
19281093ca81SSascha Wildner /* Masks for Flags field above */
19291093ca81SSascha Wildner 
1930c5a52fd3SSascha Wildner #define ACPI_HMAT_INITIATOR_PD_VALID    (1)     /* 1: InitiatorPD field is valid */
19311093ca81SSascha Wildner 
19321093ca81SSascha Wildner 
19331093ca81SSascha Wildner /* 1: System locality latency and bandwidth information */
19341093ca81SSascha Wildner 
19351093ca81SSascha Wildner typedef struct acpi_hmat_locality
19361093ca81SSascha Wildner {
19371093ca81SSascha Wildner     ACPI_HMAT_STRUCTURE     Header;
19381093ca81SSascha Wildner     UINT8                   Flags;
19391093ca81SSascha Wildner     UINT8                   DataType;
194001d5d5dfSSascha Wildner     UINT8                   MinTransferSize;
194101d5d5dfSSascha Wildner     UINT8                   Reserved1;
19421093ca81SSascha Wildner     UINT32                  NumberOfInitiatorPDs;
19431093ca81SSascha Wildner     UINT32                  NumberOfTargetPDs;
19441093ca81SSascha Wildner     UINT32                  Reserved2;
19451093ca81SSascha Wildner     UINT64                  EntryBaseUnit;
19461093ca81SSascha Wildner 
19471093ca81SSascha Wildner } ACPI_HMAT_LOCALITY;
19481093ca81SSascha Wildner 
19491093ca81SSascha Wildner /* Masks for Flags field above */
19501093ca81SSascha Wildner 
195101d5d5dfSSascha Wildner #define ACPI_HMAT_MEMORY_HIERARCHY  (0x0F)      /* Bits 0-3 */
19521093ca81SSascha Wildner 
195301d5d5dfSSascha Wildner /* Values for Memory Hierarchy flags */
19541093ca81SSascha Wildner 
19551093ca81SSascha Wildner #define ACPI_HMAT_MEMORY            0
1956c5a52fd3SSascha Wildner #define ACPI_HMAT_1ST_LEVEL_CACHE   1
1957c5a52fd3SSascha Wildner #define ACPI_HMAT_2ND_LEVEL_CACHE   2
1958c5a52fd3SSascha Wildner #define ACPI_HMAT_3RD_LEVEL_CACHE   3
195901d5d5dfSSascha Wildner #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10        /* Bit 4: ACPI 6.4 */
196001d5d5dfSSascha Wildner #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20     /* Bit 5: ACPI 6.4 */
196101d5d5dfSSascha Wildner 
19621093ca81SSascha Wildner 
19631093ca81SSascha Wildner /* Values for DataType field above */
19641093ca81SSascha Wildner 
19651093ca81SSascha Wildner #define ACPI_HMAT_ACCESS_LATENCY    0
19661093ca81SSascha Wildner #define ACPI_HMAT_READ_LATENCY      1
19671093ca81SSascha Wildner #define ACPI_HMAT_WRITE_LATENCY     2
19681093ca81SSascha Wildner #define ACPI_HMAT_ACCESS_BANDWIDTH  3
19691093ca81SSascha Wildner #define ACPI_HMAT_READ_BANDWIDTH    4
19701093ca81SSascha Wildner #define ACPI_HMAT_WRITE_BANDWIDTH   5
19711093ca81SSascha Wildner 
19721093ca81SSascha Wildner 
19731093ca81SSascha Wildner /* 2: Memory side cache information */
19741093ca81SSascha Wildner 
19751093ca81SSascha Wildner typedef struct acpi_hmat_cache
19761093ca81SSascha Wildner {
19771093ca81SSascha Wildner     ACPI_HMAT_STRUCTURE     Header;
19781093ca81SSascha Wildner     UINT32                  MemoryPD;
19791093ca81SSascha Wildner     UINT32                  Reserved1;
19801093ca81SSascha Wildner     UINT64                  CacheSize;
19811093ca81SSascha Wildner     UINT32                  CacheAttributes;
19821093ca81SSascha Wildner     UINT16                  Reserved2;
19831093ca81SSascha Wildner     UINT16                  NumberOfSMBIOSHandles;
19841093ca81SSascha Wildner 
19851093ca81SSascha Wildner } ACPI_HMAT_CACHE;
19861093ca81SSascha Wildner 
19871093ca81SSascha Wildner /* Masks for CacheAttributes field above */
19881093ca81SSascha Wildner 
19891093ca81SSascha Wildner #define ACPI_HMAT_TOTAL_CACHE_LEVEL     (0x0000000F)
19901093ca81SSascha Wildner #define ACPI_HMAT_CACHE_LEVEL           (0x000000F0)
19911093ca81SSascha Wildner #define ACPI_HMAT_CACHE_ASSOCIATIVITY   (0x00000F00)
19921093ca81SSascha Wildner #define ACPI_HMAT_WRITE_POLICY          (0x0000F000)
19931093ca81SSascha Wildner #define ACPI_HMAT_CACHE_LINE_SIZE       (0xFFFF0000)
19941093ca81SSascha Wildner 
19951093ca81SSascha Wildner /* Values for cache associativity flag */
19961093ca81SSascha Wildner 
19971093ca81SSascha Wildner #define ACPI_HMAT_CA_NONE                     (0)
19981093ca81SSascha Wildner #define ACPI_HMAT_CA_DIRECT_MAPPED            (1)
19991093ca81SSascha Wildner #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING   (2)
20001093ca81SSascha Wildner 
20011093ca81SSascha Wildner /* Values for write policy flag */
20021093ca81SSascha Wildner 
20031093ca81SSascha Wildner #define ACPI_HMAT_CP_NONE   (0)
20041093ca81SSascha Wildner #define ACPI_HMAT_CP_WB     (1)
20051093ca81SSascha Wildner #define ACPI_HMAT_CP_WT     (2)
20061093ca81SSascha Wildner 
20071093ca81SSascha Wildner 
20080d02842fSSascha Wildner /*******************************************************************************
20090d02842fSSascha Wildner  *
20107bcb6cafSSascha Wildner  * HPET - High Precision Event Timer table
20117bcb6cafSSascha Wildner  *        Version 1
20127bcb6cafSSascha Wildner  *
20137bcb6cafSSascha Wildner  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
20147bcb6cafSSascha Wildner  * Version 1.0a, October 2004
20150d02842fSSascha Wildner  *
20160d02842fSSascha Wildner  ******************************************************************************/
20170d02842fSSascha Wildner 
20187bcb6cafSSascha Wildner typedef struct acpi_table_hpet
20190d02842fSSascha Wildner {
20200d02842fSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
20217bcb6cafSSascha Wildner     UINT32                  Id;                 /* Hardware ID of event timer block */
20227bcb6cafSSascha Wildner     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
20237bcb6cafSSascha Wildner     UINT8                   Sequence;           /* HPET sequence number */
20247bcb6cafSSascha Wildner     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
20257bcb6cafSSascha Wildner     UINT8                   Flags;
20260d02842fSSascha Wildner 
20277bcb6cafSSascha Wildner } ACPI_TABLE_HPET;
20280d02842fSSascha Wildner 
20290d02842fSSascha Wildner /* Masks for Flags field above */
20300d02842fSSascha Wildner 
20317bcb6cafSSascha Wildner #define ACPI_HPET_PAGE_PROTECT_MASK (3)
20320d02842fSSascha Wildner 
20337bcb6cafSSascha Wildner /* Values for Page Protect flags */
20340d02842fSSascha Wildner 
20357bcb6cafSSascha Wildner enum AcpiHpetPageProtect
20360d02842fSSascha Wildner {
20377bcb6cafSSascha Wildner     ACPI_HPET_NO_PAGE_PROTECT       = 0,
20387bcb6cafSSascha Wildner     ACPI_HPET_PAGE_PROTECT4         = 1,
20397bcb6cafSSascha Wildner     ACPI_HPET_PAGE_PROTECT64        = 2
20400d02842fSSascha Wildner };
20410d02842fSSascha Wildner 
20420d02842fSSascha Wildner 
20437bcb6cafSSascha Wildner /*******************************************************************************
20447bcb6cafSSascha Wildner  *
20457bcb6cafSSascha Wildner  * IBFT - Boot Firmware Table
20467bcb6cafSSascha Wildner  *        Version 1
20477bcb6cafSSascha Wildner  *
20487bcb6cafSSascha Wildner  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
20497bcb6cafSSascha Wildner  * Specification", Version 1.01, March 1, 2007
20507bcb6cafSSascha Wildner  *
20517bcb6cafSSascha Wildner  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
20527bcb6cafSSascha Wildner  * Therefore, it is not currently supported by the disassembler.
20537bcb6cafSSascha Wildner  *
20547bcb6cafSSascha Wildner  ******************************************************************************/
20550d02842fSSascha Wildner 
20567bcb6cafSSascha Wildner typedef struct acpi_table_ibft
20570d02842fSSascha Wildner {
20587bcb6cafSSascha Wildner     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
20597bcb6cafSSascha Wildner     UINT8                   Reserved[12];
20600d02842fSSascha Wildner 
20617bcb6cafSSascha Wildner } ACPI_TABLE_IBFT;
20620d02842fSSascha Wildner 
20630d02842fSSascha Wildner 
20647bcb6cafSSascha Wildner /* IBFT common subtable header */
20650d02842fSSascha Wildner 
20667bcb6cafSSascha Wildner typedef struct acpi_ibft_header
20670d02842fSSascha Wildner {
20687bcb6cafSSascha Wildner     UINT8                   Type;
2069896f2e3aSSascha Wildner     UINT8                   Version;
2070896f2e3aSSascha Wildner     UINT16                  Length;
20717bcb6cafSSascha Wildner     UINT8                   Index;
20727bcb6cafSSascha Wildner     UINT8                   Flags;
2073896f2e3aSSascha Wildner 
20747bcb6cafSSascha Wildner } ACPI_IBFT_HEADER;
20751093ca81SSascha Wildner 
20761093ca81SSascha Wildner /* Values for Type field above */
20771093ca81SSascha Wildner 
20787bcb6cafSSascha Wildner enum AcpiIbftType
20791093ca81SSascha Wildner {
20807bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_NOT_USED         = 0,
20817bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_CONTROL          = 1,
20827bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_INITIATOR        = 2,
20837bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_NIC              = 3,
20847bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_TARGET           = 4,
20857bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
20867bcb6cafSSascha Wildner     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
20871093ca81SSascha Wildner };
20881093ca81SSascha Wildner 
20891093ca81SSascha Wildner 
20907bcb6cafSSascha Wildner /* IBFT subtables */
20911093ca81SSascha Wildner 
20927bcb6cafSSascha Wildner typedef struct acpi_ibft_control
2093cf6b3eb1SSascha Wildner {
20947bcb6cafSSascha Wildner     ACPI_IBFT_HEADER        Header;
20957bcb6cafSSascha Wildner     UINT16                  Extensions;
20967bcb6cafSSascha Wildner     UINT16                  InitiatorOffset;
20977bcb6cafSSascha Wildner     UINT16                  Nic0Offset;
20987bcb6cafSSascha Wildner     UINT16                  Target0Offset;
20997bcb6cafSSascha Wildner     UINT16                  Nic1Offset;
21007bcb6cafSSascha Wildner     UINT16                  Target1Offset;
21011093ca81SSascha Wildner 
21027bcb6cafSSascha Wildner } ACPI_IBFT_CONTROL;
21031093ca81SSascha Wildner 
21047bcb6cafSSascha Wildner typedef struct acpi_ibft_initiator
2105cf6b3eb1SSascha Wildner {
21067bcb6cafSSascha Wildner     ACPI_IBFT_HEADER        Header;
21077bcb6cafSSascha Wildner     UINT8                   SnsServer[16];
21087bcb6cafSSascha Wildner     UINT8                   SlpServer[16];
21097bcb6cafSSascha Wildner     UINT8                   PrimaryServer[16];
21107bcb6cafSSascha Wildner     UINT8                   SecondaryServer[16];
21117bcb6cafSSascha Wildner     UINT16                  NameLength;
21127bcb6cafSSascha Wildner     UINT16                  NameOffset;
21131093ca81SSascha Wildner 
21147bcb6cafSSascha Wildner } ACPI_IBFT_INITIATOR;
21151093ca81SSascha Wildner 
21167bcb6cafSSascha Wildner typedef struct acpi_ibft_nic
2117cf6b3eb1SSascha Wildner {
21187bcb6cafSSascha Wildner     ACPI_IBFT_HEADER        Header;
21197bcb6cafSSascha Wildner     UINT8                   IpAddress[16];
21207bcb6cafSSascha Wildner     UINT8                   SubnetMaskPrefix;
21217bcb6cafSSascha Wildner     UINT8                   Origin;
21227bcb6cafSSascha Wildner     UINT8                   Gateway[16];
21237bcb6cafSSascha Wildner     UINT8                   PrimaryDns[16];
21247bcb6cafSSascha Wildner     UINT8                   SecondaryDns[16];
21257bcb6cafSSascha Wildner     UINT8                   Dhcp[16];
21267bcb6cafSSascha Wildner     UINT16                  Vlan;
21277bcb6cafSSascha Wildner     UINT8                   MacAddress[6];
21287bcb6cafSSascha Wildner     UINT16                  PciAddress;
21297bcb6cafSSascha Wildner     UINT16                  NameLength;
21307bcb6cafSSascha Wildner     UINT16                  NameOffset;
21311093ca81SSascha Wildner 
21327bcb6cafSSascha Wildner } ACPI_IBFT_NIC;
21331093ca81SSascha Wildner 
21347bcb6cafSSascha Wildner typedef struct acpi_ibft_target
21350d02842fSSascha Wildner {
21367bcb6cafSSascha Wildner     ACPI_IBFT_HEADER        Header;
21377bcb6cafSSascha Wildner     UINT8                   TargetIpAddress[16];
21387bcb6cafSSascha Wildner     UINT16                  TargetIpSocket;
21397bcb6cafSSascha Wildner     UINT8                   TargetBootLun[8];
21407bcb6cafSSascha Wildner     UINT8                   ChapType;
21417bcb6cafSSascha Wildner     UINT8                   NicAssociation;
21427bcb6cafSSascha Wildner     UINT16                  TargetNameLength;
21437bcb6cafSSascha Wildner     UINT16                  TargetNameOffset;
21447bcb6cafSSascha Wildner     UINT16                  ChapNameLength;
21457bcb6cafSSascha Wildner     UINT16                  ChapNameOffset;
21467bcb6cafSSascha Wildner     UINT16                  ChapSecretLength;
21477bcb6cafSSascha Wildner     UINT16                  ChapSecretOffset;
21487bcb6cafSSascha Wildner     UINT16                  ReverseChapNameLength;
21497bcb6cafSSascha Wildner     UINT16                  ReverseChapNameOffset;
21507bcb6cafSSascha Wildner     UINT16                  ReverseChapSecretLength;
21517bcb6cafSSascha Wildner     UINT16                  ReverseChapSecretOffset;
21520d02842fSSascha Wildner 
21537bcb6cafSSascha Wildner } ACPI_IBFT_TARGET;
21541093ca81SSascha Wildner 
21551093ca81SSascha Wildner 
2156d4972a9cSSascha Wildner /* Reset to default packing */
2157d4972a9cSSascha Wildner 
2158d4972a9cSSascha Wildner #pragma pack()
21590d02842fSSascha Wildner 
21600d02842fSSascha Wildner #endif /* __ACTBL1_H__ */
2161