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