actbl3.h revision 272444
1/****************************************************************************** 2 * 3 * Name: actbl3.h - ACPI Table Definitions 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2014, 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 * The tables in this file are fully defined within the ACPI specification. 56 * 57 ******************************************************************************/ 58 59 60/* 61 * Values for description table header signatures for tables defined in this 62 * file. Useful because they make it more difficult to inadvertently type in 63 * the wrong signature. 64 */ 65#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 66#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 67#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 68#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 69#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 70#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 71#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 72#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 73#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 74 75#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 76#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 77 78/* Reserved table signatures */ 79 80#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 81#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 82#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 83 84/* 85 * All tables must be byte-packed to match the ACPI specification, since 86 * the tables are provided by the system BIOS. 87 */ 88#pragma pack(1) 89 90/* 91 * Note: C bitfields are not used for this reason: 92 * 93 * "Bitfields are great and easy to read, but unfortunately the C language 94 * does not specify the layout of bitfields in memory, which means they are 95 * essentially useless for dealing with packed data in on-disk formats or 96 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 97 * this decision was a design error in C. Ritchie could have picked an order 98 * and stuck with it." Norman Ramsey. 99 * See http://stackoverflow.com/a/1053662/41661 100 */ 101 102 103/******************************************************************************* 104 * 105 * BGRT - Boot Graphics Resource Table (ACPI 5.0) 106 * Version 1 107 * 108 ******************************************************************************/ 109 110typedef struct acpi_table_bgrt 111{ 112 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 113 UINT16 Version; 114 UINT8 Status; 115 UINT8 ImageType; 116 UINT64 ImageAddress; 117 UINT32 ImageOffsetX; 118 UINT32 ImageOffsetY; 119 120} ACPI_TABLE_BGRT; 121 122 123/******************************************************************************* 124 * 125 * DRTM - Dynamic Root of Trust for Measurement table 126 * 127 ******************************************************************************/ 128 129typedef struct acpi_table_drtm 130{ 131 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 132 UINT64 EntryBaseAddress; 133 UINT64 EntryLength; 134 UINT32 EntryAddress32; 135 UINT64 EntryAddress64; 136 UINT64 ExitAddress; 137 UINT64 LogAreaAddress; 138 UINT32 LogAreaLength; 139 UINT64 ArchDependentAddress; 140 UINT32 Flags; 141 142} ACPI_TABLE_DRTM; 143 144/* 1) Validated Tables List */ 145 146typedef struct acpi_drtm_vtl_list 147{ 148 UINT32 ValidatedTableListCount; 149 150} ACPI_DRTM_VTL_LIST; 151 152/* 2) Resources List */ 153 154typedef struct acpi_drtm_resource_list 155{ 156 UINT32 ResourceListCount; 157 158} ACPI_DRTM_RESOURCE_LIST; 159 160/* 3) Platform-specific Identifiers List */ 161 162typedef struct acpi_drtm_id_list 163{ 164 UINT32 IdListCount; 165 166} ACPI_DRTM_ID_LIST; 167 168 169/******************************************************************************* 170 * 171 * FPDT - Firmware Performance Data Table (ACPI 5.0) 172 * Version 1 173 * 174 ******************************************************************************/ 175 176typedef struct acpi_table_fpdt 177{ 178 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 179 180} ACPI_TABLE_FPDT; 181 182 183/* FPDT subtable header */ 184 185typedef struct acpi_fpdt_header 186{ 187 UINT16 Type; 188 UINT8 Length; 189 UINT8 Revision; 190 191} ACPI_FPDT_HEADER; 192 193/* Values for Type field above */ 194 195enum AcpiFpdtType 196{ 197 ACPI_FPDT_TYPE_BOOT = 0, 198 ACPI_FPDT_TYPE_S3PERF = 1 199}; 200 201 202/* 203 * FPDT subtables 204 */ 205 206/* 0: Firmware Basic Boot Performance Record */ 207 208typedef struct acpi_fpdt_boot 209{ 210 ACPI_FPDT_HEADER Header; 211 UINT8 Reserved[4]; 212 UINT64 ResetEnd; 213 UINT64 LoadStart; 214 UINT64 StartupStart; 215 UINT64 ExitServicesEntry; 216 UINT64 ExitServicesExit; 217 218} ACPI_FPDT_BOOT; 219 220 221/* 1: S3 Performance Table Pointer Record */ 222 223typedef struct acpi_fpdt_s3pt_ptr 224{ 225 ACPI_FPDT_HEADER Header; 226 UINT8 Reserved[4]; 227 UINT64 Address; 228 229} ACPI_FPDT_S3PT_PTR; 230 231 232/* 233 * S3PT - S3 Performance Table. This table is pointed to by the 234 * FPDT S3 Pointer Record above. 235 */ 236typedef struct acpi_table_s3pt 237{ 238 UINT8 Signature[4]; /* "S3PT" */ 239 UINT32 Length; 240 241} ACPI_TABLE_S3PT; 242 243 244/* 245 * S3PT Subtables 246 */ 247typedef struct acpi_s3pt_header 248{ 249 UINT16 Type; 250 UINT8 Length; 251 UINT8 Revision; 252 253} ACPI_S3PT_HEADER; 254 255/* Values for Type field above */ 256 257enum AcpiS3ptType 258{ 259 ACPI_S3PT_TYPE_RESUME = 0, 260 ACPI_S3PT_TYPE_SUSPEND = 1 261}; 262 263typedef struct acpi_s3pt_resume 264{ 265 ACPI_S3PT_HEADER Header; 266 UINT32 ResumeCount; 267 UINT64 FullResume; 268 UINT64 AverageResume; 269 270} ACPI_S3PT_RESUME; 271 272typedef struct acpi_s3pt_suspend 273{ 274 ACPI_S3PT_HEADER Header; 275 UINT64 SuspendStart; 276 UINT64 SuspendEnd; 277 278} ACPI_S3PT_SUSPEND; 279 280 281/******************************************************************************* 282 * 283 * GTDT - Generic Timer Description Table (ACPI 5.1) 284 * Version 2 285 * 286 ******************************************************************************/ 287 288typedef struct acpi_table_gtdt 289{ 290 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 291 UINT64 CounterBlockAddresss; 292 UINT32 Reserved; 293 UINT32 SecureEl1Interrupt; 294 UINT32 SecureEl1Flags; 295 UINT32 NonSecureEl1Interrupt; 296 UINT32 NonSecureEl1Flags; 297 UINT32 VirtualTimerInterrupt; 298 UINT32 VirtualTimerFlags; 299 UINT32 NonSecureEl2Interrupt; 300 UINT32 NonSecureEl2Flags; 301 UINT64 CounterReadBlockAddress; 302 UINT32 PlatformTimerCount; 303 UINT32 PlatformTimerOffset; 304 305} ACPI_TABLE_GTDT; 306 307/* Flag Definitions: Timer Block Physical Timers and Virtual timers */ 308 309#define ACPI_GTDT_INTERRUPT_MODE (1) 310#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) 311#define ACPI_GTDT_ALWAYS_ON (1<<2) 312 313 314/* Common GTDT subtable header */ 315 316typedef struct acpi_gtdt_header 317{ 318 UINT8 Type; 319 UINT16 Length; 320 321} ACPI_GTDT_HEADER; 322 323/* Values for GTDT subtable type above */ 324 325enum AcpiGtdtType 326{ 327 ACPI_GTDT_TYPE_TIMER_BLOCK = 0, 328 ACPI_GTDT_TYPE_WATCHDOG = 1, 329 ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 330}; 331 332 333/* GTDT Subtables, correspond to Type in acpi_gtdt_header */ 334 335/* 0: Generic Timer Block */ 336 337typedef struct acpi_gtdt_timer_block 338{ 339 ACPI_GTDT_HEADER Header; 340 UINT8 Reserved; 341 UINT64 BlockAddress; 342 UINT32 TimerCount; 343 UINT32 TimerOffset; 344 345} ACPI_GTDT_TIMER_BLOCK; 346 347/* Timer Sub-Structure, one per timer */ 348 349typedef struct acpi_gtdt_timer_entry 350{ 351 UINT8 FrameNumber; 352 UINT8 Reserved[3]; 353 UINT64 BaseAddress; 354 UINT64 El0BaseAddress; 355 UINT32 TimerInterrupt; 356 UINT32 TimerFlags; 357 UINT32 VirtualTimerInterrupt; 358 UINT32 VirtualTimerFlags; 359 UINT32 CommonFlags; 360 361} ACPI_GTDT_TIMER_ENTRY; 362 363/* Flag Definitions: TimerFlags and VirtualTimerFlags above */ 364 365#define ACPI_GTDT_GT_IRQ_MODE (1) 366#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1) 367 368/* Flag Definitions: CommonFlags above */ 369 370#define ACPI_GTDT_GT_IS_SECURE_TIMER (1) 371#define ACPI_GTDT_GT_ALWAYS_ON (1<<1) 372 373 374/* 1: SBSA Generic Watchdog Structure */ 375 376typedef struct acpi_gtdt_watchdog 377{ 378 ACPI_GTDT_HEADER Header; 379 UINT8 Reserved; 380 UINT64 RefreshFrameAddress; 381 UINT64 ControlFrameAddress; 382 UINT32 TimerInterrupt; 383 UINT32 TimerFlags; 384 385} ACPI_GTDT_WATCHDOG; 386 387/* Flag Definitions: TimerFlags above */ 388 389#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) 390#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) 391#define ACPI_GTDT_WATCHDOG_SECURE (1<<2) 392 393 394/******************************************************************************* 395 * 396 * MPST - Memory Power State Table (ACPI 5.0) 397 * Version 1 398 * 399 ******************************************************************************/ 400 401#define ACPI_MPST_CHANNEL_INFO \ 402 UINT8 ChannelId; \ 403 UINT8 Reserved1[3]; \ 404 UINT16 PowerNodeCount; \ 405 UINT16 Reserved2; 406 407/* Main table */ 408 409typedef struct acpi_table_mpst 410{ 411 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 412 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 413 414} ACPI_TABLE_MPST; 415 416 417/* Memory Platform Communication Channel Info */ 418 419typedef struct acpi_mpst_channel 420{ 421 ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 422 423} ACPI_MPST_CHANNEL; 424 425 426/* Memory Power Node Structure */ 427 428typedef struct acpi_mpst_power_node 429{ 430 UINT8 Flags; 431 UINT8 Reserved1; 432 UINT16 NodeId; 433 UINT32 Length; 434 UINT64 RangeAddress; 435 UINT64 RangeLength; 436 UINT32 NumPowerStates; 437 UINT32 NumPhysicalComponents; 438 439} ACPI_MPST_POWER_NODE; 440 441/* Values for Flags field above */ 442 443#define ACPI_MPST_ENABLED 1 444#define ACPI_MPST_POWER_MANAGED 2 445#define ACPI_MPST_HOT_PLUG_CAPABLE 4 446 447 448/* Memory Power State Structure (follows POWER_NODE above) */ 449 450typedef struct acpi_mpst_power_state 451{ 452 UINT8 PowerState; 453 UINT8 InfoIndex; 454 455} ACPI_MPST_POWER_STATE; 456 457 458/* Physical Component ID Structure (follows POWER_STATE above) */ 459 460typedef struct acpi_mpst_component 461{ 462 UINT16 ComponentId; 463 464} ACPI_MPST_COMPONENT; 465 466 467/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 468 469typedef struct acpi_mpst_data_hdr 470{ 471 UINT16 CharacteristicsCount; 472 UINT16 Reserved; 473 474} ACPI_MPST_DATA_HDR; 475 476typedef struct acpi_mpst_power_data 477{ 478 UINT8 StructureId; 479 UINT8 Flags; 480 UINT16 Reserved1; 481 UINT32 AveragePower; 482 UINT32 PowerSaving; 483 UINT64 ExitLatency; 484 UINT64 Reserved2; 485 486} ACPI_MPST_POWER_DATA; 487 488/* Values for Flags field above */ 489 490#define ACPI_MPST_PRESERVE 1 491#define ACPI_MPST_AUTOENTRY 2 492#define ACPI_MPST_AUTOEXIT 4 493 494 495/* Shared Memory Region (not part of an ACPI table) */ 496 497typedef struct acpi_mpst_shared 498{ 499 UINT32 Signature; 500 UINT16 PccCommand; 501 UINT16 PccStatus; 502 UINT32 CommandRegister; 503 UINT32 StatusRegister; 504 UINT32 PowerStateId; 505 UINT32 PowerNodeId; 506 UINT64 EnergyConsumed; 507 UINT64 AveragePower; 508 509} ACPI_MPST_SHARED; 510 511 512/******************************************************************************* 513 * 514 * PCCT - Platform Communications Channel Table (ACPI 5.0) 515 * Version 1 516 * 517 ******************************************************************************/ 518 519typedef struct acpi_table_pcct 520{ 521 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 522 UINT32 Flags; 523 UINT64 Reserved; 524 525} ACPI_TABLE_PCCT; 526 527/* Values for Flags field above */ 528 529#define ACPI_PCCT_DOORBELL 1 530 531/* Values for subtable type in ACPI_SUBTABLE_HEADER */ 532 533enum AcpiPcctType 534{ 535 ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, 536 ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, 537 ACPI_PCCT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 538}; 539 540/* 541 * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER 542 */ 543 544/* 0: Generic Communications Subspace */ 545 546typedef struct acpi_pcct_subspace 547{ 548 ACPI_SUBTABLE_HEADER Header; 549 UINT8 Reserved[6]; 550 UINT64 BaseAddress; 551 UINT64 Length; 552 ACPI_GENERIC_ADDRESS DoorbellRegister; 553 UINT64 PreserveMask; 554 UINT64 WriteMask; 555 UINT32 Latency; 556 UINT32 MaxAccessRate; 557 UINT16 MinTurnaroundTime; 558 559} ACPI_PCCT_SUBSPACE; 560 561 562/* 1: HW-reduced Communications Subspace (ACPI 5.1) */ 563 564typedef struct acpi_pcct_hw_reduced 565{ 566 ACPI_SUBTABLE_HEADER Header; 567 UINT32 DoorbellInterrupt; 568 UINT8 Flags; 569 UINT8 Reserved; 570 UINT64 BaseAddress; 571 UINT64 Length; 572 ACPI_GENERIC_ADDRESS DoorbellRegister; 573 UINT64 PreserveMask; 574 UINT64 WriteMask; 575 UINT32 Latency; 576 UINT32 MaxAccessRate; 577 UINT16 MinTurnaroundTime; 578 579} ACPI_PCCT_HW_REDUCED; 580 581/* Values for doorbell flags above */ 582 583#define ACPI_PCCT_INTERRUPT_POLARITY (1) 584#define ACPI_PCCT_INTERRUPT_MODE (1<<1) 585 586 587/* 588 * PCC memory structures (not part of the ACPI table) 589 */ 590 591/* Shared Memory Region */ 592 593typedef struct acpi_pcct_shared_memory 594{ 595 UINT32 Signature; 596 UINT16 Command; 597 UINT16 Status; 598 599} ACPI_PCCT_SHARED_MEMORY; 600 601 602/******************************************************************************* 603 * 604 * PMTT - Platform Memory Topology Table (ACPI 5.0) 605 * Version 1 606 * 607 ******************************************************************************/ 608 609typedef struct acpi_table_pmtt 610{ 611 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 612 UINT32 Reserved; 613 614} ACPI_TABLE_PMTT; 615 616 617/* Common header for PMTT subtables that follow main table */ 618 619typedef struct acpi_pmtt_header 620{ 621 UINT8 Type; 622 UINT8 Reserved1; 623 UINT16 Length; 624 UINT16 Flags; 625 UINT16 Reserved2; 626 627} ACPI_PMTT_HEADER; 628 629/* Values for Type field above */ 630 631#define ACPI_PMTT_TYPE_SOCKET 0 632#define ACPI_PMTT_TYPE_CONTROLLER 1 633#define ACPI_PMTT_TYPE_DIMM 2 634#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 635 636/* Values for Flags field above */ 637 638#define ACPI_PMTT_TOP_LEVEL 0x0001 639#define ACPI_PMTT_PHYSICAL 0x0002 640#define ACPI_PMTT_MEMORY_TYPE 0x000C 641 642 643/* 644 * PMTT subtables, correspond to Type in acpi_pmtt_header 645 */ 646 647 648/* 0: Socket Structure */ 649 650typedef struct acpi_pmtt_socket 651{ 652 ACPI_PMTT_HEADER Header; 653 UINT16 SocketId; 654 UINT16 Reserved; 655 656} ACPI_PMTT_SOCKET; 657 658 659/* 1: Memory Controller subtable */ 660 661typedef struct acpi_pmtt_controller 662{ 663 ACPI_PMTT_HEADER Header; 664 UINT32 ReadLatency; 665 UINT32 WriteLatency; 666 UINT32 ReadBandwidth; 667 UINT32 WriteBandwidth; 668 UINT16 AccessWidth; 669 UINT16 Alignment; 670 UINT16 Reserved; 671 UINT16 DomainCount; 672 673} ACPI_PMTT_CONTROLLER; 674 675/* 1a: Proximity Domain substructure */ 676 677typedef struct acpi_pmtt_domain 678{ 679 UINT32 ProximityDomain; 680 681} ACPI_PMTT_DOMAIN; 682 683 684/* 2: Physical Component Identifier (DIMM) */ 685 686typedef struct acpi_pmtt_physical_component 687{ 688 ACPI_PMTT_HEADER Header; 689 UINT16 ComponentId; 690 UINT16 Reserved; 691 UINT32 MemorySize; 692 UINT32 BiosHandle; 693 694} ACPI_PMTT_PHYSICAL_COMPONENT; 695 696 697/******************************************************************************* 698 * 699 * RASF - RAS Feature Table (ACPI 5.0) 700 * Version 1 701 * 702 ******************************************************************************/ 703 704typedef struct acpi_table_rasf 705{ 706 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 707 UINT8 ChannelId[12]; 708 709} ACPI_TABLE_RASF; 710 711/* RASF Platform Communication Channel Shared Memory Region */ 712 713typedef struct acpi_rasf_shared_memory 714{ 715 UINT32 Signature; 716 UINT16 Command; 717 UINT16 Status; 718 UINT16 Version; 719 UINT8 Capabilities[16]; 720 UINT8 SetCapabilities[16]; 721 UINT16 NumParameterBlocks; 722 UINT32 SetCapabilitiesStatus; 723 724} ACPI_RASF_SHARED_MEMORY; 725 726/* RASF Parameter Block Structure Header */ 727 728typedef struct acpi_rasf_parameter_block 729{ 730 UINT16 Type; 731 UINT16 Version; 732 UINT16 Length; 733 734} ACPI_RASF_PARAMETER_BLOCK; 735 736/* RASF Parameter Block Structure for PATROL_SCRUB */ 737 738typedef struct acpi_rasf_patrol_scrub_parameter 739{ 740 ACPI_RASF_PARAMETER_BLOCK Header; 741 UINT16 PatrolScrubCommand; 742 UINT64 RequestedAddressRange[2]; 743 UINT64 ActualAddressRange[2]; 744 UINT16 Flags; 745 UINT8 RequestedSpeed; 746 747} ACPI_RASF_PATROL_SCRUB_PARAMETER; 748 749/* Masks for Flags and Speed fields above */ 750 751#define ACPI_RASF_SCRUBBER_RUNNING 1 752#define ACPI_RASF_SPEED (7<<1) 753#define ACPI_RASF_SPEED_SLOW (0<<1) 754#define ACPI_RASF_SPEED_MEDIUM (4<<1) 755#define ACPI_RASF_SPEED_FAST (7<<1) 756 757/* Channel Commands */ 758 759enum AcpiRasfCommands 760{ 761 ACPI_RASF_EXECUTE_RASF_COMMAND = 1 762}; 763 764/* Platform RAS Capabilities */ 765 766enum AcpiRasfCapabiliities 767{ 768 ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, 769 ACPI_SW_PATROL_SCRUB_EXPOSED = 1 770}; 771 772/* Patrol Scrub Commands */ 773 774enum AcpiRasfPatrolScrubCommands 775{ 776 ACPI_RASF_GET_PATROL_PARAMETERS = 1, 777 ACPI_RASF_START_PATROL_SCRUBBER = 2, 778 ACPI_RASF_STOP_PATROL_SCRUBBER = 3 779}; 780 781/* Channel Command flags */ 782 783#define ACPI_RASF_GENERATE_SCI (1<<15) 784 785/* Status values */ 786 787enum AcpiRasfStatus 788{ 789 ACPI_RASF_SUCCESS = 0, 790 ACPI_RASF_NOT_VALID = 1, 791 ACPI_RASF_NOT_SUPPORTED = 2, 792 ACPI_RASF_BUSY = 3, 793 ACPI_RASF_FAILED = 4, 794 ACPI_RASF_ABORTED = 5, 795 ACPI_RASF_INVALID_DATA = 6 796}; 797 798/* Status flags */ 799 800#define ACPI_RASF_COMMAND_COMPLETE (1) 801#define ACPI_RASF_SCI_DOORBELL (1<<1) 802#define ACPI_RASF_ERROR (1<<2) 803#define ACPI_RASF_STATUS (0x1F<<3) 804 805 806/******************************************************************************* 807 * 808 * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 809 * Version 3 810 * 811 * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011 812 * 813 ******************************************************************************/ 814 815typedef struct acpi_table_tpm2 816{ 817 ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 818 UINT32 Flags; 819 UINT64 ControlAddress; 820 UINT32 StartMethod; 821 822} ACPI_TABLE_TPM2; 823 824/* Control area structure (not part of table, pointed to by ControlAddress) */ 825 826typedef struct acpi_tpm2_control 827{ 828 UINT32 Reserved; 829 UINT32 Error; 830 UINT32 Cancel; 831 UINT32 Start; 832 UINT64 InterruptControl; 833 UINT32 CommandSize; 834 UINT64 CommandAddress; 835 UINT32 ResponseSize; 836 UINT64 ResponseAddress; 837 838} ACPI_TPM2_CONTROL; 839 840 841/* Reset to default packing */ 842 843#pragma pack() 844 845#endif /* __ACTBL3_H__ */ 846