Home | History | Annotate | Line # | Download | only in include
actbl3.h revision 1.1.1.1.4.2
      1 /******************************************************************************
      2  *
      3  * Name: actbl3.h - ACPI Table Definitions
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2013, 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 
    110 typedef 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 
    129 typedef 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 
    146 typedef struct acpi_drtm_vtl_list
    147 {
    148     UINT32                  ValidatedTableListCount;
    149 
    150 } ACPI_DRTM_VTL_LIST;
    151 
    152 /* 2) Resources List */
    153 
    154 typedef struct acpi_drtm_resource_list
    155 {
    156     UINT32                  ResourceListCount;
    157 
    158 } ACPI_DRTM_RESOURCE_LIST;
    159 
    160 /* 3) Platform-specific Identifiers List */
    161 
    162 typedef 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 
    176 typedef 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 
    185 typedef 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 
    195 enum 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 
    208 typedef 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 
    223 typedef 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  */
    236 typedef 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  */
    247 typedef 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 
    257 enum AcpiS3ptType
    258 {
    259     ACPI_S3PT_TYPE_RESUME               = 0,
    260     ACPI_S3PT_TYPE_SUSPEND              = 1
    261 };
    262 
    263 typedef 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 
    272 typedef 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.0)
    284  *        Version 1
    285  *
    286  ******************************************************************************/
    287 
    288 typedef struct acpi_table_gtdt
    289 {
    290     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    291     UINT64                  Address;
    292     UINT32                  Flags;
    293     UINT32                  SecurePl1Interrupt;
    294     UINT32                  SecurePl1Flags;
    295     UINT32                  NonSecurePl1Interrupt;
    296     UINT32                  NonSecurePl1Flags;
    297     UINT32                  VirtualTimerInterrupt;
    298     UINT32                  VirtualTimerFlags;
    299     UINT32                  NonSecurePl2Interrupt;
    300     UINT32                  NonSecurePl2Flags;
    301 
    302 } ACPI_TABLE_GTDT;
    303 
    304 /* Values for Flags field above */
    305 
    306 #define ACPI_GTDT_MAPPED_BLOCK_PRESENT      1
    307 
    308 /* Values for all "TimerFlags" fields above */
    309 
    310 #define ACPI_GTDT_INTERRUPT_MODE            1
    311 #define ACPI_GTDT_INTERRUPT_POLARITY        2
    312 
    313 
    314 /*******************************************************************************
    315  *
    316  * MPST - Memory Power State Table (ACPI 5.0)
    317  *        Version 1
    318  *
    319  ******************************************************************************/
    320 
    321 #define ACPI_MPST_CHANNEL_INFO \
    322     UINT8                   ChannelId; \
    323     UINT8                   Reserved1[3]; \
    324     UINT16                  PowerNodeCount; \
    325     UINT16                  Reserved2;
    326 
    327 /* Main table */
    328 
    329 typedef struct acpi_table_mpst
    330 {
    331     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    332     ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
    333 
    334 } ACPI_TABLE_MPST;
    335 
    336 
    337 /* Memory Platform Communication Channel Info */
    338 
    339 typedef struct acpi_mpst_channel
    340 {
    341     ACPI_MPST_CHANNEL_INFO                      /* Platform Communication Channel */
    342 
    343 } ACPI_MPST_CHANNEL;
    344 
    345 
    346 /* Memory Power Node Structure */
    347 
    348 typedef struct acpi_mpst_power_node
    349 {
    350     UINT8                   Flags;
    351     UINT8                   Reserved1;
    352     UINT16                  NodeId;
    353     UINT32                  Length;
    354     UINT64                  RangeAddress;
    355     UINT64                  RangeLength;
    356     UINT32                  NumPowerStates;
    357     UINT32                  NumPhysicalComponents;
    358 
    359 } ACPI_MPST_POWER_NODE;
    360 
    361 /* Values for Flags field above */
    362 
    363 #define ACPI_MPST_ENABLED               1
    364 #define ACPI_MPST_POWER_MANAGED         2
    365 #define ACPI_MPST_HOT_PLUG_CAPABLE      4
    366 
    367 
    368 /* Memory Power State Structure (follows POWER_NODE above) */
    369 
    370 typedef struct acpi_mpst_power_state
    371 {
    372     UINT8                   PowerState;
    373     UINT8                   InfoIndex;
    374 
    375 } ACPI_MPST_POWER_STATE;
    376 
    377 
    378 /* Physical Component ID Structure (follows POWER_STATE above) */
    379 
    380 typedef struct acpi_mpst_component
    381 {
    382     UINT16                  ComponentId;
    383 
    384 } ACPI_MPST_COMPONENT;
    385 
    386 
    387 /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */
    388 
    389 typedef struct acpi_mpst_data_hdr
    390 {
    391     UINT16                  CharacteristicsCount;
    392     UINT16                  Reserved;
    393 
    394 } ACPI_MPST_DATA_HDR;
    395 
    396 typedef struct acpi_mpst_power_data
    397 {
    398     UINT8                   StructureId;
    399     UINT8                   Flags;
    400     UINT16                  Reserved1;
    401     UINT32                  AveragePower;
    402     UINT32                  PowerSaving;
    403     UINT64                  ExitLatency;
    404     UINT64                  Reserved2;
    405 
    406 } ACPI_MPST_POWER_DATA;
    407 
    408 /* Values for Flags field above */
    409 
    410 #define ACPI_MPST_PRESERVE              1
    411 #define ACPI_MPST_AUTOENTRY             2
    412 #define ACPI_MPST_AUTOEXIT              4
    413 
    414 
    415 /* Shared Memory Region (not part of an ACPI table) */
    416 
    417 typedef struct acpi_mpst_shared
    418 {
    419     UINT32                  Signature;
    420     UINT16                  PccCommand;
    421     UINT16                  PccStatus;
    422     UINT32                  CommandRegister;
    423     UINT32                  StatusRegister;
    424     UINT32                  PowerStateId;
    425     UINT32                  PowerNodeId;
    426     UINT64                  EnergyConsumed;
    427     UINT64                  AveragePower;
    428 
    429 } ACPI_MPST_SHARED;
    430 
    431 
    432 /*******************************************************************************
    433  *
    434  * PCCT - Platform Communications Channel Table (ACPI 5.0)
    435  *        Version 1
    436  *
    437  ******************************************************************************/
    438 
    439 typedef struct acpi_table_pcct
    440 {
    441     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    442     UINT32                  Flags;
    443     UINT64                  Reserved;
    444 
    445 } ACPI_TABLE_PCCT;
    446 
    447 /* Values for Flags field above */
    448 
    449 #define ACPI_PCCT_DOORBELL              1
    450 
    451 /* Values for subtable type in ACPI_SUBTABLE_HEADER */
    452 
    453 enum AcpiPcctType
    454 {
    455     ACPI_PCCT_TYPE_GENERIC_SUBSPACE     = 0,
    456     ACPI_PCCT_TYPE_RESERVED             = 1     /* 1 and greater are reserved */
    457 };
    458 
    459 /*
    460  * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
    461  */
    462 
    463 /* 0: Generic Communications Subspace */
    464 
    465 typedef struct acpi_pcct_subspace
    466 {
    467     ACPI_SUBTABLE_HEADER    Header;
    468     UINT8                   Reserved[6];
    469     UINT64                  BaseAddress;
    470     UINT64                  Length;
    471     ACPI_GENERIC_ADDRESS    DoorbellRegister;
    472     UINT64                  PreserveMask;
    473     UINT64                  WriteMask;
    474     UINT32                  Latency;
    475     UINT32                  MaxAccessRate;
    476     UINT16                  MinTurnaroundTime;
    477 
    478 } ACPI_PCCT_SUBSPACE;
    479 
    480 
    481 /*
    482  * PCC memory structures (not part of the ACPI table)
    483  */
    484 
    485 /* Shared Memory Region */
    486 
    487 typedef struct acpi_pcct_shared_memory
    488 {
    489     UINT32                  Signature;
    490     UINT16                  Command;
    491     UINT16                  Status;
    492 
    493 } ACPI_PCCT_SHARED_MEMORY;
    494 
    495 
    496 /*******************************************************************************
    497  *
    498  * PMTT - Platform Memory Topology Table (ACPI 5.0)
    499  *        Version 1
    500  *
    501  ******************************************************************************/
    502 
    503 typedef struct acpi_table_pmtt
    504 {
    505     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    506     UINT32                  Reserved;
    507 
    508 } ACPI_TABLE_PMTT;
    509 
    510 
    511 /* Common header for PMTT subtables that follow main table */
    512 
    513 typedef struct acpi_pmtt_header
    514 {
    515     UINT8                   Type;
    516     UINT8                   Reserved1;
    517     UINT16                  Length;
    518     UINT16                  Flags;
    519     UINT16                  Reserved2;
    520 
    521 } ACPI_PMTT_HEADER;
    522 
    523 /* Values for Type field above */
    524 
    525 #define ACPI_PMTT_TYPE_SOCKET           0
    526 #define ACPI_PMTT_TYPE_CONTROLLER       1
    527 #define ACPI_PMTT_TYPE_DIMM             2
    528 #define ACPI_PMTT_TYPE_RESERVED         3 /* 0x03-0xFF are reserved */
    529 
    530 /* Values for Flags field above */
    531 
    532 #define ACPI_PMTT_TOP_LEVEL             0x0001
    533 #define ACPI_PMTT_PHYSICAL              0x0002
    534 #define ACPI_PMTT_MEMORY_TYPE           0x000C
    535 
    536 
    537 /*
    538  * PMTT subtables, correspond to Type in acpi_pmtt_header
    539  */
    540 
    541 
    542 /* 0: Socket Structure */
    543 
    544 typedef struct acpi_pmtt_socket
    545 {
    546     ACPI_PMTT_HEADER        Header;
    547     UINT16                  SocketId;
    548     UINT16                  Reserved;
    549 
    550 } ACPI_PMTT_SOCKET;
    551 
    552 
    553 /* 1: Memory Controller subtable */
    554 
    555 typedef struct acpi_pmtt_controller
    556 {
    557     ACPI_PMTT_HEADER        Header;
    558     UINT32                  ReadLatency;
    559     UINT32                  WriteLatency;
    560     UINT32                  ReadBandwidth;
    561     UINT32                  WriteBandwidth;
    562     UINT16                  AccessWidth;
    563     UINT16                  Alignment;
    564     UINT16                  Reserved;
    565     UINT16                  DomainCount;
    566 
    567 } ACPI_PMTT_CONTROLLER;
    568 
    569 /* 1a: Proximity Domain substructure */
    570 
    571 typedef struct acpi_pmtt_domain
    572 {
    573     UINT32                  ProximityDomain;
    574 
    575 } ACPI_PMTT_DOMAIN;
    576 
    577 
    578 /* 2: Physical Component Identifier (DIMM) */
    579 
    580 typedef struct acpi_pmtt_physical_component
    581 {
    582     ACPI_PMTT_HEADER        Header;
    583     UINT16                  ComponentId;
    584     UINT16                  Reserved;
    585     UINT32                  MemorySize;
    586     UINT32                  BiosHandle;
    587 
    588 } ACPI_PMTT_PHYSICAL_COMPONENT;
    589 
    590 
    591 /*******************************************************************************
    592  *
    593  * RASF - RAS Feature Table (ACPI 5.0)
    594  *        Version 1
    595  *
    596  ******************************************************************************/
    597 
    598 typedef struct acpi_table_rasf
    599 {
    600     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    601     UINT8                   ChannelId[12];
    602 
    603 } ACPI_TABLE_RASF;
    604 
    605 /* RASF Platform Communication Channel Shared Memory Region */
    606 
    607 typedef struct acpi_rasf_shared_memory
    608 {
    609     UINT32                  Signature;
    610     UINT16                  Command;
    611     UINT16                  Status;
    612     UINT16                  Version;
    613     UINT8                   Capabilities[16];
    614     UINT8                   SetCapabilities[16];
    615     UINT16                  NumParameterBlocks;
    616     UINT32                  SetCapabilitiesStatus;
    617 
    618 } ACPI_RASF_SHARED_MEMORY;
    619 
    620 /* RASF Parameter Block Structure Header */
    621 
    622 typedef struct acpi_rasf_parameter_block
    623 {
    624     UINT16                  Type;
    625     UINT16                  Version;
    626     UINT16                  Length;
    627 
    628 } ACPI_RASF_PARAMETER_BLOCK;
    629 
    630 /* RASF Parameter Block Structure for PATROL_SCRUB */
    631 
    632 typedef struct acpi_rasf_patrol_scrub_parameter
    633 {
    634     ACPI_RASF_PARAMETER_BLOCK   Header;
    635     UINT16                      PatrolScrubCommand;
    636     UINT64                      RequestedAddressRange[2];
    637     UINT64                      ActualAddressRange[2];
    638     UINT16                      Flags;
    639     UINT8                       RequestedSpeed;
    640 
    641 } ACPI_RASF_PATROL_SCRUB_PARAMETER;
    642 
    643 /* Masks for Flags and Speed fields above */
    644 
    645 #define ACPI_RASF_SCRUBBER_RUNNING      1
    646 #define ACPI_RASF_SPEED                 (7<<1)
    647 #define ACPI_RASF_SPEED_SLOW            (0<<1)
    648 #define ACPI_RASF_SPEED_MEDIUM          (4<<1)
    649 #define ACPI_RASF_SPEED_FAST            (7<<1)
    650 
    651 /* Channel Commands */
    652 
    653 enum AcpiRasfCommands
    654 {
    655     ACPI_RASF_EXECUTE_RASF_COMMAND      = 1
    656 };
    657 
    658 /* Platform RAS Capabilities */
    659 
    660 enum AcpiRasfCapabiliities
    661 {
    662     ACPI_HW_PATROL_SCRUB_SUPPORTED      = 0,
    663     ACPI_SW_PATROL_SCRUB_EXPOSED        = 1
    664 };
    665 
    666 /* Patrol Scrub Commands */
    667 
    668 enum AcpiRasfPatrolScrubCommands
    669 {
    670     ACPI_RASF_GET_PATROL_PARAMETERS     = 1,
    671     ACPI_RASF_START_PATROL_SCRUBBER     = 2,
    672     ACPI_RASF_STOP_PATROL_SCRUBBER      = 3
    673 };
    674 
    675 /* Channel Command flags */
    676 
    677 #define ACPI_RASF_GENERATE_SCI          (1<<15)
    678 
    679 /* Status values */
    680 
    681 enum AcpiRasfStatus
    682 {
    683     ACPI_RASF_SUCCESS                   = 0,
    684     ACPI_RASF_NOT_VALID                 = 1,
    685     ACPI_RASF_NOT_SUPPORTED             = 2,
    686     ACPI_RASF_BUSY                      = 3,
    687     ACPI_RASF_FAILED                    = 4,
    688     ACPI_RASF_ABORTED                   = 5,
    689     ACPI_RASF_INVALID_DATA              = 6
    690 };
    691 
    692 /* Status flags */
    693 
    694 #define ACPI_RASF_COMMAND_COMPLETE      (1)
    695 #define ACPI_RASF_SCI_DOORBELL          (1<<1)
    696 #define ACPI_RASF_ERROR                 (1<<2)
    697 #define ACPI_RASF_STATUS                (0x1F<<3)
    698 
    699 
    700 /*******************************************************************************
    701  *
    702  * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
    703  *        Version 3
    704  *
    705  * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011
    706  *
    707  ******************************************************************************/
    708 
    709 typedef struct acpi_table_tpm2
    710 {
    711     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    712     UINT32                  Flags;
    713     UINT64                  ControlAddress;
    714     UINT32                  StartMethod;
    715 
    716 } ACPI_TABLE_TPM2;
    717 
    718 /* Control area structure (not part of table, pointed to by ControlAddress) */
    719 
    720 typedef struct acpi_tpm2_control
    721 {
    722     UINT32                  Reserved;
    723     UINT32                  Error;
    724     UINT32                  Cancel;
    725     UINT32                  Start;
    726     UINT64                  InterruptControl;
    727     UINT32                  CommandSize;
    728     UINT64                  CommandAddress;
    729     UINT32                  ResponseSize;
    730     UINT64                  ResponseAddress;
    731 
    732 } ACPI_TPM2_CONTROL;
    733 
    734 
    735 /* Reset to default packing */
    736 
    737 #pragma pack()
    738 
    739 #endif /* __ACTBL3_H__ */
    740