1227896Sjkim/****************************************************************************** 2227896Sjkim * 3227896Sjkim * Name: actbl3.h - ACPI Table Definitions 4227896Sjkim * 5227896Sjkim *****************************************************************************/ 6227896Sjkim 7316303Sjkim/****************************************************************************** 8316303Sjkim * 9316303Sjkim * 1. Copyright Notice 10316303Sjkim * 11316303Sjkim * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp. 12227896Sjkim * All rights reserved. 13227896Sjkim * 14316303Sjkim * 2. License 15316303Sjkim * 16316303Sjkim * 2.1. This is your license from Intel Corp. under its intellectual property 17316303Sjkim * rights. You may have additional license terms from the party that provided 18316303Sjkim * you this software, covering your right to use that party's intellectual 19316303Sjkim * property rights. 20316303Sjkim * 21316303Sjkim * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22316303Sjkim * copy of the source code appearing in this file ("Covered Code") an 23316303Sjkim * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24316303Sjkim * base code distributed originally by Intel ("Original Intel Code") to copy, 25316303Sjkim * make derivatives, distribute, use and display any portion of the Covered 26316303Sjkim * Code in any form, with the right to sublicense such rights; and 27316303Sjkim * 28316303Sjkim * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29316303Sjkim * license (with the right to sublicense), under only those claims of Intel 30316303Sjkim * patents that are infringed by the Original Intel Code, to make, use, sell, 31316303Sjkim * offer to sell, and import the Covered Code and derivative works thereof 32316303Sjkim * solely to the minimum extent necessary to exercise the above copyright 33316303Sjkim * license, and in no event shall the patent license extend to any additions 34316303Sjkim * to or modifications of the Original Intel Code. No other license or right 35316303Sjkim * is granted directly or by implication, estoppel or otherwise; 36316303Sjkim * 37316303Sjkim * The above copyright and patent license is granted only if the following 38316303Sjkim * conditions are met: 39316303Sjkim * 40316303Sjkim * 3. Conditions 41316303Sjkim * 42316303Sjkim * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43316303Sjkim * Redistribution of source code of any substantial portion of the Covered 44316303Sjkim * Code or modification with rights to further distribute source must include 45316303Sjkim * the above Copyright Notice, the above License, this list of Conditions, 46316303Sjkim * and the following Disclaimer and Export Compliance provision. In addition, 47316303Sjkim * Licensee must cause all Covered Code to which Licensee contributes to 48316303Sjkim * contain a file documenting the changes Licensee made to create that Covered 49316303Sjkim * Code and the date of any change. Licensee must include in that file the 50316303Sjkim * documentation of any changes made by any predecessor Licensee. Licensee 51316303Sjkim * must include a prominent statement that the modification is derived, 52316303Sjkim * directly or indirectly, from Original Intel Code. 53316303Sjkim * 54316303Sjkim * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55316303Sjkim * Redistribution of source code of any substantial portion of the Covered 56316303Sjkim * Code or modification without rights to further distribute source must 57316303Sjkim * include the following Disclaimer and Export Compliance provision in the 58316303Sjkim * documentation and/or other materials provided with distribution. In 59316303Sjkim * addition, Licensee may not authorize further sublicense of source of any 60316303Sjkim * portion of the Covered Code, and must include terms to the effect that the 61316303Sjkim * license from Licensee to its licensee is limited to the intellectual 62316303Sjkim * property embodied in the software Licensee provides to its licensee, and 63316303Sjkim * not to intellectual property embodied in modifications its licensee may 64316303Sjkim * make. 65316303Sjkim * 66316303Sjkim * 3.3. Redistribution of Executable. Redistribution in executable form of any 67316303Sjkim * substantial portion of the Covered Code or modification must reproduce the 68316303Sjkim * above Copyright Notice, and the following Disclaimer and Export Compliance 69316303Sjkim * provision in the documentation and/or other materials provided with the 70316303Sjkim * distribution. 71316303Sjkim * 72316303Sjkim * 3.4. Intel retains all right, title, and interest in and to the Original 73316303Sjkim * Intel Code. 74316303Sjkim * 75316303Sjkim * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76316303Sjkim * Intel shall be used in advertising or otherwise to promote the sale, use or 77316303Sjkim * other dealings in products derived from or relating to the Covered Code 78316303Sjkim * without prior written authorization from Intel. 79316303Sjkim * 80316303Sjkim * 4. Disclaimer and Export Compliance 81316303Sjkim * 82316303Sjkim * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83316303Sjkim * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84316303Sjkim * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85316303Sjkim * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86316303Sjkim * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87316303Sjkim * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88316303Sjkim * PARTICULAR PURPOSE. 89316303Sjkim * 90316303Sjkim * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91316303Sjkim * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92316303Sjkim * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93316303Sjkim * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94316303Sjkim * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95316303Sjkim * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96316303Sjkim * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97316303Sjkim * LIMITED REMEDY. 98316303Sjkim * 99316303Sjkim * 4.3. Licensee shall not export, either directly or indirectly, any of this 100316303Sjkim * software or system incorporating such software without first obtaining any 101316303Sjkim * required license or other approval from the U. S. Department of Commerce or 102316303Sjkim * any other agency or department of the United States Government. In the 103316303Sjkim * event Licensee exports any such software from the United States or 104316303Sjkim * re-exports any such software from a foreign destination, Licensee shall 105316303Sjkim * ensure that the distribution and export/re-export of the software is in 106316303Sjkim * compliance with all laws, regulations, orders, or other restrictions of the 107316303Sjkim * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108316303Sjkim * any of its subsidiaries will export/re-export any technical data, process, 109316303Sjkim * software, or service, directly or indirectly, to any country for which the 110316303Sjkim * United States government or any agency thereof requires an export license, 111316303Sjkim * other governmental approval, or letter of assurance, without first obtaining 112316303Sjkim * such license, approval or letter. 113316303Sjkim * 114316303Sjkim ***************************************************************************** 115316303Sjkim * 116316303Sjkim * Alternatively, you may choose to be licensed under the terms of the 117316303Sjkim * following license: 118316303Sjkim * 119227896Sjkim * Redistribution and use in source and binary forms, with or without 120227896Sjkim * modification, are permitted provided that the following conditions 121227896Sjkim * are met: 122227896Sjkim * 1. Redistributions of source code must retain the above copyright 123227896Sjkim * notice, this list of conditions, and the following disclaimer, 124227896Sjkim * without modification. 125227896Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126227896Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 127227896Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 128227896Sjkim * including a substantially similar Disclaimer requirement for further 129227896Sjkim * binary redistribution. 130227896Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 131227896Sjkim * of any contributors may be used to endorse or promote products derived 132227896Sjkim * from this software without specific prior written permission. 133227896Sjkim * 134316303Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135316303Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136316303Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137316303Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138316303Sjkim * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139316303Sjkim * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140316303Sjkim * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141316303Sjkim * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142316303Sjkim * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143316303Sjkim * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144316303Sjkim * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145316303Sjkim * 146316303Sjkim * Alternatively, you may choose to be licensed under the terms of the 147227896Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 148227896Sjkim * Software Foundation. 149227896Sjkim * 150316303Sjkim *****************************************************************************/ 151227896Sjkim 152227896Sjkim#ifndef __ACTBL3_H__ 153227896Sjkim#define __ACTBL3_H__ 154227896Sjkim 155227896Sjkim 156227896Sjkim/******************************************************************************* 157227896Sjkim * 158227896Sjkim * Additional ACPI Tables (3) 159227896Sjkim * 160227896Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are 161227896Sjkim * included here to support device drivers and the AML disassembler. 162227896Sjkim * 163284583Sjkim * In general, the tables in this file are fully defined within the ACPI 164284583Sjkim * specification. 165227896Sjkim * 166227896Sjkim ******************************************************************************/ 167227896Sjkim 168227896Sjkim 169227896Sjkim/* 170227896Sjkim * Values for description table header signatures for tables defined in this 171227896Sjkim * file. Useful because they make it more difficult to inadvertently type in 172227896Sjkim * the wrong signature. 173227896Sjkim */ 174227896Sjkim#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 175227896Sjkim#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 176227896Sjkim#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 177227896Sjkim#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 178227896Sjkim#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 179227896Sjkim#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 180227896Sjkim#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 181227896Sjkim#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 182283092Sjkim#define ACPI_SIG_STAO "STAO" /* Status Override table */ 183283092Sjkim#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 184283092Sjkim#define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 185227896Sjkim 186227896Sjkim#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 187227896Sjkim#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 188227896Sjkim 189227896Sjkim/* Reserved table signatures */ 190227896Sjkim 191227896Sjkim#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 192227896Sjkim#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 193227896Sjkim 194227896Sjkim/* 195227896Sjkim * All tables must be byte-packed to match the ACPI specification, since 196227896Sjkim * the tables are provided by the system BIOS. 197227896Sjkim */ 198227896Sjkim#pragma pack(1) 199227896Sjkim 200227896Sjkim/* 201239340Sjkim * Note: C bitfields are not used for this reason: 202239340Sjkim * 203239340Sjkim * "Bitfields are great and easy to read, but unfortunately the C language 204239340Sjkim * does not specify the layout of bitfields in memory, which means they are 205239340Sjkim * essentially useless for dealing with packed data in on-disk formats or 206239340Sjkim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 207239340Sjkim * this decision was a design error in C. Ritchie could have picked an order 208239340Sjkim * and stuck with it." Norman Ramsey. 209239340Sjkim * See http://stackoverflow.com/a/1053662/41661 210227896Sjkim */ 211227896Sjkim 212227896Sjkim 213227896Sjkim/******************************************************************************* 214227896Sjkim * 215227896Sjkim * BGRT - Boot Graphics Resource Table (ACPI 5.0) 216227896Sjkim * Version 1 217227896Sjkim * 218227896Sjkim ******************************************************************************/ 219227896Sjkim 220227896Sjkimtypedef struct acpi_table_bgrt 221227896Sjkim{ 222227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 223227896Sjkim UINT16 Version; 224227896Sjkim UINT8 Status; 225227896Sjkim UINT8 ImageType; 226227896Sjkim UINT64 ImageAddress; 227227896Sjkim UINT32 ImageOffsetX; 228227896Sjkim UINT32 ImageOffsetY; 229227896Sjkim 230227896Sjkim} ACPI_TABLE_BGRT; 231227896Sjkim 232322877Sjkim/* Flags for Status field above */ 233227896Sjkim 234322877Sjkim#define ACPI_BGRT_DISPLAYED (1) 235322877Sjkim#define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1) 236322877Sjkim 237322877Sjkim 238227896Sjkim/******************************************************************************* 239227896Sjkim * 240227896Sjkim * DRTM - Dynamic Root of Trust for Measurement table 241283092Sjkim * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 242283092Sjkim * Table version 1 243227896Sjkim * 244227896Sjkim ******************************************************************************/ 245227896Sjkim 246227896Sjkimtypedef struct acpi_table_drtm 247227896Sjkim{ 248227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 249227896Sjkim UINT64 EntryBaseAddress; 250227896Sjkim UINT64 EntryLength; 251227896Sjkim UINT32 EntryAddress32; 252227896Sjkim UINT64 EntryAddress64; 253227896Sjkim UINT64 ExitAddress; 254227896Sjkim UINT64 LogAreaAddress; 255227896Sjkim UINT32 LogAreaLength; 256227896Sjkim UINT64 ArchDependentAddress; 257227896Sjkim UINT32 Flags; 258227896Sjkim 259227896Sjkim} ACPI_TABLE_DRTM; 260227896Sjkim 261283092Sjkim/* Flag Definitions for above */ 262227896Sjkim 263283092Sjkim#define ACPI_DRTM_ACCESS_ALLOWED (1) 264283092Sjkim#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 265283092Sjkim#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 266283092Sjkim#define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 267283092Sjkim 268283092Sjkim 269283092Sjkim/* 1) Validated Tables List (64-bit addresses) */ 270283092Sjkim 271283092Sjkimtypedef struct acpi_drtm_vtable_list 272227896Sjkim{ 273283092Sjkim UINT32 ValidatedTableCount; 274283092Sjkim UINT64 ValidatedTables[1]; 275227896Sjkim 276283092Sjkim} ACPI_DRTM_VTABLE_LIST; 277227896Sjkim 278283092Sjkim/* 2) Resources List (of Resource Descriptors) */ 279227896Sjkim 280283092Sjkim/* Resource Descriptor */ 281283092Sjkim 282283092Sjkimtypedef struct acpi_drtm_resource 283283092Sjkim{ 284283092Sjkim UINT8 Size[7]; 285283092Sjkim UINT8 Type; 286283092Sjkim UINT64 Address; 287283092Sjkim 288283092Sjkim} ACPI_DRTM_RESOURCE; 289283092Sjkim 290227896Sjkimtypedef struct acpi_drtm_resource_list 291227896Sjkim{ 292283092Sjkim UINT32 ResourceCount; 293283092Sjkim ACPI_DRTM_RESOURCE Resources[1]; 294227896Sjkim 295227896Sjkim} ACPI_DRTM_RESOURCE_LIST; 296227896Sjkim 297227896Sjkim/* 3) Platform-specific Identifiers List */ 298227896Sjkim 299283092Sjkimtypedef struct acpi_drtm_dps_id 300227896Sjkim{ 301283092Sjkim UINT32 DpsIdLength; 302283092Sjkim UINT8 DpsId[16]; 303227896Sjkim 304283092Sjkim} ACPI_DRTM_DPS_ID; 305227896Sjkim 306227896Sjkim 307227896Sjkim/******************************************************************************* 308227896Sjkim * 309227896Sjkim * FPDT - Firmware Performance Data Table (ACPI 5.0) 310227896Sjkim * Version 1 311227896Sjkim * 312227896Sjkim ******************************************************************************/ 313227896Sjkim 314227896Sjkimtypedef struct acpi_table_fpdt 315227896Sjkim{ 316227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 317227896Sjkim 318227896Sjkim} ACPI_TABLE_FPDT; 319227896Sjkim 320227896Sjkim 321298714Sjkim/* FPDT subtable header (Performance Record Structure) */ 322227896Sjkim 323227896Sjkimtypedef struct acpi_fpdt_header 324227896Sjkim{ 325227896Sjkim UINT16 Type; 326227896Sjkim UINT8 Length; 327227896Sjkim UINT8 Revision; 328227896Sjkim 329227896Sjkim} ACPI_FPDT_HEADER; 330227896Sjkim 331227896Sjkim/* Values for Type field above */ 332227896Sjkim 333227896Sjkimenum AcpiFpdtType 334227896Sjkim{ 335227896Sjkim ACPI_FPDT_TYPE_BOOT = 0, 336246849Sjkim ACPI_FPDT_TYPE_S3PERF = 1 337227896Sjkim}; 338227896Sjkim 339227896Sjkim 340227896Sjkim/* 341227896Sjkim * FPDT subtables 342227896Sjkim */ 343227896Sjkim 344227896Sjkim/* 0: Firmware Basic Boot Performance Record */ 345227896Sjkim 346298714Sjkimtypedef struct acpi_fpdt_boot_pointer 347227896Sjkim{ 348227896Sjkim ACPI_FPDT_HEADER Header; 349227896Sjkim UINT8 Reserved[4]; 350298714Sjkim UINT64 Address; 351227896Sjkim 352298714Sjkim} ACPI_FPDT_BOOT_POINTER; 353227896Sjkim 354227896Sjkim 355227896Sjkim/* 1: S3 Performance Table Pointer Record */ 356227896Sjkim 357298714Sjkimtypedef struct acpi_fpdt_s3pt_pointer 358227896Sjkim{ 359227896Sjkim ACPI_FPDT_HEADER Header; 360227896Sjkim UINT8 Reserved[4]; 361227896Sjkim UINT64 Address; 362227896Sjkim 363298714Sjkim} ACPI_FPDT_S3PT_POINTER; 364227896Sjkim 365227896Sjkim 366227896Sjkim/* 367227896Sjkim * S3PT - S3 Performance Table. This table is pointed to by the 368298714Sjkim * S3 Pointer Record above. 369227896Sjkim */ 370227896Sjkimtypedef struct acpi_table_s3pt 371227896Sjkim{ 372227896Sjkim UINT8 Signature[4]; /* "S3PT" */ 373227896Sjkim UINT32 Length; 374227896Sjkim 375227896Sjkim} ACPI_TABLE_S3PT; 376227896Sjkim 377227896Sjkim 378227896Sjkim/* 379298714Sjkim * S3PT Subtables (Not part of the actual FPDT) 380227896Sjkim */ 381227896Sjkim 382298714Sjkim/* Values for Type field in S3PT header */ 383227896Sjkim 384227896Sjkimenum AcpiS3ptType 385227896Sjkim{ 386227896Sjkim ACPI_S3PT_TYPE_RESUME = 0, 387298714Sjkim ACPI_S3PT_TYPE_SUSPEND = 1, 388298714Sjkim ACPI_FPDT_BOOT_PERFORMANCE = 2 389227896Sjkim}; 390227896Sjkim 391227896Sjkimtypedef struct acpi_s3pt_resume 392227896Sjkim{ 393298714Sjkim ACPI_FPDT_HEADER Header; 394227896Sjkim UINT32 ResumeCount; 395227896Sjkim UINT64 FullResume; 396227896Sjkim UINT64 AverageResume; 397227896Sjkim 398227896Sjkim} ACPI_S3PT_RESUME; 399227896Sjkim 400227896Sjkimtypedef struct acpi_s3pt_suspend 401227896Sjkim{ 402298714Sjkim ACPI_FPDT_HEADER Header; 403227896Sjkim UINT64 SuspendStart; 404227896Sjkim UINT64 SuspendEnd; 405227896Sjkim 406227896Sjkim} ACPI_S3PT_SUSPEND; 407227896Sjkim 408227896Sjkim 409298714Sjkim/* 410298714Sjkim * FPDT Boot Performance Record (Not part of the actual FPDT) 411298714Sjkim */ 412298714Sjkimtypedef struct acpi_fpdt_boot 413298714Sjkim{ 414298714Sjkim ACPI_FPDT_HEADER Header; 415298714Sjkim UINT8 Reserved[4]; 416298714Sjkim UINT64 ResetEnd; 417298714Sjkim UINT64 LoadStart; 418298714Sjkim UINT64 StartupStart; 419298714Sjkim UINT64 ExitServicesEntry; 420298714Sjkim UINT64 ExitServicesExit; 421298714Sjkim 422298714Sjkim} ACPI_FPDT_BOOT; 423298714Sjkim 424298714Sjkim 425227896Sjkim/******************************************************************************* 426227896Sjkim * 427272444Sjkim * GTDT - Generic Timer Description Table (ACPI 5.1) 428272444Sjkim * Version 2 429227896Sjkim * 430227896Sjkim ******************************************************************************/ 431227896Sjkim 432227896Sjkimtypedef struct acpi_table_gtdt 433227896Sjkim{ 434227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 435272444Sjkim UINT64 CounterBlockAddresss; 436272444Sjkim UINT32 Reserved; 437272444Sjkim UINT32 SecureEl1Interrupt; 438272444Sjkim UINT32 SecureEl1Flags; 439272444Sjkim UINT32 NonSecureEl1Interrupt; 440272444Sjkim UINT32 NonSecureEl1Flags; 441227896Sjkim UINT32 VirtualTimerInterrupt; 442227896Sjkim UINT32 VirtualTimerFlags; 443272444Sjkim UINT32 NonSecureEl2Interrupt; 444272444Sjkim UINT32 NonSecureEl2Flags; 445272444Sjkim UINT64 CounterReadBlockAddress; 446272444Sjkim UINT32 PlatformTimerCount; 447272444Sjkim UINT32 PlatformTimerOffset; 448227896Sjkim 449227896Sjkim} ACPI_TABLE_GTDT; 450227896Sjkim 451272444Sjkim/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 452227896Sjkim 453272444Sjkim#define ACPI_GTDT_INTERRUPT_MODE (1) 454272444Sjkim#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 455272444Sjkim#define ACPI_GTDT_ALWAYS_ON (1<<2) 456227896Sjkim 457227896Sjkim 458272444Sjkim/* Common GTDT subtable header */ 459227896Sjkim 460272444Sjkimtypedef struct acpi_gtdt_header 461272444Sjkim{ 462272444Sjkim UINT8 Type; 463272444Sjkim UINT16 Length; 464227896Sjkim 465272444Sjkim} ACPI_GTDT_HEADER; 466272444Sjkim 467272444Sjkim/* Values for GTDT subtable type above */ 468272444Sjkim 469272444Sjkimenum AcpiGtdtType 470272444Sjkim{ 471272444Sjkim ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 472272444Sjkim ACPI_GTDT_TYPE_WATCHDOG = 1, 473272444Sjkim ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 474272444Sjkim}; 475272444Sjkim 476272444Sjkim 477272444Sjkim/* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 478272444Sjkim 479272444Sjkim/* 0: Generic Timer Block */ 480272444Sjkim 481272444Sjkimtypedef struct acpi_gtdt_timer_block 482272444Sjkim{ 483272444Sjkim ACPI_GTDT_HEADER Header; 484272444Sjkim UINT8 Reserved; 485272444Sjkim UINT64 BlockAddress; 486272444Sjkim UINT32 TimerCount; 487272444Sjkim UINT32 TimerOffset; 488272444Sjkim 489272444Sjkim} ACPI_GTDT_TIMER_BLOCK; 490272444Sjkim 491272444Sjkim/* Timer Sub-Structure, one per timer */ 492272444Sjkim 493272444Sjkimtypedef struct acpi_gtdt_timer_entry 494272444Sjkim{ 495272444Sjkim UINT8 FrameNumber; 496272444Sjkim UINT8 Reserved[3]; 497272444Sjkim UINT64 BaseAddress; 498272444Sjkim UINT64 El0BaseAddress; 499272444Sjkim UINT32 TimerInterrupt; 500272444Sjkim UINT32 TimerFlags; 501272444Sjkim UINT32 VirtualTimerInterrupt; 502272444Sjkim UINT32 VirtualTimerFlags; 503272444Sjkim UINT32 CommonFlags; 504272444Sjkim 505272444Sjkim} ACPI_GTDT_TIMER_ENTRY; 506272444Sjkim 507272444Sjkim/* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 508272444Sjkim 509272444Sjkim#define ACPI_GTDT_GT_IRQ_MODE (1) 510272444Sjkim#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 511272444Sjkim 512272444Sjkim/* Flag Definitions: CommonFlags above */ 513272444Sjkim 514272444Sjkim#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 515272444Sjkim#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 516272444Sjkim 517272444Sjkim 518272444Sjkim/* 1: SBSA Generic Watchdog Structure */ 519272444Sjkim 520272444Sjkimtypedef struct acpi_gtdt_watchdog 521272444Sjkim{ 522272444Sjkim ACPI_GTDT_HEADER Header; 523272444Sjkim UINT8 Reserved; 524272444Sjkim UINT64 RefreshFrameAddress; 525272444Sjkim UINT64 ControlFrameAddress; 526272444Sjkim UINT32 TimerInterrupt; 527272444Sjkim UINT32 TimerFlags; 528272444Sjkim 529272444Sjkim} ACPI_GTDT_WATCHDOG; 530272444Sjkim 531272444Sjkim/* Flag Definitions: TimerFlags above */ 532272444Sjkim 533272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 534272444Sjkim#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 535272444Sjkim#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 536272444Sjkim 537272444Sjkim 538227896Sjkim/******************************************************************************* 539227896Sjkim * 540227896Sjkim * MPST - Memory Power State Table (ACPI 5.0) 541227896Sjkim * Version 1 542227896Sjkim * 543227896Sjkim ******************************************************************************/ 544227896Sjkim 545227896Sjkim#define ACPI_MPST_CHANNEL_INFO \ 546227896Sjkim UINT8 ChannelId; \ 547241973Sjkim UINT8 Reserved1[3]; \ 548241973Sjkim UINT16 PowerNodeCount; \ 549241973Sjkim UINT16 Reserved2; 550227896Sjkim 551227896Sjkim/* Main table */ 552227896Sjkim 553227896Sjkimtypedef struct acpi_table_mpst 554227896Sjkim{ 555227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 556227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 557227896Sjkim 558227896Sjkim} ACPI_TABLE_MPST; 559227896Sjkim 560227896Sjkim 561227896Sjkim/* Memory Platform Communication Channel Info */ 562227896Sjkim 563227896Sjkimtypedef struct acpi_mpst_channel 564227896Sjkim{ 565227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 566227896Sjkim 567227896Sjkim} ACPI_MPST_CHANNEL; 568227896Sjkim 569227896Sjkim 570227896Sjkim/* Memory Power Node Structure */ 571227896Sjkim 572227896Sjkimtypedef struct acpi_mpst_power_node 573227896Sjkim{ 574227896Sjkim UINT8 Flags; 575227896Sjkim UINT8 Reserved1; 576227896Sjkim UINT16 NodeId; 577227896Sjkim UINT32 Length; 578227896Sjkim UINT64 RangeAddress; 579227896Sjkim UINT64 RangeLength; 580241973Sjkim UINT32 NumPowerStates; 581241973Sjkim UINT32 NumPhysicalComponents; 582227896Sjkim 583227896Sjkim} ACPI_MPST_POWER_NODE; 584227896Sjkim 585227896Sjkim/* Values for Flags field above */ 586227896Sjkim 587227896Sjkim#define ACPI_MPST_ENABLED 1 588227896Sjkim#define ACPI_MPST_POWER_MANAGED 2 589227896Sjkim#define ACPI_MPST_HOT_PLUG_CAPABLE 4 590227896Sjkim 591227896Sjkim 592227896Sjkim/* Memory Power State Structure (follows POWER_NODE above) */ 593227896Sjkim 594227896Sjkimtypedef struct acpi_mpst_power_state 595227896Sjkim{ 596227896Sjkim UINT8 PowerState; 597227896Sjkim UINT8 InfoIndex; 598227896Sjkim 599227896Sjkim} ACPI_MPST_POWER_STATE; 600227896Sjkim 601227896Sjkim 602227896Sjkim/* Physical Component ID Structure (follows POWER_STATE above) */ 603227896Sjkim 604227896Sjkimtypedef struct acpi_mpst_component 605227896Sjkim{ 606227896Sjkim UINT16 ComponentId; 607227896Sjkim 608227896Sjkim} ACPI_MPST_COMPONENT; 609227896Sjkim 610227896Sjkim 611227896Sjkim/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 612227896Sjkim 613227896Sjkimtypedef struct acpi_mpst_data_hdr 614227896Sjkim{ 615227896Sjkim UINT16 CharacteristicsCount; 616241973Sjkim UINT16 Reserved; 617227896Sjkim 618227896Sjkim} ACPI_MPST_DATA_HDR; 619227896Sjkim 620227896Sjkimtypedef struct acpi_mpst_power_data 621227896Sjkim{ 622241973Sjkim UINT8 StructureId; 623227896Sjkim UINT8 Flags; 624227896Sjkim UINT16 Reserved1; 625227896Sjkim UINT32 AveragePower; 626227896Sjkim UINT32 PowerSaving; 627227896Sjkim UINT64 ExitLatency; 628227896Sjkim UINT64 Reserved2; 629227896Sjkim 630227896Sjkim} ACPI_MPST_POWER_DATA; 631227896Sjkim 632227896Sjkim/* Values for Flags field above */ 633227896Sjkim 634227896Sjkim#define ACPI_MPST_PRESERVE 1 635227896Sjkim#define ACPI_MPST_AUTOENTRY 2 636227896Sjkim#define ACPI_MPST_AUTOEXIT 4 637227896Sjkim 638227896Sjkim 639227896Sjkim/* Shared Memory Region (not part of an ACPI table) */ 640227896Sjkim 641227896Sjkimtypedef struct acpi_mpst_shared 642227896Sjkim{ 643227896Sjkim UINT32 Signature; 644227896Sjkim UINT16 PccCommand; 645227896Sjkim UINT16 PccStatus; 646241973Sjkim UINT32 CommandRegister; 647241973Sjkim UINT32 StatusRegister; 648241973Sjkim UINT32 PowerStateId; 649241973Sjkim UINT32 PowerNodeId; 650227896Sjkim UINT64 EnergyConsumed; 651227896Sjkim UINT64 AveragePower; 652227896Sjkim 653227896Sjkim} ACPI_MPST_SHARED; 654227896Sjkim 655227896Sjkim 656227896Sjkim/******************************************************************************* 657227896Sjkim * 658227896Sjkim * PCCT - Platform Communications Channel Table (ACPI 5.0) 659322877Sjkim * Version 2 (ACPI 6.2) 660227896Sjkim * 661227896Sjkim ******************************************************************************/ 662227896Sjkim 663227896Sjkimtypedef struct acpi_table_pcct 664227896Sjkim{ 665227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 666227896Sjkim UINT32 Flags; 667272444Sjkim UINT64 Reserved; 668227896Sjkim 669227896Sjkim} ACPI_TABLE_PCCT; 670227896Sjkim 671227896Sjkim/* Values for Flags field above */ 672227896Sjkim 673227896Sjkim#define ACPI_PCCT_DOORBELL 1 674227896Sjkim 675272444Sjkim/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 676272444Sjkim 677272444Sjkimenum AcpiPcctType 678272444Sjkim{ 679298714Sjkim ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 680298714Sjkim ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 681298714Sjkim ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2, /* ACPI 6.1 */ 682322877Sjkim ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE = 3, /* ACPI 6.2 */ 683322877Sjkim ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE = 4, /* ACPI 6.2 */ 684322877Sjkim ACPI_PCCT_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 685272444Sjkim}; 686272444Sjkim 687227896Sjkim/* 688272444Sjkim * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 689227896Sjkim */ 690227896Sjkim 691227896Sjkim/* 0: Generic Communications Subspace */ 692227896Sjkim 693227896Sjkimtypedef struct acpi_pcct_subspace 694227896Sjkim{ 695227896Sjkim ACPI_SUBTABLE_HEADER Header; 696227896Sjkim UINT8 Reserved[6]; 697227896Sjkim UINT64 BaseAddress; 698227896Sjkim UINT64 Length; 699227896Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 700227896Sjkim UINT64 PreserveMask; 701227896Sjkim UINT64 WriteMask; 702272444Sjkim UINT32 Latency; 703272444Sjkim UINT32 MaxAccessRate; 704272444Sjkim UINT16 MinTurnaroundTime; 705227896Sjkim 706227896Sjkim} ACPI_PCCT_SUBSPACE; 707227896Sjkim 708227896Sjkim 709272444Sjkim/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 710272444Sjkim 711272444Sjkimtypedef struct acpi_pcct_hw_reduced 712272444Sjkim{ 713272444Sjkim ACPI_SUBTABLE_HEADER Header; 714322877Sjkim UINT32 PlatformInterrupt; 715272444Sjkim UINT8 Flags; 716272444Sjkim UINT8 Reserved; 717272444Sjkim UINT64 BaseAddress; 718272444Sjkim UINT64 Length; 719272444Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 720272444Sjkim UINT64 PreserveMask; 721272444Sjkim UINT64 WriteMask; 722272444Sjkim UINT32 Latency; 723272444Sjkim UINT32 MaxAccessRate; 724272444Sjkim UINT16 MinTurnaroundTime; 725272444Sjkim 726272444Sjkim} ACPI_PCCT_HW_REDUCED; 727272444Sjkim 728298714Sjkim 729298714Sjkim/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */ 730298714Sjkim 731298714Sjkimtypedef struct acpi_pcct_hw_reduced_type2 732298714Sjkim{ 733298714Sjkim ACPI_SUBTABLE_HEADER Header; 734322877Sjkim UINT32 PlatformInterrupt; 735298714Sjkim UINT8 Flags; 736298714Sjkim UINT8 Reserved; 737298714Sjkim UINT64 BaseAddress; 738298714Sjkim UINT64 Length; 739298714Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 740298714Sjkim UINT64 PreserveMask; 741298714Sjkim UINT64 WriteMask; 742298714Sjkim UINT32 Latency; 743298714Sjkim UINT32 MaxAccessRate; 744298714Sjkim UINT16 MinTurnaroundTime; 745322877Sjkim ACPI_GENERIC_ADDRESS PlatformAckRegister; 746298714Sjkim UINT64 AckPreserveMask; 747298714Sjkim UINT64 AckWriteMask; 748298714Sjkim 749298714Sjkim} ACPI_PCCT_HW_REDUCED_TYPE2; 750298714Sjkim 751298714Sjkim 752322877Sjkim/* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */ 753322877Sjkim 754322877Sjkimtypedef struct acpi_pcct_ext_pcc_master 755322877Sjkim{ 756322877Sjkim ACPI_SUBTABLE_HEADER Header; 757322877Sjkim UINT32 PlatformInterrupt; 758322877Sjkim UINT8 Flags; 759322877Sjkim UINT8 Reserved1; 760322877Sjkim UINT64 BaseAddress; 761322877Sjkim UINT32 Length; 762322877Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 763322877Sjkim UINT64 PreserveMask; 764322877Sjkim UINT64 WriteMask; 765322877Sjkim UINT32 Latency; 766322877Sjkim UINT32 MaxAccessRate; 767322877Sjkim UINT32 MinTurnaroundTime; 768322877Sjkim ACPI_GENERIC_ADDRESS PlatformAckRegister; 769322877Sjkim UINT64 AckPreserveMask; 770322877Sjkim UINT64 AckSetMask; 771322877Sjkim UINT64 Reserved2; 772322877Sjkim ACPI_GENERIC_ADDRESS CmdCompleteRegister; 773322877Sjkim UINT64 CmdCompleteMask; 774322877Sjkim ACPI_GENERIC_ADDRESS CmdUpdateRegister; 775322877Sjkim UINT64 CmdUpdatePreserveMask; 776322877Sjkim UINT64 CmdUpdateSetMask; 777322877Sjkim ACPI_GENERIC_ADDRESS ErrorStatusRegister; 778322877Sjkim UINT64 ErrorStatusMask; 779322877Sjkim 780322877Sjkim} ACPI_PCCT_EXT_PCC_MASTER; 781322877Sjkim 782322877Sjkim 783322877Sjkim/* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */ 784322877Sjkim 785322877Sjkimtypedef struct acpi_pcct_ext_pcc_slave 786322877Sjkim{ 787322877Sjkim ACPI_SUBTABLE_HEADER Header; 788322877Sjkim UINT32 PlatformInterrupt; 789322877Sjkim UINT8 Flags; 790322877Sjkim UINT8 Reserved1; 791322877Sjkim UINT64 BaseAddress; 792322877Sjkim UINT32 Length; 793322877Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 794322877Sjkim UINT64 PreserveMask; 795322877Sjkim UINT64 WriteMask; 796322877Sjkim UINT32 Latency; 797322877Sjkim UINT32 MaxAccessRate; 798322877Sjkim UINT32 MinTurnaroundTime; 799322877Sjkim ACPI_GENERIC_ADDRESS PlatformAckRegister; 800322877Sjkim UINT64 AckPreserveMask; 801322877Sjkim UINT64 AckSetMask; 802322877Sjkim UINT64 Reserved2; 803322877Sjkim ACPI_GENERIC_ADDRESS CmdCompleteRegister; 804322877Sjkim UINT64 CmdCompleteMask; 805322877Sjkim ACPI_GENERIC_ADDRESS CmdUpdateRegister; 806322877Sjkim UINT64 CmdUpdatePreserveMask; 807322877Sjkim UINT64 CmdUpdateSetMask; 808322877Sjkim ACPI_GENERIC_ADDRESS ErrorStatusRegister; 809322877Sjkim UINT64 ErrorStatusMask; 810322877Sjkim 811322877Sjkim} ACPI_PCCT_EXT_PCC_SLAVE; 812322877Sjkim 813322877Sjkim 814272444Sjkim/* Values for doorbell flags above */ 815272444Sjkim 816272444Sjkim#define ACPI_PCCT_INTERRUPT_POLARITY (1) 817272444Sjkim#define ACPI_PCCT_INTERRUPT_MODE (1<<1) 818272444Sjkim 819272444Sjkim 820227896Sjkim/* 821227896Sjkim * PCC memory structures (not part of the ACPI table) 822227896Sjkim */ 823227896Sjkim 824227896Sjkim/* Shared Memory Region */ 825227896Sjkim 826227896Sjkimtypedef struct acpi_pcct_shared_memory 827227896Sjkim{ 828227896Sjkim UINT32 Signature; 829227896Sjkim UINT16 Command; 830227896Sjkim UINT16 Status; 831227896Sjkim 832227896Sjkim} ACPI_PCCT_SHARED_MEMORY; 833227896Sjkim 834227896Sjkim 835322877Sjkim/* Extended PCC Subspace Shared Memory Region (ACPI 6.2) */ 836322877Sjkim 837322877Sjkimtypedef struct acpi_pcct_ext_pcc_shared_memory 838322877Sjkim{ 839322877Sjkim UINT32 Signature; 840322877Sjkim UINT32 Flags; 841322877Sjkim UINT32 Length; 842322877Sjkim UINT32 Command; 843322877Sjkim 844322877Sjkim} ACPI_PCCT_EXT_PCC_SHARED_MEMORY; 845322877Sjkim 846322877Sjkim 847227896Sjkim/******************************************************************************* 848227896Sjkim * 849227896Sjkim * PMTT - Platform Memory Topology Table (ACPI 5.0) 850227896Sjkim * Version 1 851227896Sjkim * 852227896Sjkim ******************************************************************************/ 853227896Sjkim 854227896Sjkimtypedef struct acpi_table_pmtt 855227896Sjkim{ 856227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 857227896Sjkim UINT32 Reserved; 858227896Sjkim 859227896Sjkim} ACPI_TABLE_PMTT; 860227896Sjkim 861227896Sjkim 862227896Sjkim/* Common header for PMTT subtables that follow main table */ 863227896Sjkim 864227896Sjkimtypedef struct acpi_pmtt_header 865227896Sjkim{ 866227896Sjkim UINT8 Type; 867227896Sjkim UINT8 Reserved1; 868227896Sjkim UINT16 Length; 869227896Sjkim UINT16 Flags; 870227896Sjkim UINT16 Reserved2; 871227896Sjkim 872227896Sjkim} ACPI_PMTT_HEADER; 873227896Sjkim 874227896Sjkim/* Values for Type field above */ 875227896Sjkim 876227896Sjkim#define ACPI_PMTT_TYPE_SOCKET 0 877227896Sjkim#define ACPI_PMTT_TYPE_CONTROLLER 1 878227896Sjkim#define ACPI_PMTT_TYPE_DIMM 2 879227896Sjkim#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 880227896Sjkim 881227896Sjkim/* Values for Flags field above */ 882227896Sjkim 883227896Sjkim#define ACPI_PMTT_TOP_LEVEL 0x0001 884227896Sjkim#define ACPI_PMTT_PHYSICAL 0x0002 885227896Sjkim#define ACPI_PMTT_MEMORY_TYPE 0x000C 886227896Sjkim 887227896Sjkim 888227896Sjkim/* 889227896Sjkim * PMTT subtables, correspond to Type in acpi_pmtt_header 890227896Sjkim */ 891227896Sjkim 892227896Sjkim 893227896Sjkim/* 0: Socket Structure */ 894227896Sjkim 895227896Sjkimtypedef struct acpi_pmtt_socket 896227896Sjkim{ 897227896Sjkim ACPI_PMTT_HEADER Header; 898227896Sjkim UINT16 SocketId; 899227896Sjkim UINT16 Reserved; 900227896Sjkim 901227896Sjkim} ACPI_PMTT_SOCKET; 902227896Sjkim 903227896Sjkim 904227896Sjkim/* 1: Memory Controller subtable */ 905227896Sjkim 906227896Sjkimtypedef struct acpi_pmtt_controller 907227896Sjkim{ 908227896Sjkim ACPI_PMTT_HEADER Header; 909227896Sjkim UINT32 ReadLatency; 910227896Sjkim UINT32 WriteLatency; 911227896Sjkim UINT32 ReadBandwidth; 912227896Sjkim UINT32 WriteBandwidth; 913227896Sjkim UINT16 AccessWidth; 914227896Sjkim UINT16 Alignment; 915227896Sjkim UINT16 Reserved; 916227896Sjkim UINT16 DomainCount; 917227896Sjkim 918227896Sjkim} ACPI_PMTT_CONTROLLER; 919227896Sjkim 920227896Sjkim/* 1a: Proximity Domain substructure */ 921227896Sjkim 922227896Sjkimtypedef struct acpi_pmtt_domain 923227896Sjkim{ 924227896Sjkim UINT32 ProximityDomain; 925227896Sjkim 926227896Sjkim} ACPI_PMTT_DOMAIN; 927227896Sjkim 928227896Sjkim 929227896Sjkim/* 2: Physical Component Identifier (DIMM) */ 930227896Sjkim 931227896Sjkimtypedef struct acpi_pmtt_physical_component 932227896Sjkim{ 933227896Sjkim ACPI_PMTT_HEADER Header; 934227896Sjkim UINT16 ComponentId; 935227896Sjkim UINT16 Reserved; 936227896Sjkim UINT32 MemorySize; 937227896Sjkim UINT32 BiosHandle; 938227896Sjkim 939227896Sjkim} ACPI_PMTT_PHYSICAL_COMPONENT; 940227896Sjkim 941227896Sjkim 942227896Sjkim/******************************************************************************* 943227896Sjkim * 944227896Sjkim * RASF - RAS Feature Table (ACPI 5.0) 945227896Sjkim * Version 1 946227896Sjkim * 947227896Sjkim ******************************************************************************/ 948227896Sjkim 949227896Sjkimtypedef struct acpi_table_rasf 950227896Sjkim{ 951227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 952227896Sjkim UINT8 ChannelId[12]; 953227896Sjkim 954227896Sjkim} ACPI_TABLE_RASF; 955227896Sjkim 956227896Sjkim/* RASF Platform Communication Channel Shared Memory Region */ 957227896Sjkim 958227896Sjkimtypedef struct acpi_rasf_shared_memory 959227896Sjkim{ 960227896Sjkim UINT32 Signature; 961227896Sjkim UINT16 Command; 962227896Sjkim UINT16 Status; 963246849Sjkim UINT16 Version; 964246849Sjkim UINT8 Capabilities[16]; 965246849Sjkim UINT8 SetCapabilities[16]; 966246849Sjkim UINT16 NumParameterBlocks; 967246849Sjkim UINT32 SetCapabilitiesStatus; 968227896Sjkim 969227896Sjkim} ACPI_RASF_SHARED_MEMORY; 970227896Sjkim 971246849Sjkim/* RASF Parameter Block Structure Header */ 972246849Sjkim 973246849Sjkimtypedef struct acpi_rasf_parameter_block 974246849Sjkim{ 975246849Sjkim UINT16 Type; 976246849Sjkim UINT16 Version; 977246849Sjkim UINT16 Length; 978246849Sjkim 979246849Sjkim} ACPI_RASF_PARAMETER_BLOCK; 980246849Sjkim 981246849Sjkim/* RASF Parameter Block Structure for PATROL_SCRUB */ 982246849Sjkim 983246849Sjkimtypedef struct acpi_rasf_patrol_scrub_parameter 984246849Sjkim{ 985246849Sjkim ACPI_RASF_PARAMETER_BLOCK Header; 986246849Sjkim UINT16 PatrolScrubCommand; 987246849Sjkim UINT64 RequestedAddressRange[2]; 988246849Sjkim UINT64 ActualAddressRange[2]; 989246849Sjkim UINT16 Flags; 990246849Sjkim UINT8 RequestedSpeed; 991246849Sjkim 992246849Sjkim} ACPI_RASF_PATROL_SCRUB_PARAMETER; 993246849Sjkim 994227896Sjkim/* Masks for Flags and Speed fields above */ 995227896Sjkim 996227896Sjkim#define ACPI_RASF_SCRUBBER_RUNNING 1 997227896Sjkim#define ACPI_RASF_SPEED (7<<1) 998246849Sjkim#define ACPI_RASF_SPEED_SLOW (0<<1) 999246849Sjkim#define ACPI_RASF_SPEED_MEDIUM (4<<1) 1000246849Sjkim#define ACPI_RASF_SPEED_FAST (7<<1) 1001227896Sjkim 1002227896Sjkim/* Channel Commands */ 1003227896Sjkim 1004227896Sjkimenum AcpiRasfCommands 1005227896Sjkim{ 1006246849Sjkim ACPI_RASF_EXECUTE_RASF_COMMAND = 1 1007227896Sjkim}; 1008227896Sjkim 1009246849Sjkim/* Platform RAS Capabilities */ 1010246849Sjkim 1011246849Sjkimenum AcpiRasfCapabiliities 1012246849Sjkim{ 1013246849Sjkim ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 1014246849Sjkim ACPI_SW_PATROL_SCRUB_EXPOSED = 1 1015246849Sjkim}; 1016246849Sjkim 1017246849Sjkim/* Patrol Scrub Commands */ 1018246849Sjkim 1019246849Sjkimenum AcpiRasfPatrolScrubCommands 1020246849Sjkim{ 1021246849Sjkim ACPI_RASF_GET_PATROL_PARAMETERS = 1, 1022246849Sjkim ACPI_RASF_START_PATROL_SCRUBBER = 2, 1023246849Sjkim ACPI_RASF_STOP_PATROL_SCRUBBER = 3 1024246849Sjkim}; 1025246849Sjkim 1026227896Sjkim/* Channel Command flags */ 1027227896Sjkim 1028227896Sjkim#define ACPI_RASF_GENERATE_SCI (1<<15) 1029227896Sjkim 1030227896Sjkim/* Status values */ 1031227896Sjkim 1032227896Sjkimenum AcpiRasfStatus 1033227896Sjkim{ 1034227896Sjkim ACPI_RASF_SUCCESS = 0, 1035227896Sjkim ACPI_RASF_NOT_VALID = 1, 1036227896Sjkim ACPI_RASF_NOT_SUPPORTED = 2, 1037227896Sjkim ACPI_RASF_BUSY = 3, 1038227896Sjkim ACPI_RASF_FAILED = 4, 1039227896Sjkim ACPI_RASF_ABORTED = 5, 1040227896Sjkim ACPI_RASF_INVALID_DATA = 6 1041227896Sjkim}; 1042227896Sjkim 1043227896Sjkim/* Status flags */ 1044227896Sjkim 1045227896Sjkim#define ACPI_RASF_COMMAND_COMPLETE (1) 1046227896Sjkim#define ACPI_RASF_SCI_DOORBELL (1<<1) 1047227896Sjkim#define ACPI_RASF_ERROR (1<<2) 1048227896Sjkim#define ACPI_RASF_STATUS (0x1F<<3) 1049227896Sjkim 1050227896Sjkim 1051245582Sjkim/******************************************************************************* 1052245582Sjkim * 1053283092Sjkim * STAO - Status Override Table (_STA override) - ACPI 6.0 1054283092Sjkim * Version 1 1055283092Sjkim * 1056283092Sjkim * Conforms to "ACPI Specification for Status Override Table" 1057283092Sjkim * 6 January 2015 1058283092Sjkim * 1059283092Sjkim ******************************************************************************/ 1060283092Sjkim 1061283092Sjkimtypedef struct acpi_table_stao 1062283092Sjkim{ 1063283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1064283092Sjkim UINT8 IgnoreUart; 1065283092Sjkim 1066283092Sjkim} ACPI_TABLE_STAO; 1067283092Sjkim 1068283092Sjkim 1069283092Sjkim/******************************************************************************* 1070283092Sjkim * 1071283092Sjkim * WPBT - Windows Platform Environment Table (ACPI 6.0) 1072283092Sjkim * Version 1 1073283092Sjkim * 1074283092Sjkim * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 1075283092Sjkim * 1076283092Sjkim ******************************************************************************/ 1077283092Sjkim 1078283092Sjkimtypedef struct acpi_table_wpbt 1079283092Sjkim{ 1080283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1081283092Sjkim UINT32 HandoffSize; 1082283092Sjkim UINT64 HandoffAddress; 1083283092Sjkim UINT8 Layout; 1084283092Sjkim UINT8 Type; 1085283092Sjkim UINT16 ArgumentsLength; 1086283092Sjkim 1087283092Sjkim} ACPI_TABLE_WPBT; 1088283092Sjkim 1089283092Sjkim 1090283092Sjkim/******************************************************************************* 1091283092Sjkim * 1092283092Sjkim * XENV - Xen Environment Table (ACPI 6.0) 1093283092Sjkim * Version 1 1094283092Sjkim * 1095283092Sjkim * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 1096283092Sjkim * 1097283092Sjkim ******************************************************************************/ 1098283092Sjkim 1099283092Sjkimtypedef struct acpi_table_xenv 1100283092Sjkim{ 1101283092Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1102283092Sjkim UINT64 GrantTableAddress; 1103283092Sjkim UINT64 GrantTableSize; 1104283092Sjkim UINT32 EventInterrupt; 1105283092Sjkim UINT8 EventFlags; 1106283092Sjkim 1107283092Sjkim} ACPI_TABLE_XENV; 1108283092Sjkim 1109283092Sjkim 1110227896Sjkim/* Reset to default packing */ 1111227896Sjkim 1112227896Sjkim#pragma pack() 1113227896Sjkim 1114227896Sjkim#endif /* __ACTBL3_H__ */ 1115