actbl3.h revision 306536
1/****************************************************************************** 2 * 3 * Name: actbl3.h - ACPI Table Definitions 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2016, 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 (Performance Record Structure) */ 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_pointer 234{ 235 ACPI_FPDT_HEADER Header; 236 UINT8 Reserved[4]; 237 UINT64 Address; 238 239} ACPI_FPDT_BOOT_POINTER; 240 241 242/* 1: S3 Performance Table Pointer Record */ 243 244typedef struct acpi_fpdt_s3pt_pointer 245{ 246 ACPI_FPDT_HEADER Header; 247 UINT8 Reserved[4]; 248 UINT64 Address; 249 250} ACPI_FPDT_S3PT_POINTER; 251 252 253/* 254 * S3PT - S3 Performance Table. This table is pointed to by the 255 * S3 Pointer Record above. 256 */ 257typedef struct acpi_table_s3pt 258{ 259 UINT8 Signature[4]; /* "S3PT" */ 260 UINT32 Length; 261 262} ACPI_TABLE_S3PT; 263 264 265/* 266 * S3PT Subtables (Not part of the actual FPDT) 267 */ 268 269/* Values for Type field in S3PT header */ 270 271enum AcpiS3ptType 272{ 273 ACPI_S3PT_TYPE_RESUME = 0, 274 ACPI_S3PT_TYPE_SUSPEND = 1, 275 ACPI_FPDT_BOOT_PERFORMANCE = 2 276}; 277 278typedef struct acpi_s3pt_resume 279{ 280 ACPI_FPDT_HEADER Header; 281 UINT32 ResumeCount; 282 UINT64 FullResume; 283 UINT64 AverageResume; 284 285} ACPI_S3PT_RESUME; 286 287typedef struct acpi_s3pt_suspend 288{ 289 ACPI_FPDT_HEADER Header; 290 UINT64 SuspendStart; 291 UINT64 SuspendEnd; 292 293} ACPI_S3PT_SUSPEND; 294 295 296/* 297 * FPDT Boot Performance Record (Not part of the actual FPDT) 298 */ 299typedef struct acpi_fpdt_boot 300{ 301 ACPI_FPDT_HEADER Header; 302 UINT8 Reserved[4]; 303 UINT64 ResetEnd; 304 UINT64 LoadStart; 305 UINT64 StartupStart; 306 UINT64 ExitServicesEntry; 307 UINT64 ExitServicesExit; 308 309} ACPI_FPDT_BOOT; 310 311 312/******************************************************************************* 313 * 314 * GTDT - Generic Timer Description Table (ACPI 5.1) 315 * Version 2 316 * 317 ******************************************************************************/ 318 319typedef struct acpi_table_gtdt 320{ 321 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 322 UINT64 CounterBlockAddresss; 323 UINT32 Reserved; 324 UINT32 SecureEl1Interrupt; 325 UINT32 SecureEl1Flags; 326 UINT32 NonSecureEl1Interrupt; 327 UINT32 NonSecureEl1Flags; 328 UINT32 VirtualTimerInterrupt; 329 UINT32 VirtualTimerFlags; 330 UINT32 NonSecureEl2Interrupt; 331 UINT32 NonSecureEl2Flags; 332 UINT64 CounterReadBlockAddress; 333 UINT32 PlatformTimerCount; 334 UINT32 PlatformTimerOffset; 335 336} ACPI_TABLE_GTDT; 337 338/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 339 340#define ACPI_GTDT_INTERRUPT_MODE (1) 341#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 342#define ACPI_GTDT_ALWAYS_ON (1<<2) 343 344 345/* Common GTDT subtable header */ 346 347typedef struct acpi_gtdt_header 348{ 349 UINT8 Type; 350 UINT16 Length; 351 352} ACPI_GTDT_HEADER; 353 354/* Values for GTDT subtable type above */ 355 356enum AcpiGtdtType 357{ 358 ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 359 ACPI_GTDT_TYPE_WATCHDOG = 1, 360 ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 361}; 362 363 364/* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 365 366/* 0: Generic Timer Block */ 367 368typedef struct acpi_gtdt_timer_block 369{ 370 ACPI_GTDT_HEADER Header; 371 UINT8 Reserved; 372 UINT64 BlockAddress; 373 UINT32 TimerCount; 374 UINT32 TimerOffset; 375 376} ACPI_GTDT_TIMER_BLOCK; 377 378/* Timer Sub-Structure, one per timer */ 379 380typedef struct acpi_gtdt_timer_entry 381{ 382 UINT8 FrameNumber; 383 UINT8 Reserved[3]; 384 UINT64 BaseAddress; 385 UINT64 El0BaseAddress; 386 UINT32 TimerInterrupt; 387 UINT32 TimerFlags; 388 UINT32 VirtualTimerInterrupt; 389 UINT32 VirtualTimerFlags; 390 UINT32 CommonFlags; 391 392} ACPI_GTDT_TIMER_ENTRY; 393 394/* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 395 396#define ACPI_GTDT_GT_IRQ_MODE (1) 397#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 398 399/* Flag Definitions: CommonFlags above */ 400 401#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 402#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 403 404 405/* 1: SBSA Generic Watchdog Structure */ 406 407typedef struct acpi_gtdt_watchdog 408{ 409 ACPI_GTDT_HEADER Header; 410 UINT8 Reserved; 411 UINT64 RefreshFrameAddress; 412 UINT64 ControlFrameAddress; 413 UINT32 TimerInterrupt; 414 UINT32 TimerFlags; 415 416} ACPI_GTDT_WATCHDOG; 417 418/* Flag Definitions: TimerFlags above */ 419 420#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 421#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 422#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 423 424 425/******************************************************************************* 426 * 427 * MPST - Memory Power State Table (ACPI 5.0) 428 * Version 1 429 * 430 ******************************************************************************/ 431 432#define ACPI_MPST_CHANNEL_INFO \ 433 UINT8 ChannelId; \ 434 UINT8 Reserved1[3]; \ 435 UINT16 PowerNodeCount; \ 436 UINT16 Reserved2; 437 438/* Main table */ 439 440typedef struct acpi_table_mpst 441{ 442 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 443 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 444 445} ACPI_TABLE_MPST; 446 447 448/* Memory Platform Communication Channel Info */ 449 450typedef struct acpi_mpst_channel 451{ 452 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 453 454} ACPI_MPST_CHANNEL; 455 456 457/* Memory Power Node Structure */ 458 459typedef struct acpi_mpst_power_node 460{ 461 UINT8 Flags; 462 UINT8 Reserved1; 463 UINT16 NodeId; 464 UINT32 Length; 465 UINT64 RangeAddress; 466 UINT64 RangeLength; 467 UINT32 NumPowerStates; 468 UINT32 NumPhysicalComponents; 469 470} ACPI_MPST_POWER_NODE; 471 472/* Values for Flags field above */ 473 474#define ACPI_MPST_ENABLED 1 475#define ACPI_MPST_POWER_MANAGED 2 476#define ACPI_MPST_HOT_PLUG_CAPABLE 4 477 478 479/* Memory Power State Structure (follows POWER_NODE above) */ 480 481typedef struct acpi_mpst_power_state 482{ 483 UINT8 PowerState; 484 UINT8 InfoIndex; 485 486} ACPI_MPST_POWER_STATE; 487 488 489/* Physical Component ID Structure (follows POWER_STATE above) */ 490 491typedef struct acpi_mpst_component 492{ 493 UINT16 ComponentId; 494 495} ACPI_MPST_COMPONENT; 496 497 498/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 499 500typedef struct acpi_mpst_data_hdr 501{ 502 UINT16 CharacteristicsCount; 503 UINT16 Reserved; 504 505} ACPI_MPST_DATA_HDR; 506 507typedef struct acpi_mpst_power_data 508{ 509 UINT8 StructureId; 510 UINT8 Flags; 511 UINT16 Reserved1; 512 UINT32 AveragePower; 513 UINT32 PowerSaving; 514 UINT64 ExitLatency; 515 UINT64 Reserved2; 516 517} ACPI_MPST_POWER_DATA; 518 519/* Values for Flags field above */ 520 521#define ACPI_MPST_PRESERVE 1 522#define ACPI_MPST_AUTOENTRY 2 523#define ACPI_MPST_AUTOEXIT 4 524 525 526/* Shared Memory Region (not part of an ACPI table) */ 527 528typedef struct acpi_mpst_shared 529{ 530 UINT32 Signature; 531 UINT16 PccCommand; 532 UINT16 PccStatus; 533 UINT32 CommandRegister; 534 UINT32 StatusRegister; 535 UINT32 PowerStateId; 536 UINT32 PowerNodeId; 537 UINT64 EnergyConsumed; 538 UINT64 AveragePower; 539 540} ACPI_MPST_SHARED; 541 542 543/******************************************************************************* 544 * 545 * PCCT - Platform Communications Channel Table (ACPI 5.0) 546 * Version 1 547 * 548 ******************************************************************************/ 549 550typedef struct acpi_table_pcct 551{ 552 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 553 UINT32 Flags; 554 UINT64 Reserved; 555 556} ACPI_TABLE_PCCT; 557 558/* Values for Flags field above */ 559 560#define ACPI_PCCT_DOORBELL 1 561 562/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 563 564enum AcpiPcctType 565{ 566 ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 567 ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 568 ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2, /* ACPI 6.1 */ 569 ACPI_PCCT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 570}; 571 572/* 573 * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 574 */ 575 576/* 0: Generic Communications Subspace */ 577 578typedef struct acpi_pcct_subspace 579{ 580 ACPI_SUBTABLE_HEADER Header; 581 UINT8 Reserved[6]; 582 UINT64 BaseAddress; 583 UINT64 Length; 584 ACPI_GENERIC_ADDRESS DoorbellRegister; 585 UINT64 PreserveMask; 586 UINT64 WriteMask; 587 UINT32 Latency; 588 UINT32 MaxAccessRate; 589 UINT16 MinTurnaroundTime; 590 591} ACPI_PCCT_SUBSPACE; 592 593 594/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 595 596typedef struct acpi_pcct_hw_reduced 597{ 598 ACPI_SUBTABLE_HEADER Header; 599 UINT32 DoorbellInterrupt; 600 UINT8 Flags; 601 UINT8 Reserved; 602 UINT64 BaseAddress; 603 UINT64 Length; 604 ACPI_GENERIC_ADDRESS DoorbellRegister; 605 UINT64 PreserveMask; 606 UINT64 WriteMask; 607 UINT32 Latency; 608 UINT32 MaxAccessRate; 609 UINT16 MinTurnaroundTime; 610 611} ACPI_PCCT_HW_REDUCED; 612 613 614/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */ 615 616typedef struct acpi_pcct_hw_reduced_type2 617{ 618 ACPI_SUBTABLE_HEADER Header; 619 UINT32 DoorbellInterrupt; 620 UINT8 Flags; 621 UINT8 Reserved; 622 UINT64 BaseAddress; 623 UINT64 Length; 624 ACPI_GENERIC_ADDRESS DoorbellRegister; 625 UINT64 PreserveMask; 626 UINT64 WriteMask; 627 UINT32 Latency; 628 UINT32 MaxAccessRate; 629 UINT16 MinTurnaroundTime; 630 ACPI_GENERIC_ADDRESS DoorbellAckRegister; 631 UINT64 AckPreserveMask; 632 UINT64 AckWriteMask; 633 634} ACPI_PCCT_HW_REDUCED_TYPE2; 635 636 637/* Values for doorbell flags above */ 638 639#define ACPI_PCCT_INTERRUPT_POLARITY (1) 640#define ACPI_PCCT_INTERRUPT_MODE (1<<1) 641 642 643/* 644 * PCC memory structures (not part of the ACPI table) 645 */ 646 647/* Shared Memory Region */ 648 649typedef struct acpi_pcct_shared_memory 650{ 651 UINT32 Signature; 652 UINT16 Command; 653 UINT16 Status; 654 655} ACPI_PCCT_SHARED_MEMORY; 656 657 658/******************************************************************************* 659 * 660 * PMTT - Platform Memory Topology Table (ACPI 5.0) 661 * Version 1 662 * 663 ******************************************************************************/ 664 665typedef struct acpi_table_pmtt 666{ 667 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 668 UINT32 Reserved; 669 670} ACPI_TABLE_PMTT; 671 672 673/* Common header for PMTT subtables that follow main table */ 674 675typedef struct acpi_pmtt_header 676{ 677 UINT8 Type; 678 UINT8 Reserved1; 679 UINT16 Length; 680 UINT16 Flags; 681 UINT16 Reserved2; 682 683} ACPI_PMTT_HEADER; 684 685/* Values for Type field above */ 686 687#define ACPI_PMTT_TYPE_SOCKET 0 688#define ACPI_PMTT_TYPE_CONTROLLER 1 689#define ACPI_PMTT_TYPE_DIMM 2 690#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 691 692/* Values for Flags field above */ 693 694#define ACPI_PMTT_TOP_LEVEL 0x0001 695#define ACPI_PMTT_PHYSICAL 0x0002 696#define ACPI_PMTT_MEMORY_TYPE 0x000C 697 698 699/* 700 * PMTT subtables, correspond to Type in acpi_pmtt_header 701 */ 702 703 704/* 0: Socket Structure */ 705 706typedef struct acpi_pmtt_socket 707{ 708 ACPI_PMTT_HEADER Header; 709 UINT16 SocketId; 710 UINT16 Reserved; 711 712} ACPI_PMTT_SOCKET; 713 714 715/* 1: Memory Controller subtable */ 716 717typedef struct acpi_pmtt_controller 718{ 719 ACPI_PMTT_HEADER Header; 720 UINT32 ReadLatency; 721 UINT32 WriteLatency; 722 UINT32 ReadBandwidth; 723 UINT32 WriteBandwidth; 724 UINT16 AccessWidth; 725 UINT16 Alignment; 726 UINT16 Reserved; 727 UINT16 DomainCount; 728 729} ACPI_PMTT_CONTROLLER; 730 731/* 1a: Proximity Domain substructure */ 732 733typedef struct acpi_pmtt_domain 734{ 735 UINT32 ProximityDomain; 736 737} ACPI_PMTT_DOMAIN; 738 739 740/* 2: Physical Component Identifier (DIMM) */ 741 742typedef struct acpi_pmtt_physical_component 743{ 744 ACPI_PMTT_HEADER Header; 745 UINT16 ComponentId; 746 UINT16 Reserved; 747 UINT32 MemorySize; 748 UINT32 BiosHandle; 749 750} ACPI_PMTT_PHYSICAL_COMPONENT; 751 752 753/******************************************************************************* 754 * 755 * RASF - RAS Feature Table (ACPI 5.0) 756 * Version 1 757 * 758 ******************************************************************************/ 759 760typedef struct acpi_table_rasf 761{ 762 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 763 UINT8 ChannelId[12]; 764 765} ACPI_TABLE_RASF; 766 767/* RASF Platform Communication Channel Shared Memory Region */ 768 769typedef struct acpi_rasf_shared_memory 770{ 771 UINT32 Signature; 772 UINT16 Command; 773 UINT16 Status; 774 UINT16 Version; 775 UINT8 Capabilities[16]; 776 UINT8 SetCapabilities[16]; 777 UINT16 NumParameterBlocks; 778 UINT32 SetCapabilitiesStatus; 779 780} ACPI_RASF_SHARED_MEMORY; 781 782/* RASF Parameter Block Structure Header */ 783 784typedef struct acpi_rasf_parameter_block 785{ 786 UINT16 Type; 787 UINT16 Version; 788 UINT16 Length; 789 790} ACPI_RASF_PARAMETER_BLOCK; 791 792/* RASF Parameter Block Structure for PATROL_SCRUB */ 793 794typedef struct acpi_rasf_patrol_scrub_parameter 795{ 796 ACPI_RASF_PARAMETER_BLOCK Header; 797 UINT16 PatrolScrubCommand; 798 UINT64 RequestedAddressRange[2]; 799 UINT64 ActualAddressRange[2]; 800 UINT16 Flags; 801 UINT8 RequestedSpeed; 802 803} ACPI_RASF_PATROL_SCRUB_PARAMETER; 804 805/* Masks for Flags and Speed fields above */ 806 807#define ACPI_RASF_SCRUBBER_RUNNING 1 808#define ACPI_RASF_SPEED (7<<1) 809#define ACPI_RASF_SPEED_SLOW (0<<1) 810#define ACPI_RASF_SPEED_MEDIUM (4<<1) 811#define ACPI_RASF_SPEED_FAST (7<<1) 812 813/* Channel Commands */ 814 815enum AcpiRasfCommands 816{ 817 ACPI_RASF_EXECUTE_RASF_COMMAND = 1 818}; 819 820/* Platform RAS Capabilities */ 821 822enum AcpiRasfCapabiliities 823{ 824 ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 825 ACPI_SW_PATROL_SCRUB_EXPOSED = 1 826}; 827 828/* Patrol Scrub Commands */ 829 830enum AcpiRasfPatrolScrubCommands 831{ 832 ACPI_RASF_GET_PATROL_PARAMETERS = 1, 833 ACPI_RASF_START_PATROL_SCRUBBER = 2, 834 ACPI_RASF_STOP_PATROL_SCRUBBER = 3 835}; 836 837/* Channel Command flags */ 838 839#define ACPI_RASF_GENERATE_SCI (1<<15) 840 841/* Status values */ 842 843enum AcpiRasfStatus 844{ 845 ACPI_RASF_SUCCESS = 0, 846 ACPI_RASF_NOT_VALID = 1, 847 ACPI_RASF_NOT_SUPPORTED = 2, 848 ACPI_RASF_BUSY = 3, 849 ACPI_RASF_FAILED = 4, 850 ACPI_RASF_ABORTED = 5, 851 ACPI_RASF_INVALID_DATA = 6 852}; 853 854/* Status flags */ 855 856#define ACPI_RASF_COMMAND_COMPLETE (1) 857#define ACPI_RASF_SCI_DOORBELL (1<<1) 858#define ACPI_RASF_ERROR (1<<2) 859#define ACPI_RASF_STATUS (0x1F<<3) 860 861 862/******************************************************************************* 863 * 864 * STAO - Status Override Table (_STA override) - ACPI 6.0 865 * Version 1 866 * 867 * Conforms to "ACPI Specification for Status Override Table" 868 * 6 January 2015 869 * 870 ******************************************************************************/ 871 872typedef struct acpi_table_stao 873{ 874 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 875 UINT8 IgnoreUart; 876 877} ACPI_TABLE_STAO; 878 879 880/******************************************************************************* 881 * 882 * WPBT - Windows Platform Environment Table (ACPI 6.0) 883 * Version 1 884 * 885 * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 886 * 887 ******************************************************************************/ 888 889typedef struct acpi_table_wpbt 890{ 891 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 892 UINT32 HandoffSize; 893 UINT64 HandoffAddress; 894 UINT8 Layout; 895 UINT8 Type; 896 UINT16 ArgumentsLength; 897 898} ACPI_TABLE_WPBT; 899 900 901/******************************************************************************* 902 * 903 * XENV - Xen Environment Table (ACPI 6.0) 904 * Version 1 905 * 906 * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 907 * 908 ******************************************************************************/ 909 910typedef struct acpi_table_xenv 911{ 912 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 913 UINT64 GrantTableAddress; 914 UINT64 GrantTableSize; 915 UINT32 EventInterrupt; 916 UINT8 EventFlags; 917 918} ACPI_TABLE_XENV; 919 920 921/* Reset to default packing */ 922 923#pragma pack() 924 925#endif /* __ACTBL3_H__ */ 926