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 /* 81c0e1b6dSJung-uk Kim * Copyright (C) 2000 - 2015, 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*a371a5fdSJung-uk Kim #define ACPI_SIG_STAO "STAO" /* Status Override table */ 74efcc2a30SJung-uk Kim #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 75*a371a5fdSJung-uk Kim #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 76*a371a5fdSJung-uk Kim #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 773f0275a0SJung-uk Kim 783f0275a0SJung-uk Kim #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 793f0275a0SJung-uk Kim #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 803f0275a0SJung-uk Kim 813f0275a0SJung-uk Kim /* Reserved table signatures */ 823f0275a0SJung-uk Kim 833f0275a0SJung-uk Kim #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 843f0275a0SJung-uk Kim #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 853f0275a0SJung-uk Kim 863f0275a0SJung-uk Kim /* 873f0275a0SJung-uk Kim * All tables must be byte-packed to match the ACPI specification, since 883f0275a0SJung-uk Kim * the tables are provided by the system BIOS. 893f0275a0SJung-uk Kim */ 903f0275a0SJung-uk Kim #pragma pack(1) 913f0275a0SJung-uk Kim 923f0275a0SJung-uk Kim /* 931df130f1SJung-uk Kim * Note: C bitfields are not used for this reason: 941df130f1SJung-uk Kim * 951df130f1SJung-uk Kim * "Bitfields are great and easy to read, but unfortunately the C language 961df130f1SJung-uk Kim * does not specify the layout of bitfields in memory, which means they are 971df130f1SJung-uk Kim * essentially useless for dealing with packed data in on-disk formats or 981df130f1SJung-uk Kim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 991df130f1SJung-uk Kim * this decision was a design error in C. Ritchie could have picked an order 1001df130f1SJung-uk Kim * and stuck with it." Norman Ramsey. 1011df130f1SJung-uk Kim * See http://stackoverflow.com/a/1053662/41661 1023f0275a0SJung-uk Kim */ 1033f0275a0SJung-uk Kim 1043f0275a0SJung-uk Kim 1053f0275a0SJung-uk Kim /******************************************************************************* 1063f0275a0SJung-uk Kim * 1073f0275a0SJung-uk Kim * BGRT - Boot Graphics Resource Table (ACPI 5.0) 1083f0275a0SJung-uk Kim * Version 1 1093f0275a0SJung-uk Kim * 1103f0275a0SJung-uk Kim ******************************************************************************/ 1113f0275a0SJung-uk Kim 1123f0275a0SJung-uk Kim typedef struct acpi_table_bgrt 1133f0275a0SJung-uk Kim { 1143f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1153f0275a0SJung-uk Kim UINT16 Version; 1163f0275a0SJung-uk Kim UINT8 Status; 1173f0275a0SJung-uk Kim UINT8 ImageType; 1183f0275a0SJung-uk Kim UINT64 ImageAddress; 1193f0275a0SJung-uk Kim UINT32 ImageOffsetX; 1203f0275a0SJung-uk Kim UINT32 ImageOffsetY; 1213f0275a0SJung-uk Kim 1223f0275a0SJung-uk Kim } ACPI_TABLE_BGRT; 1233f0275a0SJung-uk Kim 1243f0275a0SJung-uk Kim 1253f0275a0SJung-uk Kim /******************************************************************************* 1263f0275a0SJung-uk Kim * 1273f0275a0SJung-uk Kim * DRTM - Dynamic Root of Trust for Measurement table 128*a371a5fdSJung-uk Kim * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 129*a371a5fdSJung-uk Kim * Table version 1 1303f0275a0SJung-uk Kim * 1313f0275a0SJung-uk Kim ******************************************************************************/ 1323f0275a0SJung-uk Kim 1333f0275a0SJung-uk Kim typedef struct acpi_table_drtm 1343f0275a0SJung-uk Kim { 1353f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1363f0275a0SJung-uk Kim UINT64 EntryBaseAddress; 1373f0275a0SJung-uk Kim UINT64 EntryLength; 1383f0275a0SJung-uk Kim UINT32 EntryAddress32; 1393f0275a0SJung-uk Kim UINT64 EntryAddress64; 1403f0275a0SJung-uk Kim UINT64 ExitAddress; 1413f0275a0SJung-uk Kim UINT64 LogAreaAddress; 1423f0275a0SJung-uk Kim UINT32 LogAreaLength; 1433f0275a0SJung-uk Kim UINT64 ArchDependentAddress; 1443f0275a0SJung-uk Kim UINT32 Flags; 1453f0275a0SJung-uk Kim 1463f0275a0SJung-uk Kim } ACPI_TABLE_DRTM; 1473f0275a0SJung-uk Kim 148*a371a5fdSJung-uk Kim /* Flag Definitions for above */ 1493f0275a0SJung-uk Kim 150*a371a5fdSJung-uk Kim #define ACPI_DRTM_ACCESS_ALLOWED (1) 151*a371a5fdSJung-uk Kim #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 152*a371a5fdSJung-uk Kim #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 153*a371a5fdSJung-uk Kim #define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 154*a371a5fdSJung-uk Kim 155*a371a5fdSJung-uk Kim 156*a371a5fdSJung-uk Kim /* 1) Validated Tables List (64-bit addresses) */ 157*a371a5fdSJung-uk Kim 158*a371a5fdSJung-uk Kim typedef struct acpi_drtm_vtable_list 1593f0275a0SJung-uk Kim { 160*a371a5fdSJung-uk Kim UINT32 ValidatedTableCount; 161*a371a5fdSJung-uk Kim UINT64 ValidatedTables[1]; 1623f0275a0SJung-uk Kim 163*a371a5fdSJung-uk Kim } ACPI_DRTM_VTABLE_LIST; 1643f0275a0SJung-uk Kim 165*a371a5fdSJung-uk Kim /* 2) Resources List (of Resource Descriptors) */ 166*a371a5fdSJung-uk Kim 167*a371a5fdSJung-uk Kim /* Resource Descriptor */ 168*a371a5fdSJung-uk Kim 169*a371a5fdSJung-uk Kim typedef struct acpi_drtm_resource 170*a371a5fdSJung-uk Kim { 171*a371a5fdSJung-uk Kim UINT8 Size[7]; 172*a371a5fdSJung-uk Kim UINT8 Type; 173*a371a5fdSJung-uk Kim UINT64 Address; 174*a371a5fdSJung-uk Kim 175*a371a5fdSJung-uk Kim } ACPI_DRTM_RESOURCE; 1763f0275a0SJung-uk Kim 1773f0275a0SJung-uk Kim typedef struct acpi_drtm_resource_list 1783f0275a0SJung-uk Kim { 179*a371a5fdSJung-uk Kim UINT32 ResourceCount; 180*a371a5fdSJung-uk Kim ACPI_DRTM_RESOURCE Resources[1]; 1813f0275a0SJung-uk Kim 1823f0275a0SJung-uk Kim } ACPI_DRTM_RESOURCE_LIST; 1833f0275a0SJung-uk Kim 1843f0275a0SJung-uk Kim /* 3) Platform-specific Identifiers List */ 1853f0275a0SJung-uk Kim 186*a371a5fdSJung-uk Kim typedef struct acpi_drtm_dps_id 1873f0275a0SJung-uk Kim { 188*a371a5fdSJung-uk Kim UINT32 DpsIdLength; 189*a371a5fdSJung-uk Kim UINT8 DpsId[16]; 1903f0275a0SJung-uk Kim 191*a371a5fdSJung-uk Kim } ACPI_DRTM_DPS_ID; 1923f0275a0SJung-uk Kim 1933f0275a0SJung-uk Kim 1943f0275a0SJung-uk Kim /******************************************************************************* 1953f0275a0SJung-uk Kim * 1963f0275a0SJung-uk Kim * FPDT - Firmware Performance Data Table (ACPI 5.0) 1973f0275a0SJung-uk Kim * Version 1 1983f0275a0SJung-uk Kim * 1993f0275a0SJung-uk Kim ******************************************************************************/ 2003f0275a0SJung-uk Kim 2013f0275a0SJung-uk Kim typedef struct acpi_table_fpdt 2023f0275a0SJung-uk Kim { 2033f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 2043f0275a0SJung-uk Kim 2053f0275a0SJung-uk Kim } ACPI_TABLE_FPDT; 2063f0275a0SJung-uk Kim 2073f0275a0SJung-uk Kim 2083f0275a0SJung-uk Kim /* FPDT subtable header */ 2093f0275a0SJung-uk Kim 2103f0275a0SJung-uk Kim typedef struct acpi_fpdt_header 2113f0275a0SJung-uk Kim { 2123f0275a0SJung-uk Kim UINT16 Type; 2133f0275a0SJung-uk Kim UINT8 Length; 2143f0275a0SJung-uk Kim UINT8 Revision; 2153f0275a0SJung-uk Kim 2163f0275a0SJung-uk Kim } ACPI_FPDT_HEADER; 2173f0275a0SJung-uk Kim 2183f0275a0SJung-uk Kim /* Values for Type field above */ 2193f0275a0SJung-uk Kim 2203f0275a0SJung-uk Kim enum AcpiFpdtType 2213f0275a0SJung-uk Kim { 2223f0275a0SJung-uk Kim ACPI_FPDT_TYPE_BOOT = 0, 2239c48c75eSJung-uk Kim ACPI_FPDT_TYPE_S3PERF = 1 2243f0275a0SJung-uk Kim }; 2253f0275a0SJung-uk Kim 2263f0275a0SJung-uk Kim 2273f0275a0SJung-uk Kim /* 2283f0275a0SJung-uk Kim * FPDT subtables 2293f0275a0SJung-uk Kim */ 2303f0275a0SJung-uk Kim 2313f0275a0SJung-uk Kim /* 0: Firmware Basic Boot Performance Record */ 2323f0275a0SJung-uk Kim 2333f0275a0SJung-uk Kim typedef struct acpi_fpdt_boot 2343f0275a0SJung-uk Kim { 2353f0275a0SJung-uk Kim ACPI_FPDT_HEADER Header; 2363f0275a0SJung-uk Kim UINT8 Reserved[4]; 2373f0275a0SJung-uk Kim UINT64 ResetEnd; 2383f0275a0SJung-uk Kim UINT64 LoadStart; 2393f0275a0SJung-uk Kim UINT64 StartupStart; 2403f0275a0SJung-uk Kim UINT64 ExitServicesEntry; 2413f0275a0SJung-uk Kim UINT64 ExitServicesExit; 2423f0275a0SJung-uk Kim 2433f0275a0SJung-uk Kim } ACPI_FPDT_BOOT; 2443f0275a0SJung-uk Kim 2453f0275a0SJung-uk Kim 2463f0275a0SJung-uk Kim /* 1: S3 Performance Table Pointer Record */ 2473f0275a0SJung-uk Kim 2483f0275a0SJung-uk Kim typedef struct acpi_fpdt_s3pt_ptr 2493f0275a0SJung-uk Kim { 2503f0275a0SJung-uk Kim ACPI_FPDT_HEADER Header; 2513f0275a0SJung-uk Kim UINT8 Reserved[4]; 2523f0275a0SJung-uk Kim UINT64 Address; 2533f0275a0SJung-uk Kim 2543f0275a0SJung-uk Kim } ACPI_FPDT_S3PT_PTR; 2553f0275a0SJung-uk Kim 2563f0275a0SJung-uk Kim 2573f0275a0SJung-uk Kim /* 2583f0275a0SJung-uk Kim * S3PT - S3 Performance Table. This table is pointed to by the 2593f0275a0SJung-uk Kim * FPDT S3 Pointer Record above. 2603f0275a0SJung-uk Kim */ 2613f0275a0SJung-uk Kim typedef struct acpi_table_s3pt 2623f0275a0SJung-uk Kim { 2633f0275a0SJung-uk Kim UINT8 Signature[4]; /* "S3PT" */ 2643f0275a0SJung-uk Kim UINT32 Length; 2653f0275a0SJung-uk Kim 2663f0275a0SJung-uk Kim } ACPI_TABLE_S3PT; 2673f0275a0SJung-uk Kim 2683f0275a0SJung-uk Kim 2693f0275a0SJung-uk Kim /* 2703f0275a0SJung-uk Kim * S3PT Subtables 2713f0275a0SJung-uk Kim */ 2723f0275a0SJung-uk Kim typedef struct acpi_s3pt_header 2733f0275a0SJung-uk Kim { 2743f0275a0SJung-uk Kim UINT16 Type; 2753f0275a0SJung-uk Kim UINT8 Length; 2763f0275a0SJung-uk Kim UINT8 Revision; 2773f0275a0SJung-uk Kim 2783f0275a0SJung-uk Kim } ACPI_S3PT_HEADER; 2793f0275a0SJung-uk Kim 2803f0275a0SJung-uk Kim /* Values for Type field above */ 2813f0275a0SJung-uk Kim 2823f0275a0SJung-uk Kim enum AcpiS3ptType 2833f0275a0SJung-uk Kim { 2843f0275a0SJung-uk Kim ACPI_S3PT_TYPE_RESUME = 0, 2859c48c75eSJung-uk Kim ACPI_S3PT_TYPE_SUSPEND = 1 2863f0275a0SJung-uk Kim }; 2873f0275a0SJung-uk Kim 2883f0275a0SJung-uk Kim typedef struct acpi_s3pt_resume 2893f0275a0SJung-uk Kim { 2903f0275a0SJung-uk Kim ACPI_S3PT_HEADER Header; 2913f0275a0SJung-uk Kim UINT32 ResumeCount; 2923f0275a0SJung-uk Kim UINT64 FullResume; 2933f0275a0SJung-uk Kim UINT64 AverageResume; 2943f0275a0SJung-uk Kim 2953f0275a0SJung-uk Kim } ACPI_S3PT_RESUME; 2963f0275a0SJung-uk Kim 2973f0275a0SJung-uk Kim typedef struct acpi_s3pt_suspend 2983f0275a0SJung-uk Kim { 2993f0275a0SJung-uk Kim ACPI_S3PT_HEADER Header; 3003f0275a0SJung-uk Kim UINT64 SuspendStart; 3013f0275a0SJung-uk Kim UINT64 SuspendEnd; 3023f0275a0SJung-uk Kim 3033f0275a0SJung-uk Kim } ACPI_S3PT_SUSPEND; 3043f0275a0SJung-uk Kim 3053f0275a0SJung-uk Kim 3063f0275a0SJung-uk Kim /******************************************************************************* 3073f0275a0SJung-uk Kim * 308313a0c13SJung-uk Kim * GTDT - Generic Timer Description Table (ACPI 5.1) 309313a0c13SJung-uk Kim * Version 2 3103f0275a0SJung-uk Kim * 3113f0275a0SJung-uk Kim ******************************************************************************/ 3123f0275a0SJung-uk Kim 3133f0275a0SJung-uk Kim typedef struct acpi_table_gtdt 3143f0275a0SJung-uk Kim { 3153f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 316313a0c13SJung-uk Kim UINT64 CounterBlockAddresss; 317313a0c13SJung-uk Kim UINT32 Reserved; 318313a0c13SJung-uk Kim UINT32 SecureEl1Interrupt; 319313a0c13SJung-uk Kim UINT32 SecureEl1Flags; 320313a0c13SJung-uk Kim UINT32 NonSecureEl1Interrupt; 321313a0c13SJung-uk Kim UINT32 NonSecureEl1Flags; 3223f0275a0SJung-uk Kim UINT32 VirtualTimerInterrupt; 3233f0275a0SJung-uk Kim UINT32 VirtualTimerFlags; 324313a0c13SJung-uk Kim UINT32 NonSecureEl2Interrupt; 325313a0c13SJung-uk Kim UINT32 NonSecureEl2Flags; 326313a0c13SJung-uk Kim UINT64 CounterReadBlockAddress; 327313a0c13SJung-uk Kim UINT32 PlatformTimerCount; 328313a0c13SJung-uk Kim UINT32 PlatformTimerOffset; 3293f0275a0SJung-uk Kim 3303f0275a0SJung-uk Kim } ACPI_TABLE_GTDT; 3313f0275a0SJung-uk Kim 332313a0c13SJung-uk Kim /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 3333f0275a0SJung-uk Kim 334313a0c13SJung-uk Kim #define ACPI_GTDT_INTERRUPT_MODE (1) 335313a0c13SJung-uk Kim #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 336313a0c13SJung-uk Kim #define ACPI_GTDT_ALWAYS_ON (1<<2) 3373f0275a0SJung-uk Kim 3383f0275a0SJung-uk Kim 339313a0c13SJung-uk Kim /* Common GTDT subtable header */ 340313a0c13SJung-uk Kim 341313a0c13SJung-uk Kim typedef struct acpi_gtdt_header 342313a0c13SJung-uk Kim { 343313a0c13SJung-uk Kim UINT8 Type; 344313a0c13SJung-uk Kim UINT16 Length; 345313a0c13SJung-uk Kim 346313a0c13SJung-uk Kim } ACPI_GTDT_HEADER; 347313a0c13SJung-uk Kim 348313a0c13SJung-uk Kim /* Values for GTDT subtable type above */ 349313a0c13SJung-uk Kim 350313a0c13SJung-uk Kim enum AcpiGtdtType 351313a0c13SJung-uk Kim { 352313a0c13SJung-uk Kim ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 353313a0c13SJung-uk Kim ACPI_GTDT_TYPE_WATCHDOG = 1, 354313a0c13SJung-uk Kim ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 355313a0c13SJung-uk Kim }; 356313a0c13SJung-uk Kim 357313a0c13SJung-uk Kim 358313a0c13SJung-uk Kim /* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 359313a0c13SJung-uk Kim 360313a0c13SJung-uk Kim /* 0: Generic Timer Block */ 361313a0c13SJung-uk Kim 362313a0c13SJung-uk Kim typedef struct acpi_gtdt_timer_block 363313a0c13SJung-uk Kim { 364313a0c13SJung-uk Kim ACPI_GTDT_HEADER Header; 365313a0c13SJung-uk Kim UINT8 Reserved; 366313a0c13SJung-uk Kim UINT64 BlockAddress; 367313a0c13SJung-uk Kim UINT32 TimerCount; 368313a0c13SJung-uk Kim UINT32 TimerOffset; 369313a0c13SJung-uk Kim 370313a0c13SJung-uk Kim } ACPI_GTDT_TIMER_BLOCK; 371313a0c13SJung-uk Kim 372313a0c13SJung-uk Kim /* Timer Sub-Structure, one per timer */ 373313a0c13SJung-uk Kim 374313a0c13SJung-uk Kim typedef struct acpi_gtdt_timer_entry 375313a0c13SJung-uk Kim { 376313a0c13SJung-uk Kim UINT8 FrameNumber; 377313a0c13SJung-uk Kim UINT8 Reserved[3]; 378313a0c13SJung-uk Kim UINT64 BaseAddress; 379313a0c13SJung-uk Kim UINT64 El0BaseAddress; 380313a0c13SJung-uk Kim UINT32 TimerInterrupt; 381313a0c13SJung-uk Kim UINT32 TimerFlags; 382313a0c13SJung-uk Kim UINT32 VirtualTimerInterrupt; 383313a0c13SJung-uk Kim UINT32 VirtualTimerFlags; 384313a0c13SJung-uk Kim UINT32 CommonFlags; 385313a0c13SJung-uk Kim 386313a0c13SJung-uk Kim } ACPI_GTDT_TIMER_ENTRY; 387313a0c13SJung-uk Kim 388313a0c13SJung-uk Kim /* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 389313a0c13SJung-uk Kim 390313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IRQ_MODE (1) 391313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 392313a0c13SJung-uk Kim 393313a0c13SJung-uk Kim /* Flag Definitions: CommonFlags above */ 394313a0c13SJung-uk Kim 395313a0c13SJung-uk Kim #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 396313a0c13SJung-uk Kim #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 397313a0c13SJung-uk Kim 398313a0c13SJung-uk Kim 399313a0c13SJung-uk Kim /* 1: SBSA Generic Watchdog Structure */ 400313a0c13SJung-uk Kim 401313a0c13SJung-uk Kim typedef struct acpi_gtdt_watchdog 402313a0c13SJung-uk Kim { 403313a0c13SJung-uk Kim ACPI_GTDT_HEADER Header; 404313a0c13SJung-uk Kim UINT8 Reserved; 405313a0c13SJung-uk Kim UINT64 RefreshFrameAddress; 406313a0c13SJung-uk Kim UINT64 ControlFrameAddress; 407313a0c13SJung-uk Kim UINT32 TimerInterrupt; 408313a0c13SJung-uk Kim UINT32 TimerFlags; 409313a0c13SJung-uk Kim 410313a0c13SJung-uk Kim } ACPI_GTDT_WATCHDOG; 411313a0c13SJung-uk Kim 412313a0c13SJung-uk Kim /* Flag Definitions: TimerFlags above */ 413313a0c13SJung-uk Kim 414313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 415313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 416313a0c13SJung-uk Kim #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 4173f0275a0SJung-uk Kim 4183f0275a0SJung-uk Kim 4193f0275a0SJung-uk Kim /******************************************************************************* 4203f0275a0SJung-uk Kim * 4213f0275a0SJung-uk Kim * MPST - Memory Power State Table (ACPI 5.0) 4223f0275a0SJung-uk Kim * Version 1 4233f0275a0SJung-uk Kim * 4243f0275a0SJung-uk Kim ******************************************************************************/ 4253f0275a0SJung-uk Kim 4263f0275a0SJung-uk Kim #define ACPI_MPST_CHANNEL_INFO \ 4273f0275a0SJung-uk Kim UINT8 ChannelId; \ 4288ef1a331SJung-uk Kim UINT8 Reserved1[3]; \ 4298ef1a331SJung-uk Kim UINT16 PowerNodeCount; \ 4308ef1a331SJung-uk Kim UINT16 Reserved2; 4313f0275a0SJung-uk Kim 4323f0275a0SJung-uk Kim /* Main table */ 4333f0275a0SJung-uk Kim 4343f0275a0SJung-uk Kim typedef struct acpi_table_mpst 4353f0275a0SJung-uk Kim { 4363f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 4373f0275a0SJung-uk Kim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 4383f0275a0SJung-uk Kim 4393f0275a0SJung-uk Kim } ACPI_TABLE_MPST; 4403f0275a0SJung-uk Kim 4413f0275a0SJung-uk Kim 4423f0275a0SJung-uk Kim /* Memory Platform Communication Channel Info */ 4433f0275a0SJung-uk Kim 4443f0275a0SJung-uk Kim typedef struct acpi_mpst_channel 4453f0275a0SJung-uk Kim { 4463f0275a0SJung-uk Kim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 4473f0275a0SJung-uk Kim 4483f0275a0SJung-uk Kim } ACPI_MPST_CHANNEL; 4493f0275a0SJung-uk Kim 4503f0275a0SJung-uk Kim 4513f0275a0SJung-uk Kim /* Memory Power Node Structure */ 4523f0275a0SJung-uk Kim 4533f0275a0SJung-uk Kim typedef struct acpi_mpst_power_node 4543f0275a0SJung-uk Kim { 4553f0275a0SJung-uk Kim UINT8 Flags; 4563f0275a0SJung-uk Kim UINT8 Reserved1; 4573f0275a0SJung-uk Kim UINT16 NodeId; 4583f0275a0SJung-uk Kim UINT32 Length; 4593f0275a0SJung-uk Kim UINT64 RangeAddress; 4603f0275a0SJung-uk Kim UINT64 RangeLength; 4618ef1a331SJung-uk Kim UINT32 NumPowerStates; 4628ef1a331SJung-uk Kim UINT32 NumPhysicalComponents; 4633f0275a0SJung-uk Kim 4643f0275a0SJung-uk Kim } ACPI_MPST_POWER_NODE; 4653f0275a0SJung-uk Kim 4663f0275a0SJung-uk Kim /* Values for Flags field above */ 4673f0275a0SJung-uk Kim 4683f0275a0SJung-uk Kim #define ACPI_MPST_ENABLED 1 4693f0275a0SJung-uk Kim #define ACPI_MPST_POWER_MANAGED 2 4703f0275a0SJung-uk Kim #define ACPI_MPST_HOT_PLUG_CAPABLE 4 4713f0275a0SJung-uk Kim 4723f0275a0SJung-uk Kim 4733f0275a0SJung-uk Kim /* Memory Power State Structure (follows POWER_NODE above) */ 4743f0275a0SJung-uk Kim 4753f0275a0SJung-uk Kim typedef struct acpi_mpst_power_state 4763f0275a0SJung-uk Kim { 4773f0275a0SJung-uk Kim UINT8 PowerState; 4783f0275a0SJung-uk Kim UINT8 InfoIndex; 4793f0275a0SJung-uk Kim 4803f0275a0SJung-uk Kim } ACPI_MPST_POWER_STATE; 4813f0275a0SJung-uk Kim 4823f0275a0SJung-uk Kim 4833f0275a0SJung-uk Kim /* Physical Component ID Structure (follows POWER_STATE above) */ 4843f0275a0SJung-uk Kim 4853f0275a0SJung-uk Kim typedef struct acpi_mpst_component 4863f0275a0SJung-uk Kim { 4873f0275a0SJung-uk Kim UINT16 ComponentId; 4883f0275a0SJung-uk Kim 4893f0275a0SJung-uk Kim } ACPI_MPST_COMPONENT; 4903f0275a0SJung-uk Kim 4913f0275a0SJung-uk Kim 4923f0275a0SJung-uk Kim /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 4933f0275a0SJung-uk Kim 4943f0275a0SJung-uk Kim typedef struct acpi_mpst_data_hdr 4953f0275a0SJung-uk Kim { 4963f0275a0SJung-uk Kim UINT16 CharacteristicsCount; 4978ef1a331SJung-uk Kim UINT16 Reserved; 4983f0275a0SJung-uk Kim 4993f0275a0SJung-uk Kim } ACPI_MPST_DATA_HDR; 5003f0275a0SJung-uk Kim 5013f0275a0SJung-uk Kim typedef struct acpi_mpst_power_data 5023f0275a0SJung-uk Kim { 5038ef1a331SJung-uk Kim UINT8 StructureId; 5043f0275a0SJung-uk Kim UINT8 Flags; 5053f0275a0SJung-uk Kim UINT16 Reserved1; 5063f0275a0SJung-uk Kim UINT32 AveragePower; 5073f0275a0SJung-uk Kim UINT32 PowerSaving; 5083f0275a0SJung-uk Kim UINT64 ExitLatency; 5093f0275a0SJung-uk Kim UINT64 Reserved2; 5103f0275a0SJung-uk Kim 5113f0275a0SJung-uk Kim } ACPI_MPST_POWER_DATA; 5123f0275a0SJung-uk Kim 5133f0275a0SJung-uk Kim /* Values for Flags field above */ 5143f0275a0SJung-uk Kim 5153f0275a0SJung-uk Kim #define ACPI_MPST_PRESERVE 1 5163f0275a0SJung-uk Kim #define ACPI_MPST_AUTOENTRY 2 5173f0275a0SJung-uk Kim #define ACPI_MPST_AUTOEXIT 4 5183f0275a0SJung-uk Kim 5193f0275a0SJung-uk Kim 5203f0275a0SJung-uk Kim /* Shared Memory Region (not part of an ACPI table) */ 5213f0275a0SJung-uk Kim 5223f0275a0SJung-uk Kim typedef struct acpi_mpst_shared 5233f0275a0SJung-uk Kim { 5243f0275a0SJung-uk Kim UINT32 Signature; 5253f0275a0SJung-uk Kim UINT16 PccCommand; 5263f0275a0SJung-uk Kim UINT16 PccStatus; 5278ef1a331SJung-uk Kim UINT32 CommandRegister; 5288ef1a331SJung-uk Kim UINT32 StatusRegister; 5298ef1a331SJung-uk Kim UINT32 PowerStateId; 5308ef1a331SJung-uk Kim UINT32 PowerNodeId; 5313f0275a0SJung-uk Kim UINT64 EnergyConsumed; 5323f0275a0SJung-uk Kim UINT64 AveragePower; 5333f0275a0SJung-uk Kim 5343f0275a0SJung-uk Kim } ACPI_MPST_SHARED; 5353f0275a0SJung-uk Kim 5363f0275a0SJung-uk Kim 5373f0275a0SJung-uk Kim /******************************************************************************* 5383f0275a0SJung-uk Kim * 5393f0275a0SJung-uk Kim * PCCT - Platform Communications Channel Table (ACPI 5.0) 5403f0275a0SJung-uk Kim * Version 1 5413f0275a0SJung-uk Kim * 5423f0275a0SJung-uk Kim ******************************************************************************/ 5433f0275a0SJung-uk Kim 5443f0275a0SJung-uk Kim typedef struct acpi_table_pcct 5453f0275a0SJung-uk Kim { 5463f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 5473f0275a0SJung-uk Kim UINT32 Flags; 548313a0c13SJung-uk Kim UINT64 Reserved; 5493f0275a0SJung-uk Kim 5503f0275a0SJung-uk Kim } ACPI_TABLE_PCCT; 5513f0275a0SJung-uk Kim 5523f0275a0SJung-uk Kim /* Values for Flags field above */ 5533f0275a0SJung-uk Kim 5543f0275a0SJung-uk Kim #define ACPI_PCCT_DOORBELL 1 5553f0275a0SJung-uk Kim 556313a0c13SJung-uk Kim /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 557313a0c13SJung-uk Kim 558313a0c13SJung-uk Kim enum AcpiPcctType 559313a0c13SJung-uk Kim { 560313a0c13SJung-uk Kim ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 561313a0c13SJung-uk Kim ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 562313a0c13SJung-uk Kim ACPI_PCCT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 563313a0c13SJung-uk Kim }; 564313a0c13SJung-uk Kim 5653f0275a0SJung-uk Kim /* 566313a0c13SJung-uk Kim * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 5673f0275a0SJung-uk Kim */ 5683f0275a0SJung-uk Kim 5693f0275a0SJung-uk Kim /* 0: Generic Communications Subspace */ 5703f0275a0SJung-uk Kim 5713f0275a0SJung-uk Kim typedef struct acpi_pcct_subspace 5723f0275a0SJung-uk Kim { 5733f0275a0SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 5743f0275a0SJung-uk Kim UINT8 Reserved[6]; 5753f0275a0SJung-uk Kim UINT64 BaseAddress; 5763f0275a0SJung-uk Kim UINT64 Length; 5773f0275a0SJung-uk Kim ACPI_GENERIC_ADDRESS DoorbellRegister; 5783f0275a0SJung-uk Kim UINT64 PreserveMask; 5793f0275a0SJung-uk Kim UINT64 WriteMask; 580313a0c13SJung-uk Kim UINT32 Latency; 581313a0c13SJung-uk Kim UINT32 MaxAccessRate; 582313a0c13SJung-uk Kim UINT16 MinTurnaroundTime; 5833f0275a0SJung-uk Kim 5843f0275a0SJung-uk Kim } ACPI_PCCT_SUBSPACE; 5853f0275a0SJung-uk Kim 5863f0275a0SJung-uk Kim 587313a0c13SJung-uk Kim /* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 588313a0c13SJung-uk Kim 589313a0c13SJung-uk Kim typedef struct acpi_pcct_hw_reduced 590313a0c13SJung-uk Kim { 591313a0c13SJung-uk Kim ACPI_SUBTABLE_HEADER Header; 592313a0c13SJung-uk Kim UINT32 DoorbellInterrupt; 593313a0c13SJung-uk Kim UINT8 Flags; 594313a0c13SJung-uk Kim UINT8 Reserved; 595313a0c13SJung-uk Kim UINT64 BaseAddress; 596313a0c13SJung-uk Kim UINT64 Length; 597313a0c13SJung-uk Kim ACPI_GENERIC_ADDRESS DoorbellRegister; 598313a0c13SJung-uk Kim UINT64 PreserveMask; 599313a0c13SJung-uk Kim UINT64 WriteMask; 600313a0c13SJung-uk Kim UINT32 Latency; 601313a0c13SJung-uk Kim UINT32 MaxAccessRate; 602313a0c13SJung-uk Kim UINT16 MinTurnaroundTime; 603313a0c13SJung-uk Kim 604313a0c13SJung-uk Kim } ACPI_PCCT_HW_REDUCED; 605313a0c13SJung-uk Kim 606313a0c13SJung-uk Kim /* Values for doorbell flags above */ 607313a0c13SJung-uk Kim 608313a0c13SJung-uk Kim #define ACPI_PCCT_INTERRUPT_POLARITY (1) 609313a0c13SJung-uk Kim #define ACPI_PCCT_INTERRUPT_MODE (1<<1) 610313a0c13SJung-uk Kim 611313a0c13SJung-uk Kim 6123f0275a0SJung-uk Kim /* 6133f0275a0SJung-uk Kim * PCC memory structures (not part of the ACPI table) 6143f0275a0SJung-uk Kim */ 6153f0275a0SJung-uk Kim 6163f0275a0SJung-uk Kim /* Shared Memory Region */ 6173f0275a0SJung-uk Kim 6183f0275a0SJung-uk Kim typedef struct acpi_pcct_shared_memory 6193f0275a0SJung-uk Kim { 6203f0275a0SJung-uk Kim UINT32 Signature; 6213f0275a0SJung-uk Kim UINT16 Command; 6223f0275a0SJung-uk Kim UINT16 Status; 6233f0275a0SJung-uk Kim 6243f0275a0SJung-uk Kim } ACPI_PCCT_SHARED_MEMORY; 6253f0275a0SJung-uk Kim 6263f0275a0SJung-uk Kim 6273f0275a0SJung-uk Kim /******************************************************************************* 6283f0275a0SJung-uk Kim * 6293f0275a0SJung-uk Kim * PMTT - Platform Memory Topology Table (ACPI 5.0) 6303f0275a0SJung-uk Kim * Version 1 6313f0275a0SJung-uk Kim * 6323f0275a0SJung-uk Kim ******************************************************************************/ 6333f0275a0SJung-uk Kim 6343f0275a0SJung-uk Kim typedef struct acpi_table_pmtt 6353f0275a0SJung-uk Kim { 6363f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 6373f0275a0SJung-uk Kim UINT32 Reserved; 6383f0275a0SJung-uk Kim 6393f0275a0SJung-uk Kim } ACPI_TABLE_PMTT; 6403f0275a0SJung-uk Kim 6413f0275a0SJung-uk Kim 6423f0275a0SJung-uk Kim /* Common header for PMTT subtables that follow main table */ 6433f0275a0SJung-uk Kim 6443f0275a0SJung-uk Kim typedef struct acpi_pmtt_header 6453f0275a0SJung-uk Kim { 6463f0275a0SJung-uk Kim UINT8 Type; 6473f0275a0SJung-uk Kim UINT8 Reserved1; 6483f0275a0SJung-uk Kim UINT16 Length; 6493f0275a0SJung-uk Kim UINT16 Flags; 6503f0275a0SJung-uk Kim UINT16 Reserved2; 6513f0275a0SJung-uk Kim 6523f0275a0SJung-uk Kim } ACPI_PMTT_HEADER; 6533f0275a0SJung-uk Kim 6543f0275a0SJung-uk Kim /* Values for Type field above */ 6553f0275a0SJung-uk Kim 6563f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_SOCKET 0 6573f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_CONTROLLER 1 6583f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_DIMM 2 6593f0275a0SJung-uk Kim #define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 6603f0275a0SJung-uk Kim 6613f0275a0SJung-uk Kim /* Values for Flags field above */ 6623f0275a0SJung-uk Kim 6633f0275a0SJung-uk Kim #define ACPI_PMTT_TOP_LEVEL 0x0001 6643f0275a0SJung-uk Kim #define ACPI_PMTT_PHYSICAL 0x0002 6653f0275a0SJung-uk Kim #define ACPI_PMTT_MEMORY_TYPE 0x000C 6663f0275a0SJung-uk Kim 6673f0275a0SJung-uk Kim 6683f0275a0SJung-uk Kim /* 6693f0275a0SJung-uk Kim * PMTT subtables, correspond to Type in acpi_pmtt_header 6703f0275a0SJung-uk Kim */ 6713f0275a0SJung-uk Kim 6723f0275a0SJung-uk Kim 6733f0275a0SJung-uk Kim /* 0: Socket Structure */ 6743f0275a0SJung-uk Kim 6753f0275a0SJung-uk Kim typedef struct acpi_pmtt_socket 6763f0275a0SJung-uk Kim { 6773f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 6783f0275a0SJung-uk Kim UINT16 SocketId; 6793f0275a0SJung-uk Kim UINT16 Reserved; 6803f0275a0SJung-uk Kim 6813f0275a0SJung-uk Kim } ACPI_PMTT_SOCKET; 6823f0275a0SJung-uk Kim 6833f0275a0SJung-uk Kim 6843f0275a0SJung-uk Kim /* 1: Memory Controller subtable */ 6853f0275a0SJung-uk Kim 6863f0275a0SJung-uk Kim typedef struct acpi_pmtt_controller 6873f0275a0SJung-uk Kim { 6883f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 6893f0275a0SJung-uk Kim UINT32 ReadLatency; 6903f0275a0SJung-uk Kim UINT32 WriteLatency; 6913f0275a0SJung-uk Kim UINT32 ReadBandwidth; 6923f0275a0SJung-uk Kim UINT32 WriteBandwidth; 6933f0275a0SJung-uk Kim UINT16 AccessWidth; 6943f0275a0SJung-uk Kim UINT16 Alignment; 6953f0275a0SJung-uk Kim UINT16 Reserved; 6963f0275a0SJung-uk Kim UINT16 DomainCount; 6973f0275a0SJung-uk Kim 6983f0275a0SJung-uk Kim } ACPI_PMTT_CONTROLLER; 6993f0275a0SJung-uk Kim 7003f0275a0SJung-uk Kim /* 1a: Proximity Domain substructure */ 7013f0275a0SJung-uk Kim 7023f0275a0SJung-uk Kim typedef struct acpi_pmtt_domain 7033f0275a0SJung-uk Kim { 7043f0275a0SJung-uk Kim UINT32 ProximityDomain; 7053f0275a0SJung-uk Kim 7063f0275a0SJung-uk Kim } ACPI_PMTT_DOMAIN; 7073f0275a0SJung-uk Kim 7083f0275a0SJung-uk Kim 7093f0275a0SJung-uk Kim /* 2: Physical Component Identifier (DIMM) */ 7103f0275a0SJung-uk Kim 7113f0275a0SJung-uk Kim typedef struct acpi_pmtt_physical_component 7123f0275a0SJung-uk Kim { 7133f0275a0SJung-uk Kim ACPI_PMTT_HEADER Header; 7143f0275a0SJung-uk Kim UINT16 ComponentId; 7153f0275a0SJung-uk Kim UINT16 Reserved; 7163f0275a0SJung-uk Kim UINT32 MemorySize; 7173f0275a0SJung-uk Kim UINT32 BiosHandle; 7183f0275a0SJung-uk Kim 7193f0275a0SJung-uk Kim } ACPI_PMTT_PHYSICAL_COMPONENT; 7203f0275a0SJung-uk Kim 7213f0275a0SJung-uk Kim 7223f0275a0SJung-uk Kim /******************************************************************************* 7233f0275a0SJung-uk Kim * 7243f0275a0SJung-uk Kim * RASF - RAS Feature Table (ACPI 5.0) 7253f0275a0SJung-uk Kim * Version 1 7263f0275a0SJung-uk Kim * 7273f0275a0SJung-uk Kim ******************************************************************************/ 7283f0275a0SJung-uk Kim 7293f0275a0SJung-uk Kim typedef struct acpi_table_rasf 7303f0275a0SJung-uk Kim { 7313f0275a0SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 7323f0275a0SJung-uk Kim UINT8 ChannelId[12]; 7333f0275a0SJung-uk Kim 7343f0275a0SJung-uk Kim } ACPI_TABLE_RASF; 7353f0275a0SJung-uk Kim 7363f0275a0SJung-uk Kim /* RASF Platform Communication Channel Shared Memory Region */ 7373f0275a0SJung-uk Kim 7383f0275a0SJung-uk Kim typedef struct acpi_rasf_shared_memory 7393f0275a0SJung-uk Kim { 7403f0275a0SJung-uk Kim UINT32 Signature; 7413f0275a0SJung-uk Kim UINT16 Command; 7423f0275a0SJung-uk Kim UINT16 Status; 7439c48c75eSJung-uk Kim UINT16 Version; 7449c48c75eSJung-uk Kim UINT8 Capabilities[16]; 7459c48c75eSJung-uk Kim UINT8 SetCapabilities[16]; 7469c48c75eSJung-uk Kim UINT16 NumParameterBlocks; 7479c48c75eSJung-uk Kim UINT32 SetCapabilitiesStatus; 7483f0275a0SJung-uk Kim 7493f0275a0SJung-uk Kim } ACPI_RASF_SHARED_MEMORY; 7503f0275a0SJung-uk Kim 7519c48c75eSJung-uk Kim /* RASF Parameter Block Structure Header */ 7529c48c75eSJung-uk Kim 7539c48c75eSJung-uk Kim typedef struct acpi_rasf_parameter_block 7549c48c75eSJung-uk Kim { 7559c48c75eSJung-uk Kim UINT16 Type; 7569c48c75eSJung-uk Kim UINT16 Version; 7579c48c75eSJung-uk Kim UINT16 Length; 7589c48c75eSJung-uk Kim 7599c48c75eSJung-uk Kim } ACPI_RASF_PARAMETER_BLOCK; 7609c48c75eSJung-uk Kim 7619c48c75eSJung-uk Kim /* RASF Parameter Block Structure for PATROL_SCRUB */ 7629c48c75eSJung-uk Kim 7639c48c75eSJung-uk Kim typedef struct acpi_rasf_patrol_scrub_parameter 7649c48c75eSJung-uk Kim { 7659c48c75eSJung-uk Kim ACPI_RASF_PARAMETER_BLOCK Header; 7669c48c75eSJung-uk Kim UINT16 PatrolScrubCommand; 7679c48c75eSJung-uk Kim UINT64 RequestedAddressRange[2]; 7689c48c75eSJung-uk Kim UINT64 ActualAddressRange[2]; 7699c48c75eSJung-uk Kim UINT16 Flags; 7709c48c75eSJung-uk Kim UINT8 RequestedSpeed; 7719c48c75eSJung-uk Kim 7729c48c75eSJung-uk Kim } ACPI_RASF_PATROL_SCRUB_PARAMETER; 7739c48c75eSJung-uk Kim 7743f0275a0SJung-uk Kim /* Masks for Flags and Speed fields above */ 7753f0275a0SJung-uk Kim 7763f0275a0SJung-uk Kim #define ACPI_RASF_SCRUBBER_RUNNING 1 7773f0275a0SJung-uk Kim #define ACPI_RASF_SPEED (7<<1) 7789c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_SLOW (0<<1) 7799c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_MEDIUM (4<<1) 7809c48c75eSJung-uk Kim #define ACPI_RASF_SPEED_FAST (7<<1) 7813f0275a0SJung-uk Kim 7823f0275a0SJung-uk Kim /* Channel Commands */ 7833f0275a0SJung-uk Kim 7843f0275a0SJung-uk Kim enum AcpiRasfCommands 7853f0275a0SJung-uk Kim { 7869c48c75eSJung-uk Kim ACPI_RASF_EXECUTE_RASF_COMMAND = 1 7879c48c75eSJung-uk Kim }; 7889c48c75eSJung-uk Kim 7899c48c75eSJung-uk Kim /* Platform RAS Capabilities */ 7909c48c75eSJung-uk Kim 7919c48c75eSJung-uk Kim enum AcpiRasfCapabiliities 7929c48c75eSJung-uk Kim { 7939c48c75eSJung-uk Kim ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 7949c48c75eSJung-uk Kim ACPI_SW_PATROL_SCRUB_EXPOSED = 1 7959c48c75eSJung-uk Kim }; 7969c48c75eSJung-uk Kim 7979c48c75eSJung-uk Kim /* Patrol Scrub Commands */ 7989c48c75eSJung-uk Kim 7999c48c75eSJung-uk Kim enum AcpiRasfPatrolScrubCommands 8009c48c75eSJung-uk Kim { 8019c48c75eSJung-uk Kim ACPI_RASF_GET_PATROL_PARAMETERS = 1, 8029c48c75eSJung-uk Kim ACPI_RASF_START_PATROL_SCRUBBER = 2, 8039c48c75eSJung-uk Kim ACPI_RASF_STOP_PATROL_SCRUBBER = 3 8043f0275a0SJung-uk Kim }; 8053f0275a0SJung-uk Kim 8063f0275a0SJung-uk Kim /* Channel Command flags */ 8073f0275a0SJung-uk Kim 8083f0275a0SJung-uk Kim #define ACPI_RASF_GENERATE_SCI (1<<15) 8093f0275a0SJung-uk Kim 8103f0275a0SJung-uk Kim /* Status values */ 8113f0275a0SJung-uk Kim 8123f0275a0SJung-uk Kim enum AcpiRasfStatus 8133f0275a0SJung-uk Kim { 8143f0275a0SJung-uk Kim ACPI_RASF_SUCCESS = 0, 8153f0275a0SJung-uk Kim ACPI_RASF_NOT_VALID = 1, 8163f0275a0SJung-uk Kim ACPI_RASF_NOT_SUPPORTED = 2, 8173f0275a0SJung-uk Kim ACPI_RASF_BUSY = 3, 8183f0275a0SJung-uk Kim ACPI_RASF_FAILED = 4, 8193f0275a0SJung-uk Kim ACPI_RASF_ABORTED = 5, 8203f0275a0SJung-uk Kim ACPI_RASF_INVALID_DATA = 6 8213f0275a0SJung-uk Kim }; 8223f0275a0SJung-uk Kim 8233f0275a0SJung-uk Kim /* Status flags */ 8243f0275a0SJung-uk Kim 8253f0275a0SJung-uk Kim #define ACPI_RASF_COMMAND_COMPLETE (1) 8263f0275a0SJung-uk Kim #define ACPI_RASF_SCI_DOORBELL (1<<1) 8273f0275a0SJung-uk Kim #define ACPI_RASF_ERROR (1<<2) 8283f0275a0SJung-uk Kim #define ACPI_RASF_STATUS (0x1F<<3) 8293f0275a0SJung-uk Kim 8303f0275a0SJung-uk Kim 831efcc2a30SJung-uk Kim /******************************************************************************* 832efcc2a30SJung-uk Kim * 833*a371a5fdSJung-uk Kim * STAO - Status Override Table (_STA override) - ACPI 6.0 834*a371a5fdSJung-uk Kim * Version 1 835*a371a5fdSJung-uk Kim * 836*a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Status Override Table" 837*a371a5fdSJung-uk Kim * 6 January 2015 838*a371a5fdSJung-uk Kim * 839*a371a5fdSJung-uk Kim ******************************************************************************/ 840*a371a5fdSJung-uk Kim 841*a371a5fdSJung-uk Kim typedef struct acpi_table_stao 842*a371a5fdSJung-uk Kim { 843*a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 844*a371a5fdSJung-uk Kim UINT8 IgnoreUart; 845*a371a5fdSJung-uk Kim 846*a371a5fdSJung-uk Kim } ACPI_TABLE_STAO; 847*a371a5fdSJung-uk Kim 848*a371a5fdSJung-uk Kim 849*a371a5fdSJung-uk Kim /******************************************************************************* 850*a371a5fdSJung-uk Kim * 851efcc2a30SJung-uk Kim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 852efcc2a30SJung-uk Kim * Version 3 853efcc2a30SJung-uk Kim * 854efcc2a30SJung-uk Kim * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011 855efcc2a30SJung-uk Kim * 856efcc2a30SJung-uk Kim ******************************************************************************/ 857efcc2a30SJung-uk Kim 858efcc2a30SJung-uk Kim typedef struct acpi_table_tpm2 859efcc2a30SJung-uk Kim { 860efcc2a30SJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 861efcc2a30SJung-uk Kim UINT32 Flags; 862efcc2a30SJung-uk Kim UINT64 ControlAddress; 863efcc2a30SJung-uk Kim UINT32 StartMethod; 864efcc2a30SJung-uk Kim 865efcc2a30SJung-uk Kim } ACPI_TABLE_TPM2; 866efcc2a30SJung-uk Kim 867efcc2a30SJung-uk Kim /* Control area structure (not part of table, pointed to by ControlAddress) */ 868efcc2a30SJung-uk Kim 869efcc2a30SJung-uk Kim typedef struct acpi_tpm2_control 870efcc2a30SJung-uk Kim { 871efcc2a30SJung-uk Kim UINT32 Reserved; 872efcc2a30SJung-uk Kim UINT32 Error; 873efcc2a30SJung-uk Kim UINT32 Cancel; 874efcc2a30SJung-uk Kim UINT32 Start; 875efcc2a30SJung-uk Kim UINT64 InterruptControl; 876efcc2a30SJung-uk Kim UINT32 CommandSize; 877efcc2a30SJung-uk Kim UINT64 CommandAddress; 878efcc2a30SJung-uk Kim UINT32 ResponseSize; 879efcc2a30SJung-uk Kim UINT64 ResponseAddress; 880efcc2a30SJung-uk Kim 881efcc2a30SJung-uk Kim } ACPI_TPM2_CONTROL; 882efcc2a30SJung-uk Kim 883efcc2a30SJung-uk Kim 884*a371a5fdSJung-uk Kim /******************************************************************************* 885*a371a5fdSJung-uk Kim * 886*a371a5fdSJung-uk Kim * WPBT - Windows Platform Environment Table (ACPI 6.0) 887*a371a5fdSJung-uk Kim * Version 1 888*a371a5fdSJung-uk Kim * 889*a371a5fdSJung-uk Kim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 890*a371a5fdSJung-uk Kim * 891*a371a5fdSJung-uk Kim ******************************************************************************/ 892*a371a5fdSJung-uk Kim 893*a371a5fdSJung-uk Kim typedef struct acpi_table_wpbt 894*a371a5fdSJung-uk Kim { 895*a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 896*a371a5fdSJung-uk Kim UINT32 HandoffSize; 897*a371a5fdSJung-uk Kim UINT64 HandoffAddress; 898*a371a5fdSJung-uk Kim UINT8 Layout; 899*a371a5fdSJung-uk Kim UINT8 Type; 900*a371a5fdSJung-uk Kim UINT16 ArgumentsLength; 901*a371a5fdSJung-uk Kim 902*a371a5fdSJung-uk Kim } ACPI_TABLE_WPBT; 903*a371a5fdSJung-uk Kim 904*a371a5fdSJung-uk Kim 905*a371a5fdSJung-uk Kim /******************************************************************************* 906*a371a5fdSJung-uk Kim * 907*a371a5fdSJung-uk Kim * XENV - Xen Environment Table (ACPI 6.0) 908*a371a5fdSJung-uk Kim * Version 1 909*a371a5fdSJung-uk Kim * 910*a371a5fdSJung-uk Kim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 911*a371a5fdSJung-uk Kim * 912*a371a5fdSJung-uk Kim ******************************************************************************/ 913*a371a5fdSJung-uk Kim 914*a371a5fdSJung-uk Kim typedef struct acpi_table_xenv 915*a371a5fdSJung-uk Kim { 916*a371a5fdSJung-uk Kim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 917*a371a5fdSJung-uk Kim UINT64 GrantTableAddress; 918*a371a5fdSJung-uk Kim UINT64 GrantTableSize; 919*a371a5fdSJung-uk Kim UINT32 EventInterrupt; 920*a371a5fdSJung-uk Kim UINT8 EventFlags; 921*a371a5fdSJung-uk Kim 922*a371a5fdSJung-uk Kim } ACPI_TABLE_XENV; 923*a371a5fdSJung-uk Kim 924*a371a5fdSJung-uk Kim 9253f0275a0SJung-uk Kim /* Reset to default packing */ 9263f0275a0SJung-uk Kim 9273f0275a0SJung-uk Kim #pragma pack() 9283f0275a0SJung-uk Kim 9293f0275a0SJung-uk Kim #endif /* __ACTBL3_H__ */ 930