1*cb565728SJerry Jelinek /****************************************************************************** 2*cb565728SJerry Jelinek * 3*cb565728SJerry Jelinek * Name: actbl3.h - ACPI Table Definitions 4*cb565728SJerry Jelinek * 5*cb565728SJerry Jelinek *****************************************************************************/ 6*cb565728SJerry Jelinek 7*cb565728SJerry Jelinek /* 8*cb565728SJerry Jelinek * Copyright (C) 2000 - 2016, Intel Corp. 9*cb565728SJerry Jelinek * All rights reserved. 10*cb565728SJerry Jelinek * 11*cb565728SJerry Jelinek * Redistribution and use in source and binary forms, with or without 12*cb565728SJerry Jelinek * modification, are permitted provided that the following conditions 13*cb565728SJerry Jelinek * are met: 14*cb565728SJerry Jelinek * 1. Redistributions of source code must retain the above copyright 15*cb565728SJerry Jelinek * notice, this list of conditions, and the following disclaimer, 16*cb565728SJerry Jelinek * without modification. 17*cb565728SJerry Jelinek * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*cb565728SJerry Jelinek * substantially similar to the "NO WARRANTY" disclaimer below 19*cb565728SJerry Jelinek * ("Disclaimer") and any redistribution must be conditioned upon 20*cb565728SJerry Jelinek * including a substantially similar Disclaimer requirement for further 21*cb565728SJerry Jelinek * binary redistribution. 22*cb565728SJerry Jelinek * 3. Neither the names of the above-listed copyright holders nor the names 23*cb565728SJerry Jelinek * of any contributors may be used to endorse or promote products derived 24*cb565728SJerry Jelinek * from this software without specific prior written permission. 25*cb565728SJerry Jelinek * 26*cb565728SJerry Jelinek * Alternatively, this software may be distributed under the terms of the 27*cb565728SJerry Jelinek * GNU General Public License ("GPL") version 2 as published by the Free 28*cb565728SJerry Jelinek * Software Foundation. 29*cb565728SJerry Jelinek * 30*cb565728SJerry Jelinek * NO WARRANTY 31*cb565728SJerry Jelinek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*cb565728SJerry Jelinek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*cb565728SJerry Jelinek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*cb565728SJerry Jelinek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*cb565728SJerry Jelinek * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*cb565728SJerry Jelinek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*cb565728SJerry Jelinek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*cb565728SJerry Jelinek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*cb565728SJerry Jelinek * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*cb565728SJerry Jelinek * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*cb565728SJerry Jelinek * POSSIBILITY OF SUCH DAMAGES. 42*cb565728SJerry Jelinek */ 43*cb565728SJerry Jelinek 44*cb565728SJerry Jelinek #ifndef __ACTBL3_H__ 45*cb565728SJerry Jelinek #define __ACTBL3_H__ 46*cb565728SJerry Jelinek 47*cb565728SJerry Jelinek 48*cb565728SJerry Jelinek /******************************************************************************* 49*cb565728SJerry Jelinek * 50*cb565728SJerry Jelinek * Additional ACPI Tables (3) 51*cb565728SJerry Jelinek * 52*cb565728SJerry Jelinek * These tables are not consumed directly by the ACPICA subsystem, but are 53*cb565728SJerry Jelinek * included here to support device drivers and the AML disassembler. 54*cb565728SJerry Jelinek * 55*cb565728SJerry Jelinek * In general, the tables in this file are fully defined within the ACPI 56*cb565728SJerry Jelinek * specification. 57*cb565728SJerry Jelinek * 58*cb565728SJerry Jelinek ******************************************************************************/ 59*cb565728SJerry Jelinek 60*cb565728SJerry Jelinek 61*cb565728SJerry Jelinek /* 62*cb565728SJerry Jelinek * Values for description table header signatures for tables defined in this 63*cb565728SJerry Jelinek * file. Useful because they make it more difficult to inadvertently type in 64*cb565728SJerry Jelinek * the wrong signature. 65*cb565728SJerry Jelinek */ 66*cb565728SJerry Jelinek #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 67*cb565728SJerry Jelinek #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 68*cb565728SJerry Jelinek #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 69*cb565728SJerry Jelinek #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 70*cb565728SJerry Jelinek #define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 71*cb565728SJerry Jelinek #define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 72*cb565728SJerry Jelinek #define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 73*cb565728SJerry Jelinek #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 74*cb565728SJerry Jelinek #define ACPI_SIG_STAO "STAO" /* Status Override table */ 75*cb565728SJerry Jelinek #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 76*cb565728SJerry Jelinek #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 77*cb565728SJerry Jelinek 78*cb565728SJerry Jelinek #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 79*cb565728SJerry Jelinek #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 80*cb565728SJerry Jelinek 81*cb565728SJerry Jelinek /* Reserved table signatures */ 82*cb565728SJerry Jelinek 83*cb565728SJerry Jelinek #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 84*cb565728SJerry Jelinek #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 85*cb565728SJerry Jelinek 86*cb565728SJerry Jelinek /* 87*cb565728SJerry Jelinek * All tables must be byte-packed to match the ACPI specification, since 88*cb565728SJerry Jelinek * the tables are provided by the system BIOS. 89*cb565728SJerry Jelinek */ 90*cb565728SJerry Jelinek #pragma pack(1) 91*cb565728SJerry Jelinek 92*cb565728SJerry Jelinek /* 93*cb565728SJerry Jelinek * Note: C bitfields are not used for this reason: 94*cb565728SJerry Jelinek * 95*cb565728SJerry Jelinek * "Bitfields are great and easy to read, but unfortunately the C language 96*cb565728SJerry Jelinek * does not specify the layout of bitfields in memory, which means they are 97*cb565728SJerry Jelinek * essentially useless for dealing with packed data in on-disk formats or 98*cb565728SJerry Jelinek * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 99*cb565728SJerry Jelinek * this decision was a design error in C. Ritchie could have picked an order 100*cb565728SJerry Jelinek * and stuck with it." Norman Ramsey. 101*cb565728SJerry Jelinek * See http://stackoverflow.com/a/1053662/41661 102*cb565728SJerry Jelinek */ 103*cb565728SJerry Jelinek 104*cb565728SJerry Jelinek 105*cb565728SJerry Jelinek /******************************************************************************* 106*cb565728SJerry Jelinek * 107*cb565728SJerry Jelinek * BGRT - Boot Graphics Resource Table (ACPI 5.0) 108*cb565728SJerry Jelinek * Version 1 109*cb565728SJerry Jelinek * 110*cb565728SJerry Jelinek ******************************************************************************/ 111*cb565728SJerry Jelinek 112*cb565728SJerry Jelinek typedef struct acpi_table_bgrt 113*cb565728SJerry Jelinek { 114*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 115*cb565728SJerry Jelinek UINT16 Version; 116*cb565728SJerry Jelinek UINT8 Status; 117*cb565728SJerry Jelinek UINT8 ImageType; 118*cb565728SJerry Jelinek UINT64 ImageAddress; 119*cb565728SJerry Jelinek UINT32 ImageOffsetX; 120*cb565728SJerry Jelinek UINT32 ImageOffsetY; 121*cb565728SJerry Jelinek 122*cb565728SJerry Jelinek } ACPI_TABLE_BGRT; 123*cb565728SJerry Jelinek 124*cb565728SJerry Jelinek 125*cb565728SJerry Jelinek /******************************************************************************* 126*cb565728SJerry Jelinek * 127*cb565728SJerry Jelinek * DRTM - Dynamic Root of Trust for Measurement table 128*cb565728SJerry Jelinek * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 129*cb565728SJerry Jelinek * Table version 1 130*cb565728SJerry Jelinek * 131*cb565728SJerry Jelinek ******************************************************************************/ 132*cb565728SJerry Jelinek 133*cb565728SJerry Jelinek typedef struct acpi_table_drtm 134*cb565728SJerry Jelinek { 135*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 136*cb565728SJerry Jelinek UINT64 EntryBaseAddress; 137*cb565728SJerry Jelinek UINT64 EntryLength; 138*cb565728SJerry Jelinek UINT32 EntryAddress32; 139*cb565728SJerry Jelinek UINT64 EntryAddress64; 140*cb565728SJerry Jelinek UINT64 ExitAddress; 141*cb565728SJerry Jelinek UINT64 LogAreaAddress; 142*cb565728SJerry Jelinek UINT32 LogAreaLength; 143*cb565728SJerry Jelinek UINT64 ArchDependentAddress; 144*cb565728SJerry Jelinek UINT32 Flags; 145*cb565728SJerry Jelinek 146*cb565728SJerry Jelinek } ACPI_TABLE_DRTM; 147*cb565728SJerry Jelinek 148*cb565728SJerry Jelinek /* Flag Definitions for above */ 149*cb565728SJerry Jelinek 150*cb565728SJerry Jelinek #define ACPI_DRTM_ACCESS_ALLOWED (1) 151*cb565728SJerry Jelinek #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 152*cb565728SJerry Jelinek #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 153*cb565728SJerry Jelinek #define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 154*cb565728SJerry Jelinek 155*cb565728SJerry Jelinek 156*cb565728SJerry Jelinek /* 1) Validated Tables List (64-bit addresses) */ 157*cb565728SJerry Jelinek 158*cb565728SJerry Jelinek typedef struct acpi_drtm_vtable_list 159*cb565728SJerry Jelinek { 160*cb565728SJerry Jelinek UINT32 ValidatedTableCount; 161*cb565728SJerry Jelinek UINT64 ValidatedTables[1]; 162*cb565728SJerry Jelinek 163*cb565728SJerry Jelinek } ACPI_DRTM_VTABLE_LIST; 164*cb565728SJerry Jelinek 165*cb565728SJerry Jelinek /* 2) Resources List (of Resource Descriptors) */ 166*cb565728SJerry Jelinek 167*cb565728SJerry Jelinek /* Resource Descriptor */ 168*cb565728SJerry Jelinek 169*cb565728SJerry Jelinek typedef struct acpi_drtm_resource 170*cb565728SJerry Jelinek { 171*cb565728SJerry Jelinek UINT8 Size[7]; 172*cb565728SJerry Jelinek UINT8 Type; 173*cb565728SJerry Jelinek UINT64 Address; 174*cb565728SJerry Jelinek 175*cb565728SJerry Jelinek } ACPI_DRTM_RESOURCE; 176*cb565728SJerry Jelinek 177*cb565728SJerry Jelinek typedef struct acpi_drtm_resource_list 178*cb565728SJerry Jelinek { 179*cb565728SJerry Jelinek UINT32 ResourceCount; 180*cb565728SJerry Jelinek ACPI_DRTM_RESOURCE Resources[1]; 181*cb565728SJerry Jelinek 182*cb565728SJerry Jelinek } ACPI_DRTM_RESOURCE_LIST; 183*cb565728SJerry Jelinek 184*cb565728SJerry Jelinek /* 3) Platform-specific Identifiers List */ 185*cb565728SJerry Jelinek 186*cb565728SJerry Jelinek typedef struct acpi_drtm_dps_id 187*cb565728SJerry Jelinek { 188*cb565728SJerry Jelinek UINT32 DpsIdLength; 189*cb565728SJerry Jelinek UINT8 DpsId[16]; 190*cb565728SJerry Jelinek 191*cb565728SJerry Jelinek } ACPI_DRTM_DPS_ID; 192*cb565728SJerry Jelinek 193*cb565728SJerry Jelinek 194*cb565728SJerry Jelinek /******************************************************************************* 195*cb565728SJerry Jelinek * 196*cb565728SJerry Jelinek * FPDT - Firmware Performance Data Table (ACPI 5.0) 197*cb565728SJerry Jelinek * Version 1 198*cb565728SJerry Jelinek * 199*cb565728SJerry Jelinek ******************************************************************************/ 200*cb565728SJerry Jelinek 201*cb565728SJerry Jelinek typedef struct acpi_table_fpdt 202*cb565728SJerry Jelinek { 203*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 204*cb565728SJerry Jelinek 205*cb565728SJerry Jelinek } ACPI_TABLE_FPDT; 206*cb565728SJerry Jelinek 207*cb565728SJerry Jelinek 208*cb565728SJerry Jelinek /* FPDT subtable header (Performance Record Structure) */ 209*cb565728SJerry Jelinek 210*cb565728SJerry Jelinek typedef struct acpi_fpdt_header 211*cb565728SJerry Jelinek { 212*cb565728SJerry Jelinek UINT16 Type; 213*cb565728SJerry Jelinek UINT8 Length; 214*cb565728SJerry Jelinek UINT8 Revision; 215*cb565728SJerry Jelinek 216*cb565728SJerry Jelinek } ACPI_FPDT_HEADER; 217*cb565728SJerry Jelinek 218*cb565728SJerry Jelinek /* Values for Type field above */ 219*cb565728SJerry Jelinek 220*cb565728SJerry Jelinek enum AcpiFpdtType 221*cb565728SJerry Jelinek { 222*cb565728SJerry Jelinek ACPI_FPDT_TYPE_BOOT = 0, 223*cb565728SJerry Jelinek ACPI_FPDT_TYPE_S3PERF = 1 224*cb565728SJerry Jelinek }; 225*cb565728SJerry Jelinek 226*cb565728SJerry Jelinek 227*cb565728SJerry Jelinek /* 228*cb565728SJerry Jelinek * FPDT subtables 229*cb565728SJerry Jelinek */ 230*cb565728SJerry Jelinek 231*cb565728SJerry Jelinek /* 0: Firmware Basic Boot Performance Record */ 232*cb565728SJerry Jelinek 233*cb565728SJerry Jelinek typedef struct acpi_fpdt_boot_pointer 234*cb565728SJerry Jelinek { 235*cb565728SJerry Jelinek ACPI_FPDT_HEADER Header; 236*cb565728SJerry Jelinek UINT8 Reserved[4]; 237*cb565728SJerry Jelinek UINT64 Address; 238*cb565728SJerry Jelinek 239*cb565728SJerry Jelinek } ACPI_FPDT_BOOT_POINTER; 240*cb565728SJerry Jelinek 241*cb565728SJerry Jelinek 242*cb565728SJerry Jelinek /* 1: S3 Performance Table Pointer Record */ 243*cb565728SJerry Jelinek 244*cb565728SJerry Jelinek typedef struct acpi_fpdt_s3pt_pointer 245*cb565728SJerry Jelinek { 246*cb565728SJerry Jelinek ACPI_FPDT_HEADER Header; 247*cb565728SJerry Jelinek UINT8 Reserved[4]; 248*cb565728SJerry Jelinek UINT64 Address; 249*cb565728SJerry Jelinek 250*cb565728SJerry Jelinek } ACPI_FPDT_S3PT_POINTER; 251*cb565728SJerry Jelinek 252*cb565728SJerry Jelinek 253*cb565728SJerry Jelinek /* 254*cb565728SJerry Jelinek * S3PT - S3 Performance Table. This table is pointed to by the 255*cb565728SJerry Jelinek * S3 Pointer Record above. 256*cb565728SJerry Jelinek */ 257*cb565728SJerry Jelinek typedef struct acpi_table_s3pt 258*cb565728SJerry Jelinek { 259*cb565728SJerry Jelinek UINT8 Signature[4]; /* "S3PT" */ 260*cb565728SJerry Jelinek UINT32 Length; 261*cb565728SJerry Jelinek 262*cb565728SJerry Jelinek } ACPI_TABLE_S3PT; 263*cb565728SJerry Jelinek 264*cb565728SJerry Jelinek 265*cb565728SJerry Jelinek /* 266*cb565728SJerry Jelinek * S3PT Subtables (Not part of the actual FPDT) 267*cb565728SJerry Jelinek */ 268*cb565728SJerry Jelinek 269*cb565728SJerry Jelinek /* Values for Type field in S3PT header */ 270*cb565728SJerry Jelinek 271*cb565728SJerry Jelinek enum AcpiS3ptType 272*cb565728SJerry Jelinek { 273*cb565728SJerry Jelinek ACPI_S3PT_TYPE_RESUME = 0, 274*cb565728SJerry Jelinek ACPI_S3PT_TYPE_SUSPEND = 1, 275*cb565728SJerry Jelinek ACPI_FPDT_BOOT_PERFORMANCE = 2 276*cb565728SJerry Jelinek }; 277*cb565728SJerry Jelinek 278*cb565728SJerry Jelinek typedef struct acpi_s3pt_resume 279*cb565728SJerry Jelinek { 280*cb565728SJerry Jelinek ACPI_FPDT_HEADER Header; 281*cb565728SJerry Jelinek UINT32 ResumeCount; 282*cb565728SJerry Jelinek UINT64 FullResume; 283*cb565728SJerry Jelinek UINT64 AverageResume; 284*cb565728SJerry Jelinek 285*cb565728SJerry Jelinek } ACPI_S3PT_RESUME; 286*cb565728SJerry Jelinek 287*cb565728SJerry Jelinek typedef struct acpi_s3pt_suspend 288*cb565728SJerry Jelinek { 289*cb565728SJerry Jelinek ACPI_FPDT_HEADER Header; 290*cb565728SJerry Jelinek UINT64 SuspendStart; 291*cb565728SJerry Jelinek UINT64 SuspendEnd; 292*cb565728SJerry Jelinek 293*cb565728SJerry Jelinek } ACPI_S3PT_SUSPEND; 294*cb565728SJerry Jelinek 295*cb565728SJerry Jelinek 296*cb565728SJerry Jelinek /* 297*cb565728SJerry Jelinek * FPDT Boot Performance Record (Not part of the actual FPDT) 298*cb565728SJerry Jelinek */ 299*cb565728SJerry Jelinek typedef struct acpi_fpdt_boot 300*cb565728SJerry Jelinek { 301*cb565728SJerry Jelinek ACPI_FPDT_HEADER Header; 302*cb565728SJerry Jelinek UINT8 Reserved[4]; 303*cb565728SJerry Jelinek UINT64 ResetEnd; 304*cb565728SJerry Jelinek UINT64 LoadStart; 305*cb565728SJerry Jelinek UINT64 StartupStart; 306*cb565728SJerry Jelinek UINT64 ExitServicesEntry; 307*cb565728SJerry Jelinek UINT64 ExitServicesExit; 308*cb565728SJerry Jelinek 309*cb565728SJerry Jelinek } ACPI_FPDT_BOOT; 310*cb565728SJerry Jelinek 311*cb565728SJerry Jelinek 312*cb565728SJerry Jelinek /******************************************************************************* 313*cb565728SJerry Jelinek * 314*cb565728SJerry Jelinek * GTDT - Generic Timer Description Table (ACPI 5.1) 315*cb565728SJerry Jelinek * Version 2 316*cb565728SJerry Jelinek * 317*cb565728SJerry Jelinek ******************************************************************************/ 318*cb565728SJerry Jelinek 319*cb565728SJerry Jelinek typedef struct acpi_table_gtdt 320*cb565728SJerry Jelinek { 321*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 322*cb565728SJerry Jelinek UINT64 CounterBlockAddresss; 323*cb565728SJerry Jelinek UINT32 Reserved; 324*cb565728SJerry Jelinek UINT32 SecureEl1Interrupt; 325*cb565728SJerry Jelinek UINT32 SecureEl1Flags; 326*cb565728SJerry Jelinek UINT32 NonSecureEl1Interrupt; 327*cb565728SJerry Jelinek UINT32 NonSecureEl1Flags; 328*cb565728SJerry Jelinek UINT32 VirtualTimerInterrupt; 329*cb565728SJerry Jelinek UINT32 VirtualTimerFlags; 330*cb565728SJerry Jelinek UINT32 NonSecureEl2Interrupt; 331*cb565728SJerry Jelinek UINT32 NonSecureEl2Flags; 332*cb565728SJerry Jelinek UINT64 CounterReadBlockAddress; 333*cb565728SJerry Jelinek UINT32 PlatformTimerCount; 334*cb565728SJerry Jelinek UINT32 PlatformTimerOffset; 335*cb565728SJerry Jelinek 336*cb565728SJerry Jelinek } ACPI_TABLE_GTDT; 337*cb565728SJerry Jelinek 338*cb565728SJerry Jelinek /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 339*cb565728SJerry Jelinek 340*cb565728SJerry Jelinek #define ACPI_GTDT_INTERRUPT_MODE (1) 341*cb565728SJerry Jelinek #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 342*cb565728SJerry Jelinek #define ACPI_GTDT_ALWAYS_ON (1<<2) 343*cb565728SJerry Jelinek 344*cb565728SJerry Jelinek 345*cb565728SJerry Jelinek /* Common GTDT subtable header */ 346*cb565728SJerry Jelinek 347*cb565728SJerry Jelinek typedef struct acpi_gtdt_header 348*cb565728SJerry Jelinek { 349*cb565728SJerry Jelinek UINT8 Type; 350*cb565728SJerry Jelinek UINT16 Length; 351*cb565728SJerry Jelinek 352*cb565728SJerry Jelinek } ACPI_GTDT_HEADER; 353*cb565728SJerry Jelinek 354*cb565728SJerry Jelinek /* Values for GTDT subtable type above */ 355*cb565728SJerry Jelinek 356*cb565728SJerry Jelinek enum AcpiGtdtType 357*cb565728SJerry Jelinek { 358*cb565728SJerry Jelinek ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 359*cb565728SJerry Jelinek ACPI_GTDT_TYPE_WATCHDOG = 1, 360*cb565728SJerry Jelinek ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 361*cb565728SJerry Jelinek }; 362*cb565728SJerry Jelinek 363*cb565728SJerry Jelinek 364*cb565728SJerry Jelinek /* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 365*cb565728SJerry Jelinek 366*cb565728SJerry Jelinek /* 0: Generic Timer Block */ 367*cb565728SJerry Jelinek 368*cb565728SJerry Jelinek typedef struct acpi_gtdt_timer_block 369*cb565728SJerry Jelinek { 370*cb565728SJerry Jelinek ACPI_GTDT_HEADER Header; 371*cb565728SJerry Jelinek UINT8 Reserved; 372*cb565728SJerry Jelinek UINT64 BlockAddress; 373*cb565728SJerry Jelinek UINT32 TimerCount; 374*cb565728SJerry Jelinek UINT32 TimerOffset; 375*cb565728SJerry Jelinek 376*cb565728SJerry Jelinek } ACPI_GTDT_TIMER_BLOCK; 377*cb565728SJerry Jelinek 378*cb565728SJerry Jelinek /* Timer Sub-Structure, one per timer */ 379*cb565728SJerry Jelinek 380*cb565728SJerry Jelinek typedef struct acpi_gtdt_timer_entry 381*cb565728SJerry Jelinek { 382*cb565728SJerry Jelinek UINT8 FrameNumber; 383*cb565728SJerry Jelinek UINT8 Reserved[3]; 384*cb565728SJerry Jelinek UINT64 BaseAddress; 385*cb565728SJerry Jelinek UINT64 El0BaseAddress; 386*cb565728SJerry Jelinek UINT32 TimerInterrupt; 387*cb565728SJerry Jelinek UINT32 TimerFlags; 388*cb565728SJerry Jelinek UINT32 VirtualTimerInterrupt; 389*cb565728SJerry Jelinek UINT32 VirtualTimerFlags; 390*cb565728SJerry Jelinek UINT32 CommonFlags; 391*cb565728SJerry Jelinek 392*cb565728SJerry Jelinek } ACPI_GTDT_TIMER_ENTRY; 393*cb565728SJerry Jelinek 394*cb565728SJerry Jelinek /* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 395*cb565728SJerry Jelinek 396*cb565728SJerry Jelinek #define ACPI_GTDT_GT_IRQ_MODE (1) 397*cb565728SJerry Jelinek #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 398*cb565728SJerry Jelinek 399*cb565728SJerry Jelinek /* Flag Definitions: CommonFlags above */ 400*cb565728SJerry Jelinek 401*cb565728SJerry Jelinek #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 402*cb565728SJerry Jelinek #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 403*cb565728SJerry Jelinek 404*cb565728SJerry Jelinek 405*cb565728SJerry Jelinek /* 1: SBSA Generic Watchdog Structure */ 406*cb565728SJerry Jelinek 407*cb565728SJerry Jelinek typedef struct acpi_gtdt_watchdog 408*cb565728SJerry Jelinek { 409*cb565728SJerry Jelinek ACPI_GTDT_HEADER Header; 410*cb565728SJerry Jelinek UINT8 Reserved; 411*cb565728SJerry Jelinek UINT64 RefreshFrameAddress; 412*cb565728SJerry Jelinek UINT64 ControlFrameAddress; 413*cb565728SJerry Jelinek UINT32 TimerInterrupt; 414*cb565728SJerry Jelinek UINT32 TimerFlags; 415*cb565728SJerry Jelinek 416*cb565728SJerry Jelinek } ACPI_GTDT_WATCHDOG; 417*cb565728SJerry Jelinek 418*cb565728SJerry Jelinek /* Flag Definitions: TimerFlags above */ 419*cb565728SJerry Jelinek 420*cb565728SJerry Jelinek #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 421*cb565728SJerry Jelinek #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 422*cb565728SJerry Jelinek #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 423*cb565728SJerry Jelinek 424*cb565728SJerry Jelinek 425*cb565728SJerry Jelinek /******************************************************************************* 426*cb565728SJerry Jelinek * 427*cb565728SJerry Jelinek * MPST - Memory Power State Table (ACPI 5.0) 428*cb565728SJerry Jelinek * Version 1 429*cb565728SJerry Jelinek * 430*cb565728SJerry Jelinek ******************************************************************************/ 431*cb565728SJerry Jelinek 432*cb565728SJerry Jelinek #define ACPI_MPST_CHANNEL_INFO \ 433*cb565728SJerry Jelinek UINT8 ChannelId; \ 434*cb565728SJerry Jelinek UINT8 Reserved1[3]; \ 435*cb565728SJerry Jelinek UINT16 PowerNodeCount; \ 436*cb565728SJerry Jelinek UINT16 Reserved2; 437*cb565728SJerry Jelinek 438*cb565728SJerry Jelinek /* Main table */ 439*cb565728SJerry Jelinek 440*cb565728SJerry Jelinek typedef struct acpi_table_mpst 441*cb565728SJerry Jelinek { 442*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 443*cb565728SJerry Jelinek ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 444*cb565728SJerry Jelinek 445*cb565728SJerry Jelinek } ACPI_TABLE_MPST; 446*cb565728SJerry Jelinek 447*cb565728SJerry Jelinek 448*cb565728SJerry Jelinek /* Memory Platform Communication Channel Info */ 449*cb565728SJerry Jelinek 450*cb565728SJerry Jelinek typedef struct acpi_mpst_channel 451*cb565728SJerry Jelinek { 452*cb565728SJerry Jelinek ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 453*cb565728SJerry Jelinek 454*cb565728SJerry Jelinek } ACPI_MPST_CHANNEL; 455*cb565728SJerry Jelinek 456*cb565728SJerry Jelinek 457*cb565728SJerry Jelinek /* Memory Power Node Structure */ 458*cb565728SJerry Jelinek 459*cb565728SJerry Jelinek typedef struct acpi_mpst_power_node 460*cb565728SJerry Jelinek { 461*cb565728SJerry Jelinek UINT8 Flags; 462*cb565728SJerry Jelinek UINT8 Reserved1; 463*cb565728SJerry Jelinek UINT16 NodeId; 464*cb565728SJerry Jelinek UINT32 Length; 465*cb565728SJerry Jelinek UINT64 RangeAddress; 466*cb565728SJerry Jelinek UINT64 RangeLength; 467*cb565728SJerry Jelinek UINT32 NumPowerStates; 468*cb565728SJerry Jelinek UINT32 NumPhysicalComponents; 469*cb565728SJerry Jelinek 470*cb565728SJerry Jelinek } ACPI_MPST_POWER_NODE; 471*cb565728SJerry Jelinek 472*cb565728SJerry Jelinek /* Values for Flags field above */ 473*cb565728SJerry Jelinek 474*cb565728SJerry Jelinek #define ACPI_MPST_ENABLED 1 475*cb565728SJerry Jelinek #define ACPI_MPST_POWER_MANAGED 2 476*cb565728SJerry Jelinek #define ACPI_MPST_HOT_PLUG_CAPABLE 4 477*cb565728SJerry Jelinek 478*cb565728SJerry Jelinek 479*cb565728SJerry Jelinek /* Memory Power State Structure (follows POWER_NODE above) */ 480*cb565728SJerry Jelinek 481*cb565728SJerry Jelinek typedef struct acpi_mpst_power_state 482*cb565728SJerry Jelinek { 483*cb565728SJerry Jelinek UINT8 PowerState; 484*cb565728SJerry Jelinek UINT8 InfoIndex; 485*cb565728SJerry Jelinek 486*cb565728SJerry Jelinek } ACPI_MPST_POWER_STATE; 487*cb565728SJerry Jelinek 488*cb565728SJerry Jelinek 489*cb565728SJerry Jelinek /* Physical Component ID Structure (follows POWER_STATE above) */ 490*cb565728SJerry Jelinek 491*cb565728SJerry Jelinek typedef struct acpi_mpst_component 492*cb565728SJerry Jelinek { 493*cb565728SJerry Jelinek UINT16 ComponentId; 494*cb565728SJerry Jelinek 495*cb565728SJerry Jelinek } ACPI_MPST_COMPONENT; 496*cb565728SJerry Jelinek 497*cb565728SJerry Jelinek 498*cb565728SJerry Jelinek /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 499*cb565728SJerry Jelinek 500*cb565728SJerry Jelinek typedef struct acpi_mpst_data_hdr 501*cb565728SJerry Jelinek { 502*cb565728SJerry Jelinek UINT16 CharacteristicsCount; 503*cb565728SJerry Jelinek UINT16 Reserved; 504*cb565728SJerry Jelinek 505*cb565728SJerry Jelinek } ACPI_MPST_DATA_HDR; 506*cb565728SJerry Jelinek 507*cb565728SJerry Jelinek typedef struct acpi_mpst_power_data 508*cb565728SJerry Jelinek { 509*cb565728SJerry Jelinek UINT8 StructureId; 510*cb565728SJerry Jelinek UINT8 Flags; 511*cb565728SJerry Jelinek UINT16 Reserved1; 512*cb565728SJerry Jelinek UINT32 AveragePower; 513*cb565728SJerry Jelinek UINT32 PowerSaving; 514*cb565728SJerry Jelinek UINT64 ExitLatency; 515*cb565728SJerry Jelinek UINT64 Reserved2; 516*cb565728SJerry Jelinek 517*cb565728SJerry Jelinek } ACPI_MPST_POWER_DATA; 518*cb565728SJerry Jelinek 519*cb565728SJerry Jelinek /* Values for Flags field above */ 520*cb565728SJerry Jelinek 521*cb565728SJerry Jelinek #define ACPI_MPST_PRESERVE 1 522*cb565728SJerry Jelinek #define ACPI_MPST_AUTOENTRY 2 523*cb565728SJerry Jelinek #define ACPI_MPST_AUTOEXIT 4 524*cb565728SJerry Jelinek 525*cb565728SJerry Jelinek 526*cb565728SJerry Jelinek /* Shared Memory Region (not part of an ACPI table) */ 527*cb565728SJerry Jelinek 528*cb565728SJerry Jelinek typedef struct acpi_mpst_shared 529*cb565728SJerry Jelinek { 530*cb565728SJerry Jelinek UINT32 Signature; 531*cb565728SJerry Jelinek UINT16 PccCommand; 532*cb565728SJerry Jelinek UINT16 PccStatus; 533*cb565728SJerry Jelinek UINT32 CommandRegister; 534*cb565728SJerry Jelinek UINT32 StatusRegister; 535*cb565728SJerry Jelinek UINT32 PowerStateId; 536*cb565728SJerry Jelinek UINT32 PowerNodeId; 537*cb565728SJerry Jelinek UINT64 EnergyConsumed; 538*cb565728SJerry Jelinek UINT64 AveragePower; 539*cb565728SJerry Jelinek 540*cb565728SJerry Jelinek } ACPI_MPST_SHARED; 541*cb565728SJerry Jelinek 542*cb565728SJerry Jelinek 543*cb565728SJerry Jelinek /******************************************************************************* 544*cb565728SJerry Jelinek * 545*cb565728SJerry Jelinek * PCCT - Platform Communications Channel Table (ACPI 5.0) 546*cb565728SJerry Jelinek * Version 1 547*cb565728SJerry Jelinek * 548*cb565728SJerry Jelinek ******************************************************************************/ 549*cb565728SJerry Jelinek 550*cb565728SJerry Jelinek typedef struct acpi_table_pcct 551*cb565728SJerry Jelinek { 552*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 553*cb565728SJerry Jelinek UINT32 Flags; 554*cb565728SJerry Jelinek UINT64 Reserved; 555*cb565728SJerry Jelinek 556*cb565728SJerry Jelinek } ACPI_TABLE_PCCT; 557*cb565728SJerry Jelinek 558*cb565728SJerry Jelinek /* Values for Flags field above */ 559*cb565728SJerry Jelinek 560*cb565728SJerry Jelinek #define ACPI_PCCT_DOORBELL 1 561*cb565728SJerry Jelinek 562*cb565728SJerry Jelinek /* Values for subtable type in ACPI_SUBTABLE_HEADER */ 563*cb565728SJerry Jelinek 564*cb565728SJerry Jelinek enum AcpiPcctType 565*cb565728SJerry Jelinek { 566*cb565728SJerry Jelinek ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 567*cb565728SJerry Jelinek ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 568*cb565728SJerry Jelinek ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2, /* ACPI 6.1 */ 569*cb565728SJerry Jelinek ACPI_PCCT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 570*cb565728SJerry Jelinek }; 571*cb565728SJerry Jelinek 572*cb565728SJerry Jelinek /* 573*cb565728SJerry Jelinek * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 574*cb565728SJerry Jelinek */ 575*cb565728SJerry Jelinek 576*cb565728SJerry Jelinek /* 0: Generic Communications Subspace */ 577*cb565728SJerry Jelinek 578*cb565728SJerry Jelinek typedef struct acpi_pcct_subspace 579*cb565728SJerry Jelinek { 580*cb565728SJerry Jelinek ACPI_SUBTABLE_HEADER Header; 581*cb565728SJerry Jelinek UINT8 Reserved[6]; 582*cb565728SJerry Jelinek UINT64 BaseAddress; 583*cb565728SJerry Jelinek UINT64 Length; 584*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS DoorbellRegister; 585*cb565728SJerry Jelinek UINT64 PreserveMask; 586*cb565728SJerry Jelinek UINT64 WriteMask; 587*cb565728SJerry Jelinek UINT32 Latency; 588*cb565728SJerry Jelinek UINT32 MaxAccessRate; 589*cb565728SJerry Jelinek UINT16 MinTurnaroundTime; 590*cb565728SJerry Jelinek 591*cb565728SJerry Jelinek } ACPI_PCCT_SUBSPACE; 592*cb565728SJerry Jelinek 593*cb565728SJerry Jelinek 594*cb565728SJerry Jelinek /* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 595*cb565728SJerry Jelinek 596*cb565728SJerry Jelinek typedef struct acpi_pcct_hw_reduced 597*cb565728SJerry Jelinek { 598*cb565728SJerry Jelinek ACPI_SUBTABLE_HEADER Header; 599*cb565728SJerry Jelinek UINT32 DoorbellInterrupt; 600*cb565728SJerry Jelinek UINT8 Flags; 601*cb565728SJerry Jelinek UINT8 Reserved; 602*cb565728SJerry Jelinek UINT64 BaseAddress; 603*cb565728SJerry Jelinek UINT64 Length; 604*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS DoorbellRegister; 605*cb565728SJerry Jelinek UINT64 PreserveMask; 606*cb565728SJerry Jelinek UINT64 WriteMask; 607*cb565728SJerry Jelinek UINT32 Latency; 608*cb565728SJerry Jelinek UINT32 MaxAccessRate; 609*cb565728SJerry Jelinek UINT16 MinTurnaroundTime; 610*cb565728SJerry Jelinek 611*cb565728SJerry Jelinek } ACPI_PCCT_HW_REDUCED; 612*cb565728SJerry Jelinek 613*cb565728SJerry Jelinek 614*cb565728SJerry Jelinek /* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */ 615*cb565728SJerry Jelinek 616*cb565728SJerry Jelinek typedef struct acpi_pcct_hw_reduced_type2 617*cb565728SJerry Jelinek { 618*cb565728SJerry Jelinek ACPI_SUBTABLE_HEADER Header; 619*cb565728SJerry Jelinek UINT32 DoorbellInterrupt; 620*cb565728SJerry Jelinek UINT8 Flags; 621*cb565728SJerry Jelinek UINT8 Reserved; 622*cb565728SJerry Jelinek UINT64 BaseAddress; 623*cb565728SJerry Jelinek UINT64 Length; 624*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS DoorbellRegister; 625*cb565728SJerry Jelinek UINT64 PreserveMask; 626*cb565728SJerry Jelinek UINT64 WriteMask; 627*cb565728SJerry Jelinek UINT32 Latency; 628*cb565728SJerry Jelinek UINT32 MaxAccessRate; 629*cb565728SJerry Jelinek UINT16 MinTurnaroundTime; 630*cb565728SJerry Jelinek ACPI_GENERIC_ADDRESS DoorbellAckRegister; 631*cb565728SJerry Jelinek UINT64 AckPreserveMask; 632*cb565728SJerry Jelinek UINT64 AckWriteMask; 633*cb565728SJerry Jelinek 634*cb565728SJerry Jelinek } ACPI_PCCT_HW_REDUCED_TYPE2; 635*cb565728SJerry Jelinek 636*cb565728SJerry Jelinek 637*cb565728SJerry Jelinek /* Values for doorbell flags above */ 638*cb565728SJerry Jelinek 639*cb565728SJerry Jelinek #define ACPI_PCCT_INTERRUPT_POLARITY (1) 640*cb565728SJerry Jelinek #define ACPI_PCCT_INTERRUPT_MODE (1<<1) 641*cb565728SJerry Jelinek 642*cb565728SJerry Jelinek 643*cb565728SJerry Jelinek /* 644*cb565728SJerry Jelinek * PCC memory structures (not part of the ACPI table) 645*cb565728SJerry Jelinek */ 646*cb565728SJerry Jelinek 647*cb565728SJerry Jelinek /* Shared Memory Region */ 648*cb565728SJerry Jelinek 649*cb565728SJerry Jelinek typedef struct acpi_pcct_shared_memory 650*cb565728SJerry Jelinek { 651*cb565728SJerry Jelinek UINT32 Signature; 652*cb565728SJerry Jelinek UINT16 Command; 653*cb565728SJerry Jelinek UINT16 Status; 654*cb565728SJerry Jelinek 655*cb565728SJerry Jelinek } ACPI_PCCT_SHARED_MEMORY; 656*cb565728SJerry Jelinek 657*cb565728SJerry Jelinek 658*cb565728SJerry Jelinek /******************************************************************************* 659*cb565728SJerry Jelinek * 660*cb565728SJerry Jelinek * PMTT - Platform Memory Topology Table (ACPI 5.0) 661*cb565728SJerry Jelinek * Version 1 662*cb565728SJerry Jelinek * 663*cb565728SJerry Jelinek ******************************************************************************/ 664*cb565728SJerry Jelinek 665*cb565728SJerry Jelinek typedef struct acpi_table_pmtt 666*cb565728SJerry Jelinek { 667*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 668*cb565728SJerry Jelinek UINT32 Reserved; 669*cb565728SJerry Jelinek 670*cb565728SJerry Jelinek } ACPI_TABLE_PMTT; 671*cb565728SJerry Jelinek 672*cb565728SJerry Jelinek 673*cb565728SJerry Jelinek /* Common header for PMTT subtables that follow main table */ 674*cb565728SJerry Jelinek 675*cb565728SJerry Jelinek typedef struct acpi_pmtt_header 676*cb565728SJerry Jelinek { 677*cb565728SJerry Jelinek UINT8 Type; 678*cb565728SJerry Jelinek UINT8 Reserved1; 679*cb565728SJerry Jelinek UINT16 Length; 680*cb565728SJerry Jelinek UINT16 Flags; 681*cb565728SJerry Jelinek UINT16 Reserved2; 682*cb565728SJerry Jelinek 683*cb565728SJerry Jelinek } ACPI_PMTT_HEADER; 684*cb565728SJerry Jelinek 685*cb565728SJerry Jelinek /* Values for Type field above */ 686*cb565728SJerry Jelinek 687*cb565728SJerry Jelinek #define ACPI_PMTT_TYPE_SOCKET 0 688*cb565728SJerry Jelinek #define ACPI_PMTT_TYPE_CONTROLLER 1 689*cb565728SJerry Jelinek #define ACPI_PMTT_TYPE_DIMM 2 690*cb565728SJerry Jelinek #define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 691*cb565728SJerry Jelinek 692*cb565728SJerry Jelinek /* Values for Flags field above */ 693*cb565728SJerry Jelinek 694*cb565728SJerry Jelinek #define ACPI_PMTT_TOP_LEVEL 0x0001 695*cb565728SJerry Jelinek #define ACPI_PMTT_PHYSICAL 0x0002 696*cb565728SJerry Jelinek #define ACPI_PMTT_MEMORY_TYPE 0x000C 697*cb565728SJerry Jelinek 698*cb565728SJerry Jelinek 699*cb565728SJerry Jelinek /* 700*cb565728SJerry Jelinek * PMTT subtables, correspond to Type in acpi_pmtt_header 701*cb565728SJerry Jelinek */ 702*cb565728SJerry Jelinek 703*cb565728SJerry Jelinek 704*cb565728SJerry Jelinek /* 0: Socket Structure */ 705*cb565728SJerry Jelinek 706*cb565728SJerry Jelinek typedef struct acpi_pmtt_socket 707*cb565728SJerry Jelinek { 708*cb565728SJerry Jelinek ACPI_PMTT_HEADER Header; 709*cb565728SJerry Jelinek UINT16 SocketId; 710*cb565728SJerry Jelinek UINT16 Reserved; 711*cb565728SJerry Jelinek 712*cb565728SJerry Jelinek } ACPI_PMTT_SOCKET; 713*cb565728SJerry Jelinek 714*cb565728SJerry Jelinek 715*cb565728SJerry Jelinek /* 1: Memory Controller subtable */ 716*cb565728SJerry Jelinek 717*cb565728SJerry Jelinek typedef struct acpi_pmtt_controller 718*cb565728SJerry Jelinek { 719*cb565728SJerry Jelinek ACPI_PMTT_HEADER Header; 720*cb565728SJerry Jelinek UINT32 ReadLatency; 721*cb565728SJerry Jelinek UINT32 WriteLatency; 722*cb565728SJerry Jelinek UINT32 ReadBandwidth; 723*cb565728SJerry Jelinek UINT32 WriteBandwidth; 724*cb565728SJerry Jelinek UINT16 AccessWidth; 725*cb565728SJerry Jelinek UINT16 Alignment; 726*cb565728SJerry Jelinek UINT16 Reserved; 727*cb565728SJerry Jelinek UINT16 DomainCount; 728*cb565728SJerry Jelinek 729*cb565728SJerry Jelinek } ACPI_PMTT_CONTROLLER; 730*cb565728SJerry Jelinek 731*cb565728SJerry Jelinek /* 1a: Proximity Domain substructure */ 732*cb565728SJerry Jelinek 733*cb565728SJerry Jelinek typedef struct acpi_pmtt_domain 734*cb565728SJerry Jelinek { 735*cb565728SJerry Jelinek UINT32 ProximityDomain; 736*cb565728SJerry Jelinek 737*cb565728SJerry Jelinek } ACPI_PMTT_DOMAIN; 738*cb565728SJerry Jelinek 739*cb565728SJerry Jelinek 740*cb565728SJerry Jelinek /* 2: Physical Component Identifier (DIMM) */ 741*cb565728SJerry Jelinek 742*cb565728SJerry Jelinek typedef struct acpi_pmtt_physical_component 743*cb565728SJerry Jelinek { 744*cb565728SJerry Jelinek ACPI_PMTT_HEADER Header; 745*cb565728SJerry Jelinek UINT16 ComponentId; 746*cb565728SJerry Jelinek UINT16 Reserved; 747*cb565728SJerry Jelinek UINT32 MemorySize; 748*cb565728SJerry Jelinek UINT32 BiosHandle; 749*cb565728SJerry Jelinek 750*cb565728SJerry Jelinek } ACPI_PMTT_PHYSICAL_COMPONENT; 751*cb565728SJerry Jelinek 752*cb565728SJerry Jelinek 753*cb565728SJerry Jelinek /******************************************************************************* 754*cb565728SJerry Jelinek * 755*cb565728SJerry Jelinek * RASF - RAS Feature Table (ACPI 5.0) 756*cb565728SJerry Jelinek * Version 1 757*cb565728SJerry Jelinek * 758*cb565728SJerry Jelinek ******************************************************************************/ 759*cb565728SJerry Jelinek 760*cb565728SJerry Jelinek typedef struct acpi_table_rasf 761*cb565728SJerry Jelinek { 762*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 763*cb565728SJerry Jelinek UINT8 ChannelId[12]; 764*cb565728SJerry Jelinek 765*cb565728SJerry Jelinek } ACPI_TABLE_RASF; 766*cb565728SJerry Jelinek 767*cb565728SJerry Jelinek /* RASF Platform Communication Channel Shared Memory Region */ 768*cb565728SJerry Jelinek 769*cb565728SJerry Jelinek typedef struct acpi_rasf_shared_memory 770*cb565728SJerry Jelinek { 771*cb565728SJerry Jelinek UINT32 Signature; 772*cb565728SJerry Jelinek UINT16 Command; 773*cb565728SJerry Jelinek UINT16 Status; 774*cb565728SJerry Jelinek UINT16 Version; 775*cb565728SJerry Jelinek UINT8 Capabilities[16]; 776*cb565728SJerry Jelinek UINT8 SetCapabilities[16]; 777*cb565728SJerry Jelinek UINT16 NumParameterBlocks; 778*cb565728SJerry Jelinek UINT32 SetCapabilitiesStatus; 779*cb565728SJerry Jelinek 780*cb565728SJerry Jelinek } ACPI_RASF_SHARED_MEMORY; 781*cb565728SJerry Jelinek 782*cb565728SJerry Jelinek /* RASF Parameter Block Structure Header */ 783*cb565728SJerry Jelinek 784*cb565728SJerry Jelinek typedef struct acpi_rasf_parameter_block 785*cb565728SJerry Jelinek { 786*cb565728SJerry Jelinek UINT16 Type; 787*cb565728SJerry Jelinek UINT16 Version; 788*cb565728SJerry Jelinek UINT16 Length; 789*cb565728SJerry Jelinek 790*cb565728SJerry Jelinek } ACPI_RASF_PARAMETER_BLOCK; 791*cb565728SJerry Jelinek 792*cb565728SJerry Jelinek /* RASF Parameter Block Structure for PATROL_SCRUB */ 793*cb565728SJerry Jelinek 794*cb565728SJerry Jelinek typedef struct acpi_rasf_patrol_scrub_parameter 795*cb565728SJerry Jelinek { 796*cb565728SJerry Jelinek ACPI_RASF_PARAMETER_BLOCK Header; 797*cb565728SJerry Jelinek UINT16 PatrolScrubCommand; 798*cb565728SJerry Jelinek UINT64 RequestedAddressRange[2]; 799*cb565728SJerry Jelinek UINT64 ActualAddressRange[2]; 800*cb565728SJerry Jelinek UINT16 Flags; 801*cb565728SJerry Jelinek UINT8 RequestedSpeed; 802*cb565728SJerry Jelinek 803*cb565728SJerry Jelinek } ACPI_RASF_PATROL_SCRUB_PARAMETER; 804*cb565728SJerry Jelinek 805*cb565728SJerry Jelinek /* Masks for Flags and Speed fields above */ 806*cb565728SJerry Jelinek 807*cb565728SJerry Jelinek #define ACPI_RASF_SCRUBBER_RUNNING 1 808*cb565728SJerry Jelinek #define ACPI_RASF_SPEED (7<<1) 809*cb565728SJerry Jelinek #define ACPI_RASF_SPEED_SLOW (0<<1) 810*cb565728SJerry Jelinek #define ACPI_RASF_SPEED_MEDIUM (4<<1) 811*cb565728SJerry Jelinek #define ACPI_RASF_SPEED_FAST (7<<1) 812*cb565728SJerry Jelinek 813*cb565728SJerry Jelinek /* Channel Commands */ 814*cb565728SJerry Jelinek 815*cb565728SJerry Jelinek enum AcpiRasfCommands 816*cb565728SJerry Jelinek { 817*cb565728SJerry Jelinek ACPI_RASF_EXECUTE_RASF_COMMAND = 1 818*cb565728SJerry Jelinek }; 819*cb565728SJerry Jelinek 820*cb565728SJerry Jelinek /* Platform RAS Capabilities */ 821*cb565728SJerry Jelinek 822*cb565728SJerry Jelinek enum AcpiRasfCapabiliities 823*cb565728SJerry Jelinek { 824*cb565728SJerry Jelinek ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 825*cb565728SJerry Jelinek ACPI_SW_PATROL_SCRUB_EXPOSED = 1 826*cb565728SJerry Jelinek }; 827*cb565728SJerry Jelinek 828*cb565728SJerry Jelinek /* Patrol Scrub Commands */ 829*cb565728SJerry Jelinek 830*cb565728SJerry Jelinek enum AcpiRasfPatrolScrubCommands 831*cb565728SJerry Jelinek { 832*cb565728SJerry Jelinek ACPI_RASF_GET_PATROL_PARAMETERS = 1, 833*cb565728SJerry Jelinek ACPI_RASF_START_PATROL_SCRUBBER = 2, 834*cb565728SJerry Jelinek ACPI_RASF_STOP_PATROL_SCRUBBER = 3 835*cb565728SJerry Jelinek }; 836*cb565728SJerry Jelinek 837*cb565728SJerry Jelinek /* Channel Command flags */ 838*cb565728SJerry Jelinek 839*cb565728SJerry Jelinek #define ACPI_RASF_GENERATE_SCI (1<<15) 840*cb565728SJerry Jelinek 841*cb565728SJerry Jelinek /* Status values */ 842*cb565728SJerry Jelinek 843*cb565728SJerry Jelinek enum AcpiRasfStatus 844*cb565728SJerry Jelinek { 845*cb565728SJerry Jelinek ACPI_RASF_SUCCESS = 0, 846*cb565728SJerry Jelinek ACPI_RASF_NOT_VALID = 1, 847*cb565728SJerry Jelinek ACPI_RASF_NOT_SUPPORTED = 2, 848*cb565728SJerry Jelinek ACPI_RASF_BUSY = 3, 849*cb565728SJerry Jelinek ACPI_RASF_FAILED = 4, 850*cb565728SJerry Jelinek ACPI_RASF_ABORTED = 5, 851*cb565728SJerry Jelinek ACPI_RASF_INVALID_DATA = 6 852*cb565728SJerry Jelinek }; 853*cb565728SJerry Jelinek 854*cb565728SJerry Jelinek /* Status flags */ 855*cb565728SJerry Jelinek 856*cb565728SJerry Jelinek #define ACPI_RASF_COMMAND_COMPLETE (1) 857*cb565728SJerry Jelinek #define ACPI_RASF_SCI_DOORBELL (1<<1) 858*cb565728SJerry Jelinek #define ACPI_RASF_ERROR (1<<2) 859*cb565728SJerry Jelinek #define ACPI_RASF_STATUS (0x1F<<3) 860*cb565728SJerry Jelinek 861*cb565728SJerry Jelinek 862*cb565728SJerry Jelinek /******************************************************************************* 863*cb565728SJerry Jelinek * 864*cb565728SJerry Jelinek * STAO - Status Override Table (_STA override) - ACPI 6.0 865*cb565728SJerry Jelinek * Version 1 866*cb565728SJerry Jelinek * 867*cb565728SJerry Jelinek * Conforms to "ACPI Specification for Status Override Table" 868*cb565728SJerry Jelinek * 6 January 2015 869*cb565728SJerry Jelinek * 870*cb565728SJerry Jelinek ******************************************************************************/ 871*cb565728SJerry Jelinek 872*cb565728SJerry Jelinek typedef struct acpi_table_stao 873*cb565728SJerry Jelinek { 874*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 875*cb565728SJerry Jelinek UINT8 IgnoreUart; 876*cb565728SJerry Jelinek 877*cb565728SJerry Jelinek } ACPI_TABLE_STAO; 878*cb565728SJerry Jelinek 879*cb565728SJerry Jelinek 880*cb565728SJerry Jelinek /******************************************************************************* 881*cb565728SJerry Jelinek * 882*cb565728SJerry Jelinek * WPBT - Windows Platform Environment Table (ACPI 6.0) 883*cb565728SJerry Jelinek * Version 1 884*cb565728SJerry Jelinek * 885*cb565728SJerry Jelinek * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 886*cb565728SJerry Jelinek * 887*cb565728SJerry Jelinek ******************************************************************************/ 888*cb565728SJerry Jelinek 889*cb565728SJerry Jelinek typedef struct acpi_table_wpbt 890*cb565728SJerry Jelinek { 891*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 892*cb565728SJerry Jelinek UINT32 HandoffSize; 893*cb565728SJerry Jelinek UINT64 HandoffAddress; 894*cb565728SJerry Jelinek UINT8 Layout; 895*cb565728SJerry Jelinek UINT8 Type; 896*cb565728SJerry Jelinek UINT16 ArgumentsLength; 897*cb565728SJerry Jelinek 898*cb565728SJerry Jelinek } ACPI_TABLE_WPBT; 899*cb565728SJerry Jelinek 900*cb565728SJerry Jelinek 901*cb565728SJerry Jelinek /******************************************************************************* 902*cb565728SJerry Jelinek * 903*cb565728SJerry Jelinek * XENV - Xen Environment Table (ACPI 6.0) 904*cb565728SJerry Jelinek * Version 1 905*cb565728SJerry Jelinek * 906*cb565728SJerry Jelinek * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 907*cb565728SJerry Jelinek * 908*cb565728SJerry Jelinek ******************************************************************************/ 909*cb565728SJerry Jelinek 910*cb565728SJerry Jelinek typedef struct acpi_table_xenv 911*cb565728SJerry Jelinek { 912*cb565728SJerry Jelinek ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 913*cb565728SJerry Jelinek UINT64 GrantTableAddress; 914*cb565728SJerry Jelinek UINT64 GrantTableSize; 915*cb565728SJerry Jelinek UINT32 EventInterrupt; 916*cb565728SJerry Jelinek UINT8 EventFlags; 917*cb565728SJerry Jelinek 918*cb565728SJerry Jelinek } ACPI_TABLE_XENV; 919*cb565728SJerry Jelinek 920*cb565728SJerry Jelinek 921*cb565728SJerry Jelinek /* Reset to default packing */ 922*cb565728SJerry Jelinek 923*cb565728SJerry Jelinek #pragma pack() 924*cb565728SJerry Jelinek 925*cb565728SJerry Jelinek #endif /* __ACTBL3_H__ */ 926