xref: /freebsd/sys/contrib/dev/acpica/include/actbl3.h (revision af051161437e44a6ceabf9e196f0eb8f33d92b86)
13f0275a0SJung-uk Kim /******************************************************************************
23f0275a0SJung-uk Kim  *
33f0275a0SJung-uk Kim  * Name: actbl3.h - ACPI Table Definitions
43f0275a0SJung-uk Kim  *
53f0275a0SJung-uk Kim  *****************************************************************************/
63f0275a0SJung-uk Kim 
70d84335fSJung-uk Kim /******************************************************************************
80d84335fSJung-uk Kim  *
90d84335fSJung-uk Kim  * 1. Copyright Notice
100d84335fSJung-uk Kim  *
110d84335fSJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.
123f0275a0SJung-uk Kim  * All rights reserved.
133f0275a0SJung-uk Kim  *
140d84335fSJung-uk Kim  * 2. License
150d84335fSJung-uk Kim  *
160d84335fSJung-uk Kim  * 2.1. This is your license from Intel Corp. under its intellectual property
170d84335fSJung-uk Kim  * rights. You may have additional license terms from the party that provided
180d84335fSJung-uk Kim  * you this software, covering your right to use that party's intellectual
190d84335fSJung-uk Kim  * property rights.
200d84335fSJung-uk Kim  *
210d84335fSJung-uk Kim  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
220d84335fSJung-uk Kim  * copy of the source code appearing in this file ("Covered Code") an
230d84335fSJung-uk Kim  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
240d84335fSJung-uk Kim  * base code distributed originally by Intel ("Original Intel Code") to copy,
250d84335fSJung-uk Kim  * make derivatives, distribute, use and display any portion of the Covered
260d84335fSJung-uk Kim  * Code in any form, with the right to sublicense such rights; and
270d84335fSJung-uk Kim  *
280d84335fSJung-uk Kim  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
290d84335fSJung-uk Kim  * license (with the right to sublicense), under only those claims of Intel
300d84335fSJung-uk Kim  * patents that are infringed by the Original Intel Code, to make, use, sell,
310d84335fSJung-uk Kim  * offer to sell, and import the Covered Code and derivative works thereof
320d84335fSJung-uk Kim  * solely to the minimum extent necessary to exercise the above copyright
330d84335fSJung-uk Kim  * license, and in no event shall the patent license extend to any additions
340d84335fSJung-uk Kim  * to or modifications of the Original Intel Code. No other license or right
350d84335fSJung-uk Kim  * is granted directly or by implication, estoppel or otherwise;
360d84335fSJung-uk Kim  *
370d84335fSJung-uk Kim  * The above copyright and patent license is granted only if the following
380d84335fSJung-uk Kim  * conditions are met:
390d84335fSJung-uk Kim  *
400d84335fSJung-uk Kim  * 3. Conditions
410d84335fSJung-uk Kim  *
420d84335fSJung-uk Kim  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
430d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
440d84335fSJung-uk Kim  * Code or modification with rights to further distribute source must include
450d84335fSJung-uk Kim  * the above Copyright Notice, the above License, this list of Conditions,
460d84335fSJung-uk Kim  * and the following Disclaimer and Export Compliance provision. In addition,
470d84335fSJung-uk Kim  * Licensee must cause all Covered Code to which Licensee contributes to
480d84335fSJung-uk Kim  * contain a file documenting the changes Licensee made to create that Covered
490d84335fSJung-uk Kim  * Code and the date of any change. Licensee must include in that file the
500d84335fSJung-uk Kim  * documentation of any changes made by any predecessor Licensee. Licensee
510d84335fSJung-uk Kim  * must include a prominent statement that the modification is derived,
520d84335fSJung-uk Kim  * directly or indirectly, from Original Intel Code.
530d84335fSJung-uk Kim  *
540d84335fSJung-uk Kim  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
550d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
560d84335fSJung-uk Kim  * Code or modification without rights to further distribute source must
570d84335fSJung-uk Kim  * include the following Disclaimer and Export Compliance provision in the
580d84335fSJung-uk Kim  * documentation and/or other materials provided with distribution. In
590d84335fSJung-uk Kim  * addition, Licensee may not authorize further sublicense of source of any
600d84335fSJung-uk Kim  * portion of the Covered Code, and must include terms to the effect that the
610d84335fSJung-uk Kim  * license from Licensee to its licensee is limited to the intellectual
620d84335fSJung-uk Kim  * property embodied in the software Licensee provides to its licensee, and
630d84335fSJung-uk Kim  * not to intellectual property embodied in modifications its licensee may
640d84335fSJung-uk Kim  * make.
650d84335fSJung-uk Kim  *
660d84335fSJung-uk Kim  * 3.3. Redistribution of Executable. Redistribution in executable form of any
670d84335fSJung-uk Kim  * substantial portion of the Covered Code or modification must reproduce the
680d84335fSJung-uk Kim  * above Copyright Notice, and the following Disclaimer and Export Compliance
690d84335fSJung-uk Kim  * provision in the documentation and/or other materials provided with the
700d84335fSJung-uk Kim  * distribution.
710d84335fSJung-uk Kim  *
720d84335fSJung-uk Kim  * 3.4. Intel retains all right, title, and interest in and to the Original
730d84335fSJung-uk Kim  * Intel Code.
740d84335fSJung-uk Kim  *
750d84335fSJung-uk Kim  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
760d84335fSJung-uk Kim  * Intel shall be used in advertising or otherwise to promote the sale, use or
770d84335fSJung-uk Kim  * other dealings in products derived from or relating to the Covered Code
780d84335fSJung-uk Kim  * without prior written authorization from Intel.
790d84335fSJung-uk Kim  *
800d84335fSJung-uk Kim  * 4. Disclaimer and Export Compliance
810d84335fSJung-uk Kim  *
820d84335fSJung-uk Kim  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
830d84335fSJung-uk Kim  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
840d84335fSJung-uk Kim  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
850d84335fSJung-uk Kim  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
860d84335fSJung-uk Kim  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
870d84335fSJung-uk Kim  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
880d84335fSJung-uk Kim  * PARTICULAR PURPOSE.
890d84335fSJung-uk Kim  *
900d84335fSJung-uk Kim  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
910d84335fSJung-uk Kim  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
920d84335fSJung-uk Kim  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
930d84335fSJung-uk Kim  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
940d84335fSJung-uk Kim  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
950d84335fSJung-uk Kim  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
960d84335fSJung-uk Kim  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
970d84335fSJung-uk Kim  * LIMITED REMEDY.
980d84335fSJung-uk Kim  *
990d84335fSJung-uk Kim  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1000d84335fSJung-uk Kim  * software or system incorporating such software without first obtaining any
1010d84335fSJung-uk Kim  * required license or other approval from the U. S. Department of Commerce or
1020d84335fSJung-uk Kim  * any other agency or department of the United States Government. In the
1030d84335fSJung-uk Kim  * event Licensee exports any such software from the United States or
1040d84335fSJung-uk Kim  * re-exports any such software from a foreign destination, Licensee shall
1050d84335fSJung-uk Kim  * ensure that the distribution and export/re-export of the software is in
1060d84335fSJung-uk Kim  * compliance with all laws, regulations, orders, or other restrictions of the
1070d84335fSJung-uk Kim  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1080d84335fSJung-uk Kim  * any of its subsidiaries will export/re-export any technical data, process,
1090d84335fSJung-uk Kim  * software, or service, directly or indirectly, to any country for which the
1100d84335fSJung-uk Kim  * United States government or any agency thereof requires an export license,
1110d84335fSJung-uk Kim  * other governmental approval, or letter of assurance, without first obtaining
1120d84335fSJung-uk Kim  * such license, approval or letter.
1130d84335fSJung-uk Kim  *
1140d84335fSJung-uk Kim  *****************************************************************************
1150d84335fSJung-uk Kim  *
1160d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
1170d84335fSJung-uk Kim  * following license:
1180d84335fSJung-uk Kim  *
1193f0275a0SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
1203f0275a0SJung-uk Kim  * modification, are permitted provided that the following conditions
1213f0275a0SJung-uk Kim  * are met:
1223f0275a0SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
1233f0275a0SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
1243f0275a0SJung-uk Kim  *    without modification.
1253f0275a0SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1263f0275a0SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
1273f0275a0SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
1283f0275a0SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
1293f0275a0SJung-uk Kim  *    binary redistribution.
1303f0275a0SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
1313f0275a0SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
1323f0275a0SJung-uk Kim  *    from this software without specific prior written permission.
1333f0275a0SJung-uk Kim  *
1340d84335fSJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1350d84335fSJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1360d84335fSJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1370d84335fSJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1380d84335fSJung-uk Kim  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1390d84335fSJung-uk Kim  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1400d84335fSJung-uk Kim  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1410d84335fSJung-uk Kim  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1420d84335fSJung-uk Kim  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1430d84335fSJung-uk Kim  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1440d84335fSJung-uk Kim  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1450d84335fSJung-uk Kim  *
1460d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
1473f0275a0SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
1483f0275a0SJung-uk Kim  * Software Foundation.
1493f0275a0SJung-uk Kim  *
1500d84335fSJung-uk Kim  *****************************************************************************/
1513f0275a0SJung-uk Kim 
1523f0275a0SJung-uk Kim #ifndef __ACTBL3_H__
1533f0275a0SJung-uk Kim #define __ACTBL3_H__
1543f0275a0SJung-uk Kim 
1553f0275a0SJung-uk Kim 
1563f0275a0SJung-uk Kim /*******************************************************************************
1573f0275a0SJung-uk Kim  *
1583f0275a0SJung-uk Kim  * Additional ACPI Tables (3)
1593f0275a0SJung-uk Kim  *
1603f0275a0SJung-uk Kim  * These tables are not consumed directly by the ACPICA subsystem, but are
1613f0275a0SJung-uk Kim  * included here to support device drivers and the AML disassembler.
1623f0275a0SJung-uk Kim  *
1635ef50723SJung-uk Kim  * In general, the tables in this file are fully defined within the ACPI
1645ef50723SJung-uk Kim  * specification.
1653f0275a0SJung-uk Kim  *
1663f0275a0SJung-uk Kim  ******************************************************************************/
1673f0275a0SJung-uk Kim 
1683f0275a0SJung-uk Kim 
1693f0275a0SJung-uk Kim /*
1703f0275a0SJung-uk Kim  * Values for description table header signatures for tables defined in this
1713f0275a0SJung-uk Kim  * file. Useful because they make it more difficult to inadvertently type in
1723f0275a0SJung-uk Kim  * the wrong signature.
1733f0275a0SJung-uk Kim  */
1743f0275a0SJung-uk Kim #define ACPI_SIG_BGRT           "BGRT"      /* Boot Graphics Resource Table */
1753f0275a0SJung-uk Kim #define ACPI_SIG_DRTM           "DRTM"      /* Dynamic Root of Trust for Measurement table */
1763f0275a0SJung-uk Kim #define ACPI_SIG_FPDT           "FPDT"      /* Firmware Performance Data Table */
1773f0275a0SJung-uk Kim #define ACPI_SIG_GTDT           "GTDT"      /* Generic Timer Description Table */
1783f0275a0SJung-uk Kim #define ACPI_SIG_MPST           "MPST"      /* Memory Power State Table */
1793f0275a0SJung-uk Kim #define ACPI_SIG_PCCT           "PCCT"      /* Platform Communications Channel Table */
1803f0275a0SJung-uk Kim #define ACPI_SIG_PMTT           "PMTT"      /* Platform Memory Topology Table */
1813f0275a0SJung-uk Kim #define ACPI_SIG_RASF           "RASF"      /* RAS Feature table */
182a371a5fdSJung-uk Kim #define ACPI_SIG_STAO           "STAO"      /* Status Override table */
183a371a5fdSJung-uk Kim #define ACPI_SIG_WPBT           "WPBT"      /* Windows Platform Binary Table */
184a371a5fdSJung-uk Kim #define ACPI_SIG_XENV           "XENV"      /* Xen Environment table */
1853f0275a0SJung-uk Kim 
1863f0275a0SJung-uk Kim #define ACPI_SIG_S3PT           "S3PT"      /* S3 Performance (sub)Table */
1873f0275a0SJung-uk Kim #define ACPI_SIG_PCCS           "PCC"       /* PCC Shared Memory Region */
1883f0275a0SJung-uk Kim 
1893f0275a0SJung-uk Kim /* Reserved table signatures */
1903f0275a0SJung-uk Kim 
1913f0275a0SJung-uk Kim #define ACPI_SIG_MATR           "MATR"      /* Memory Address Translation Table */
1923f0275a0SJung-uk Kim #define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table */
1933f0275a0SJung-uk Kim 
1943f0275a0SJung-uk Kim /*
1953f0275a0SJung-uk Kim  * All tables must be byte-packed to match the ACPI specification, since
1963f0275a0SJung-uk Kim  * the tables are provided by the system BIOS.
1973f0275a0SJung-uk Kim  */
1983f0275a0SJung-uk Kim #pragma pack(1)
1993f0275a0SJung-uk Kim 
2003f0275a0SJung-uk Kim /*
2011df130f1SJung-uk Kim  * Note: C bitfields are not used for this reason:
2021df130f1SJung-uk Kim  *
2031df130f1SJung-uk Kim  * "Bitfields are great and easy to read, but unfortunately the C language
2041df130f1SJung-uk Kim  * does not specify the layout of bitfields in memory, which means they are
2051df130f1SJung-uk Kim  * essentially useless for dealing with packed data in on-disk formats or
2061df130f1SJung-uk Kim  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
2071df130f1SJung-uk Kim  * this decision was a design error in C. Ritchie could have picked an order
2081df130f1SJung-uk Kim  * and stuck with it." Norman Ramsey.
2091df130f1SJung-uk Kim  * See http://stackoverflow.com/a/1053662/41661
2103f0275a0SJung-uk Kim  */
2113f0275a0SJung-uk Kim 
2123f0275a0SJung-uk Kim 
2133f0275a0SJung-uk Kim /*******************************************************************************
2143f0275a0SJung-uk Kim  *
2153f0275a0SJung-uk Kim  * BGRT - Boot Graphics Resource Table (ACPI 5.0)
2163f0275a0SJung-uk Kim  *        Version 1
2173f0275a0SJung-uk Kim  *
2183f0275a0SJung-uk Kim  ******************************************************************************/
2193f0275a0SJung-uk Kim 
2203f0275a0SJung-uk Kim typedef struct acpi_table_bgrt
2213f0275a0SJung-uk Kim {
2223f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
2233f0275a0SJung-uk Kim     UINT16                  Version;
2243f0275a0SJung-uk Kim     UINT8                   Status;
2253f0275a0SJung-uk Kim     UINT8                   ImageType;
2263f0275a0SJung-uk Kim     UINT64                  ImageAddress;
2273f0275a0SJung-uk Kim     UINT32                  ImageOffsetX;
2283f0275a0SJung-uk Kim     UINT32                  ImageOffsetY;
2293f0275a0SJung-uk Kim 
2303f0275a0SJung-uk Kim } ACPI_TABLE_BGRT;
2313f0275a0SJung-uk Kim 
232*af051161SJung-uk Kim /* Flags for Status field above */
233*af051161SJung-uk Kim 
234*af051161SJung-uk Kim #define ACPI_BGRT_DISPLAYED                 (1)
235*af051161SJung-uk Kim #define ACPI_BGRT_ORIENTATION_OFFSET        (3 << 1)
236*af051161SJung-uk Kim 
2373f0275a0SJung-uk Kim 
2383f0275a0SJung-uk Kim /*******************************************************************************
2393f0275a0SJung-uk Kim  *
2403f0275a0SJung-uk Kim  * DRTM - Dynamic Root of Trust for Measurement table
241a371a5fdSJung-uk Kim  * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
242a371a5fdSJung-uk Kim  * Table version 1
2433f0275a0SJung-uk Kim  *
2443f0275a0SJung-uk Kim  ******************************************************************************/
2453f0275a0SJung-uk Kim 
2463f0275a0SJung-uk Kim typedef struct acpi_table_drtm
2473f0275a0SJung-uk Kim {
2483f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
2493f0275a0SJung-uk Kim     UINT64                  EntryBaseAddress;
2503f0275a0SJung-uk Kim     UINT64                  EntryLength;
2513f0275a0SJung-uk Kim     UINT32                  EntryAddress32;
2523f0275a0SJung-uk Kim     UINT64                  EntryAddress64;
2533f0275a0SJung-uk Kim     UINT64                  ExitAddress;
2543f0275a0SJung-uk Kim     UINT64                  LogAreaAddress;
2553f0275a0SJung-uk Kim     UINT32                  LogAreaLength;
2563f0275a0SJung-uk Kim     UINT64                  ArchDependentAddress;
2573f0275a0SJung-uk Kim     UINT32                  Flags;
2583f0275a0SJung-uk Kim 
2593f0275a0SJung-uk Kim } ACPI_TABLE_DRTM;
2603f0275a0SJung-uk Kim 
261a371a5fdSJung-uk Kim /* Flag Definitions for above */
2623f0275a0SJung-uk Kim 
263a371a5fdSJung-uk Kim #define ACPI_DRTM_ACCESS_ALLOWED            (1)
264a371a5fdSJung-uk Kim #define ACPI_DRTM_ENABLE_GAP_CODE           (1<<1)
265a371a5fdSJung-uk Kim #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS   (1<<2)
266a371a5fdSJung-uk Kim #define ACPI_DRTM_AUTHORITY_ORDER           (1<<3)
267a371a5fdSJung-uk Kim 
268a371a5fdSJung-uk Kim 
269a371a5fdSJung-uk Kim /* 1) Validated Tables List (64-bit addresses) */
270a371a5fdSJung-uk Kim 
271a371a5fdSJung-uk Kim typedef struct acpi_drtm_vtable_list
2723f0275a0SJung-uk Kim {
273a371a5fdSJung-uk Kim     UINT32                  ValidatedTableCount;
274a371a5fdSJung-uk Kim     UINT64                  ValidatedTables[1];
2753f0275a0SJung-uk Kim 
276a371a5fdSJung-uk Kim } ACPI_DRTM_VTABLE_LIST;
2773f0275a0SJung-uk Kim 
278a371a5fdSJung-uk Kim /* 2) Resources List (of Resource Descriptors) */
279a371a5fdSJung-uk Kim 
280a371a5fdSJung-uk Kim /* Resource Descriptor */
281a371a5fdSJung-uk Kim 
282a371a5fdSJung-uk Kim typedef struct acpi_drtm_resource
283a371a5fdSJung-uk Kim {
284a371a5fdSJung-uk Kim     UINT8                   Size[7];
285a371a5fdSJung-uk Kim     UINT8                   Type;
286a371a5fdSJung-uk Kim     UINT64                  Address;
287a371a5fdSJung-uk Kim 
288a371a5fdSJung-uk Kim } ACPI_DRTM_RESOURCE;
2893f0275a0SJung-uk Kim 
2903f0275a0SJung-uk Kim typedef struct acpi_drtm_resource_list
2913f0275a0SJung-uk Kim {
292a371a5fdSJung-uk Kim     UINT32                  ResourceCount;
293a371a5fdSJung-uk Kim     ACPI_DRTM_RESOURCE      Resources[1];
2943f0275a0SJung-uk Kim 
2953f0275a0SJung-uk Kim } ACPI_DRTM_RESOURCE_LIST;
2963f0275a0SJung-uk Kim 
2973f0275a0SJung-uk Kim /* 3) Platform-specific Identifiers List */
2983f0275a0SJung-uk Kim 
299a371a5fdSJung-uk Kim typedef struct acpi_drtm_dps_id
3003f0275a0SJung-uk Kim {
301a371a5fdSJung-uk Kim     UINT32                  DpsIdLength;
302a371a5fdSJung-uk Kim     UINT8                   DpsId[16];
3033f0275a0SJung-uk Kim 
304a371a5fdSJung-uk Kim } ACPI_DRTM_DPS_ID;
3053f0275a0SJung-uk Kim 
3063f0275a0SJung-uk Kim 
3073f0275a0SJung-uk Kim /*******************************************************************************
3083f0275a0SJung-uk Kim  *
3093f0275a0SJung-uk Kim  * FPDT - Firmware Performance Data Table (ACPI 5.0)
3103f0275a0SJung-uk Kim  *        Version 1
3113f0275a0SJung-uk Kim  *
3123f0275a0SJung-uk Kim  ******************************************************************************/
3133f0275a0SJung-uk Kim 
3143f0275a0SJung-uk Kim typedef struct acpi_table_fpdt
3153f0275a0SJung-uk Kim {
3163f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
3173f0275a0SJung-uk Kim 
3183f0275a0SJung-uk Kim } ACPI_TABLE_FPDT;
3193f0275a0SJung-uk Kim 
3203f0275a0SJung-uk Kim 
321f8146b88SJung-uk Kim /* FPDT subtable header (Performance Record Structure) */
3223f0275a0SJung-uk Kim 
3233f0275a0SJung-uk Kim typedef struct acpi_fpdt_header
3243f0275a0SJung-uk Kim {
3253f0275a0SJung-uk Kim     UINT16                  Type;
3263f0275a0SJung-uk Kim     UINT8                   Length;
3273f0275a0SJung-uk Kim     UINT8                   Revision;
3283f0275a0SJung-uk Kim 
3293f0275a0SJung-uk Kim } ACPI_FPDT_HEADER;
3303f0275a0SJung-uk Kim 
3313f0275a0SJung-uk Kim /* Values for Type field above */
3323f0275a0SJung-uk Kim 
3333f0275a0SJung-uk Kim enum AcpiFpdtType
3343f0275a0SJung-uk Kim {
3353f0275a0SJung-uk Kim     ACPI_FPDT_TYPE_BOOT                 = 0,
3369c48c75eSJung-uk Kim     ACPI_FPDT_TYPE_S3PERF               = 1
3373f0275a0SJung-uk Kim };
3383f0275a0SJung-uk Kim 
3393f0275a0SJung-uk Kim 
3403f0275a0SJung-uk Kim /*
3413f0275a0SJung-uk Kim  * FPDT subtables
3423f0275a0SJung-uk Kim  */
3433f0275a0SJung-uk Kim 
3443f0275a0SJung-uk Kim /* 0: Firmware Basic Boot Performance Record */
3453f0275a0SJung-uk Kim 
346f8146b88SJung-uk Kim typedef struct acpi_fpdt_boot_pointer
347f8146b88SJung-uk Kim {
348f8146b88SJung-uk Kim     ACPI_FPDT_HEADER        Header;
349f8146b88SJung-uk Kim     UINT8                   Reserved[4];
350f8146b88SJung-uk Kim     UINT64                  Address;
351f8146b88SJung-uk Kim 
352f8146b88SJung-uk Kim } ACPI_FPDT_BOOT_POINTER;
353f8146b88SJung-uk Kim 
354f8146b88SJung-uk Kim 
355f8146b88SJung-uk Kim /* 1: S3 Performance Table Pointer Record */
356f8146b88SJung-uk Kim 
357f8146b88SJung-uk Kim typedef struct acpi_fpdt_s3pt_pointer
358f8146b88SJung-uk Kim {
359f8146b88SJung-uk Kim     ACPI_FPDT_HEADER        Header;
360f8146b88SJung-uk Kim     UINT8                   Reserved[4];
361f8146b88SJung-uk Kim     UINT64                  Address;
362f8146b88SJung-uk Kim 
363f8146b88SJung-uk Kim } ACPI_FPDT_S3PT_POINTER;
364f8146b88SJung-uk Kim 
365f8146b88SJung-uk Kim 
366f8146b88SJung-uk Kim /*
367f8146b88SJung-uk Kim  * S3PT - S3 Performance Table. This table is pointed to by the
368f8146b88SJung-uk Kim  * S3 Pointer Record above.
369f8146b88SJung-uk Kim  */
370f8146b88SJung-uk Kim typedef struct acpi_table_s3pt
371f8146b88SJung-uk Kim {
372f8146b88SJung-uk Kim     UINT8                   Signature[4]; /* "S3PT" */
373f8146b88SJung-uk Kim     UINT32                  Length;
374f8146b88SJung-uk Kim 
375f8146b88SJung-uk Kim } ACPI_TABLE_S3PT;
376f8146b88SJung-uk Kim 
377f8146b88SJung-uk Kim 
378f8146b88SJung-uk Kim /*
379f8146b88SJung-uk Kim  * S3PT Subtables (Not part of the actual FPDT)
380f8146b88SJung-uk Kim  */
381f8146b88SJung-uk Kim 
382f8146b88SJung-uk Kim /* Values for Type field in S3PT header */
383f8146b88SJung-uk Kim 
384f8146b88SJung-uk Kim enum AcpiS3ptType
385f8146b88SJung-uk Kim {
386f8146b88SJung-uk Kim     ACPI_S3PT_TYPE_RESUME               = 0,
387f8146b88SJung-uk Kim     ACPI_S3PT_TYPE_SUSPEND              = 1,
388f8146b88SJung-uk Kim     ACPI_FPDT_BOOT_PERFORMANCE          = 2
389f8146b88SJung-uk Kim };
390f8146b88SJung-uk Kim 
391f8146b88SJung-uk Kim typedef struct acpi_s3pt_resume
392f8146b88SJung-uk Kim {
393f8146b88SJung-uk Kim     ACPI_FPDT_HEADER        Header;
394f8146b88SJung-uk Kim     UINT32                  ResumeCount;
395f8146b88SJung-uk Kim     UINT64                  FullResume;
396f8146b88SJung-uk Kim     UINT64                  AverageResume;
397f8146b88SJung-uk Kim 
398f8146b88SJung-uk Kim } ACPI_S3PT_RESUME;
399f8146b88SJung-uk Kim 
400f8146b88SJung-uk Kim typedef struct acpi_s3pt_suspend
401f8146b88SJung-uk Kim {
402f8146b88SJung-uk Kim     ACPI_FPDT_HEADER        Header;
403f8146b88SJung-uk Kim     UINT64                  SuspendStart;
404f8146b88SJung-uk Kim     UINT64                  SuspendEnd;
405f8146b88SJung-uk Kim 
406f8146b88SJung-uk Kim } ACPI_S3PT_SUSPEND;
407f8146b88SJung-uk Kim 
408f8146b88SJung-uk Kim 
409f8146b88SJung-uk Kim /*
410f8146b88SJung-uk Kim  * FPDT Boot Performance Record (Not part of the actual FPDT)
411f8146b88SJung-uk Kim  */
4123f0275a0SJung-uk Kim typedef struct acpi_fpdt_boot
4133f0275a0SJung-uk Kim {
4143f0275a0SJung-uk Kim     ACPI_FPDT_HEADER        Header;
4153f0275a0SJung-uk Kim     UINT8                   Reserved[4];
4163f0275a0SJung-uk Kim     UINT64                  ResetEnd;
4173f0275a0SJung-uk Kim     UINT64                  LoadStart;
4183f0275a0SJung-uk Kim     UINT64                  StartupStart;
4193f0275a0SJung-uk Kim     UINT64                  ExitServicesEntry;
4203f0275a0SJung-uk Kim     UINT64                  ExitServicesExit;
4213f0275a0SJung-uk Kim 
4223f0275a0SJung-uk Kim } ACPI_FPDT_BOOT;
4233f0275a0SJung-uk Kim 
4243f0275a0SJung-uk Kim 
4253f0275a0SJung-uk Kim /*******************************************************************************
4263f0275a0SJung-uk Kim  *
427313a0c13SJung-uk Kim  * GTDT - Generic Timer Description Table (ACPI 5.1)
428313a0c13SJung-uk Kim  *        Version 2
4293f0275a0SJung-uk Kim  *
4303f0275a0SJung-uk Kim  ******************************************************************************/
4313f0275a0SJung-uk Kim 
4323f0275a0SJung-uk Kim typedef struct acpi_table_gtdt
4333f0275a0SJung-uk Kim {
4343f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
435313a0c13SJung-uk Kim     UINT64                  CounterBlockAddresss;
436313a0c13SJung-uk Kim     UINT32                  Reserved;
437313a0c13SJung-uk Kim     UINT32                  SecureEl1Interrupt;
438313a0c13SJung-uk Kim     UINT32                  SecureEl1Flags;
439313a0c13SJung-uk Kim     UINT32                  NonSecureEl1Interrupt;
440313a0c13SJung-uk Kim     UINT32                  NonSecureEl1Flags;
4413f0275a0SJung-uk Kim     UINT32                  VirtualTimerInterrupt;
4423f0275a0SJung-uk Kim     UINT32                  VirtualTimerFlags;
443313a0c13SJung-uk Kim     UINT32                  NonSecureEl2Interrupt;
444313a0c13SJung-uk Kim     UINT32                  NonSecureEl2Flags;
445313a0c13SJung-uk Kim     UINT64                  CounterReadBlockAddress;
446313a0c13SJung-uk Kim     UINT32                  PlatformTimerCount;
447313a0c13SJung-uk Kim     UINT32                  PlatformTimerOffset;
4483f0275a0SJung-uk Kim 
4493f0275a0SJung-uk Kim } ACPI_TABLE_GTDT;
4503f0275a0SJung-uk Kim 
451313a0c13SJung-uk Kim /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
4523f0275a0SJung-uk Kim 
453313a0c13SJung-uk Kim #define ACPI_GTDT_INTERRUPT_MODE        (1)
454313a0c13SJung-uk Kim #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
455313a0c13SJung-uk Kim #define ACPI_GTDT_ALWAYS_ON             (1<<2)
4563f0275a0SJung-uk Kim 
4573f0275a0SJung-uk Kim 
458313a0c13SJung-uk Kim /* Common GTDT subtable header */
459313a0c13SJung-uk Kim 
460313a0c13SJung-uk Kim typedef struct acpi_gtdt_header
461313a0c13SJung-uk Kim {
462313a0c13SJung-uk Kim     UINT8                   Type;
463313a0c13SJung-uk Kim     UINT16                  Length;
464313a0c13SJung-uk Kim 
465313a0c13SJung-uk Kim } ACPI_GTDT_HEADER;
466313a0c13SJung-uk Kim 
467313a0c13SJung-uk Kim /* Values for GTDT subtable type above */
468313a0c13SJung-uk Kim 
469313a0c13SJung-uk Kim enum AcpiGtdtType
470313a0c13SJung-uk Kim {
471313a0c13SJung-uk Kim     ACPI_GTDT_TYPE_TIMER_BLOCK      = 0,
472313a0c13SJung-uk Kim     ACPI_GTDT_TYPE_WATCHDOG         = 1,
473313a0c13SJung-uk Kim     ACPI_GTDT_TYPE_RESERVED         = 2    /* 2 and greater are reserved */
474313a0c13SJung-uk Kim };
475313a0c13SJung-uk Kim 
476313a0c13SJung-uk Kim 
477313a0c13SJung-uk Kim /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
478313a0c13SJung-uk Kim 
479313a0c13SJung-uk Kim /* 0: Generic Timer Block */
480313a0c13SJung-uk Kim 
481313a0c13SJung-uk Kim typedef struct acpi_gtdt_timer_block
482313a0c13SJung-uk Kim {
483313a0c13SJung-uk Kim     ACPI_GTDT_HEADER        Header;
484313a0c13SJung-uk Kim     UINT8                   Reserved;
485313a0c13SJung-uk Kim     UINT64                  BlockAddress;
486313a0c13SJung-uk Kim     UINT32                  TimerCount;
487313a0c13SJung-uk Kim     UINT32                  TimerOffset;
488313a0c13SJung-uk Kim 
489313a0c13SJung-uk Kim } ACPI_GTDT_TIMER_BLOCK;
490313a0c13SJung-uk Kim 
491313a0c13SJung-uk Kim /* Timer Sub-Structure, one per timer */
492313a0c13SJung-uk Kim 
493313a0c13SJung-uk Kim typedef struct acpi_gtdt_timer_entry
494313a0c13SJung-uk Kim {
495313a0c13SJung-uk Kim     UINT8                   FrameNumber;
496313a0c13SJung-uk Kim     UINT8                   Reserved[3];
497313a0c13SJung-uk Kim     UINT64                  BaseAddress;
498313a0c13SJung-uk Kim     UINT64                  El0BaseAddress;
499313a0c13SJung-uk Kim     UINT32                  TimerInterrupt;
500313a0c13SJung-uk Kim     UINT32                  TimerFlags;
501313a0c13SJung-uk Kim     UINT32                  VirtualTimerInterrupt;
502313a0c13SJung-uk Kim     UINT32                  VirtualTimerFlags;
503313a0c13SJung-uk Kim     UINT32                  CommonFlags;
504313a0c13SJung-uk Kim 
505313a0c13SJung-uk Kim } ACPI_GTDT_TIMER_ENTRY;
506313a0c13SJung-uk Kim 
507313a0c13SJung-uk Kim /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
508313a0c13SJung-uk Kim 
509313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IRQ_MODE               (1)
510313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IRQ_POLARITY           (1<<1)
511313a0c13SJung-uk Kim 
512313a0c13SJung-uk Kim /* Flag Definitions: CommonFlags above */
513313a0c13SJung-uk Kim 
514313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IS_SECURE_TIMER        (1)
515313a0c13SJung-uk Kim #define ACPI_GTDT_GT_ALWAYS_ON              (1<<1)
516313a0c13SJung-uk Kim 
517313a0c13SJung-uk Kim 
518313a0c13SJung-uk Kim /* 1: SBSA Generic Watchdog Structure */
519313a0c13SJung-uk Kim 
520313a0c13SJung-uk Kim typedef struct acpi_gtdt_watchdog
521313a0c13SJung-uk Kim {
522313a0c13SJung-uk Kim     ACPI_GTDT_HEADER        Header;
523313a0c13SJung-uk Kim     UINT8                   Reserved;
524313a0c13SJung-uk Kim     UINT64                  RefreshFrameAddress;
525313a0c13SJung-uk Kim     UINT64                  ControlFrameAddress;
526313a0c13SJung-uk Kim     UINT32                  TimerInterrupt;
527313a0c13SJung-uk Kim     UINT32                  TimerFlags;
528313a0c13SJung-uk Kim 
529313a0c13SJung-uk Kim } ACPI_GTDT_WATCHDOG;
530313a0c13SJung-uk Kim 
531313a0c13SJung-uk Kim /* Flag Definitions: TimerFlags above */
532313a0c13SJung-uk Kim 
533313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1)
534313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1)
535313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_SECURE           (1<<2)
5363f0275a0SJung-uk Kim 
5373f0275a0SJung-uk Kim 
5383f0275a0SJung-uk Kim /*******************************************************************************
5393f0275a0SJung-uk Kim  *
5403f0275a0SJung-uk Kim  * MPST - Memory Power State Table (ACPI 5.0)
5413f0275a0SJung-uk Kim  *        Version 1
5423f0275a0SJung-uk Kim  *
5433f0275a0SJung-uk Kim  ******************************************************************************/
5443f0275a0SJung-uk Kim 
5453f0275a0SJung-uk Kim #define ACPI_MPST_CHANNEL_INFO \
5463f0275a0SJung-uk Kim     UINT8                   ChannelId; \
5478ef1a331SJung-uk Kim     UINT8                   Reserved1[3]; \
5488ef1a331SJung-uk Kim     UINT16                  PowerNodeCount; \
5498ef1a331SJung-uk Kim     UINT16                  Reserved2;
5503f0275a0SJung-uk Kim 
5513f0275a0SJung-uk Kim /* Main table */
5523f0275a0SJung-uk Kim 
5533f0275a0SJung-uk Kim typedef struct acpi_table_mpst
5543f0275a0SJung-uk Kim {
5553f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
5563f0275a0SJung-uk Kim     ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
5573f0275a0SJung-uk Kim 
5583f0275a0SJung-uk Kim } ACPI_TABLE_MPST;
5593f0275a0SJung-uk Kim 
5603f0275a0SJung-uk Kim 
5613f0275a0SJung-uk Kim /* Memory Platform Communication Channel Info */
5623f0275a0SJung-uk Kim 
5633f0275a0SJung-uk Kim typedef struct acpi_mpst_channel
5643f0275a0SJung-uk Kim {
5653f0275a0SJung-uk Kim     ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
5663f0275a0SJung-uk Kim 
5673f0275a0SJung-uk Kim } ACPI_MPST_CHANNEL;
5683f0275a0SJung-uk Kim 
5693f0275a0SJung-uk Kim 
5703f0275a0SJung-uk Kim /* Memory Power Node Structure */
5713f0275a0SJung-uk Kim 
5723f0275a0SJung-uk Kim typedef struct acpi_mpst_power_node
5733f0275a0SJung-uk Kim {
5743f0275a0SJung-uk Kim     UINT8                   Flags;
5753f0275a0SJung-uk Kim     UINT8                   Reserved1;
5763f0275a0SJung-uk Kim     UINT16                  NodeId;
5773f0275a0SJung-uk Kim     UINT32                  Length;
5783f0275a0SJung-uk Kim     UINT64                  RangeAddress;
5793f0275a0SJung-uk Kim     UINT64                  RangeLength;
5808ef1a331SJung-uk Kim     UINT32                  NumPowerStates;
5818ef1a331SJung-uk Kim     UINT32                  NumPhysicalComponents;
5823f0275a0SJung-uk Kim 
5833f0275a0SJung-uk Kim } ACPI_MPST_POWER_NODE;
5843f0275a0SJung-uk Kim 
5853f0275a0SJung-uk Kim /* Values for Flags field above */
5863f0275a0SJung-uk Kim 
5873f0275a0SJung-uk Kim #define ACPI_MPST_ENABLED               1
5883f0275a0SJung-uk Kim #define ACPI_MPST_POWER_MANAGED         2
5893f0275a0SJung-uk Kim #define ACPI_MPST_HOT_PLUG_CAPABLE      4
5903f0275a0SJung-uk Kim 
5913f0275a0SJung-uk Kim 
5923f0275a0SJung-uk Kim /* Memory Power State Structure (follows POWER_NODE above) */
5933f0275a0SJung-uk Kim 
5943f0275a0SJung-uk Kim typedef struct acpi_mpst_power_state
5953f0275a0SJung-uk Kim {
5963f0275a0SJung-uk Kim     UINT8                   PowerState;
5973f0275a0SJung-uk Kim     UINT8                   InfoIndex;
5983f0275a0SJung-uk Kim 
5993f0275a0SJung-uk Kim } ACPI_MPST_POWER_STATE;
6003f0275a0SJung-uk Kim 
6013f0275a0SJung-uk Kim 
6023f0275a0SJung-uk Kim /* Physical Component ID Structure (follows POWER_STATE above) */
6033f0275a0SJung-uk Kim 
6043f0275a0SJung-uk Kim typedef struct acpi_mpst_component
6053f0275a0SJung-uk Kim {
6063f0275a0SJung-uk Kim     UINT16                  ComponentId;
6073f0275a0SJung-uk Kim 
6083f0275a0SJung-uk Kim } ACPI_MPST_COMPONENT;
6093f0275a0SJung-uk Kim 
6103f0275a0SJung-uk Kim 
6113f0275a0SJung-uk Kim /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
6123f0275a0SJung-uk Kim 
6133f0275a0SJung-uk Kim typedef struct acpi_mpst_data_hdr
6143f0275a0SJung-uk Kim {
6153f0275a0SJung-uk Kim     UINT16                  CharacteristicsCount;
6168ef1a331SJung-uk Kim     UINT16                  Reserved;
6173f0275a0SJung-uk Kim 
6183f0275a0SJung-uk Kim } ACPI_MPST_DATA_HDR;
6193f0275a0SJung-uk Kim 
6203f0275a0SJung-uk Kim typedef struct acpi_mpst_power_data
6213f0275a0SJung-uk Kim {
6228ef1a331SJung-uk Kim     UINT8                   StructureId;
6233f0275a0SJung-uk Kim     UINT8                   Flags;
6243f0275a0SJung-uk Kim     UINT16                  Reserved1;
6253f0275a0SJung-uk Kim     UINT32                  AveragePower;
6263f0275a0SJung-uk Kim     UINT32                  PowerSaving;
6273f0275a0SJung-uk Kim     UINT64                  ExitLatency;
6283f0275a0SJung-uk Kim     UINT64                  Reserved2;
6293f0275a0SJung-uk Kim 
6303f0275a0SJung-uk Kim } ACPI_MPST_POWER_DATA;
6313f0275a0SJung-uk Kim 
6323f0275a0SJung-uk Kim /* Values for Flags field above */
6333f0275a0SJung-uk Kim 
6343f0275a0SJung-uk Kim #define ACPI_MPST_PRESERVE              1
6353f0275a0SJung-uk Kim #define ACPI_MPST_AUTOENTRY             2
6363f0275a0SJung-uk Kim #define ACPI_MPST_AUTOEXIT              4
6373f0275a0SJung-uk Kim 
6383f0275a0SJung-uk Kim 
6393f0275a0SJung-uk Kim /* Shared Memory Region (not part of an ACPI table) */
6403f0275a0SJung-uk Kim 
6413f0275a0SJung-uk Kim typedef struct acpi_mpst_shared
6423f0275a0SJung-uk Kim {
6433f0275a0SJung-uk Kim     UINT32                  Signature;
6443f0275a0SJung-uk Kim     UINT16                  PccCommand;
6453f0275a0SJung-uk Kim     UINT16                  PccStatus;
6468ef1a331SJung-uk Kim     UINT32                  CommandRegister;
6478ef1a331SJung-uk Kim     UINT32                  StatusRegister;
6488ef1a331SJung-uk Kim     UINT32                  PowerStateId;
6498ef1a331SJung-uk Kim     UINT32                  PowerNodeId;
6503f0275a0SJung-uk Kim     UINT64                  EnergyConsumed;
6513f0275a0SJung-uk Kim     UINT64                  AveragePower;
6523f0275a0SJung-uk Kim 
6533f0275a0SJung-uk Kim } ACPI_MPST_SHARED;
6543f0275a0SJung-uk Kim 
6553f0275a0SJung-uk Kim 
6563f0275a0SJung-uk Kim /*******************************************************************************
6573f0275a0SJung-uk Kim  *
6583f0275a0SJung-uk Kim  * PCCT - Platform Communications Channel Table (ACPI 5.0)
659*af051161SJung-uk Kim  *        Version 2 (ACPI 6.2)
6603f0275a0SJung-uk Kim  *
6613f0275a0SJung-uk Kim  ******************************************************************************/
6623f0275a0SJung-uk Kim 
6633f0275a0SJung-uk Kim typedef struct acpi_table_pcct
6643f0275a0SJung-uk Kim {
6653f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
6663f0275a0SJung-uk Kim     UINT32                  Flags;
667313a0c13SJung-uk Kim     UINT64                  Reserved;
6683f0275a0SJung-uk Kim 
6693f0275a0SJung-uk Kim } ACPI_TABLE_PCCT;
6703f0275a0SJung-uk Kim 
6713f0275a0SJung-uk Kim /* Values for Flags field above */
6723f0275a0SJung-uk Kim 
6733f0275a0SJung-uk Kim #define ACPI_PCCT_DOORBELL              1
6743f0275a0SJung-uk Kim 
675313a0c13SJung-uk Kim /* Values for subtable type in ACPI_SUBTABLE_HEADER */
676313a0c13SJung-uk Kim 
677313a0c13SJung-uk Kim enum AcpiPcctType
678313a0c13SJung-uk Kim {
679313a0c13SJung-uk Kim     ACPI_PCCT_TYPE_GENERIC_SUBSPACE             = 0,
680313a0c13SJung-uk Kim     ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE          = 1,
681f8146b88SJung-uk Kim     ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2    = 2,    /* ACPI 6.1 */
682*af051161SJung-uk Kim     ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE      = 3,    /* ACPI 6.2 */
683*af051161SJung-uk Kim     ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE       = 4,    /* ACPI 6.2 */
684*af051161SJung-uk Kim     ACPI_PCCT_TYPE_RESERVED                     = 5     /* 5 and greater are reserved */
685313a0c13SJung-uk Kim };
686313a0c13SJung-uk Kim 
6873f0275a0SJung-uk Kim /*
688313a0c13SJung-uk Kim  * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
6893f0275a0SJung-uk Kim  */
6903f0275a0SJung-uk Kim 
6913f0275a0SJung-uk Kim /* 0: Generic Communications Subspace */
6923f0275a0SJung-uk Kim 
6933f0275a0SJung-uk Kim typedef struct acpi_pcct_subspace
6943f0275a0SJung-uk Kim {
6953f0275a0SJung-uk Kim     ACPI_SUBTABLE_HEADER    Header;
6963f0275a0SJung-uk Kim     UINT8                   Reserved[6];
6973f0275a0SJung-uk Kim     UINT64                  BaseAddress;
6983f0275a0SJung-uk Kim     UINT64                  Length;
6993f0275a0SJung-uk Kim     ACPI_GENERIC_ADDRESS    DoorbellRegister;
7003f0275a0SJung-uk Kim     UINT64                  PreserveMask;
7013f0275a0SJung-uk Kim     UINT64                  WriteMask;
702313a0c13SJung-uk Kim     UINT32                  Latency;
703313a0c13SJung-uk Kim     UINT32                  MaxAccessRate;
704313a0c13SJung-uk Kim     UINT16                  MinTurnaroundTime;
7053f0275a0SJung-uk Kim 
7063f0275a0SJung-uk Kim } ACPI_PCCT_SUBSPACE;
7073f0275a0SJung-uk Kim 
7083f0275a0SJung-uk Kim 
709313a0c13SJung-uk Kim /* 1: HW-reduced Communications Subspace (ACPI 5.1) */
710313a0c13SJung-uk Kim 
711313a0c13SJung-uk Kim typedef struct acpi_pcct_hw_reduced
712313a0c13SJung-uk Kim {
713313a0c13SJung-uk Kim     ACPI_SUBTABLE_HEADER    Header;
714*af051161SJung-uk Kim     UINT32                  PlatformInterrupt;
715313a0c13SJung-uk Kim     UINT8                   Flags;
716313a0c13SJung-uk Kim     UINT8                   Reserved;
717313a0c13SJung-uk Kim     UINT64                  BaseAddress;
718313a0c13SJung-uk Kim     UINT64                  Length;
719313a0c13SJung-uk Kim     ACPI_GENERIC_ADDRESS    DoorbellRegister;
720313a0c13SJung-uk Kim     UINT64                  PreserveMask;
721313a0c13SJung-uk Kim     UINT64                  WriteMask;
722313a0c13SJung-uk Kim     UINT32                  Latency;
723313a0c13SJung-uk Kim     UINT32                  MaxAccessRate;
724313a0c13SJung-uk Kim     UINT16                  MinTurnaroundTime;
725313a0c13SJung-uk Kim 
726313a0c13SJung-uk Kim } ACPI_PCCT_HW_REDUCED;
727313a0c13SJung-uk Kim 
728f8146b88SJung-uk Kim 
729f8146b88SJung-uk Kim /* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
730f8146b88SJung-uk Kim 
731f8146b88SJung-uk Kim typedef struct acpi_pcct_hw_reduced_type2
732f8146b88SJung-uk Kim {
733f8146b88SJung-uk Kim     ACPI_SUBTABLE_HEADER    Header;
734*af051161SJung-uk Kim     UINT32                  PlatformInterrupt;
735f8146b88SJung-uk Kim     UINT8                   Flags;
736f8146b88SJung-uk Kim     UINT8                   Reserved;
737f8146b88SJung-uk Kim     UINT64                  BaseAddress;
738f8146b88SJung-uk Kim     UINT64                  Length;
739f8146b88SJung-uk Kim     ACPI_GENERIC_ADDRESS    DoorbellRegister;
740f8146b88SJung-uk Kim     UINT64                  PreserveMask;
741f8146b88SJung-uk Kim     UINT64                  WriteMask;
742f8146b88SJung-uk Kim     UINT32                  Latency;
743f8146b88SJung-uk Kim     UINT32                  MaxAccessRate;
744f8146b88SJung-uk Kim     UINT16                  MinTurnaroundTime;
745*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    PlatformAckRegister;
746f8146b88SJung-uk Kim     UINT64                  AckPreserveMask;
747f8146b88SJung-uk Kim     UINT64                  AckWriteMask;
748f8146b88SJung-uk Kim 
749f8146b88SJung-uk Kim } ACPI_PCCT_HW_REDUCED_TYPE2;
750f8146b88SJung-uk Kim 
751f8146b88SJung-uk Kim 
752*af051161SJung-uk Kim /* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */
753*af051161SJung-uk Kim 
754*af051161SJung-uk Kim typedef struct acpi_pcct_ext_pcc_master
755*af051161SJung-uk Kim {
756*af051161SJung-uk Kim     ACPI_SUBTABLE_HEADER    Header;
757*af051161SJung-uk Kim     UINT32                  PlatformInterrupt;
758*af051161SJung-uk Kim     UINT8                   Flags;
759*af051161SJung-uk Kim     UINT8                   Reserved1;
760*af051161SJung-uk Kim     UINT64                  BaseAddress;
761*af051161SJung-uk Kim     UINT32                  Length;
762*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    DoorbellRegister;
763*af051161SJung-uk Kim     UINT64                  PreserveMask;
764*af051161SJung-uk Kim     UINT64                  WriteMask;
765*af051161SJung-uk Kim     UINT32                  Latency;
766*af051161SJung-uk Kim     UINT32                  MaxAccessRate;
767*af051161SJung-uk Kim     UINT32                  MinTurnaroundTime;
768*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    PlatformAckRegister;
769*af051161SJung-uk Kim     UINT64                  AckPreserveMask;
770*af051161SJung-uk Kim     UINT64                  AckSetMask;
771*af051161SJung-uk Kim     UINT64                  Reserved2;
772*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    CmdCompleteRegister;
773*af051161SJung-uk Kim     UINT64                  CmdCompleteMask;
774*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    CmdUpdateRegister;
775*af051161SJung-uk Kim     UINT64                  CmdUpdatePreserveMask;
776*af051161SJung-uk Kim     UINT64                  CmdUpdateSetMask;
777*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    ErrorStatusRegister;
778*af051161SJung-uk Kim     UINT64                  ErrorStatusMask;
779*af051161SJung-uk Kim 
780*af051161SJung-uk Kim } ACPI_PCCT_EXT_PCC_MASTER;
781*af051161SJung-uk Kim 
782*af051161SJung-uk Kim 
783*af051161SJung-uk Kim /* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */
784*af051161SJung-uk Kim 
785*af051161SJung-uk Kim typedef struct acpi_pcct_ext_pcc_slave
786*af051161SJung-uk Kim {
787*af051161SJung-uk Kim     ACPI_SUBTABLE_HEADER    Header;
788*af051161SJung-uk Kim     UINT32                  PlatformInterrupt;
789*af051161SJung-uk Kim     UINT8                   Flags;
790*af051161SJung-uk Kim     UINT8                   Reserved1;
791*af051161SJung-uk Kim     UINT64                  BaseAddress;
792*af051161SJung-uk Kim     UINT32                  Length;
793*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    DoorbellRegister;
794*af051161SJung-uk Kim     UINT64                  PreserveMask;
795*af051161SJung-uk Kim     UINT64                  WriteMask;
796*af051161SJung-uk Kim     UINT32                  Latency;
797*af051161SJung-uk Kim     UINT32                  MaxAccessRate;
798*af051161SJung-uk Kim     UINT32                  MinTurnaroundTime;
799*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    PlatformAckRegister;
800*af051161SJung-uk Kim     UINT64                  AckPreserveMask;
801*af051161SJung-uk Kim     UINT64                  AckSetMask;
802*af051161SJung-uk Kim     UINT64                  Reserved2;
803*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    CmdCompleteRegister;
804*af051161SJung-uk Kim     UINT64                  CmdCompleteMask;
805*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    CmdUpdateRegister;
806*af051161SJung-uk Kim     UINT64                  CmdUpdatePreserveMask;
807*af051161SJung-uk Kim     UINT64                  CmdUpdateSetMask;
808*af051161SJung-uk Kim     ACPI_GENERIC_ADDRESS    ErrorStatusRegister;
809*af051161SJung-uk Kim     UINT64                  ErrorStatusMask;
810*af051161SJung-uk Kim 
811*af051161SJung-uk Kim } ACPI_PCCT_EXT_PCC_SLAVE;
812*af051161SJung-uk Kim 
813*af051161SJung-uk Kim 
814313a0c13SJung-uk Kim /* Values for doorbell flags above */
815313a0c13SJung-uk Kim 
816313a0c13SJung-uk Kim #define ACPI_PCCT_INTERRUPT_POLARITY    (1)
817313a0c13SJung-uk Kim #define ACPI_PCCT_INTERRUPT_MODE        (1<<1)
818313a0c13SJung-uk Kim 
819313a0c13SJung-uk Kim 
8203f0275a0SJung-uk Kim /*
8213f0275a0SJung-uk Kim  * PCC memory structures (not part of the ACPI table)
8223f0275a0SJung-uk Kim  */
8233f0275a0SJung-uk Kim 
8243f0275a0SJung-uk Kim /* Shared Memory Region */
8253f0275a0SJung-uk Kim 
8263f0275a0SJung-uk Kim typedef struct acpi_pcct_shared_memory
8273f0275a0SJung-uk Kim {
8283f0275a0SJung-uk Kim     UINT32                  Signature;
8293f0275a0SJung-uk Kim     UINT16                  Command;
8303f0275a0SJung-uk Kim     UINT16                  Status;
8313f0275a0SJung-uk Kim 
8323f0275a0SJung-uk Kim } ACPI_PCCT_SHARED_MEMORY;
8333f0275a0SJung-uk Kim 
8343f0275a0SJung-uk Kim 
835*af051161SJung-uk Kim /* Extended PCC Subspace Shared Memory Region (ACPI 6.2) */
836*af051161SJung-uk Kim 
837*af051161SJung-uk Kim typedef struct acpi_pcct_ext_pcc_shared_memory
838*af051161SJung-uk Kim {
839*af051161SJung-uk Kim     UINT32                  Signature;
840*af051161SJung-uk Kim     UINT32                  Flags;
841*af051161SJung-uk Kim     UINT32                  Length;
842*af051161SJung-uk Kim     UINT32                  Command;
843*af051161SJung-uk Kim 
844*af051161SJung-uk Kim } ACPI_PCCT_EXT_PCC_SHARED_MEMORY;
845*af051161SJung-uk Kim 
846*af051161SJung-uk Kim 
8473f0275a0SJung-uk Kim /*******************************************************************************
8483f0275a0SJung-uk Kim  *
8493f0275a0SJung-uk Kim  * PMTT - Platform Memory Topology Table (ACPI 5.0)
8503f0275a0SJung-uk Kim  *        Version 1
8513f0275a0SJung-uk Kim  *
8523f0275a0SJung-uk Kim  ******************************************************************************/
8533f0275a0SJung-uk Kim 
8543f0275a0SJung-uk Kim typedef struct acpi_table_pmtt
8553f0275a0SJung-uk Kim {
8563f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
8573f0275a0SJung-uk Kim     UINT32                  Reserved;
8583f0275a0SJung-uk Kim 
8593f0275a0SJung-uk Kim } ACPI_TABLE_PMTT;
8603f0275a0SJung-uk Kim 
8613f0275a0SJung-uk Kim 
8623f0275a0SJung-uk Kim /* Common header for PMTT subtables that follow main table */
8633f0275a0SJung-uk Kim 
8643f0275a0SJung-uk Kim typedef struct acpi_pmtt_header
8653f0275a0SJung-uk Kim {
8663f0275a0SJung-uk Kim     UINT8                   Type;
8673f0275a0SJung-uk Kim     UINT8                   Reserved1;
8683f0275a0SJung-uk Kim     UINT16                  Length;
8693f0275a0SJung-uk Kim     UINT16                  Flags;
8703f0275a0SJung-uk Kim     UINT16                  Reserved2;
8713f0275a0SJung-uk Kim 
8723f0275a0SJung-uk Kim } ACPI_PMTT_HEADER;
8733f0275a0SJung-uk Kim 
8743f0275a0SJung-uk Kim /* Values for Type field above */
8753f0275a0SJung-uk Kim 
8763f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_SOCKET           0
8773f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_CONTROLLER       1
8783f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_DIMM             2
8793f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_RESERVED         3 /* 0x03-0xFF are reserved */
8803f0275a0SJung-uk Kim 
8813f0275a0SJung-uk Kim /* Values for Flags field above */
8823f0275a0SJung-uk Kim 
8833f0275a0SJung-uk Kim #define ACPI_PMTT_TOP_LEVEL             0x0001
8843f0275a0SJung-uk Kim #define ACPI_PMTT_PHYSICAL              0x0002
8853f0275a0SJung-uk Kim #define ACPI_PMTT_MEMORY_TYPE           0x000C
8863f0275a0SJung-uk Kim 
8873f0275a0SJung-uk Kim 
8883f0275a0SJung-uk Kim /*
8893f0275a0SJung-uk Kim  * PMTT subtables, correspond to Type in acpi_pmtt_header
8903f0275a0SJung-uk Kim  */
8913f0275a0SJung-uk Kim 
8923f0275a0SJung-uk Kim 
8933f0275a0SJung-uk Kim /* 0: Socket Structure */
8943f0275a0SJung-uk Kim 
8953f0275a0SJung-uk Kim typedef struct acpi_pmtt_socket
8963f0275a0SJung-uk Kim {
8973f0275a0SJung-uk Kim     ACPI_PMTT_HEADER        Header;
8983f0275a0SJung-uk Kim     UINT16                  SocketId;
8993f0275a0SJung-uk Kim     UINT16                  Reserved;
9003f0275a0SJung-uk Kim 
9013f0275a0SJung-uk Kim } ACPI_PMTT_SOCKET;
9023f0275a0SJung-uk Kim 
9033f0275a0SJung-uk Kim 
9043f0275a0SJung-uk Kim /* 1: Memory Controller subtable */
9053f0275a0SJung-uk Kim 
9063f0275a0SJung-uk Kim typedef struct acpi_pmtt_controller
9073f0275a0SJung-uk Kim {
9083f0275a0SJung-uk Kim     ACPI_PMTT_HEADER        Header;
9093f0275a0SJung-uk Kim     UINT32                  ReadLatency;
9103f0275a0SJung-uk Kim     UINT32                  WriteLatency;
9113f0275a0SJung-uk Kim     UINT32                  ReadBandwidth;
9123f0275a0SJung-uk Kim     UINT32                  WriteBandwidth;
9133f0275a0SJung-uk Kim     UINT16                  AccessWidth;
9143f0275a0SJung-uk Kim     UINT16                  Alignment;
9153f0275a0SJung-uk Kim     UINT16                  Reserved;
9163f0275a0SJung-uk Kim     UINT16                  DomainCount;
9173f0275a0SJung-uk Kim 
9183f0275a0SJung-uk Kim } ACPI_PMTT_CONTROLLER;
9193f0275a0SJung-uk Kim 
9203f0275a0SJung-uk Kim /* 1a: Proximity Domain substructure */
9213f0275a0SJung-uk Kim 
9223f0275a0SJung-uk Kim typedef struct acpi_pmtt_domain
9233f0275a0SJung-uk Kim {
9243f0275a0SJung-uk Kim     UINT32                  ProximityDomain;
9253f0275a0SJung-uk Kim 
9263f0275a0SJung-uk Kim } ACPI_PMTT_DOMAIN;
9273f0275a0SJung-uk Kim 
9283f0275a0SJung-uk Kim 
9293f0275a0SJung-uk Kim /* 2: Physical Component Identifier (DIMM) */
9303f0275a0SJung-uk Kim 
9313f0275a0SJung-uk Kim typedef struct acpi_pmtt_physical_component
9323f0275a0SJung-uk Kim {
9333f0275a0SJung-uk Kim     ACPI_PMTT_HEADER        Header;
9343f0275a0SJung-uk Kim     UINT16                  ComponentId;
9353f0275a0SJung-uk Kim     UINT16                  Reserved;
9363f0275a0SJung-uk Kim     UINT32                  MemorySize;
9373f0275a0SJung-uk Kim     UINT32                  BiosHandle;
9383f0275a0SJung-uk Kim 
9393f0275a0SJung-uk Kim } ACPI_PMTT_PHYSICAL_COMPONENT;
9403f0275a0SJung-uk Kim 
9413f0275a0SJung-uk Kim 
9423f0275a0SJung-uk Kim /*******************************************************************************
9433f0275a0SJung-uk Kim  *
9443f0275a0SJung-uk Kim  * RASF - RAS Feature Table (ACPI 5.0)
9453f0275a0SJung-uk Kim  *        Version 1
9463f0275a0SJung-uk Kim  *
9473f0275a0SJung-uk Kim  ******************************************************************************/
9483f0275a0SJung-uk Kim 
9493f0275a0SJung-uk Kim typedef struct acpi_table_rasf
9503f0275a0SJung-uk Kim {
9513f0275a0SJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
9523f0275a0SJung-uk Kim     UINT8                   ChannelId[12];
9533f0275a0SJung-uk Kim 
9543f0275a0SJung-uk Kim } ACPI_TABLE_RASF;
9553f0275a0SJung-uk Kim 
9563f0275a0SJung-uk Kim /* RASF Platform Communication Channel Shared Memory Region */
9573f0275a0SJung-uk Kim 
9583f0275a0SJung-uk Kim typedef struct acpi_rasf_shared_memory
9593f0275a0SJung-uk Kim {
9603f0275a0SJung-uk Kim     UINT32                  Signature;
9613f0275a0SJung-uk Kim     UINT16                  Command;
9623f0275a0SJung-uk Kim     UINT16                  Status;
9639c48c75eSJung-uk Kim     UINT16                  Version;
9649c48c75eSJung-uk Kim     UINT8                   Capabilities[16];
9659c48c75eSJung-uk Kim     UINT8                   SetCapabilities[16];
9669c48c75eSJung-uk Kim     UINT16                  NumParameterBlocks;
9679c48c75eSJung-uk Kim     UINT32                  SetCapabilitiesStatus;
9683f0275a0SJung-uk Kim 
9693f0275a0SJung-uk Kim } ACPI_RASF_SHARED_MEMORY;
9703f0275a0SJung-uk Kim 
9719c48c75eSJung-uk Kim /* RASF Parameter Block Structure Header */
9729c48c75eSJung-uk Kim 
9739c48c75eSJung-uk Kim typedef struct acpi_rasf_parameter_block
9749c48c75eSJung-uk Kim {
9759c48c75eSJung-uk Kim     UINT16                  Type;
9769c48c75eSJung-uk Kim     UINT16                  Version;
9779c48c75eSJung-uk Kim     UINT16                  Length;
9789c48c75eSJung-uk Kim 
9799c48c75eSJung-uk Kim } ACPI_RASF_PARAMETER_BLOCK;
9809c48c75eSJung-uk Kim 
9819c48c75eSJung-uk Kim /* RASF Parameter Block Structure for PATROL_SCRUB */
9829c48c75eSJung-uk Kim 
9839c48c75eSJung-uk Kim typedef struct acpi_rasf_patrol_scrub_parameter
9849c48c75eSJung-uk Kim {
9859c48c75eSJung-uk Kim     ACPI_RASF_PARAMETER_BLOCK   Header;
9869c48c75eSJung-uk Kim     UINT16                      PatrolScrubCommand;
9879c48c75eSJung-uk Kim     UINT64                      RequestedAddressRange[2];
9889c48c75eSJung-uk Kim     UINT64                      ActualAddressRange[2];
9899c48c75eSJung-uk Kim     UINT16                      Flags;
9909c48c75eSJung-uk Kim     UINT8                       RequestedSpeed;
9919c48c75eSJung-uk Kim 
9929c48c75eSJung-uk Kim } ACPI_RASF_PATROL_SCRUB_PARAMETER;
9939c48c75eSJung-uk Kim 
9943f0275a0SJung-uk Kim /* Masks for Flags and Speed fields above */
9953f0275a0SJung-uk Kim 
9963f0275a0SJung-uk Kim #define ACPI_RASF_SCRUBBER_RUNNING      1
9973f0275a0SJung-uk Kim #define ACPI_RASF_SPEED                 (7<<1)
9989c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_SLOW            (0<<1)
9999c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_MEDIUM          (4<<1)
10009c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_FAST            (7<<1)
10013f0275a0SJung-uk Kim 
10023f0275a0SJung-uk Kim /* Channel Commands */
10033f0275a0SJung-uk Kim 
10043f0275a0SJung-uk Kim enum AcpiRasfCommands
10053f0275a0SJung-uk Kim {
10069c48c75eSJung-uk Kim     ACPI_RASF_EXECUTE_RASF_COMMAND      = 1
10079c48c75eSJung-uk Kim };
10089c48c75eSJung-uk Kim 
10099c48c75eSJung-uk Kim /* Platform RAS Capabilities */
10109c48c75eSJung-uk Kim 
10119c48c75eSJung-uk Kim enum AcpiRasfCapabiliities
10129c48c75eSJung-uk Kim {
10139c48c75eSJung-uk Kim     ACPI_HW_PATROL_SCRUB_SUPPORTED      = 0,
10149c48c75eSJung-uk Kim     ACPI_SW_PATROL_SCRUB_EXPOSED        = 1
10159c48c75eSJung-uk Kim };
10169c48c75eSJung-uk Kim 
10179c48c75eSJung-uk Kim /* Patrol Scrub Commands */
10189c48c75eSJung-uk Kim 
10199c48c75eSJung-uk Kim enum AcpiRasfPatrolScrubCommands
10209c48c75eSJung-uk Kim {
10219c48c75eSJung-uk Kim     ACPI_RASF_GET_PATROL_PARAMETERS     = 1,
10229c48c75eSJung-uk Kim     ACPI_RASF_START_PATROL_SCRUBBER     = 2,
10239c48c75eSJung-uk Kim     ACPI_RASF_STOP_PATROL_SCRUBBER      = 3
10243f0275a0SJung-uk Kim };
10253f0275a0SJung-uk Kim 
10263f0275a0SJung-uk Kim /* Channel Command flags */
10273f0275a0SJung-uk Kim 
10283f0275a0SJung-uk Kim #define ACPI_RASF_GENERATE_SCI          (1<<15)
10293f0275a0SJung-uk Kim 
10303f0275a0SJung-uk Kim /* Status values */
10313f0275a0SJung-uk Kim 
10323f0275a0SJung-uk Kim enum AcpiRasfStatus
10333f0275a0SJung-uk Kim {
10343f0275a0SJung-uk Kim     ACPI_RASF_SUCCESS                   = 0,
10353f0275a0SJung-uk Kim     ACPI_RASF_NOT_VALID                 = 1,
10363f0275a0SJung-uk Kim     ACPI_RASF_NOT_SUPPORTED             = 2,
10373f0275a0SJung-uk Kim     ACPI_RASF_BUSY                      = 3,
10383f0275a0SJung-uk Kim     ACPI_RASF_FAILED                    = 4,
10393f0275a0SJung-uk Kim     ACPI_RASF_ABORTED                   = 5,
10403f0275a0SJung-uk Kim     ACPI_RASF_INVALID_DATA              = 6
10413f0275a0SJung-uk Kim };
10423f0275a0SJung-uk Kim 
10433f0275a0SJung-uk Kim /* Status flags */
10443f0275a0SJung-uk Kim 
10453f0275a0SJung-uk Kim #define ACPI_RASF_COMMAND_COMPLETE      (1)
10463f0275a0SJung-uk Kim #define ACPI_RASF_SCI_DOORBELL          (1<<1)
10473f0275a0SJung-uk Kim #define ACPI_RASF_ERROR                 (1<<2)
10483f0275a0SJung-uk Kim #define ACPI_RASF_STATUS                (0x1F<<3)
10493f0275a0SJung-uk Kim 
10503f0275a0SJung-uk Kim 
1051efcc2a30SJung-uk Kim /*******************************************************************************
1052efcc2a30SJung-uk Kim  *
1053a371a5fdSJung-uk Kim  * STAO - Status Override Table (_STA override) - ACPI 6.0
1054a371a5fdSJung-uk Kim  *        Version 1
1055a371a5fdSJung-uk Kim  *
1056a371a5fdSJung-uk Kim  * Conforms to "ACPI Specification for Status Override Table"
1057a371a5fdSJung-uk Kim  * 6 January 2015
1058a371a5fdSJung-uk Kim  *
1059a371a5fdSJung-uk Kim  ******************************************************************************/
1060a371a5fdSJung-uk Kim 
1061a371a5fdSJung-uk Kim typedef struct acpi_table_stao
1062a371a5fdSJung-uk Kim {
1063a371a5fdSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1064a371a5fdSJung-uk Kim     UINT8                   IgnoreUart;
1065a371a5fdSJung-uk Kim 
1066a371a5fdSJung-uk Kim } ACPI_TABLE_STAO;
1067a371a5fdSJung-uk Kim 
1068a371a5fdSJung-uk Kim 
1069a371a5fdSJung-uk Kim /*******************************************************************************
1070a371a5fdSJung-uk Kim  *
1071a371a5fdSJung-uk Kim  * WPBT - Windows Platform Environment Table (ACPI 6.0)
1072a371a5fdSJung-uk Kim  *        Version 1
1073a371a5fdSJung-uk Kim  *
1074a371a5fdSJung-uk Kim  * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
1075a371a5fdSJung-uk Kim  *
1076a371a5fdSJung-uk Kim  ******************************************************************************/
1077a371a5fdSJung-uk Kim 
1078a371a5fdSJung-uk Kim typedef struct acpi_table_wpbt
1079a371a5fdSJung-uk Kim {
1080a371a5fdSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1081a371a5fdSJung-uk Kim     UINT32                  HandoffSize;
1082a371a5fdSJung-uk Kim     UINT64                  HandoffAddress;
1083a371a5fdSJung-uk Kim     UINT8                   Layout;
1084a371a5fdSJung-uk Kim     UINT8                   Type;
1085a371a5fdSJung-uk Kim     UINT16                  ArgumentsLength;
1086a371a5fdSJung-uk Kim 
1087a371a5fdSJung-uk Kim } ACPI_TABLE_WPBT;
1088a371a5fdSJung-uk Kim 
1089a371a5fdSJung-uk Kim 
1090a371a5fdSJung-uk Kim /*******************************************************************************
1091a371a5fdSJung-uk Kim  *
1092a371a5fdSJung-uk Kim  * XENV - Xen Environment Table (ACPI 6.0)
1093a371a5fdSJung-uk Kim  *        Version 1
1094a371a5fdSJung-uk Kim  *
1095a371a5fdSJung-uk Kim  * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015
1096a371a5fdSJung-uk Kim  *
1097a371a5fdSJung-uk Kim  ******************************************************************************/
1098a371a5fdSJung-uk Kim 
1099a371a5fdSJung-uk Kim typedef struct acpi_table_xenv
1100a371a5fdSJung-uk Kim {
1101a371a5fdSJung-uk Kim     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
1102a371a5fdSJung-uk Kim     UINT64                  GrantTableAddress;
1103a371a5fdSJung-uk Kim     UINT64                  GrantTableSize;
1104a371a5fdSJung-uk Kim     UINT32                  EventInterrupt;
1105a371a5fdSJung-uk Kim     UINT8                   EventFlags;
1106a371a5fdSJung-uk Kim 
1107a371a5fdSJung-uk Kim } ACPI_TABLE_XENV;
1108a371a5fdSJung-uk Kim 
1109a371a5fdSJung-uk Kim 
11103f0275a0SJung-uk Kim /* Reset to default packing */
11113f0275a0SJung-uk Kim 
11123f0275a0SJung-uk Kim #pragma pack()
11133f0275a0SJung-uk Kim 
11143f0275a0SJung-uk Kim #endif /* __ACTBL3_H__ */
1115