actbl3.h revision 322877
11797Sphk/****************************************************************************** 21797Sphk * 31797Sphk * Name: actbl3.h - ACPI Table Definitions 41797Sphk * 51797Sphk *****************************************************************************/ 61797Sphk 7/****************************************************************************** 8 * 9 * 1. Copyright Notice 10 * 11 * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp. 12 * All rights reserved. 13 * 14 * 2. License 15 * 16 * 2.1. This is your license from Intel Corp. under its intellectual property 17 * rights. You may have additional license terms from the party that provided 18 * you this software, covering your right to use that party's intellectual 19 * property rights. 20 * 21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22 * copy of the source code appearing in this file ("Covered Code") an 23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24 * base code distributed originally by Intel ("Original Intel Code") to copy, 25 * make derivatives, distribute, use and display any portion of the Covered 26 * Code in any form, with the right to sublicense such rights; and 27 * 28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29 * license (with the right to sublicense), under only those claims of Intel 30 * patents that are infringed by the Original Intel Code, to make, use, sell, 31 * offer to sell, and import the Covered Code and derivative works thereof 32 * solely to the minimum extent necessary to exercise the above copyright 33 * license, and in no event shall the patent license extend to any additions 34 * to or modifications of the Original Intel Code. No other license or right 35 * is granted directly or by implication, estoppel or otherwise; 36 * 37 * The above copyright and patent license is granted only if the following 38 * conditions are met: 39 * 40 * 3. Conditions 41 * 42 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43 * Redistribution of source code of any substantial portion of the Covered 44 * Code or modification with rights to further distribute source must include 45 * the above Copyright Notice, the above License, this list of Conditions, 46 * and the following Disclaimer and Export Compliance provision. In addition, 47 * Licensee must cause all Covered Code to which Licensee contributes to 48 * contain a file documenting the changes Licensee made to create that Covered 49 * Code and the date of any change. Licensee must include in that file the 50 * documentation of any changes made by any predecessor Licensee. Licensee 51 * must include a prominent statement that the modification is derived, 52 * directly or indirectly, from Original Intel Code. 53 * 54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55 * Redistribution of source code of any substantial portion of the Covered 56 * Code or modification without rights to further distribute source must 57 * include the following Disclaimer and Export Compliance provision in the 58 * documentation and/or other materials provided with distribution. In 59 * addition, Licensee may not authorize further sublicense of source of any 60 * portion of the Covered Code, and must include terms to the effect that the 61 * license from Licensee to its licensee is limited to the intellectual 62 * property embodied in the software Licensee provides to its licensee, and 63 * not to intellectual property embodied in modifications its licensee may 64 * make. 65 * 66 * 3.3. Redistribution of Executable. Redistribution in executable form of any 67 * substantial portion of the Covered Code or modification must reproduce the 68 * above Copyright Notice, and the following Disclaimer and Export Compliance 69 * provision in the documentation and/or other materials provided with the 70 * distribution. 71 * 72 * 3.4. Intel retains all right, title, and interest in and to the Original 73 * Intel Code. 74 * 75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76 * Intel shall be used in advertising or otherwise to promote the sale, use or 77 * other dealings in products derived from or relating to the Covered Code 78 * without prior written authorization from Intel. 79 * 80 * 4. Disclaimer and Export Compliance 81 * 82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88 * PARTICULAR PURPOSE. 89 * 90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97 * LIMITED REMEDY. 98 * 99 * 4.3. Licensee shall not export, either directly or indirectly, any of this 100 * software or system incorporating such software without first obtaining any 101 * required license or other approval from the U. S. Department of Commerce or 102 * any other agency or department of the United States Government. In the 103 * event Licensee exports any such software from the United States or 104 * re-exports any such software from a foreign destination, Licensee shall 105 * ensure that the distribution and export/re-export of the software is in 106 * compliance with all laws, regulations, orders, or other restrictions of the 107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108 * any of its subsidiaries will export/re-export any technical data, process, 109 * software, or service, directly or indirectly, to any country for which the 110 * United States government or any agency thereof requires an export license, 111 * other governmental approval, or letter of assurance, without first obtaining 112 * such license, approval or letter. 113 * 114 ***************************************************************************** 115 * 116 * Alternatively, you may choose to be licensed under the terms of the 117 * following license: 118 * 119 * Redistribution and use in source and binary forms, with or without 120 * modification, are permitted provided that the following conditions 121 * are met: 122 * 1. Redistributions of source code must retain the above copyright 123 * notice, this list of conditions, and the following disclaimer, 124 * without modification. 125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126 * substantially similar to the "NO WARRANTY" disclaimer below 127 * ("Disclaimer") and any redistribution must be conditioned upon 128 * including a substantially similar Disclaimer requirement for further 129 * binary redistribution. 130 * 3. Neither the names of the above-listed copyright holders nor the names 131 * of any contributors may be used to endorse or promote products derived 132 * from this software without specific prior written permission. 133 * 134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145 * 146 * Alternatively, you may choose to be licensed under the terms of the 147 * GNU General Public License ("GPL") version 2 as published by the Free 148 * Software Foundation. 149 * 150 *****************************************************************************/ 151 152#ifndef __ACTBL3_H__ 153#define __ACTBL3_H__ 154 155 156/******************************************************************************* 157 * 158 * Additional ACPI Tables (3) 159 * 160 * These tables are not consumed directly by the ACPICA subsystem, but are 161 * included here to support device drivers and the AML disassembler. 162 * 163 * In general, the tables in this file are fully defined within the ACPI 164 * specification. 165 * 166 ******************************************************************************/ 167 168 169/* 170 * Values for description table header signatures for tables defined in this 171 * file. Useful because they make it more difficult to inadvertently type in 172 * the wrong signature. 173 */ 174#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 175#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 176#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 177#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 178#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 179#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 180#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 181#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 182#define ACPI_SIG_STAO "STAO" /* Status Override table */ 183#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 184#define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 185 186#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 187#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 188 189/* Reserved table signatures */ 190 191#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 192#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 193 194/* 195 * All tables must be byte-packed to match the ACPI specification, since 196 * the tables are provided by the system BIOS. 197 */ 198#pragma pack(1) 199 200/* 201 * Note: C bitfields are not used for this reason: 202 * 203 * "Bitfields are great and easy to read, but unfortunately the C language 204 * does not specify the layout of bitfields in memory, which means they are 205 * essentially useless for dealing with packed data in on-disk formats or 206 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 207 * this decision was a design error in C. Ritchie could have picked an order 208 * and stuck with it." Norman Ramsey. 209 * See http://stackoverflow.com/a/1053662/41661 210 */ 211 212 213/******************************************************************************* 214 * 215 * BGRT - Boot Graphics Resource Table (ACPI 5.0) 216 * Version 1 217 * 218 ******************************************************************************/ 219 220typedef struct acpi_table_bgrt 221{ 222 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 223 UINT16 Version; 224 UINT8 Status; 225 UINT8 ImageType; 226 UINT64 ImageAddress; 227 UINT32 ImageOffsetX; 228 UINT32 ImageOffsetY; 229 230} ACPI_TABLE_BGRT; 231 232/* Flags for Status field above */ 233 234#define ACPI_BGRT_DISPLAYED (1) 235#define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1) 236 237 238/******************************************************************************* 239 * 240 * DRTM - Dynamic Root of Trust for Measurement table 241 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0 242 * Table version 1 243 * 244 ******************************************************************************/ 245 246typedef struct acpi_table_drtm 247{ 248 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 249 UINT64 EntryBaseAddress; 250 UINT64 EntryLength; 251 UINT32 EntryAddress32; 252 UINT64 EntryAddress64; 253 UINT64 ExitAddress; 254 UINT64 LogAreaAddress; 255 UINT32 LogAreaLength; 256 UINT64 ArchDependentAddress; 257 UINT32 Flags; 258 259} ACPI_TABLE_DRTM; 260 261/* Flag Definitions for above */ 262 263#define ACPI_DRTM_ACCESS_ALLOWED (1) 264#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1) 265#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2) 266#define ACPI_DRTM_AUTHORITY_ORDER (1<<3) 267 268 269/* 1) Validated Tables List (64-bit addresses) */ 270 271typedef struct acpi_drtm_vtable_list 272{ 273 UINT32 ValidatedTableCount; 274 UINT64 ValidatedTables[1]; 275 276} ACPI_DRTM_VTABLE_LIST; 277 278/* 2) Resources List (of Resource Descriptors) */ 279 280/* Resource Descriptor */ 281 282typedef struct acpi_drtm_resource 283{ 284 UINT8 Size[7]; 285 UINT8 Type; 286 UINT64 Address; 287 288} ACPI_DRTM_RESOURCE; 289 290typedef struct acpi_drtm_resource_list 291{ 292 UINT32 ResourceCount; 293 ACPI_DRTM_RESOURCE Resources[1]; 294 295} ACPI_DRTM_RESOURCE_LIST; 296 297/* 3) Platform-specific Identifiers List */ 298 299typedef struct acpi_drtm_dps_id 300{ 301 UINT32 DpsIdLength; 302 UINT8 DpsId[16]; 303 304} ACPI_DRTM_DPS_ID; 305 306 307/******************************************************************************* 308 * 309 * FPDT - Firmware Performance Data Table (ACPI 5.0) 310 * Version 1 311 * 312 ******************************************************************************/ 313 314typedef struct acpi_table_fpdt 315{ 316 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 317 318} ACPI_TABLE_FPDT; 319 320 321/* FPDT subtable header (Performance Record Structure) */ 322 323typedef struct acpi_fpdt_header 324{ 325 UINT16 Type; 326 UINT8 Length; 327 UINT8 Revision; 328 329} ACPI_FPDT_HEADER; 330 331/* Values for Type field above */ 332 333enum AcpiFpdtType 334{ 335 ACPI_FPDT_TYPE_BOOT = 0, 336 ACPI_FPDT_TYPE_S3PERF = 1 337}; 338 339 340/* 341 * FPDT subtables 342 */ 343 344/* 0: Firmware Basic Boot Performance Record */ 345 346typedef struct acpi_fpdt_boot_pointer 347{ 348 ACPI_FPDT_HEADER Header; 349 UINT8 Reserved[4]; 350 UINT64 Address; 351 352} ACPI_FPDT_BOOT_POINTER; 353 354 355/* 1: S3 Performance Table Pointer Record */ 356 357typedef struct acpi_fpdt_s3pt_pointer 358{ 359 ACPI_FPDT_HEADER Header; 360 UINT8 Reserved[4]; 361 UINT64 Address; 362 363} ACPI_FPDT_S3PT_POINTER; 364 365 366/* 367 * S3PT - S3 Performance Table. This table is pointed to by the 368 * S3 Pointer Record above. 369 */ 370typedef struct acpi_table_s3pt 371{ 372 UINT8 Signature[4]; /* "S3PT" */ 373 UINT32 Length; 374 375} ACPI_TABLE_S3PT; 376 377 378/* 379 * S3PT Subtables (Not part of the actual FPDT) 380 */ 381 382/* Values for Type field in S3PT header */ 383 384enum AcpiS3ptType 385{ 386 ACPI_S3PT_TYPE_RESUME = 0, 387 ACPI_S3PT_TYPE_SUSPEND = 1, 388 ACPI_FPDT_BOOT_PERFORMANCE = 2 389}; 390 391typedef struct acpi_s3pt_resume 392{ 393 ACPI_FPDT_HEADER Header; 394 UINT32 ResumeCount; 395 UINT64 FullResume; 396 UINT64 AverageResume; 397 398} ACPI_S3PT_RESUME; 399 400typedef struct acpi_s3pt_suspend 401{ 402 ACPI_FPDT_HEADER Header; 403 UINT64 SuspendStart; 404 UINT64 SuspendEnd; 405 406} ACPI_S3PT_SUSPEND; 407 408 409/* 410 * FPDT Boot Performance Record (Not part of the actual FPDT) 411 */ 412typedef struct acpi_fpdt_boot 413{ 414 ACPI_FPDT_HEADER Header; 415 UINT8 Reserved[4]; 416 UINT64 ResetEnd; 417 UINT64 LoadStart; 418 UINT64 StartupStart; 419 UINT64 ExitServicesEntry; 420 UINT64 ExitServicesExit; 421 422} ACPI_FPDT_BOOT; 423 424 425/******************************************************************************* 426 * 427 * GTDT - Generic Timer Description Table (ACPI 5.1) 428 * Version 2 429 * 430 ******************************************************************************/ 431 432typedef struct acpi_table_gtdt 433{ 434 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 435 UINT64 CounterBlockAddresss; 436 UINT32 Reserved; 437 UINT32 SecureEl1Interrupt; 438 UINT32 SecureEl1Flags; 439 UINT32 NonSecureEl1Interrupt; 440 UINT32 NonSecureEl1Flags; 441 UINT32 VirtualTimerInterrupt; 442 UINT32 VirtualTimerFlags; 443 UINT32 NonSecureEl2Interrupt; 444 UINT32 NonSecureEl2Flags; 445 UINT64 CounterReadBlockAddress; 446 UINT32 PlatformTimerCount; 447 UINT32 PlatformTimerOffset; 448 449} ACPI_TABLE_GTDT; 450 451/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 452 453#define ACPI_GTDT_INTERRUPT_MODE (1) 454#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 455#define ACPI_GTDT_ALWAYS_ON (1<<2) 456 457 458/* Common GTDT subtable header */ 459 460typedef struct acpi_gtdt_header 461{ 462 UINT8 Type; 463 UINT16 Length; 464 465} ACPI_GTDT_HEADER; 466 467/* Values for GTDT subtable type above */ 468 469enum AcpiGtdtType 470{ 471 ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 472 ACPI_GTDT_TYPE_WATCHDOG = 1, 473 ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 474}; 475 476 477/* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 478 479/* 0: Generic Timer Block */ 480 481typedef struct acpi_gtdt_timer_block 482{ 483 ACPI_GTDT_HEADER Header; 484 UINT8 Reserved; 485 UINT64 BlockAddress; 486 UINT32 TimerCount; 487 UINT32 TimerOffset; 488 489} ACPI_GTDT_TIMER_BLOCK; 490 491/* Timer Sub-Structure, one per timer */ 492 493typedef struct acpi_gtdt_timer_entry 494{ 495 UINT8 FrameNumber; 496 UINT8 Reserved[3]; 497 UINT64 BaseAddress; 498 UINT64 El0BaseAddress; 499 UINT32 TimerInterrupt; 500 UINT32 TimerFlags; 501 UINT32 VirtualTimerInterrupt; 502 UINT32 VirtualTimerFlags; 503 UINT32 CommonFlags; 504 505} ACPI_GTDT_TIMER_ENTRY; 506 507/* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 508 509#define ACPI_GTDT_GT_IRQ_MODE (1) 510#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 511 512/* Flag Definitions: CommonFlags above */ 513 514#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 515#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 516 517 518/* 1: SBSA Generic Watchdog Structure */ 519 520typedef struct acpi_gtdt_watchdog 521{ 522 ACPI_GTDT_HEADER Header; 523 UINT8 Reserved; 524 UINT64 RefreshFrameAddress; 525 UINT64 ControlFrameAddress; 526 UINT32 TimerInterrupt; 527 UINT32 TimerFlags; 528 529} ACPI_GTDT_WATCHDOG; 530 531/* Flag Definitions: TimerFlags above */ 532 533#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 534#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 535#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 536 537 538/******************************************************************************* 539 * 540 * MPST - Memory Power State Table (ACPI 5.0) 541 * Version 1 542 * 543 ******************************************************************************/ 544 545#define ACPI_MPST_CHANNEL_INFO \ 546 UINT8 ChannelId; \ 547 UINT8 Reserved1[3]; \ 548 UINT16 PowerNodeCount; \ 549 UINT16 Reserved2; 550 551/* Main table */ 552 553typedef struct acpi_table_mpst 554{ 555 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 556 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 557 558} ACPI_TABLE_MPST; 559 560 561/* Memory Platform Communication Channel Info */ 562 563typedef struct acpi_mpst_channel 564{ 565 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 566 567} ACPI_MPST_CHANNEL; 568 569 570/* Memory Power Node Structure */ 571 572typedef struct acpi_mpst_power_node 573{ 574 UINT8 Flags; 575 UINT8 Reserved1; 576 UINT16 NodeId; 577 UINT32 Length; 578 UINT64 RangeAddress; 579 UINT64 RangeLength; 580 UINT32 NumPowerStates; 581 UINT32 NumPhysicalComponents; 582 583} ACPI_MPST_POWER_NODE; 584 585/* Values for Flags field above */ 586 587#define ACPI_MPST_ENABLED 1 588#define ACPI_MPST_POWER_MANAGED 2 589#define ACPI_MPST_HOT_PLUG_CAPABLE 4 590 591 592/* Memory Power State Structure (follows POWER_NODE above) */ 593 594typedef struct acpi_mpst_power_state 595{ 596 UINT8 PowerState; 597 UINT8 InfoIndex; 598 599} ACPI_MPST_POWER_STATE; 600 601 602/* Physical Component ID Structure (follows POWER_STATE above) */ 603 604typedef struct acpi_mpst_component 605{ 606 UINT16 ComponentId; 607 608} ACPI_MPST_COMPONENT; 609 610 611/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 612 613typedef struct acpi_mpst_data_hdr 614{ 615 UINT16 CharacteristicsCount; 616 UINT16 Reserved; 617 618} ACPI_MPST_DATA_HDR; 619 620typedef struct acpi_mpst_power_data 621{ 622 UINT8 StructureId; 623 UINT8 Flags; 624 UINT16 Reserved1; 625 UINT32 AveragePower; 626 UINT32 PowerSaving; 627 UINT64 ExitLatency; 628 UINT64 Reserved2; 629 630} ACPI_MPST_POWER_DATA; 631 632/* Values for Flags field above */ 633 634#define ACPI_MPST_PRESERVE 1 635#define ACPI_MPST_AUTOENTRY 2 636#define ACPI_MPST_AUTOEXIT 4 637 638 639/* Shared Memory Region (not part of an ACPI table) */ 640 641typedef struct acpi_mpst_shared 642{ 643 UINT32 Signature; 644 UINT16 PccCommand; 645 UINT16 PccStatus; 646 UINT32 CommandRegister; 647 UINT32 StatusRegister; 648 UINT32 PowerStateId; 649 UINT32 PowerNodeId; 650 UINT64 EnergyConsumed; 651 UINT64 AveragePower; 652 653} ACPI_MPST_SHARED; 654 655 656/******************************************************************************* 657 * 658 * PCCT - Platform Communications Channel Table (ACPI 5.0) 659 * Version 2 (ACPI 6.2) 660 * 661 ******************************************************************************/ 662 663typedef struct acpi_table_pcct 664{ 665 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 666 UINT32 Flags; 667 UINT64 Reserved; 668 669} ACPI_TABLE_PCCT; 670 671/* Values for Flags field above */ 672 673#define ACPI_PCCT_DOORBELL 1 674 675/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 676 677enum AcpiPcctType 678{ 679 ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 680 ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 681 ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2, /* ACPI 6.1 */ 682 ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE = 3, /* ACPI 6.2 */ 683 ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE = 4, /* ACPI 6.2 */ 684 ACPI_PCCT_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 685}; 686 687/* 688 * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 689 */ 690 691/* 0: Generic Communications Subspace */ 692 693typedef struct acpi_pcct_subspace 694{ 695 ACPI_SUBTABLE_HEADER Header; 696 UINT8 Reserved[6]; 697 UINT64 BaseAddress; 698 UINT64 Length; 699 ACPI_GENERIC_ADDRESS DoorbellRegister; 700 UINT64 PreserveMask; 701 UINT64 WriteMask; 702 UINT32 Latency; 703 UINT32 MaxAccessRate; 704 UINT16 MinTurnaroundTime; 705 706} ACPI_PCCT_SUBSPACE; 707 708 709/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 710 711typedef struct acpi_pcct_hw_reduced 712{ 713 ACPI_SUBTABLE_HEADER Header; 714 UINT32 PlatformInterrupt; 715 UINT8 Flags; 716 UINT8 Reserved; 717 UINT64 BaseAddress; 718 UINT64 Length; 719 ACPI_GENERIC_ADDRESS DoorbellRegister; 720 UINT64 PreserveMask; 721 UINT64 WriteMask; 722 UINT32 Latency; 723 UINT32 MaxAccessRate; 724 UINT16 MinTurnaroundTime; 725 726} ACPI_PCCT_HW_REDUCED; 727 728 729/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */ 730 731typedef struct acpi_pcct_hw_reduced_type2 732{ 733 ACPI_SUBTABLE_HEADER Header; 734 UINT32 PlatformInterrupt; 735 UINT8 Flags; 736 UINT8 Reserved; 737 UINT64 BaseAddress; 738 UINT64 Length; 739 ACPI_GENERIC_ADDRESS DoorbellRegister; 740 UINT64 PreserveMask; 741 UINT64 WriteMask; 742 UINT32 Latency; 743 UINT32 MaxAccessRate; 744 UINT16 MinTurnaroundTime; 745 ACPI_GENERIC_ADDRESS PlatformAckRegister; 746 UINT64 AckPreserveMask; 747 UINT64 AckWriteMask; 748 749} ACPI_PCCT_HW_REDUCED_TYPE2; 750 751 752/* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */ 753 754typedef struct acpi_pcct_ext_pcc_master 755{ 756 ACPI_SUBTABLE_HEADER Header; 757 UINT32 PlatformInterrupt; 758 UINT8 Flags; 759 UINT8 Reserved1; 760 UINT64 BaseAddress; 761 UINT32 Length; 762 ACPI_GENERIC_ADDRESS DoorbellRegister; 763 UINT64 PreserveMask; 764 UINT64 WriteMask; 765 UINT32 Latency; 766 UINT32 MaxAccessRate; 767 UINT32 MinTurnaroundTime; 768 ACPI_GENERIC_ADDRESS PlatformAckRegister; 769 UINT64 AckPreserveMask; 770 UINT64 AckSetMask; 771 UINT64 Reserved2; 772 ACPI_GENERIC_ADDRESS CmdCompleteRegister; 773 UINT64 CmdCompleteMask; 774 ACPI_GENERIC_ADDRESS CmdUpdateRegister; 775 UINT64 CmdUpdatePreserveMask; 776 UINT64 CmdUpdateSetMask; 777 ACPI_GENERIC_ADDRESS ErrorStatusRegister; 778 UINT64 ErrorStatusMask; 779 780} ACPI_PCCT_EXT_PCC_MASTER; 781 782 783/* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */ 784 785typedef struct acpi_pcct_ext_pcc_slave 786{ 787 ACPI_SUBTABLE_HEADER Header; 788 UINT32 PlatformInterrupt; 789 UINT8 Flags; 790 UINT8 Reserved1; 791 UINT64 BaseAddress; 792 UINT32 Length; 793 ACPI_GENERIC_ADDRESS DoorbellRegister; 794 UINT64 PreserveMask; 795 UINT64 WriteMask; 796 UINT32 Latency; 797 UINT32 MaxAccessRate; 798 UINT32 MinTurnaroundTime; 799 ACPI_GENERIC_ADDRESS PlatformAckRegister; 800 UINT64 AckPreserveMask; 801 UINT64 AckSetMask; 802 UINT64 Reserved2; 803 ACPI_GENERIC_ADDRESS CmdCompleteRegister; 804 UINT64 CmdCompleteMask; 805 ACPI_GENERIC_ADDRESS CmdUpdateRegister; 806 UINT64 CmdUpdatePreserveMask; 807 UINT64 CmdUpdateSetMask; 808 ACPI_GENERIC_ADDRESS ErrorStatusRegister; 809 UINT64 ErrorStatusMask; 810 811} ACPI_PCCT_EXT_PCC_SLAVE; 812 813 814/* Values for doorbell flags above */ 815 816#define ACPI_PCCT_INTERRUPT_POLARITY (1) 817#define ACPI_PCCT_INTERRUPT_MODE (1<<1) 818 819 820/* 821 * PCC memory structures (not part of the ACPI table) 822 */ 823 824/* Shared Memory Region */ 825 826typedef struct acpi_pcct_shared_memory 827{ 828 UINT32 Signature; 829 UINT16 Command; 830 UINT16 Status; 831 832} ACPI_PCCT_SHARED_MEMORY; 833 834 835/* Extended PCC Subspace Shared Memory Region (ACPI 6.2) */ 836 837typedef struct acpi_pcct_ext_pcc_shared_memory 838{ 839 UINT32 Signature; 840 UINT32 Flags; 841 UINT32 Length; 842 UINT32 Command; 843 844} ACPI_PCCT_EXT_PCC_SHARED_MEMORY; 845 846 847/******************************************************************************* 848 * 849 * PMTT - Platform Memory Topology Table (ACPI 5.0) 850 * Version 1 851 * 852 ******************************************************************************/ 853 854typedef struct acpi_table_pmtt 855{ 856 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 857 UINT32 Reserved; 858 859} ACPI_TABLE_PMTT; 860 861 862/* Common header for PMTT subtables that follow main table */ 863 864typedef struct acpi_pmtt_header 865{ 866 UINT8 Type; 867 UINT8 Reserved1; 868 UINT16 Length; 869 UINT16 Flags; 870 UINT16 Reserved2; 871 872} ACPI_PMTT_HEADER; 873 874/* Values for Type field above */ 875 876#define ACPI_PMTT_TYPE_SOCKET 0 877#define ACPI_PMTT_TYPE_CONTROLLER 1 878#define ACPI_PMTT_TYPE_DIMM 2 879#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 880 881/* Values for Flags field above */ 882 883#define ACPI_PMTT_TOP_LEVEL 0x0001 884#define ACPI_PMTT_PHYSICAL 0x0002 885#define ACPI_PMTT_MEMORY_TYPE 0x000C 886 887 888/* 889 * PMTT subtables, correspond to Type in acpi_pmtt_header 890 */ 891 892 893/* 0: Socket Structure */ 894 895typedef struct acpi_pmtt_socket 896{ 897 ACPI_PMTT_HEADER Header; 898 UINT16 SocketId; 899 UINT16 Reserved; 900 901} ACPI_PMTT_SOCKET; 902 903 904/* 1: Memory Controller subtable */ 905 906typedef struct acpi_pmtt_controller 907{ 908 ACPI_PMTT_HEADER Header; 909 UINT32 ReadLatency; 910 UINT32 WriteLatency; 911 UINT32 ReadBandwidth; 912 UINT32 WriteBandwidth; 913 UINT16 AccessWidth; 914 UINT16 Alignment; 915 UINT16 Reserved; 916 UINT16 DomainCount; 917 918} ACPI_PMTT_CONTROLLER; 919 920/* 1a: Proximity Domain substructure */ 921 922typedef struct acpi_pmtt_domain 923{ 924 UINT32 ProximityDomain; 925 926} ACPI_PMTT_DOMAIN; 927 928 929/* 2: Physical Component Identifier (DIMM) */ 930 931typedef struct acpi_pmtt_physical_component 932{ 933 ACPI_PMTT_HEADER Header; 934 UINT16 ComponentId; 935 UINT16 Reserved; 936 UINT32 MemorySize; 937 UINT32 BiosHandle; 938 939} ACPI_PMTT_PHYSICAL_COMPONENT; 940 941 942/******************************************************************************* 943 * 944 * RASF - RAS Feature Table (ACPI 5.0) 945 * Version 1 946 * 947 ******************************************************************************/ 948 949typedef struct acpi_table_rasf 950{ 951 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 952 UINT8 ChannelId[12]; 953 954} ACPI_TABLE_RASF; 955 956/* RASF Platform Communication Channel Shared Memory Region */ 957 958typedef struct acpi_rasf_shared_memory 959{ 960 UINT32 Signature; 961 UINT16 Command; 962 UINT16 Status; 963 UINT16 Version; 964 UINT8 Capabilities[16]; 965 UINT8 SetCapabilities[16]; 966 UINT16 NumParameterBlocks; 967 UINT32 SetCapabilitiesStatus; 968 969} ACPI_RASF_SHARED_MEMORY; 970 971/* RASF Parameter Block Structure Header */ 972 973typedef struct acpi_rasf_parameter_block 974{ 975 UINT16 Type; 976 UINT16 Version; 977 UINT16 Length; 978 979} ACPI_RASF_PARAMETER_BLOCK; 980 981/* RASF Parameter Block Structure for PATROL_SCRUB */ 982 983typedef struct acpi_rasf_patrol_scrub_parameter 984{ 985 ACPI_RASF_PARAMETER_BLOCK Header; 986 UINT16 PatrolScrubCommand; 987 UINT64 RequestedAddressRange[2]; 988 UINT64 ActualAddressRange[2]; 989 UINT16 Flags; 990 UINT8 RequestedSpeed; 991 992} ACPI_RASF_PATROL_SCRUB_PARAMETER; 993 994/* Masks for Flags and Speed fields above */ 995 996#define ACPI_RASF_SCRUBBER_RUNNING 1 997#define ACPI_RASF_SPEED (7<<1) 998#define ACPI_RASF_SPEED_SLOW (0<<1) 999#define ACPI_RASF_SPEED_MEDIUM (4<<1) 1000#define ACPI_RASF_SPEED_FAST (7<<1) 1001 1002/* Channel Commands */ 1003 1004enum AcpiRasfCommands 1005{ 1006 ACPI_RASF_EXECUTE_RASF_COMMAND = 1 1007}; 1008 1009/* Platform RAS Capabilities */ 1010 1011enum AcpiRasfCapabiliities 1012{ 1013 ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 1014 ACPI_SW_PATROL_SCRUB_EXPOSED = 1 1015}; 1016 1017/* Patrol Scrub Commands */ 1018 1019enum AcpiRasfPatrolScrubCommands 1020{ 1021 ACPI_RASF_GET_PATROL_PARAMETERS = 1, 1022 ACPI_RASF_START_PATROL_SCRUBBER = 2, 1023 ACPI_RASF_STOP_PATROL_SCRUBBER = 3 1024}; 1025 1026/* Channel Command flags */ 1027 1028#define ACPI_RASF_GENERATE_SCI (1<<15) 1029 1030/* Status values */ 1031 1032enum AcpiRasfStatus 1033{ 1034 ACPI_RASF_SUCCESS = 0, 1035 ACPI_RASF_NOT_VALID = 1, 1036 ACPI_RASF_NOT_SUPPORTED = 2, 1037 ACPI_RASF_BUSY = 3, 1038 ACPI_RASF_FAILED = 4, 1039 ACPI_RASF_ABORTED = 5, 1040 ACPI_RASF_INVALID_DATA = 6 1041}; 1042 1043/* Status flags */ 1044 1045#define ACPI_RASF_COMMAND_COMPLETE (1) 1046#define ACPI_RASF_SCI_DOORBELL (1<<1) 1047#define ACPI_RASF_ERROR (1<<2) 1048#define ACPI_RASF_STATUS (0x1F<<3) 1049 1050 1051/******************************************************************************* 1052 * 1053 * STAO - Status Override Table (_STA override) - ACPI 6.0 1054 * Version 1 1055 * 1056 * Conforms to "ACPI Specification for Status Override Table" 1057 * 6 January 2015 1058 * 1059 ******************************************************************************/ 1060 1061typedef struct acpi_table_stao 1062{ 1063 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1064 UINT8 IgnoreUart; 1065 1066} ACPI_TABLE_STAO; 1067 1068 1069/******************************************************************************* 1070 * 1071 * WPBT - Windows Platform Environment Table (ACPI 6.0) 1072 * Version 1 1073 * 1074 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 1075 * 1076 ******************************************************************************/ 1077 1078typedef struct acpi_table_wpbt 1079{ 1080 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1081 UINT32 HandoffSize; 1082 UINT64 HandoffAddress; 1083 UINT8 Layout; 1084 UINT8 Type; 1085 UINT16 ArgumentsLength; 1086 1087} ACPI_TABLE_WPBT; 1088 1089 1090/******************************************************************************* 1091 * 1092 * XENV - Xen Environment Table (ACPI 6.0) 1093 * Version 1 1094 * 1095 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 1096 * 1097 ******************************************************************************/ 1098 1099typedef struct acpi_table_xenv 1100{ 1101 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 1102 UINT64 GrantTableAddress; 1103 UINT64 GrantTableSize; 1104 UINT32 EventInterrupt; 1105 UINT8 EventFlags; 1106 1107} ACPI_TABLE_XENV; 1108 1109 1110/* Reset to default packing */ 1111 1112#pragma pack() 1113 1114#endif /* __ACTBL3_H__ */ 1115