13f0275a0SJung-uk Kim /****************************************************************************** 23f0275a0SJung-uk Kim * 33f0275a0SJung-uk Kim * Name: actbl3.h - ACPI Table Definitions 43f0275a0SJung-uk Kim * 53f0275a0SJung-uk Kim *****************************************************************************/ 63f0275a0SJung-uk Kim 73f0275a0SJung-uk Kim /* 8*efcc2a30SJung-uk Kim * Copyright (C) 2000 - 2013, Intel Corp. 93f0275a0SJung-uk Kim * All rights reserved. 103f0275a0SJung-uk Kim * 113f0275a0SJung-uk Kim * Redistribution and use in source and binary forms, with or without 123f0275a0SJung-uk Kim * modification, are permitted provided that the following conditions 133f0275a0SJung-uk Kim * are met: 143f0275a0SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 153f0275a0SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 163f0275a0SJung-uk Kim * without modification. 173f0275a0SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 183f0275a0SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 193f0275a0SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 203f0275a0SJung-uk Kim * including a substantially similar Disclaimer requirement for further 213f0275a0SJung-uk Kim * binary redistribution. 223f0275a0SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 233f0275a0SJung-uk Kim * of any contributors may be used to endorse or promote products derived 243f0275a0SJung-uk Kim * from this software without specific prior written permission. 253f0275a0SJung-uk Kim * 263f0275a0SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 273f0275a0SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 283f0275a0SJung-uk Kim * Software Foundation. 293f0275a0SJung-uk Kim * 303f0275a0SJung-uk Kim * NO WARRANTY 313f0275a0SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 323f0275a0SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 333f0275a0SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 343f0275a0SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 353f0275a0SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 363f0275a0SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 373f0275a0SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 383f0275a0SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 393f0275a0SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 403f0275a0SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 413f0275a0SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 423f0275a0SJung-uk Kim */ 433f0275a0SJung-uk Kim 443f0275a0SJung-uk Kim #ifndef __ACTBL3_H__ 453f0275a0SJung-uk Kim #define __ACTBL3_H__ 463f0275a0SJung-uk Kim 473f0275a0SJung-uk Kim 483f0275a0SJung-uk Kim /******************************************************************************* 493f0275a0SJung-uk Kim * 503f0275a0SJung-uk Kim * Additional ACPI Tables (3) 513f0275a0SJung-uk Kim * 523f0275a0SJung-uk Kim * These tables are not consumed directly by the ACPICA subsystem, but are 533f0275a0SJung-uk Kim * included here to support device drivers and the AML disassembler. 543f0275a0SJung-uk Kim * 553f0275a0SJung-uk Kim * The tables in this file are fully defined within the ACPI specification. 563f0275a0SJung-uk Kim * 573f0275a0SJung-uk Kim ******************************************************************************/ 583f0275a0SJung-uk Kim 593f0275a0SJung-uk Kim 603f0275a0SJung-uk Kim /* 613f0275a0SJung-uk Kim * Values for description table header signatures for tables defined in this 623f0275a0SJung-uk Kim * file. Useful because they make it more difficult to inadvertently type in 633f0275a0SJung-uk Kim * the wrong signature. 643f0275a0SJung-uk Kim */ 653f0275a0SJung-uk Kim #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 663f0275a0SJung-uk Kim #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 673f0275a0SJung-uk Kim #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 683f0275a0SJung-uk Kim #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 693f0275a0SJung-uk Kim #define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 703f0275a0SJung-uk Kim #define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 713f0275a0SJung-uk Kim #define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 723f0275a0SJung-uk Kim #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 73*efcc2a30SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 743f0275a0SJung-uk Kim 753f0275a0SJung-uk Kim #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 763f0275a0SJung-uk Kim #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 773f0275a0SJung-uk Kim 783f0275a0SJung-uk Kim /* Reserved table signatures */ 793f0275a0SJung-uk Kim 803f0275a0SJung-uk Kim #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 813f0275a0SJung-uk Kim #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 823f0275a0SJung-uk Kim #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 833f0275a0SJung-uk Kim 843f0275a0SJung-uk Kim /* 853f0275a0SJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 863f0275a0SJung-uk Kim * the tables are provided by the system BIOS. 873f0275a0SJung-uk Kim */ 883f0275a0SJung-uk Kim #pragma pack(1) 893f0275a0SJung-uk Kim 903f0275a0SJung-uk Kim /* 911df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 921df130f1SJung-uk Kim * 931df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 941df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 951df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 961df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 971df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 981df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 991df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 1003f0275a0SJung-uk Kim */ 1013f0275a0SJung-uk Kim 1023f0275a0SJung-uk Kim 1033f0275a0SJung-uk Kim /******************************************************************************* 1043f0275a0SJung-uk Kim * 1053f0275a0SJung-uk Kim * BGRT - Boot Graphics Resource Table (ACPI 5.0) 1063f0275a0SJung-uk Kim * Version 1 1073f0275a0SJung-uk Kim * 1083f0275a0SJung-uk Kim ******************************************************************************/ 1093f0275a0SJung-uk Kim 1103f0275a0SJung-uk Kim typedef struct acpi_table_bgrt 1113f0275a0SJung-uk Kim { 1123f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1133f0275a0SJung-uk Kim UINT16 Version; 1143f0275a0SJung-uk Kim UINT8 Status; 1153f0275a0SJung-uk Kim UINT8 ImageType; 1163f0275a0SJung-uk Kim UINT64 ImageAddress; 1173f0275a0SJung-uk Kim UINT32 ImageOffsetX; 1183f0275a0SJung-uk Kim UINT32 ImageOffsetY; 1193f0275a0SJung-uk Kim 1203f0275a0SJung-uk Kim } ACPI_TABLE_BGRT; 1213f0275a0SJung-uk Kim 1223f0275a0SJung-uk Kim 1233f0275a0SJung-uk Kim /******************************************************************************* 1243f0275a0SJung-uk Kim * 1253f0275a0SJung-uk Kim * DRTM - Dynamic Root of Trust for Measurement table 1263f0275a0SJung-uk Kim * 1273f0275a0SJung-uk Kim ******************************************************************************/ 1283f0275a0SJung-uk Kim 1293f0275a0SJung-uk Kim typedef struct acpi_table_drtm 1303f0275a0SJung-uk Kim { 1313f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1323f0275a0SJung-uk Kim UINT64 EntryBaseAddress; 1333f0275a0SJung-uk Kim UINT64 EntryLength; 1343f0275a0SJung-uk Kim UINT32 EntryAddress32; 1353f0275a0SJung-uk Kim UINT64 EntryAddress64; 1363f0275a0SJung-uk Kim UINT64 ExitAddress; 1373f0275a0SJung-uk Kim UINT64 LogAreaAddress; 1383f0275a0SJung-uk Kim UINT32 LogAreaLength; 1393f0275a0SJung-uk Kim UINT64 ArchDependentAddress; 1403f0275a0SJung-uk Kim UINT32 Flags; 1413f0275a0SJung-uk Kim 1423f0275a0SJung-uk Kim } ACPI_TABLE_DRTM; 1433f0275a0SJung-uk Kim 1443f0275a0SJung-uk Kim /* 1) Validated Tables List */ 1453f0275a0SJung-uk Kim 1463f0275a0SJung-uk Kim typedef struct acpi_drtm_vtl_list 1473f0275a0SJung-uk Kim { 1483f0275a0SJung-uk Kim UINT32 ValidatedTableListCount; 1493f0275a0SJung-uk Kim 1503f0275a0SJung-uk Kim } ACPI_DRTM_VTL_LIST; 1513f0275a0SJung-uk Kim 1523f0275a0SJung-uk Kim /* 2) Resources List */ 1533f0275a0SJung-uk Kim 1543f0275a0SJung-uk Kim typedef struct acpi_drtm_resource_list 1553f0275a0SJung-uk Kim { 1563f0275a0SJung-uk Kim UINT32 ResourceListCount; 1573f0275a0SJung-uk Kim 1583f0275a0SJung-uk Kim } ACPI_DRTM_RESOURCE_LIST; 1593f0275a0SJung-uk Kim 1603f0275a0SJung-uk Kim /* 3) Platform-specific Identifiers List */ 1613f0275a0SJung-uk Kim 1623f0275a0SJung-uk Kim typedef struct acpi_drtm_id_list 1633f0275a0SJung-uk Kim { 1643f0275a0SJung-uk Kim UINT32 IdListCount; 1653f0275a0SJung-uk Kim 1663f0275a0SJung-uk Kim } ACPI_DRTM_ID_LIST; 1673f0275a0SJung-uk Kim 1683f0275a0SJung-uk Kim 1693f0275a0SJung-uk Kim /******************************************************************************* 1703f0275a0SJung-uk Kim * 1713f0275a0SJung-uk Kim * FPDT - Firmware Performance Data Table (ACPI 5.0) 1723f0275a0SJung-uk Kim * Version 1 1733f0275a0SJung-uk Kim * 1743f0275a0SJung-uk Kim ******************************************************************************/ 1753f0275a0SJung-uk Kim 1763f0275a0SJung-uk Kim typedef struct acpi_table_fpdt 1773f0275a0SJung-uk Kim { 1783f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1793f0275a0SJung-uk Kim 1803f0275a0SJung-uk Kim } ACPI_TABLE_FPDT; 1813f0275a0SJung-uk Kim 1823f0275a0SJung-uk Kim 1833f0275a0SJung-uk Kim /* FPDT subtable header */ 1843f0275a0SJung-uk Kim 1853f0275a0SJung-uk Kim typedef struct acpi_fpdt_header 1863f0275a0SJung-uk Kim { 1873f0275a0SJung-uk Kim UINT16 Type; 1883f0275a0SJung-uk Kim UINT8 Length; 1893f0275a0SJung-uk Kim UINT8 Revision; 1903f0275a0SJung-uk Kim 1913f0275a0SJung-uk Kim } ACPI_FPDT_HEADER; 1923f0275a0SJung-uk Kim 1933f0275a0SJung-uk Kim /* Values for Type field above */ 1943f0275a0SJung-uk Kim 1953f0275a0SJung-uk Kim enum AcpiFpdtType 1963f0275a0SJung-uk Kim { 1973f0275a0SJung-uk Kim ACPI_FPDT_TYPE_BOOT = 0, 1983f0275a0SJung-uk Kim ACPI_FPDT_TYPE_S3PERF = 1, 1993f0275a0SJung-uk Kim }; 2003f0275a0SJung-uk Kim 2013f0275a0SJung-uk Kim 2023f0275a0SJung-uk Kim /* 2033f0275a0SJung-uk Kim * FPDT subtables 2043f0275a0SJung-uk Kim */ 2053f0275a0SJung-uk Kim 2063f0275a0SJung-uk Kim /* 0: Firmware Basic Boot Performance Record */ 2073f0275a0SJung-uk Kim 2083f0275a0SJung-uk Kim typedef struct acpi_fpdt_boot 2093f0275a0SJung-uk Kim { 2103f0275a0SJung-uk Kim ACPI_FPDT_HEADER Header; 2113f0275a0SJung-uk Kim UINT8 Reserved[4]; 2123f0275a0SJung-uk Kim UINT64 ResetEnd; 2133f0275a0SJung-uk Kim UINT64 LoadStart; 2143f0275a0SJung-uk Kim UINT64 StartupStart; 2153f0275a0SJung-uk Kim UINT64 ExitServicesEntry; 2163f0275a0SJung-uk Kim UINT64 ExitServicesExit; 2173f0275a0SJung-uk Kim 2183f0275a0SJung-uk Kim } ACPI_FPDT_BOOT; 2193f0275a0SJung-uk Kim 2203f0275a0SJung-uk Kim 2213f0275a0SJung-uk Kim /* 1: S3 Performance Table Pointer Record */ 2223f0275a0SJung-uk Kim 2233f0275a0SJung-uk Kim typedef struct acpi_fpdt_s3pt_ptr 2243f0275a0SJung-uk Kim { 2253f0275a0SJung-uk Kim ACPI_FPDT_HEADER Header; 2263f0275a0SJung-uk Kim UINT8 Reserved[4]; 2273f0275a0SJung-uk Kim UINT64 Address; 2283f0275a0SJung-uk Kim 2293f0275a0SJung-uk Kim } ACPI_FPDT_S3PT_PTR; 2303f0275a0SJung-uk Kim 2313f0275a0SJung-uk Kim 2323f0275a0SJung-uk Kim /* 2333f0275a0SJung-uk Kim * S3PT - S3 Performance Table. This table is pointed to by the 2343f0275a0SJung-uk Kim * FPDT S3 Pointer Record above. 2353f0275a0SJung-uk Kim */ 2363f0275a0SJung-uk Kim typedef struct acpi_table_s3pt 2373f0275a0SJung-uk Kim { 2383f0275a0SJung-uk Kim UINT8 Signature[4]; /* "S3PT" */ 2393f0275a0SJung-uk Kim UINT32 Length; 2403f0275a0SJung-uk Kim 2413f0275a0SJung-uk Kim } ACPI_TABLE_S3PT; 2423f0275a0SJung-uk Kim 2433f0275a0SJung-uk Kim 2443f0275a0SJung-uk Kim /* 2453f0275a0SJung-uk Kim * S3PT Subtables 2463f0275a0SJung-uk Kim */ 2473f0275a0SJung-uk Kim typedef struct acpi_s3pt_header 2483f0275a0SJung-uk Kim { 2493f0275a0SJung-uk Kim UINT16 Type; 2503f0275a0SJung-uk Kim UINT8 Length; 2513f0275a0SJung-uk Kim UINT8 Revision; 2523f0275a0SJung-uk Kim 2533f0275a0SJung-uk Kim } ACPI_S3PT_HEADER; 2543f0275a0SJung-uk Kim 2553f0275a0SJung-uk Kim /* Values for Type field above */ 2563f0275a0SJung-uk Kim 2573f0275a0SJung-uk Kim enum AcpiS3ptType 2583f0275a0SJung-uk Kim { 2593f0275a0SJung-uk Kim ACPI_S3PT_TYPE_RESUME = 0, 2603f0275a0SJung-uk Kim ACPI_S3PT_TYPE_SUSPEND = 1, 2613f0275a0SJung-uk Kim }; 2623f0275a0SJung-uk Kim 2633f0275a0SJung-uk Kim typedef struct acpi_s3pt_resume 2643f0275a0SJung-uk Kim { 2653f0275a0SJung-uk Kim ACPI_S3PT_HEADER Header; 2663f0275a0SJung-uk Kim UINT32 ResumeCount; 2673f0275a0SJung-uk Kim UINT64 FullResume; 2683f0275a0SJung-uk Kim UINT64 AverageResume; 2693f0275a0SJung-uk Kim 2703f0275a0SJung-uk Kim } ACPI_S3PT_RESUME; 2713f0275a0SJung-uk Kim 2723f0275a0SJung-uk Kim typedef struct acpi_s3pt_suspend 2733f0275a0SJung-uk Kim { 2743f0275a0SJung-uk Kim ACPI_S3PT_HEADER Header; 2753f0275a0SJung-uk Kim UINT64 SuspendStart; 2763f0275a0SJung-uk Kim UINT64 SuspendEnd; 2773f0275a0SJung-uk Kim 2783f0275a0SJung-uk Kim } ACPI_S3PT_SUSPEND; 2793f0275a0SJung-uk Kim 2803f0275a0SJung-uk Kim 2813f0275a0SJung-uk Kim /******************************************************************************* 2823f0275a0SJung-uk Kim * 2833f0275a0SJung-uk Kim * GTDT - Generic Timer Description Table (ACPI 5.0) 2843f0275a0SJung-uk Kim * Version 1 2853f0275a0SJung-uk Kim * 2863f0275a0SJung-uk Kim ******************************************************************************/ 2873f0275a0SJung-uk Kim 2883f0275a0SJung-uk Kim typedef struct acpi_table_gtdt 2893f0275a0SJung-uk Kim { 2903f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2913f0275a0SJung-uk Kim UINT64 Address; 2923f0275a0SJung-uk Kim UINT32 Flags; 2933f0275a0SJung-uk Kim UINT32 SecurePl1Interrupt; 2943f0275a0SJung-uk Kim UINT32 SecurePl1Flags; 2953f0275a0SJung-uk Kim UINT32 NonSecurePl1Interrupt; 2963f0275a0SJung-uk Kim UINT32 NonSecurePl1Flags; 2973f0275a0SJung-uk Kim UINT32 VirtualTimerInterrupt; 2983f0275a0SJung-uk Kim UINT32 VirtualTimerFlags; 2993f0275a0SJung-uk Kim UINT32 NonSecurePl2Interrupt; 3003f0275a0SJung-uk Kim UINT32 NonSecurePl2Flags; 3013f0275a0SJung-uk Kim 3023f0275a0SJung-uk Kim } ACPI_TABLE_GTDT; 3033f0275a0SJung-uk Kim 3043f0275a0SJung-uk Kim /* Values for Flags field above */ 3053f0275a0SJung-uk Kim 3063f0275a0SJung-uk Kim #define ACPI_GTDT_MAPPED_BLOCK_PRESENT 1 3073f0275a0SJung-uk Kim 3083f0275a0SJung-uk Kim /* Values for all "TimerFlags" fields above */ 3093f0275a0SJung-uk Kim 3103f0275a0SJung-uk Kim #define ACPI_GTDT_INTERRUPT_MODE 1 3113f0275a0SJung-uk Kim #define ACPI_GTDT_INTERRUPT_POLARITY 2 3123f0275a0SJung-uk Kim 3133f0275a0SJung-uk Kim 3143f0275a0SJung-uk Kim /******************************************************************************* 3153f0275a0SJung-uk Kim * 3163f0275a0SJung-uk Kim * MPST - Memory Power State Table (ACPI 5.0) 3173f0275a0SJung-uk Kim * Version 1 3183f0275a0SJung-uk Kim * 3193f0275a0SJung-uk Kim ******************************************************************************/ 3203f0275a0SJung-uk Kim 3213f0275a0SJung-uk Kim #define ACPI_MPST_CHANNEL_INFO \ 3223f0275a0SJung-uk Kim UINT8 ChannelId; \ 3238ef1a331SJung-uk Kim UINT8 Reserved1[3]; \ 3248ef1a331SJung-uk Kim UINT16 PowerNodeCount; \ 3258ef1a331SJung-uk Kim UINT16 Reserved2; 3263f0275a0SJung-uk Kim 3273f0275a0SJung-uk Kim /* Main table */ 3283f0275a0SJung-uk Kim 3293f0275a0SJung-uk Kim typedef struct acpi_table_mpst 3303f0275a0SJung-uk Kim { 3313f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 3323f0275a0SJung-uk Kim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 3333f0275a0SJung-uk Kim 3343f0275a0SJung-uk Kim } ACPI_TABLE_MPST; 3353f0275a0SJung-uk Kim 3363f0275a0SJung-uk Kim 3373f0275a0SJung-uk Kim /* Memory Platform Communication Channel Info */ 3383f0275a0SJung-uk Kim 3393f0275a0SJung-uk Kim typedef struct acpi_mpst_channel 3403f0275a0SJung-uk Kim { 3413f0275a0SJung-uk Kim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 3423f0275a0SJung-uk Kim 3433f0275a0SJung-uk Kim } ACPI_MPST_CHANNEL; 3443f0275a0SJung-uk Kim 3453f0275a0SJung-uk Kim 3463f0275a0SJung-uk Kim /* Memory Power Node Structure */ 3473f0275a0SJung-uk Kim 3483f0275a0SJung-uk Kim typedef struct acpi_mpst_power_node 3493f0275a0SJung-uk Kim { 3503f0275a0SJung-uk Kim UINT8 Flags; 3513f0275a0SJung-uk Kim UINT8 Reserved1; 3523f0275a0SJung-uk Kim UINT16 NodeId; 3533f0275a0SJung-uk Kim UINT32 Length; 3543f0275a0SJung-uk Kim UINT64 RangeAddress; 3553f0275a0SJung-uk Kim UINT64 RangeLength; 3568ef1a331SJung-uk Kim UINT32 NumPowerStates; 3578ef1a331SJung-uk Kim UINT32 NumPhysicalComponents; 3583f0275a0SJung-uk Kim 3593f0275a0SJung-uk Kim } ACPI_MPST_POWER_NODE; 3603f0275a0SJung-uk Kim 3613f0275a0SJung-uk Kim /* Values for Flags field above */ 3623f0275a0SJung-uk Kim 3633f0275a0SJung-uk Kim #define ACPI_MPST_ENABLED 1 3643f0275a0SJung-uk Kim #define ACPI_MPST_POWER_MANAGED 2 3653f0275a0SJung-uk Kim #define ACPI_MPST_HOT_PLUG_CAPABLE 4 3663f0275a0SJung-uk Kim 3673f0275a0SJung-uk Kim 3683f0275a0SJung-uk Kim /* Memory Power State Structure (follows POWER_NODE above) */ 3693f0275a0SJung-uk Kim 3703f0275a0SJung-uk Kim typedef struct acpi_mpst_power_state 3713f0275a0SJung-uk Kim { 3723f0275a0SJung-uk Kim UINT8 PowerState; 3733f0275a0SJung-uk Kim UINT8 InfoIndex; 3743f0275a0SJung-uk Kim 3753f0275a0SJung-uk Kim } ACPI_MPST_POWER_STATE; 3763f0275a0SJung-uk Kim 3773f0275a0SJung-uk Kim 3783f0275a0SJung-uk Kim /* Physical Component ID Structure (follows POWER_STATE above) */ 3793f0275a0SJung-uk Kim 3803f0275a0SJung-uk Kim typedef struct acpi_mpst_component 3813f0275a0SJung-uk Kim { 3823f0275a0SJung-uk Kim UINT16 ComponentId; 3833f0275a0SJung-uk Kim 3843f0275a0SJung-uk Kim } ACPI_MPST_COMPONENT; 3853f0275a0SJung-uk Kim 3863f0275a0SJung-uk Kim 3873f0275a0SJung-uk Kim /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 3883f0275a0SJung-uk Kim 3893f0275a0SJung-uk Kim typedef struct acpi_mpst_data_hdr 3903f0275a0SJung-uk Kim { 3913f0275a0SJung-uk Kim UINT16 CharacteristicsCount; 3928ef1a331SJung-uk Kim UINT16 Reserved; 3933f0275a0SJung-uk Kim 3943f0275a0SJung-uk Kim } ACPI_MPST_DATA_HDR; 3953f0275a0SJung-uk Kim 3963f0275a0SJung-uk Kim typedef struct acpi_mpst_power_data 3973f0275a0SJung-uk Kim { 3988ef1a331SJung-uk Kim UINT8 StructureId; 3993f0275a0SJung-uk Kim UINT8 Flags; 4003f0275a0SJung-uk Kim UINT16 Reserved1; 4013f0275a0SJung-uk Kim UINT32 AveragePower; 4023f0275a0SJung-uk Kim UINT32 PowerSaving; 4033f0275a0SJung-uk Kim UINT64 ExitLatency; 4043f0275a0SJung-uk Kim UINT64 Reserved2; 4053f0275a0SJung-uk Kim 4063f0275a0SJung-uk Kim } ACPI_MPST_POWER_DATA; 4073f0275a0SJung-uk Kim 4083f0275a0SJung-uk Kim /* Values for Flags field above */ 4093f0275a0SJung-uk Kim 4103f0275a0SJung-uk Kim #define ACPI_MPST_PRESERVE 1 4113f0275a0SJung-uk Kim #define ACPI_MPST_AUTOENTRY 2 4123f0275a0SJung-uk Kim #define ACPI_MPST_AUTOEXIT 4 4133f0275a0SJung-uk Kim 4143f0275a0SJung-uk Kim 4153f0275a0SJung-uk Kim /* Shared Memory Region (not part of an ACPI table) */ 4163f0275a0SJung-uk Kim 4173f0275a0SJung-uk Kim typedef struct acpi_mpst_shared 4183f0275a0SJung-uk Kim { 4193f0275a0SJung-uk Kim UINT32 Signature; 4203f0275a0SJung-uk Kim UINT16 PccCommand; 4213f0275a0SJung-uk Kim UINT16 PccStatus; 4228ef1a331SJung-uk Kim UINT32 CommandRegister; 4238ef1a331SJung-uk Kim UINT32 StatusRegister; 4248ef1a331SJung-uk Kim UINT32 PowerStateId; 4258ef1a331SJung-uk Kim UINT32 PowerNodeId; 4263f0275a0SJung-uk Kim UINT64 EnergyConsumed; 4273f0275a0SJung-uk Kim UINT64 AveragePower; 4283f0275a0SJung-uk Kim 4293f0275a0SJung-uk Kim } ACPI_MPST_SHARED; 4303f0275a0SJung-uk Kim 4313f0275a0SJung-uk Kim 4323f0275a0SJung-uk Kim /******************************************************************************* 4333f0275a0SJung-uk Kim * 4343f0275a0SJung-uk Kim * PCCT - Platform Communications Channel Table (ACPI 5.0) 4353f0275a0SJung-uk Kim * Version 1 4363f0275a0SJung-uk Kim * 4373f0275a0SJung-uk Kim ******************************************************************************/ 4383f0275a0SJung-uk Kim 4393f0275a0SJung-uk Kim typedef struct acpi_table_pcct 4403f0275a0SJung-uk Kim { 4413f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4423f0275a0SJung-uk Kim UINT32 Flags; 4433f0275a0SJung-uk Kim UINT32 Latency; 4443f0275a0SJung-uk Kim UINT32 Reserved; 4453f0275a0SJung-uk Kim 4463f0275a0SJung-uk Kim } ACPI_TABLE_PCCT; 4473f0275a0SJung-uk Kim 4483f0275a0SJung-uk Kim /* Values for Flags field above */ 4493f0275a0SJung-uk Kim 4503f0275a0SJung-uk Kim #define ACPI_PCCT_DOORBELL 1 4513f0275a0SJung-uk Kim 4523f0275a0SJung-uk Kim /* 4533f0275a0SJung-uk Kim * PCCT subtables 4543f0275a0SJung-uk Kim */ 4553f0275a0SJung-uk Kim 4563f0275a0SJung-uk Kim /* 0: Generic Communications Subspace */ 4573f0275a0SJung-uk Kim 4583f0275a0SJung-uk Kim typedef struct acpi_pcct_subspace 4593f0275a0SJung-uk Kim { 4603f0275a0SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 4613f0275a0SJung-uk Kim UINT8 Reserved[6]; 4623f0275a0SJung-uk Kim UINT64 BaseAddress; 4633f0275a0SJung-uk Kim UINT64 Length; 4643f0275a0SJung-uk Kim ACPI_GENERIC_ADDRESS DoorbellRegister; 4653f0275a0SJung-uk Kim UINT64 PreserveMask; 4663f0275a0SJung-uk Kim UINT64 WriteMask; 4673f0275a0SJung-uk Kim 4683f0275a0SJung-uk Kim } ACPI_PCCT_SUBSPACE; 4693f0275a0SJung-uk Kim 4703f0275a0SJung-uk Kim 4713f0275a0SJung-uk Kim /* 4723f0275a0SJung-uk Kim * PCC memory structures (not part of the ACPI table) 4733f0275a0SJung-uk Kim */ 4743f0275a0SJung-uk Kim 4753f0275a0SJung-uk Kim /* Shared Memory Region */ 4763f0275a0SJung-uk Kim 4773f0275a0SJung-uk Kim typedef struct acpi_pcct_shared_memory 4783f0275a0SJung-uk Kim { 4793f0275a0SJung-uk Kim UINT32 Signature; 4803f0275a0SJung-uk Kim UINT16 Command; 4813f0275a0SJung-uk Kim UINT16 Status; 4823f0275a0SJung-uk Kim 4833f0275a0SJung-uk Kim } ACPI_PCCT_SHARED_MEMORY; 4843f0275a0SJung-uk Kim 4853f0275a0SJung-uk Kim 4863f0275a0SJung-uk Kim /******************************************************************************* 4873f0275a0SJung-uk Kim * 4883f0275a0SJung-uk Kim * PMTT - Platform Memory Topology Table (ACPI 5.0) 4893f0275a0SJung-uk Kim * Version 1 4903f0275a0SJung-uk Kim * 4913f0275a0SJung-uk Kim ******************************************************************************/ 4923f0275a0SJung-uk Kim 4933f0275a0SJung-uk Kim typedef struct acpi_table_pmtt 4943f0275a0SJung-uk Kim { 4953f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4963f0275a0SJung-uk Kim UINT32 Reserved; 4973f0275a0SJung-uk Kim 4983f0275a0SJung-uk Kim } ACPI_TABLE_PMTT; 4993f0275a0SJung-uk Kim 5003f0275a0SJung-uk Kim 5013f0275a0SJung-uk Kim /* Common header for PMTT subtables that follow main table */ 5023f0275a0SJung-uk Kim 5033f0275a0SJung-uk Kim typedef struct acpi_pmtt_header 5043f0275a0SJung-uk Kim { 5053f0275a0SJung-uk Kim UINT8 Type; 5063f0275a0SJung-uk Kim UINT8 Reserved1; 5073f0275a0SJung-uk Kim UINT16 Length; 5083f0275a0SJung-uk Kim UINT16 Flags; 5093f0275a0SJung-uk Kim UINT16 Reserved2; 5103f0275a0SJung-uk Kim 5113f0275a0SJung-uk Kim } ACPI_PMTT_HEADER; 5123f0275a0SJung-uk Kim 5133f0275a0SJung-uk Kim /* Values for Type field above */ 5143f0275a0SJung-uk Kim 5153f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_SOCKET 0 5163f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_CONTROLLER 1 5173f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_DIMM 2 5183f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 5193f0275a0SJung-uk Kim 5203f0275a0SJung-uk Kim /* Values for Flags field above */ 5213f0275a0SJung-uk Kim 5223f0275a0SJung-uk Kim #define ACPI_PMTT_TOP_LEVEL 0x0001 5233f0275a0SJung-uk Kim #define ACPI_PMTT_PHYSICAL 0x0002 5243f0275a0SJung-uk Kim #define ACPI_PMTT_MEMORY_TYPE 0x000C 5253f0275a0SJung-uk Kim 5263f0275a0SJung-uk Kim 5273f0275a0SJung-uk Kim /* 5283f0275a0SJung-uk Kim * PMTT subtables, correspond to Type in acpi_pmtt_header 5293f0275a0SJung-uk Kim */ 5303f0275a0SJung-uk Kim 5313f0275a0SJung-uk Kim 5323f0275a0SJung-uk Kim /* 0: Socket Structure */ 5333f0275a0SJung-uk Kim 5343f0275a0SJung-uk Kim typedef struct acpi_pmtt_socket 5353f0275a0SJung-uk Kim { 5363f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 5373f0275a0SJung-uk Kim UINT16 SocketId; 5383f0275a0SJung-uk Kim UINT16 Reserved; 5393f0275a0SJung-uk Kim 5403f0275a0SJung-uk Kim } ACPI_PMTT_SOCKET; 5413f0275a0SJung-uk Kim 5423f0275a0SJung-uk Kim 5433f0275a0SJung-uk Kim /* 1: Memory Controller subtable */ 5443f0275a0SJung-uk Kim 5453f0275a0SJung-uk Kim typedef struct acpi_pmtt_controller 5463f0275a0SJung-uk Kim { 5473f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 5483f0275a0SJung-uk Kim UINT32 ReadLatency; 5493f0275a0SJung-uk Kim UINT32 WriteLatency; 5503f0275a0SJung-uk Kim UINT32 ReadBandwidth; 5513f0275a0SJung-uk Kim UINT32 WriteBandwidth; 5523f0275a0SJung-uk Kim UINT16 AccessWidth; 5533f0275a0SJung-uk Kim UINT16 Alignment; 5543f0275a0SJung-uk Kim UINT16 Reserved; 5553f0275a0SJung-uk Kim UINT16 DomainCount; 5563f0275a0SJung-uk Kim 5573f0275a0SJung-uk Kim } ACPI_PMTT_CONTROLLER; 5583f0275a0SJung-uk Kim 5593f0275a0SJung-uk Kim /* 1a: Proximity Domain substructure */ 5603f0275a0SJung-uk Kim 5613f0275a0SJung-uk Kim typedef struct acpi_pmtt_domain 5623f0275a0SJung-uk Kim { 5633f0275a0SJung-uk Kim UINT32 ProximityDomain; 5643f0275a0SJung-uk Kim 5653f0275a0SJung-uk Kim } ACPI_PMTT_DOMAIN; 5663f0275a0SJung-uk Kim 5673f0275a0SJung-uk Kim 5683f0275a0SJung-uk Kim /* 2: Physical Component Identifier (DIMM) */ 5693f0275a0SJung-uk Kim 5703f0275a0SJung-uk Kim typedef struct acpi_pmtt_physical_component 5713f0275a0SJung-uk Kim { 5723f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 5733f0275a0SJung-uk Kim UINT16 ComponentId; 5743f0275a0SJung-uk Kim UINT16 Reserved; 5753f0275a0SJung-uk Kim UINT32 MemorySize; 5763f0275a0SJung-uk Kim UINT32 BiosHandle; 5773f0275a0SJung-uk Kim 5783f0275a0SJung-uk Kim } ACPI_PMTT_PHYSICAL_COMPONENT; 5793f0275a0SJung-uk Kim 5803f0275a0SJung-uk Kim 5813f0275a0SJung-uk Kim /******************************************************************************* 5823f0275a0SJung-uk Kim * 5833f0275a0SJung-uk Kim * RASF - RAS Feature Table (ACPI 5.0) 5843f0275a0SJung-uk Kim * Version 1 5853f0275a0SJung-uk Kim * 5863f0275a0SJung-uk Kim ******************************************************************************/ 5873f0275a0SJung-uk Kim 5883f0275a0SJung-uk Kim typedef struct acpi_table_rasf 5893f0275a0SJung-uk Kim { 5903f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 5913f0275a0SJung-uk Kim UINT8 ChannelId[12]; 5923f0275a0SJung-uk Kim 5933f0275a0SJung-uk Kim } ACPI_TABLE_RASF; 5943f0275a0SJung-uk Kim 5953f0275a0SJung-uk Kim /* RASF Platform Communication Channel Shared Memory Region */ 5963f0275a0SJung-uk Kim 5973f0275a0SJung-uk Kim typedef struct acpi_rasf_shared_memory 5983f0275a0SJung-uk Kim { 5993f0275a0SJung-uk Kim UINT32 Signature; 6003f0275a0SJung-uk Kim UINT16 Command; 6013f0275a0SJung-uk Kim UINT16 Status; 6023f0275a0SJung-uk Kim UINT64 RequestedAddress; 6033f0275a0SJung-uk Kim UINT64 RequestedLength; 6043f0275a0SJung-uk Kim UINT64 ActualAddress; 6053f0275a0SJung-uk Kim UINT64 ActualLength; 6063f0275a0SJung-uk Kim UINT16 Flags; 6073f0275a0SJung-uk Kim UINT8 Speed; 6083f0275a0SJung-uk Kim 6093f0275a0SJung-uk Kim } ACPI_RASF_SHARED_MEMORY; 6103f0275a0SJung-uk Kim 6113f0275a0SJung-uk Kim /* Masks for Flags and Speed fields above */ 6123f0275a0SJung-uk Kim 6133f0275a0SJung-uk Kim #define ACPI_RASF_SCRUBBER_RUNNING 1 6143f0275a0SJung-uk Kim #define ACPI_RASF_SPEED (7<<1) 6153f0275a0SJung-uk Kim 6163f0275a0SJung-uk Kim /* Channel Commands */ 6173f0275a0SJung-uk Kim 6183f0275a0SJung-uk Kim enum AcpiRasfCommands 6193f0275a0SJung-uk Kim { 6203f0275a0SJung-uk Kim ACPI_RASF_GET_RAS_CAPABILITIES = 1, 6213f0275a0SJung-uk Kim ACPI_RASF_GET_PATROL_PARAMETERS = 2, 6223f0275a0SJung-uk Kim ACPI_RASF_START_PATROL_SCRUBBER = 3, 6233f0275a0SJung-uk Kim ACPI_RASF_STOP_PATROL_SCRUBBER = 4 6243f0275a0SJung-uk Kim }; 6253f0275a0SJung-uk Kim 6263f0275a0SJung-uk Kim /* Channel Command flags */ 6273f0275a0SJung-uk Kim 6283f0275a0SJung-uk Kim #define ACPI_RASF_GENERATE_SCI (1<<15) 6293f0275a0SJung-uk Kim 6303f0275a0SJung-uk Kim /* Status values */ 6313f0275a0SJung-uk Kim 6323f0275a0SJung-uk Kim enum AcpiRasfStatus 6333f0275a0SJung-uk Kim { 6343f0275a0SJung-uk Kim ACPI_RASF_SUCCESS = 0, 6353f0275a0SJung-uk Kim ACPI_RASF_NOT_VALID = 1, 6363f0275a0SJung-uk Kim ACPI_RASF_NOT_SUPPORTED = 2, 6373f0275a0SJung-uk Kim ACPI_RASF_BUSY = 3, 6383f0275a0SJung-uk Kim ACPI_RASF_FAILED = 4, 6393f0275a0SJung-uk Kim ACPI_RASF_ABORTED = 5, 6403f0275a0SJung-uk Kim ACPI_RASF_INVALID_DATA = 6 6413f0275a0SJung-uk Kim }; 6423f0275a0SJung-uk Kim 6433f0275a0SJung-uk Kim /* Status flags */ 6443f0275a0SJung-uk Kim 6453f0275a0SJung-uk Kim #define ACPI_RASF_COMMAND_COMPLETE (1) 6463f0275a0SJung-uk Kim #define ACPI_RASF_SCI_DOORBELL (1<<1) 6473f0275a0SJung-uk Kim #define ACPI_RASF_ERROR (1<<2) 6483f0275a0SJung-uk Kim #define ACPI_RASF_STATUS (0x1F<<3) 6493f0275a0SJung-uk Kim 6503f0275a0SJung-uk Kim 651*efcc2a30SJung-uk Kim /******************************************************************************* 652*efcc2a30SJung-uk Kim * 653*efcc2a30SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 654*efcc2a30SJung-uk Kim * Version 3 655*efcc2a30SJung-uk Kim * 656*efcc2a30SJung-uk Kim * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011 657*efcc2a30SJung-uk Kim * 658*efcc2a30SJung-uk Kim ******************************************************************************/ 659*efcc2a30SJung-uk Kim 660*efcc2a30SJung-uk Kim typedef struct acpi_table_tpm2 661*efcc2a30SJung-uk Kim { 662*efcc2a30SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 663*efcc2a30SJung-uk Kim UINT32 Flags; 664*efcc2a30SJung-uk Kim UINT64 ControlAddress; 665*efcc2a30SJung-uk Kim UINT32 StartMethod; 666*efcc2a30SJung-uk Kim 667*efcc2a30SJung-uk Kim } ACPI_TABLE_TPM2; 668*efcc2a30SJung-uk Kim 669*efcc2a30SJung-uk Kim /* Control area structure (not part of table, pointed to by ControlAddress) */ 670*efcc2a30SJung-uk Kim 671*efcc2a30SJung-uk Kim typedef struct acpi_tpm2_control 672*efcc2a30SJung-uk Kim { 673*efcc2a30SJung-uk Kim UINT32 Reserved; 674*efcc2a30SJung-uk Kim UINT32 Error; 675*efcc2a30SJung-uk Kim UINT32 Cancel; 676*efcc2a30SJung-uk Kim UINT32 Start; 677*efcc2a30SJung-uk Kim UINT64 InterruptControl; 678*efcc2a30SJung-uk Kim UINT32 CommandSize; 679*efcc2a30SJung-uk Kim UINT64 CommandAddress; 680*efcc2a30SJung-uk Kim UINT32 ResponseSize; 681*efcc2a30SJung-uk Kim UINT64 ResponseAddress; 682*efcc2a30SJung-uk Kim 683*efcc2a30SJung-uk Kim } ACPI_TPM2_CONTROL; 684*efcc2a30SJung-uk Kim 685*efcc2a30SJung-uk Kim 6863f0275a0SJung-uk Kim /* Reset to default packing */ 6873f0275a0SJung-uk Kim 6883f0275a0SJung-uk Kim #pragma pack() 6893f0275a0SJung-uk Kim 6903f0275a0SJung-uk Kim #endif /* __ACTBL3_H__ */ 691