actbl3.h revision 283092
1227896Sjkim/****************************************************************************** 2227896Sjkim * 3227896Sjkim * Name: actbl3.h - ACPI Table Definitions 4227896Sjkim * 5227896Sjkim *****************************************************************************/ 6227896Sjkim 7227896Sjkim/* 8278970Sjkim * Copyright (C) 2000 - 2015, Intel Corp. 9227896Sjkim * All rights reserved. 10227896Sjkim * 11227896Sjkim * Redistribution and use in source and binary forms, with or without 12227896Sjkim * modification, are permitted provided that the following conditions 13227896Sjkim * are met: 14227896Sjkim * 1. Redistributions of source code must retain the above copyright 15227896Sjkim * notice, this list of conditions, and the following disclaimer, 16227896Sjkim * without modification. 17227896Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18227896Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19227896Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20227896Sjkim * including a substantially similar Disclaimer requirement for further 21227896Sjkim * binary redistribution. 22227896Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23227896Sjkim * of any contributors may be used to endorse or promote products derived 24227896Sjkim * from this software without specific prior written permission. 25227896Sjkim * 26227896Sjkim * Alternatively, this software may be distributed under the terms of the 27227896Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28227896Sjkim * Software Foundation. 29227896Sjkim * 30227896Sjkim * NO WARRANTY 31227896Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32227896Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33227896Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34227896Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35227896Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36227896Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37227896Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38227896Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39227896Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40227896Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41227896Sjkim * POSSIBILITY OF SUCH DAMAGES. 42227896Sjkim */ 43227896Sjkim 44227896Sjkim#ifndef __ACTBL3_H__ 45227896Sjkim#define __ACTBL3_H__ 46227896Sjkim 47227896Sjkim 48227896Sjkim/******************************************************************************* 49227896Sjkim * 50227896Sjkim * Additional ACPI Tables (3) 51227896Sjkim * 52227896Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are 53227896Sjkim * included here to support device drivers and the AML disassembler. 54227896Sjkim * 55227896Sjkim * The tables in this file are fully defined within the ACPI specification. 56227896Sjkim * 57227896Sjkim ******************************************************************************/ 58227896Sjkim 59227896Sjkim 60227896Sjkim/* 61227896Sjkim * Values for description table header signatures for tables defined in this 62227896Sjkim * file. Useful because they make it more difficult to inadvertently type in 63227896Sjkim * the wrong signature. 64227896Sjkim */ 65227896Sjkim#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 66227896Sjkim#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 67227896Sjkim#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 68227896Sjkim#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 69227896Sjkim#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 70227896Sjkim#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 71227896Sjkim#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 72227896Sjkim#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 73283092Sjkim#define ACPI_SIG_STAO "STAO" /* Status Override table */ 74245582Sjkim#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 75283092Sjkim#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 76283092Sjkim#define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 77227896Sjkim 78227896Sjkim#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 79227896Sjkim#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 80227896Sjkim 81227896Sjkim/* Reserved table signatures */ 82227896Sjkim 83227896Sjkim#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 84227896Sjkim#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 85227896Sjkim 86227896Sjkim/* 87227896Sjkim * All tables must be byte-packed to match the ACPI specification, since 88227896Sjkim * the tables are provided by the system BIOS. 89227896Sjkim */ 90227896Sjkim#pragma pack(1) 91227896Sjkim 92227896Sjkim/* 93239340Sjkim * Note: C bitfields are not used for this reason: 94239340Sjkim * 95239340Sjkim * "Bitfields are great and easy to read, but unfortunately the C language 96239340Sjkim * does not specify the layout of bitfields in memory, which means they are 97239340Sjkim * essentially useless for dealing with packed data in on-disk formats or 98239340Sjkim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 99239340Sjkim * this decision was a design error in C. Ritchie could have picked an order 100239340Sjkim * and stuck with it." Norman Ramsey. 101239340Sjkim * See http://stackoverflow.com/a/1053662/41661 102227896Sjkim */ 103227896Sjkim 104227896Sjkim 105227896Sjkim/******************************************************************************* 106227896Sjkim * 107227896Sjkim * BGRT - Boot Graphics Resource Table (ACPI 5.0) 108227896Sjkim * Version 1 109227896Sjkim * 110227896Sjkim ******************************************************************************/ 111227896Sjkim 112227896Sjkimtypedef struct acpi_table_bgrt 113227896Sjkim{ 114227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 115227896Sjkim UINT16 Version; 116227896Sjkim UINT8 Status; 117227896Sjkim UINT8 ImageType; 118227896Sjkim UINT64 ImageAddress; 119227896Sjkim UINT32 ImageOffsetX; 120227896Sjkim UINT32 ImageOffsetY; 121227896Sjkim 122227896Sjkim} ACPI_TABLE_BGRT; 123227896Sjkim 124227896Sjkim 125227896Sjkim/******************************************************************************* 126227896Sjkim * 127227896Sjkim * DRTM - Dynamic Root of Trust for Measurement table 128283092Sjkim * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 129283092Sjkim * Table version 1 130227896Sjkim * 131227896Sjkim ******************************************************************************/ 132227896Sjkim 133227896Sjkimtypedef struct acpi_table_drtm 134227896Sjkim{ 135227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 136227896Sjkim UINT64 EntryBaseAddress; 137227896Sjkim UINT64 EntryLength; 138227896Sjkim UINT32 EntryAddress32; 139227896Sjkim UINT64 EntryAddress64; 140227896Sjkim UINT64 ExitAddress; 141227896Sjkim UINT64 LogAreaAddress; 142227896Sjkim UINT32 LogAreaLength; 143227896Sjkim UINT64 ArchDependentAddress; 144227896Sjkim UINT32 Flags; 145227896Sjkim 146227896Sjkim} ACPI_TABLE_DRTM; 147227896Sjkim 148283092Sjkim/* Flag Definitions for above */ 149227896Sjkim 150283092Sjkim#define ACPI_DRTM_ACCESS_ALLOWED (1) 151283092Sjkim#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 152283092Sjkim#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 153283092Sjkim#define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 154283092Sjkim 155283092Sjkim 156283092Sjkim/* 1) Validated Tables List (64-bit addresses) */ 157283092Sjkim 158283092Sjkimtypedef struct acpi_drtm_vtable_list 159227896Sjkim{ 160283092Sjkim UINT32 ValidatedTableCount; 161283092Sjkim UINT64 ValidatedTables[1]; 162227896Sjkim 163283092Sjkim} ACPI_DRTM_VTABLE_LIST; 164227896Sjkim 165283092Sjkim/* 2) Resources List (of Resource Descriptors) */ 166227896Sjkim 167283092Sjkim/* Resource Descriptor */ 168283092Sjkim 169283092Sjkimtypedef struct acpi_drtm_resource 170283092Sjkim{ 171283092Sjkim UINT8 Size[7]; 172283092Sjkim UINT8 Type; 173283092Sjkim UINT64 Address; 174283092Sjkim 175283092Sjkim} ACPI_DRTM_RESOURCE; 176283092Sjkim 177227896Sjkimtypedef struct acpi_drtm_resource_list 178227896Sjkim{ 179283092Sjkim UINT32 ResourceCount; 180283092Sjkim ACPI_DRTM_RESOURCE Resources[1]; 181227896Sjkim 182227896Sjkim} ACPI_DRTM_RESOURCE_LIST; 183227896Sjkim 184227896Sjkim/* 3) Platform-specific Identifiers List */ 185227896Sjkim 186283092Sjkimtypedef struct acpi_drtm_dps_id 187227896Sjkim{ 188283092Sjkim UINT32 DpsIdLength; 189283092Sjkim UINT8 DpsId[16]; 190227896Sjkim 191283092Sjkim} ACPI_DRTM_DPS_ID; 192227896Sjkim 193227896Sjkim 194227896Sjkim/******************************************************************************* 195227896Sjkim * 196227896Sjkim * FPDT - Firmware Performance Data Table (ACPI 5.0) 197227896Sjkim * Version 1 198227896Sjkim * 199227896Sjkim ******************************************************************************/ 200227896Sjkim 201227896Sjkimtypedef struct acpi_table_fpdt 202227896Sjkim{ 203227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 204227896Sjkim 205227896Sjkim} ACPI_TABLE_FPDT; 206227896Sjkim 207227896Sjkim 208227896Sjkim/* FPDT subtable header */ 209227896Sjkim 210227896Sjkimtypedef struct acpi_fpdt_header 211227896Sjkim{ 212227896Sjkim UINT16 Type; 213227896Sjkim UINT8 Length; 214227896Sjkim UINT8 Revision; 215227896Sjkim 216227896Sjkim} ACPI_FPDT_HEADER; 217227896Sjkim 218227896Sjkim/* Values for Type field above */ 219227896Sjkim 220227896Sjkimenum AcpiFpdtType 221227896Sjkim{ 222227896Sjkim ACPI_FPDT_TYPE_BOOT = 0, 223246849Sjkim ACPI_FPDT_TYPE_S3PERF = 1 224227896Sjkim}; 225227896Sjkim 226227896Sjkim 227227896Sjkim/* 228227896Sjkim * FPDT subtables 229227896Sjkim */ 230227896Sjkim 231227896Sjkim/* 0: Firmware Basic Boot Performance Record */ 232227896Sjkim 233227896Sjkimtypedef struct acpi_fpdt_boot 234227896Sjkim{ 235227896Sjkim ACPI_FPDT_HEADER Header; 236227896Sjkim UINT8 Reserved[4]; 237227896Sjkim UINT64 ResetEnd; 238227896Sjkim UINT64 LoadStart; 239227896Sjkim UINT64 StartupStart; 240227896Sjkim UINT64 ExitServicesEntry; 241227896Sjkim UINT64 ExitServicesExit; 242227896Sjkim 243227896Sjkim} ACPI_FPDT_BOOT; 244227896Sjkim 245227896Sjkim 246227896Sjkim/* 1: S3 Performance Table Pointer Record */ 247227896Sjkim 248227896Sjkimtypedef struct acpi_fpdt_s3pt_ptr 249227896Sjkim{ 250227896Sjkim ACPI_FPDT_HEADER Header; 251227896Sjkim UINT8 Reserved[4]; 252227896Sjkim UINT64 Address; 253227896Sjkim 254227896Sjkim} ACPI_FPDT_S3PT_PTR; 255227896Sjkim 256227896Sjkim 257227896Sjkim/* 258227896Sjkim * S3PT - S3 Performance Table. This table is pointed to by the 259227896Sjkim * FPDT S3 Pointer Record above. 260227896Sjkim */ 261227896Sjkimtypedef struct acpi_table_s3pt 262227896Sjkim{ 263227896Sjkim UINT8 Signature[4]; /* "S3PT" */ 264227896Sjkim UINT32 Length; 265227896Sjkim 266227896Sjkim} ACPI_TABLE_S3PT; 267227896Sjkim 268227896Sjkim 269227896Sjkim/* 270227896Sjkim * S3PT Subtables 271227896Sjkim */ 272227896Sjkimtypedef struct acpi_s3pt_header 273227896Sjkim{ 274227896Sjkim UINT16 Type; 275227896Sjkim UINT8 Length; 276227896Sjkim UINT8 Revision; 277227896Sjkim 278227896Sjkim} ACPI_S3PT_HEADER; 279227896Sjkim 280227896Sjkim/* Values for Type field above */ 281227896Sjkim 282227896Sjkimenum AcpiS3ptType 283227896Sjkim{ 284227896Sjkim ACPI_S3PT_TYPE_RESUME = 0, 285246849Sjkim ACPI_S3PT_TYPE_SUSPEND = 1 286227896Sjkim}; 287227896Sjkim 288227896Sjkimtypedef struct acpi_s3pt_resume 289227896Sjkim{ 290227896Sjkim ACPI_S3PT_HEADER Header; 291227896Sjkim UINT32 ResumeCount; 292227896Sjkim UINT64 FullResume; 293227896Sjkim UINT64 AverageResume; 294227896Sjkim 295227896Sjkim} ACPI_S3PT_RESUME; 296227896Sjkim 297227896Sjkimtypedef struct acpi_s3pt_suspend 298227896Sjkim{ 299227896Sjkim ACPI_S3PT_HEADER Header; 300227896Sjkim UINT64 SuspendStart; 301227896Sjkim UINT64 SuspendEnd; 302227896Sjkim 303227896Sjkim} ACPI_S3PT_SUSPEND; 304227896Sjkim 305227896Sjkim 306227896Sjkim/******************************************************************************* 307227896Sjkim * 308272444Sjkim * GTDT - Generic Timer Description Table (ACPI 5.1) 309272444Sjkim * Version 2 310227896Sjkim * 311227896Sjkim ******************************************************************************/ 312227896Sjkim 313227896Sjkimtypedef struct acpi_table_gtdt 314227896Sjkim{ 315227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 316272444Sjkim UINT64 CounterBlockAddresss; 317272444Sjkim UINT32 Reserved; 318272444Sjkim UINT32 SecureEl1Interrupt; 319272444Sjkim UINT32 SecureEl1Flags; 320272444Sjkim UINT32 NonSecureEl1Interrupt; 321272444Sjkim UINT32 NonSecureEl1Flags; 322227896Sjkim UINT32 VirtualTimerInterrupt; 323227896Sjkim UINT32 VirtualTimerFlags; 324272444Sjkim UINT32 NonSecureEl2Interrupt; 325272444Sjkim UINT32 NonSecureEl2Flags; 326272444Sjkim UINT64 CounterReadBlockAddress; 327272444Sjkim UINT32 PlatformTimerCount; 328272444Sjkim UINT32 PlatformTimerOffset; 329227896Sjkim 330227896Sjkim} ACPI_TABLE_GTDT; 331227896Sjkim 332272444Sjkim/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 333227896Sjkim 334272444Sjkim#define ACPI_GTDT_INTERRUPT_MODE (1) 335272444Sjkim#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 336272444Sjkim#define ACPI_GTDT_ALWAYS_ON (1<<2) 337227896Sjkim 338227896Sjkim 339272444Sjkim/* Common GTDT subtable header */ 340227896Sjkim 341272444Sjkimtypedef struct acpi_gtdt_header 342272444Sjkim{ 343272444Sjkim UINT8 Type; 344272444Sjkim UINT16 Length; 345227896Sjkim 346272444Sjkim} ACPI_GTDT_HEADER; 347272444Sjkim 348272444Sjkim/* Values for GTDT subtable type above */ 349272444Sjkim 350272444Sjkimenum AcpiGtdtType 351272444Sjkim{ 352272444Sjkim ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 353272444Sjkim ACPI_GTDT_TYPE_WATCHDOG = 1, 354272444Sjkim ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 355272444Sjkim}; 356272444Sjkim 357272444Sjkim 358272444Sjkim/* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 359272444Sjkim 360272444Sjkim/* 0: Generic Timer Block */ 361272444Sjkim 362272444Sjkimtypedef struct acpi_gtdt_timer_block 363272444Sjkim{ 364272444Sjkim ACPI_GTDT_HEADER Header; 365272444Sjkim UINT8 Reserved; 366272444Sjkim UINT64 BlockAddress; 367272444Sjkim UINT32 TimerCount; 368272444Sjkim UINT32 TimerOffset; 369272444Sjkim 370272444Sjkim} ACPI_GTDT_TIMER_BLOCK; 371272444Sjkim 372272444Sjkim/* Timer Sub-Structure, one per timer */ 373272444Sjkim 374272444Sjkimtypedef struct acpi_gtdt_timer_entry 375272444Sjkim{ 376272444Sjkim UINT8 FrameNumber; 377272444Sjkim UINT8 Reserved[3]; 378272444Sjkim UINT64 BaseAddress; 379272444Sjkim UINT64 El0BaseAddress; 380272444Sjkim UINT32 TimerInterrupt; 381272444Sjkim UINT32 TimerFlags; 382272444Sjkim UINT32 VirtualTimerInterrupt; 383272444Sjkim UINT32 VirtualTimerFlags; 384272444Sjkim UINT32 CommonFlags; 385272444Sjkim 386272444Sjkim} ACPI_GTDT_TIMER_ENTRY; 387272444Sjkim 388272444Sjkim/* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 389272444Sjkim 390272444Sjkim#define ACPI_GTDT_GT_IRQ_MODE (1) 391272444Sjkim#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 392272444Sjkim 393272444Sjkim/* Flag Definitions: CommonFlags above */ 394272444Sjkim 395272444Sjkim#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 396272444Sjkim#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 397272444Sjkim 398272444Sjkim 399272444Sjkim/* 1: SBSA Generic Watchdog Structure */ 400272444Sjkim 401272444Sjkimtypedef struct acpi_gtdt_watchdog 402272444Sjkim{ 403272444Sjkim ACPI_GTDT_HEADER Header; 404272444Sjkim UINT8 Reserved; 405272444Sjkim UINT64 RefreshFrameAddress; 406272444Sjkim UINT64 ControlFrameAddress; 407272444Sjkim UINT32 TimerInterrupt; 408272444Sjkim UINT32 TimerFlags; 409272444Sjkim 410272444Sjkim} ACPI_GTDT_WATCHDOG; 411272444Sjkim 412272444Sjkim/* Flag Definitions: TimerFlags above */ 413272444Sjkim 414272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 415272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 416272444Sjkim#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 417272444Sjkim 418272444Sjkim 419227896Sjkim/******************************************************************************* 420227896Sjkim * 421227896Sjkim * MPST - Memory Power State Table (ACPI 5.0) 422227896Sjkim * Version 1 423227896Sjkim * 424227896Sjkim ******************************************************************************/ 425227896Sjkim 426227896Sjkim#define ACPI_MPST_CHANNEL_INFO \ 427227896Sjkim UINT8 ChannelId; \ 428241973Sjkim UINT8 Reserved1[3]; \ 429241973Sjkim UINT16 PowerNodeCount; \ 430241973Sjkim UINT16 Reserved2; 431227896Sjkim 432227896Sjkim/* Main table */ 433227896Sjkim 434227896Sjkimtypedef struct acpi_table_mpst 435227896Sjkim{ 436227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 437227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 438227896Sjkim 439227896Sjkim} ACPI_TABLE_MPST; 440227896Sjkim 441227896Sjkim 442227896Sjkim/* Memory Platform Communication Channel Info */ 443227896Sjkim 444227896Sjkimtypedef struct acpi_mpst_channel 445227896Sjkim{ 446227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 447227896Sjkim 448227896Sjkim} ACPI_MPST_CHANNEL; 449227896Sjkim 450227896Sjkim 451227896Sjkim/* Memory Power Node Structure */ 452227896Sjkim 453227896Sjkimtypedef struct acpi_mpst_power_node 454227896Sjkim{ 455227896Sjkim UINT8 Flags; 456227896Sjkim UINT8 Reserved1; 457227896Sjkim UINT16 NodeId; 458227896Sjkim UINT32 Length; 459227896Sjkim UINT64 RangeAddress; 460227896Sjkim UINT64 RangeLength; 461241973Sjkim UINT32 NumPowerStates; 462241973Sjkim UINT32 NumPhysicalComponents; 463227896Sjkim 464227896Sjkim} ACPI_MPST_POWER_NODE; 465227896Sjkim 466227896Sjkim/* Values for Flags field above */ 467227896Sjkim 468227896Sjkim#define ACPI_MPST_ENABLED 1 469227896Sjkim#define ACPI_MPST_POWER_MANAGED 2 470227896Sjkim#define ACPI_MPST_HOT_PLUG_CAPABLE 4 471227896Sjkim 472227896Sjkim 473227896Sjkim/* Memory Power State Structure (follows POWER_NODE above) */ 474227896Sjkim 475227896Sjkimtypedef struct acpi_mpst_power_state 476227896Sjkim{ 477227896Sjkim UINT8 PowerState; 478227896Sjkim UINT8 InfoIndex; 479227896Sjkim 480227896Sjkim} ACPI_MPST_POWER_STATE; 481227896Sjkim 482227896Sjkim 483227896Sjkim/* Physical Component ID Structure (follows POWER_STATE above) */ 484227896Sjkim 485227896Sjkimtypedef struct acpi_mpst_component 486227896Sjkim{ 487227896Sjkim UINT16 ComponentId; 488227896Sjkim 489227896Sjkim} ACPI_MPST_COMPONENT; 490227896Sjkim 491227896Sjkim 492227896Sjkim/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 493227896Sjkim 494227896Sjkimtypedef struct acpi_mpst_data_hdr 495227896Sjkim{ 496227896Sjkim UINT16 CharacteristicsCount; 497241973Sjkim UINT16 Reserved; 498227896Sjkim 499227896Sjkim} ACPI_MPST_DATA_HDR; 500227896Sjkim 501227896Sjkimtypedef struct acpi_mpst_power_data 502227896Sjkim{ 503241973Sjkim UINT8 StructureId; 504227896Sjkim UINT8 Flags; 505227896Sjkim UINT16 Reserved1; 506227896Sjkim UINT32 AveragePower; 507227896Sjkim UINT32 PowerSaving; 508227896Sjkim UINT64 ExitLatency; 509227896Sjkim UINT64 Reserved2; 510227896Sjkim 511227896Sjkim} ACPI_MPST_POWER_DATA; 512227896Sjkim 513227896Sjkim/* Values for Flags field above */ 514227896Sjkim 515227896Sjkim#define ACPI_MPST_PRESERVE 1 516227896Sjkim#define ACPI_MPST_AUTOENTRY 2 517227896Sjkim#define ACPI_MPST_AUTOEXIT 4 518227896Sjkim 519227896Sjkim 520227896Sjkim/* Shared Memory Region (not part of an ACPI table) */ 521227896Sjkim 522227896Sjkimtypedef struct acpi_mpst_shared 523227896Sjkim{ 524227896Sjkim UINT32 Signature; 525227896Sjkim UINT16 PccCommand; 526227896Sjkim UINT16 PccStatus; 527241973Sjkim UINT32 CommandRegister; 528241973Sjkim UINT32 StatusRegister; 529241973Sjkim UINT32 PowerStateId; 530241973Sjkim UINT32 PowerNodeId; 531227896Sjkim UINT64 EnergyConsumed; 532227896Sjkim UINT64 AveragePower; 533227896Sjkim 534227896Sjkim} ACPI_MPST_SHARED; 535227896Sjkim 536227896Sjkim 537227896Sjkim/******************************************************************************* 538227896Sjkim * 539227896Sjkim * PCCT - Platform Communications Channel Table (ACPI 5.0) 540227896Sjkim * Version 1 541227896Sjkim * 542227896Sjkim ******************************************************************************/ 543227896Sjkim 544227896Sjkimtypedef struct acpi_table_pcct 545227896Sjkim{ 546227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 547227896Sjkim UINT32 Flags; 548272444Sjkim UINT64 Reserved; 549227896Sjkim 550227896Sjkim} ACPI_TABLE_PCCT; 551227896Sjkim 552227896Sjkim/* Values for Flags field above */ 553227896Sjkim 554227896Sjkim#define ACPI_PCCT_DOORBELL 1 555227896Sjkim 556272444Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 557272444Sjkim 558272444Sjkimenum AcpiPcctType 559272444Sjkim{ 560272444Sjkim ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 561272444Sjkim ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 562272444Sjkim ACPI_PCCT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 563272444Sjkim}; 564272444Sjkim 565227896Sjkim/* 566272444Sjkim * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 567227896Sjkim */ 568227896Sjkim 569227896Sjkim/* 0: Generic Communications Subspace */ 570227896Sjkim 571227896Sjkimtypedef struct acpi_pcct_subspace 572227896Sjkim{ 573227896Sjkim ACPI_SUBTABLE_HEADER Header; 574227896Sjkim UINT8 Reserved[6]; 575227896Sjkim UINT64 BaseAddress; 576227896Sjkim UINT64 Length; 577227896Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 578227896Sjkim UINT64 PreserveMask; 579227896Sjkim UINT64 WriteMask; 580272444Sjkim UINT32 Latency; 581272444Sjkim UINT32 MaxAccessRate; 582272444Sjkim UINT16 MinTurnaroundTime; 583227896Sjkim 584227896Sjkim} ACPI_PCCT_SUBSPACE; 585227896Sjkim 586227896Sjkim 587272444Sjkim/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 588272444Sjkim 589272444Sjkimtypedef struct acpi_pcct_hw_reduced 590272444Sjkim{ 591272444Sjkim ACPI_SUBTABLE_HEADER Header; 592272444Sjkim UINT32 DoorbellInterrupt; 593272444Sjkim UINT8 Flags; 594272444Sjkim UINT8 Reserved; 595272444Sjkim UINT64 BaseAddress; 596272444Sjkim UINT64 Length; 597272444Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 598272444Sjkim UINT64 PreserveMask; 599272444Sjkim UINT64 WriteMask; 600272444Sjkim UINT32 Latency; 601272444Sjkim UINT32 MaxAccessRate; 602272444Sjkim UINT16 MinTurnaroundTime; 603272444Sjkim 604272444Sjkim} ACPI_PCCT_HW_REDUCED; 605272444Sjkim 606272444Sjkim/* Values for doorbell flags above */ 607272444Sjkim 608272444Sjkim#define ACPI_PCCT_INTERRUPT_POLARITY (1) 609272444Sjkim#define ACPI_PCCT_INTERRUPT_MODE (1<<1) 610272444Sjkim 611272444Sjkim 612227896Sjkim/* 613227896Sjkim * PCC memory structures (not part of the ACPI table) 614227896Sjkim */ 615227896Sjkim 616227896Sjkim/* Shared Memory Region */ 617227896Sjkim 618227896Sjkimtypedef struct acpi_pcct_shared_memory 619227896Sjkim{ 620227896Sjkim UINT32 Signature; 621227896Sjkim UINT16 Command; 622227896Sjkim UINT16 Status; 623227896Sjkim 624227896Sjkim} ACPI_PCCT_SHARED_MEMORY; 625227896Sjkim 626227896Sjkim 627227896Sjkim/******************************************************************************* 628227896Sjkim * 629227896Sjkim * PMTT - Platform Memory Topology Table (ACPI 5.0) 630227896Sjkim * Version 1 631227896Sjkim * 632227896Sjkim ******************************************************************************/ 633227896Sjkim 634227896Sjkimtypedef struct acpi_table_pmtt 635227896Sjkim{ 636227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 637227896Sjkim UINT32 Reserved; 638227896Sjkim 639227896Sjkim} ACPI_TABLE_PMTT; 640227896Sjkim 641227896Sjkim 642227896Sjkim/* Common header for PMTT subtables that follow main table */ 643227896Sjkim 644227896Sjkimtypedef struct acpi_pmtt_header 645227896Sjkim{ 646227896Sjkim UINT8 Type; 647227896Sjkim UINT8 Reserved1; 648227896Sjkim UINT16 Length; 649227896Sjkim UINT16 Flags; 650227896Sjkim UINT16 Reserved2; 651227896Sjkim 652227896Sjkim} ACPI_PMTT_HEADER; 653227896Sjkim 654227896Sjkim/* Values for Type field above */ 655227896Sjkim 656227896Sjkim#define ACPI_PMTT_TYPE_SOCKET 0 657227896Sjkim#define ACPI_PMTT_TYPE_CONTROLLER 1 658227896Sjkim#define ACPI_PMTT_TYPE_DIMM 2 659227896Sjkim#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 660227896Sjkim 661227896Sjkim/* Values for Flags field above */ 662227896Sjkim 663227896Sjkim#define ACPI_PMTT_TOP_LEVEL 0x0001 664227896Sjkim#define ACPI_PMTT_PHYSICAL 0x0002 665227896Sjkim#define ACPI_PMTT_MEMORY_TYPE 0x000C 666227896Sjkim 667227896Sjkim 668227896Sjkim/* 669227896Sjkim * PMTT subtables, correspond to Type in acpi_pmtt_header 670227896Sjkim */ 671227896Sjkim 672227896Sjkim 673227896Sjkim/* 0: Socket Structure */ 674227896Sjkim 675227896Sjkimtypedef struct acpi_pmtt_socket 676227896Sjkim{ 677227896Sjkim ACPI_PMTT_HEADER Header; 678227896Sjkim UINT16 SocketId; 679227896Sjkim UINT16 Reserved; 680227896Sjkim 681227896Sjkim} ACPI_PMTT_SOCKET; 682227896Sjkim 683227896Sjkim 684227896Sjkim/* 1: Memory Controller subtable */ 685227896Sjkim 686227896Sjkimtypedef struct acpi_pmtt_controller 687227896Sjkim{ 688227896Sjkim ACPI_PMTT_HEADER Header; 689227896Sjkim UINT32 ReadLatency; 690227896Sjkim UINT32 WriteLatency; 691227896Sjkim UINT32 ReadBandwidth; 692227896Sjkim UINT32 WriteBandwidth; 693227896Sjkim UINT16 AccessWidth; 694227896Sjkim UINT16 Alignment; 695227896Sjkim UINT16 Reserved; 696227896Sjkim UINT16 DomainCount; 697227896Sjkim 698227896Sjkim} ACPI_PMTT_CONTROLLER; 699227896Sjkim 700227896Sjkim/* 1a: Proximity Domain substructure */ 701227896Sjkim 702227896Sjkimtypedef struct acpi_pmtt_domain 703227896Sjkim{ 704227896Sjkim UINT32 ProximityDomain; 705227896Sjkim 706227896Sjkim} ACPI_PMTT_DOMAIN; 707227896Sjkim 708227896Sjkim 709227896Sjkim/* 2: Physical Component Identifier (DIMM) */ 710227896Sjkim 711227896Sjkimtypedef struct acpi_pmtt_physical_component 712227896Sjkim{ 713227896Sjkim ACPI_PMTT_HEADER Header; 714227896Sjkim UINT16 ComponentId; 715227896Sjkim UINT16 Reserved; 716227896Sjkim UINT32 MemorySize; 717227896Sjkim UINT32 BiosHandle; 718227896Sjkim 719227896Sjkim} ACPI_PMTT_PHYSICAL_COMPONENT; 720227896Sjkim 721227896Sjkim 722227896Sjkim/******************************************************************************* 723227896Sjkim * 724227896Sjkim * RASF - RAS Feature Table (ACPI 5.0) 725227896Sjkim * Version 1 726227896Sjkim * 727227896Sjkim ******************************************************************************/ 728227896Sjkim 729227896Sjkimtypedef struct acpi_table_rasf 730227896Sjkim{ 731227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 732227896Sjkim UINT8 ChannelId[12]; 733227896Sjkim 734227896Sjkim} ACPI_TABLE_RASF; 735227896Sjkim 736227896Sjkim/* RASF Platform Communication Channel Shared Memory Region */ 737227896Sjkim 738227896Sjkimtypedef struct acpi_rasf_shared_memory 739227896Sjkim{ 740227896Sjkim UINT32 Signature; 741227896Sjkim UINT16 Command; 742227896Sjkim UINT16 Status; 743246849Sjkim UINT16 Version; 744246849Sjkim UINT8 Capabilities[16]; 745246849Sjkim UINT8 SetCapabilities[16]; 746246849Sjkim UINT16 NumParameterBlocks; 747246849Sjkim UINT32 SetCapabilitiesStatus; 748227896Sjkim 749227896Sjkim} ACPI_RASF_SHARED_MEMORY; 750227896Sjkim 751246849Sjkim/* RASF Parameter Block Structure Header */ 752246849Sjkim 753246849Sjkimtypedef struct acpi_rasf_parameter_block 754246849Sjkim{ 755246849Sjkim UINT16 Type; 756246849Sjkim UINT16 Version; 757246849Sjkim UINT16 Length; 758246849Sjkim 759246849Sjkim} ACPI_RASF_PARAMETER_BLOCK; 760246849Sjkim 761246849Sjkim/* RASF Parameter Block Structure for PATROL_SCRUB */ 762246849Sjkim 763246849Sjkimtypedef struct acpi_rasf_patrol_scrub_parameter 764246849Sjkim{ 765246849Sjkim ACPI_RASF_PARAMETER_BLOCK Header; 766246849Sjkim UINT16 PatrolScrubCommand; 767246849Sjkim UINT64 RequestedAddressRange[2]; 768246849Sjkim UINT64 ActualAddressRange[2]; 769246849Sjkim UINT16 Flags; 770246849Sjkim UINT8 RequestedSpeed; 771246849Sjkim 772246849Sjkim} ACPI_RASF_PATROL_SCRUB_PARAMETER; 773246849Sjkim 774227896Sjkim/* Masks for Flags and Speed fields above */ 775227896Sjkim 776227896Sjkim#define ACPI_RASF_SCRUBBER_RUNNING 1 777227896Sjkim#define ACPI_RASF_SPEED (7<<1) 778246849Sjkim#define ACPI_RASF_SPEED_SLOW (0<<1) 779246849Sjkim#define ACPI_RASF_SPEED_MEDIUM (4<<1) 780246849Sjkim#define ACPI_RASF_SPEED_FAST (7<<1) 781227896Sjkim 782227896Sjkim/* Channel Commands */ 783227896Sjkim 784227896Sjkimenum AcpiRasfCommands 785227896Sjkim{ 786246849Sjkim ACPI_RASF_EXECUTE_RASF_COMMAND = 1 787227896Sjkim}; 788227896Sjkim 789246849Sjkim/* Platform RAS Capabilities */ 790246849Sjkim 791246849Sjkimenum AcpiRasfCapabiliities 792246849Sjkim{ 793246849Sjkim ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 794246849Sjkim ACPI_SW_PATROL_SCRUB_EXPOSED = 1 795246849Sjkim}; 796246849Sjkim 797246849Sjkim/* Patrol Scrub Commands */ 798246849Sjkim 799246849Sjkimenum AcpiRasfPatrolScrubCommands 800246849Sjkim{ 801246849Sjkim ACPI_RASF_GET_PATROL_PARAMETERS = 1, 802246849Sjkim ACPI_RASF_START_PATROL_SCRUBBER = 2, 803246849Sjkim ACPI_RASF_STOP_PATROL_SCRUBBER = 3 804246849Sjkim}; 805246849Sjkim 806227896Sjkim/* Channel Command flags */ 807227896Sjkim 808227896Sjkim#define ACPI_RASF_GENERATE_SCI (1<<15) 809227896Sjkim 810227896Sjkim/* Status values */ 811227896Sjkim 812227896Sjkimenum AcpiRasfStatus 813227896Sjkim{ 814227896Sjkim ACPI_RASF_SUCCESS = 0, 815227896Sjkim ACPI_RASF_NOT_VALID = 1, 816227896Sjkim ACPI_RASF_NOT_SUPPORTED = 2, 817227896Sjkim ACPI_RASF_BUSY = 3, 818227896Sjkim ACPI_RASF_FAILED = 4, 819227896Sjkim ACPI_RASF_ABORTED = 5, 820227896Sjkim ACPI_RASF_INVALID_DATA = 6 821227896Sjkim}; 822227896Sjkim 823227896Sjkim/* Status flags */ 824227896Sjkim 825227896Sjkim#define ACPI_RASF_COMMAND_COMPLETE (1) 826227896Sjkim#define ACPI_RASF_SCI_DOORBELL (1<<1) 827227896Sjkim#define ACPI_RASF_ERROR (1<<2) 828227896Sjkim#define ACPI_RASF_STATUS (0x1F<<3) 829227896Sjkim 830227896Sjkim 831245582Sjkim/******************************************************************************* 832245582Sjkim * 833283092Sjkim * STAO - Status Override Table (_STA override) - ACPI 6.0 834283092Sjkim * Version 1 835283092Sjkim * 836283092Sjkim * Conforms to "ACPI Specification for Status Override Table" 837283092Sjkim * 6 January 2015 838283092Sjkim * 839283092Sjkim ******************************************************************************/ 840283092Sjkim 841283092Sjkimtypedef struct acpi_table_stao 842283092Sjkim{ 843283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 844283092Sjkim UINT8 IgnoreUart; 845283092Sjkim 846283092Sjkim} ACPI_TABLE_STAO; 847283092Sjkim 848283092Sjkim 849283092Sjkim/******************************************************************************* 850283092Sjkim * 851245582Sjkim * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 852245582Sjkim * Version 3 853245582Sjkim * 854245582Sjkim * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011 855245582Sjkim * 856245582Sjkim ******************************************************************************/ 857245582Sjkim 858245582Sjkimtypedef struct acpi_table_tpm2 859245582Sjkim{ 860245582Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 861245582Sjkim UINT32 Flags; 862245582Sjkim UINT64 ControlAddress; 863245582Sjkim UINT32 StartMethod; 864245582Sjkim 865245582Sjkim} ACPI_TABLE_TPM2; 866245582Sjkim 867245582Sjkim/* Control area structure (not part of table, pointed to by ControlAddress) */ 868245582Sjkim 869245582Sjkimtypedef struct acpi_tpm2_control 870245582Sjkim{ 871245582Sjkim UINT32 Reserved; 872245582Sjkim UINT32 Error; 873245582Sjkim UINT32 Cancel; 874245582Sjkim UINT32 Start; 875245582Sjkim UINT64 InterruptControl; 876245582Sjkim UINT32 CommandSize; 877245582Sjkim UINT64 CommandAddress; 878245582Sjkim UINT32 ResponseSize; 879245582Sjkim UINT64 ResponseAddress; 880245582Sjkim 881245582Sjkim} ACPI_TPM2_CONTROL; 882245582Sjkim 883245582Sjkim 884283092Sjkim/******************************************************************************* 885283092Sjkim * 886283092Sjkim * WPBT - Windows Platform Environment Table (ACPI 6.0) 887283092Sjkim * Version 1 888283092Sjkim * 889283092Sjkim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 890283092Sjkim * 891283092Sjkim ******************************************************************************/ 892283092Sjkim 893283092Sjkimtypedef struct acpi_table_wpbt 894283092Sjkim{ 895283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 896283092Sjkim UINT32 HandoffSize; 897283092Sjkim UINT64 HandoffAddress; 898283092Sjkim UINT8 Layout; 899283092Sjkim UINT8 Type; 900283092Sjkim UINT16 ArgumentsLength; 901283092Sjkim 902283092Sjkim} ACPI_TABLE_WPBT; 903283092Sjkim 904283092Sjkim 905283092Sjkim/******************************************************************************* 906283092Sjkim * 907283092Sjkim * XENV - Xen Environment Table (ACPI 6.0) 908283092Sjkim * Version 1 909283092Sjkim * 910283092Sjkim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 911283092Sjkim * 912283092Sjkim ******************************************************************************/ 913283092Sjkim 914283092Sjkimtypedef struct acpi_table_xenv 915283092Sjkim{ 916283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 917283092Sjkim UINT64 GrantTableAddress; 918283092Sjkim UINT64 GrantTableSize; 919283092Sjkim UINT32 EventInterrupt; 920283092Sjkim UINT8 EventFlags; 921283092Sjkim 922283092Sjkim} ACPI_TABLE_XENV; 923283092Sjkim 924283092Sjkim 925227896Sjkim/* Reset to default packing */ 926227896Sjkim 927227896Sjkim#pragma pack() 928227896Sjkim 929227896Sjkim#endif /* __ACTBL3_H__ */ 930