Home | History | Annotate | Line # | Download | only in include
actbl2.h revision 1.1.1.3.12.2
      1           1.1    jruoho /******************************************************************************
      2           1.1    jruoho  *
      3       1.1.1.3    jruoho  * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
      4           1.1    jruoho  *
      5           1.1    jruoho  *****************************************************************************/
      6           1.1    jruoho 
      7       1.1.1.2    jruoho /*
      8  1.1.1.3.12.2  jdolecek  * Copyright (C) 2000 - 2017, Intel Corp.
      9           1.1    jruoho  * All rights reserved.
     10           1.1    jruoho  *
     11       1.1.1.2    jruoho  * Redistribution and use in source and binary forms, with or without
     12       1.1.1.2    jruoho  * modification, are permitted provided that the following conditions
     13       1.1.1.2    jruoho  * are met:
     14       1.1.1.2    jruoho  * 1. Redistributions of source code must retain the above copyright
     15       1.1.1.2    jruoho  *    notice, this list of conditions, and the following disclaimer,
     16       1.1.1.2    jruoho  *    without modification.
     17       1.1.1.2    jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18       1.1.1.2    jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19       1.1.1.2    jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20       1.1.1.2    jruoho  *    including a substantially similar Disclaimer requirement for further
     21       1.1.1.2    jruoho  *    binary redistribution.
     22       1.1.1.2    jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23       1.1.1.2    jruoho  *    of any contributors may be used to endorse or promote products derived
     24       1.1.1.2    jruoho  *    from this software without specific prior written permission.
     25       1.1.1.2    jruoho  *
     26       1.1.1.2    jruoho  * Alternatively, this software may be distributed under the terms of the
     27       1.1.1.2    jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28       1.1.1.2    jruoho  * Software Foundation.
     29       1.1.1.2    jruoho  *
     30       1.1.1.2    jruoho  * NO WARRANTY
     31       1.1.1.2    jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32       1.1.1.2    jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33       1.1.1.2    jruoho  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34       1.1.1.2    jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35       1.1.1.2    jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36       1.1.1.2    jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37       1.1.1.2    jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38       1.1.1.2    jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39       1.1.1.2    jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40       1.1.1.2    jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41       1.1.1.2    jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42       1.1.1.2    jruoho  */
     43           1.1    jruoho 
     44           1.1    jruoho #ifndef __ACTBL2_H__
     45           1.1    jruoho #define __ACTBL2_H__
     46           1.1    jruoho 
     47           1.1    jruoho 
     48           1.1    jruoho /*******************************************************************************
     49           1.1    jruoho  *
     50           1.1    jruoho  * Additional ACPI Tables (2)
     51           1.1    jruoho  *
     52           1.1    jruoho  * These tables are not consumed directly by the ACPICA subsystem, but are
     53           1.1    jruoho  * included here to support device drivers and the AML disassembler.
     54           1.1    jruoho  *
     55  1.1.1.3.12.2  jdolecek  * Generally, the tables in this file are defined by third-party specifications,
     56  1.1.1.3.12.2  jdolecek  * and are not defined directly by the ACPI specification itself.
     57           1.1    jruoho  *
     58           1.1    jruoho  ******************************************************************************/
     59           1.1    jruoho 
     60           1.1    jruoho 
     61           1.1    jruoho /*
     62           1.1    jruoho  * Values for description table header signatures for tables defined in this
     63           1.1    jruoho  * file. Useful because they make it more difficult to inadvertently type in
     64           1.1    jruoho  * the wrong signature.
     65           1.1    jruoho  */
     66           1.1    jruoho #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
     67           1.1    jruoho #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
     68  1.1.1.3.12.1       tls #define ACPI_SIG_CSRT           "CSRT"      /* Core System Resource Table */
     69  1.1.1.3.12.1       tls #define ACPI_SIG_DBG2           "DBG2"      /* Debug Port table type 2 */
     70           1.1    jruoho #define ACPI_SIG_DBGP           "DBGP"      /* Debug Port table */
     71           1.1    jruoho #define ACPI_SIG_DMAR           "DMAR"      /* DMA Remapping table */
     72           1.1    jruoho #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
     73           1.1    jruoho #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
     74  1.1.1.3.12.2  jdolecek #define ACPI_SIG_IORT           "IORT"      /* IO Remapping Table */
     75           1.1    jruoho #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
     76  1.1.1.3.12.2  jdolecek #define ACPI_SIG_LPIT           "LPIT"      /* Low Power Idle Table */
     77           1.1    jruoho #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
     78           1.1    jruoho #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
     79  1.1.1.3.12.2  jdolecek #define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table */
     80  1.1.1.3.12.1       tls #define ACPI_SIG_MTMR           "MTMR"      /* MID Timer table */
     81  1.1.1.3.12.2  jdolecek #define ACPI_SIG_SDEI           "SDEI"      /* Software Delegated Exception Interface Table */
     82           1.1    jruoho #define ACPI_SIG_SLIC           "SLIC"      /* Software Licensing Description Table */
     83           1.1    jruoho #define ACPI_SIG_SPCR           "SPCR"      /* Serial Port Console Redirection table */
     84           1.1    jruoho #define ACPI_SIG_SPMI           "SPMI"      /* Server Platform Management Interface table */
     85           1.1    jruoho #define ACPI_SIG_TCPA           "TCPA"      /* Trusted Computing Platform Alliance table */
     86  1.1.1.3.12.2  jdolecek #define ACPI_SIG_TPM2           "TPM2"      /* Trusted Platform Module 2.0 H/W interface table */
     87           1.1    jruoho #define ACPI_SIG_UEFI           "UEFI"      /* Uefi Boot Optimization Table */
     88  1.1.1.3.12.1       tls #define ACPI_SIG_VRTC           "VRTC"      /* Virtual Real Time Clock Table */
     89           1.1    jruoho #define ACPI_SIG_WAET           "WAET"      /* Windows ACPI Emulated devices Table */
     90           1.1    jruoho #define ACPI_SIG_WDAT           "WDAT"      /* Watchdog Action Table */
     91       1.1.1.2    jruoho #define ACPI_SIG_WDDT           "WDDT"      /* Watchdog Timer Description Table */
     92           1.1    jruoho #define ACPI_SIG_WDRT           "WDRT"      /* Watchdog Resource Table */
     93  1.1.1.3.12.2  jdolecek #define ACPI_SIG_WSMT           "WSMT"      /* Windows SMM Security Migrations Table */
     94  1.1.1.3.12.2  jdolecek #define ACPI_SIG_XXXX           "XXXX"      /* Intermediate AML header for ASL/ASL+ converter */
     95           1.1    jruoho 
     96           1.1    jruoho #ifdef ACPI_UNDEFINED_TABLES
     97           1.1    jruoho /*
     98           1.1    jruoho  * These tables have been seen in the field, but no definition has been found
     99           1.1    jruoho  */
    100           1.1    jruoho #define ACPI_SIG_ATKG           "ATKG"
    101           1.1    jruoho #define ACPI_SIG_GSCI           "GSCI"      /* GMCH SCI table */
    102           1.1    jruoho #define ACPI_SIG_IEIT           "IEIT"
    103           1.1    jruoho #endif
    104           1.1    jruoho 
    105           1.1    jruoho /*
    106           1.1    jruoho  * All tables must be byte-packed to match the ACPI specification, since
    107           1.1    jruoho  * the tables are provided by the system BIOS.
    108           1.1    jruoho  */
    109           1.1    jruoho #pragma pack(1)
    110           1.1    jruoho 
    111           1.1    jruoho /*
    112  1.1.1.3.12.1       tls  * Note: C bitfields are not used for this reason:
    113  1.1.1.3.12.1       tls  *
    114  1.1.1.3.12.1       tls  * "Bitfields are great and easy to read, but unfortunately the C language
    115  1.1.1.3.12.1       tls  * does not specify the layout of bitfields in memory, which means they are
    116  1.1.1.3.12.1       tls  * essentially useless for dealing with packed data in on-disk formats or
    117  1.1.1.3.12.1       tls  * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
    118  1.1.1.3.12.1       tls  * this decision was a design error in C. Ritchie could have picked an order
    119  1.1.1.3.12.1       tls  * and stuck with it." Norman Ramsey.
    120  1.1.1.3.12.1       tls  * See http://stackoverflow.com/a/1053662/41661
    121           1.1    jruoho  */
    122           1.1    jruoho 
    123           1.1    jruoho 
    124           1.1    jruoho /*******************************************************************************
    125           1.1    jruoho  *
    126           1.1    jruoho  * ASF - Alert Standard Format table (Signature "ASF!")
    127           1.1    jruoho  *       Revision 0x10
    128           1.1    jruoho  *
    129           1.1    jruoho  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
    130           1.1    jruoho  *
    131           1.1    jruoho  ******************************************************************************/
    132           1.1    jruoho 
    133           1.1    jruoho typedef struct acpi_table_asf
    134           1.1    jruoho {
    135           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    136           1.1    jruoho 
    137           1.1    jruoho } ACPI_TABLE_ASF;
    138           1.1    jruoho 
    139           1.1    jruoho 
    140           1.1    jruoho /* ASF subtable header */
    141           1.1    jruoho 
    142           1.1    jruoho typedef struct acpi_asf_header
    143           1.1    jruoho {
    144           1.1    jruoho     UINT8                   Type;
    145           1.1    jruoho     UINT8                   Reserved;
    146           1.1    jruoho     UINT16                  Length;
    147           1.1    jruoho 
    148           1.1    jruoho } ACPI_ASF_HEADER;
    149           1.1    jruoho 
    150           1.1    jruoho 
    151           1.1    jruoho /* Values for Type field above */
    152           1.1    jruoho 
    153           1.1    jruoho enum AcpiAsfType
    154           1.1    jruoho {
    155           1.1    jruoho     ACPI_ASF_TYPE_INFO          = 0,
    156           1.1    jruoho     ACPI_ASF_TYPE_ALERT         = 1,
    157           1.1    jruoho     ACPI_ASF_TYPE_CONTROL       = 2,
    158           1.1    jruoho     ACPI_ASF_TYPE_BOOT          = 3,
    159           1.1    jruoho     ACPI_ASF_TYPE_ADDRESS       = 4,
    160           1.1    jruoho     ACPI_ASF_TYPE_RESERVED      = 5
    161           1.1    jruoho };
    162           1.1    jruoho 
    163           1.1    jruoho /*
    164           1.1    jruoho  * ASF subtables
    165           1.1    jruoho  */
    166           1.1    jruoho 
    167           1.1    jruoho /* 0: ASF Information */
    168           1.1    jruoho 
    169           1.1    jruoho typedef struct acpi_asf_info
    170           1.1    jruoho {
    171           1.1    jruoho     ACPI_ASF_HEADER         Header;
    172           1.1    jruoho     UINT8                   MinResetValue;
    173           1.1    jruoho     UINT8                   MinPollInterval;
    174           1.1    jruoho     UINT16                  SystemId;
    175           1.1    jruoho     UINT32                  MfgId;
    176           1.1    jruoho     UINT8                   Flags;
    177           1.1    jruoho     UINT8                   Reserved2[3];
    178           1.1    jruoho 
    179           1.1    jruoho } ACPI_ASF_INFO;
    180           1.1    jruoho 
    181           1.1    jruoho /* Masks for Flags field above */
    182           1.1    jruoho 
    183           1.1    jruoho #define ACPI_ASF_SMBUS_PROTOCOLS    (1)
    184           1.1    jruoho 
    185           1.1    jruoho 
    186           1.1    jruoho /* 1: ASF Alerts */
    187           1.1    jruoho 
    188           1.1    jruoho typedef struct acpi_asf_alert
    189           1.1    jruoho {
    190           1.1    jruoho     ACPI_ASF_HEADER         Header;
    191           1.1    jruoho     UINT8                   AssertMask;
    192           1.1    jruoho     UINT8                   DeassertMask;
    193           1.1    jruoho     UINT8                   Alerts;
    194           1.1    jruoho     UINT8                   DataLength;
    195           1.1    jruoho 
    196           1.1    jruoho } ACPI_ASF_ALERT;
    197           1.1    jruoho 
    198           1.1    jruoho typedef struct acpi_asf_alert_data
    199           1.1    jruoho {
    200           1.1    jruoho     UINT8                   Address;
    201           1.1    jruoho     UINT8                   Command;
    202           1.1    jruoho     UINT8                   Mask;
    203           1.1    jruoho     UINT8                   Value;
    204           1.1    jruoho     UINT8                   SensorType;
    205           1.1    jruoho     UINT8                   Type;
    206           1.1    jruoho     UINT8                   Offset;
    207           1.1    jruoho     UINT8                   SourceType;
    208           1.1    jruoho     UINT8                   Severity;
    209           1.1    jruoho     UINT8                   SensorNumber;
    210           1.1    jruoho     UINT8                   Entity;
    211           1.1    jruoho     UINT8                   Instance;
    212           1.1    jruoho 
    213           1.1    jruoho } ACPI_ASF_ALERT_DATA;
    214           1.1    jruoho 
    215           1.1    jruoho 
    216           1.1    jruoho /* 2: ASF Remote Control */
    217           1.1    jruoho 
    218           1.1    jruoho typedef struct acpi_asf_remote
    219           1.1    jruoho {
    220           1.1    jruoho     ACPI_ASF_HEADER         Header;
    221           1.1    jruoho     UINT8                   Controls;
    222           1.1    jruoho     UINT8                   DataLength;
    223           1.1    jruoho     UINT16                  Reserved2;
    224           1.1    jruoho 
    225           1.1    jruoho } ACPI_ASF_REMOTE;
    226           1.1    jruoho 
    227           1.1    jruoho typedef struct acpi_asf_control_data
    228           1.1    jruoho {
    229           1.1    jruoho     UINT8                   Function;
    230           1.1    jruoho     UINT8                   Address;
    231           1.1    jruoho     UINT8                   Command;
    232           1.1    jruoho     UINT8                   Value;
    233           1.1    jruoho 
    234           1.1    jruoho } ACPI_ASF_CONTROL_DATA;
    235           1.1    jruoho 
    236           1.1    jruoho 
    237           1.1    jruoho /* 3: ASF RMCP Boot Options */
    238           1.1    jruoho 
    239           1.1    jruoho typedef struct acpi_asf_rmcp
    240           1.1    jruoho {
    241           1.1    jruoho     ACPI_ASF_HEADER         Header;
    242           1.1    jruoho     UINT8                   Capabilities[7];
    243           1.1    jruoho     UINT8                   CompletionCode;
    244           1.1    jruoho     UINT32                  EnterpriseId;
    245           1.1    jruoho     UINT8                   Command;
    246           1.1    jruoho     UINT16                  Parameter;
    247           1.1    jruoho     UINT16                  BootOptions;
    248           1.1    jruoho     UINT16                  OemParameters;
    249           1.1    jruoho 
    250           1.1    jruoho } ACPI_ASF_RMCP;
    251           1.1    jruoho 
    252           1.1    jruoho 
    253           1.1    jruoho /* 4: ASF Address */
    254           1.1    jruoho 
    255           1.1    jruoho typedef struct acpi_asf_address
    256           1.1    jruoho {
    257           1.1    jruoho     ACPI_ASF_HEADER         Header;
    258           1.1    jruoho     UINT8                   EpromAddress;
    259           1.1    jruoho     UINT8                   Devices;
    260           1.1    jruoho 
    261           1.1    jruoho } ACPI_ASF_ADDRESS;
    262           1.1    jruoho 
    263           1.1    jruoho 
    264           1.1    jruoho /*******************************************************************************
    265           1.1    jruoho  *
    266           1.1    jruoho  * BOOT - Simple Boot Flag Table
    267           1.1    jruoho  *        Version 1
    268           1.1    jruoho  *
    269           1.1    jruoho  * Conforms to the "Simple Boot Flag Specification", Version 2.1
    270           1.1    jruoho  *
    271           1.1    jruoho  ******************************************************************************/
    272           1.1    jruoho 
    273           1.1    jruoho typedef struct acpi_table_boot
    274           1.1    jruoho {
    275           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    276           1.1    jruoho     UINT8                   CmosIndex;          /* Index in CMOS RAM for the boot register */
    277           1.1    jruoho     UINT8                   Reserved[3];
    278           1.1    jruoho 
    279           1.1    jruoho } ACPI_TABLE_BOOT;
    280           1.1    jruoho 
    281           1.1    jruoho 
    282           1.1    jruoho /*******************************************************************************
    283           1.1    jruoho  *
    284  1.1.1.3.12.1       tls  * CSRT - Core System Resource Table
    285  1.1.1.3.12.1       tls  *        Version 0
    286  1.1.1.3.12.1       tls  *
    287  1.1.1.3.12.1       tls  * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
    288  1.1.1.3.12.1       tls  *
    289  1.1.1.3.12.1       tls  ******************************************************************************/
    290  1.1.1.3.12.1       tls 
    291  1.1.1.3.12.1       tls typedef struct acpi_table_csrt
    292  1.1.1.3.12.1       tls {
    293  1.1.1.3.12.1       tls     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    294  1.1.1.3.12.1       tls 
    295  1.1.1.3.12.1       tls } ACPI_TABLE_CSRT;
    296  1.1.1.3.12.1       tls 
    297  1.1.1.3.12.1       tls 
    298  1.1.1.3.12.1       tls /* Resource Group subtable */
    299  1.1.1.3.12.1       tls 
    300  1.1.1.3.12.1       tls typedef struct acpi_csrt_group
    301  1.1.1.3.12.1       tls {
    302  1.1.1.3.12.1       tls     UINT32                  Length;
    303  1.1.1.3.12.1       tls     UINT32                  VendorId;
    304  1.1.1.3.12.1       tls     UINT32                  SubvendorId;
    305  1.1.1.3.12.1       tls     UINT16                  DeviceId;
    306  1.1.1.3.12.1       tls     UINT16                  SubdeviceId;
    307  1.1.1.3.12.1       tls     UINT16                  Revision;
    308  1.1.1.3.12.1       tls     UINT16                  Reserved;
    309  1.1.1.3.12.1       tls     UINT32                  SharedInfoLength;
    310  1.1.1.3.12.1       tls 
    311  1.1.1.3.12.1       tls     /* Shared data immediately follows (Length = SharedInfoLength) */
    312  1.1.1.3.12.1       tls 
    313  1.1.1.3.12.1       tls } ACPI_CSRT_GROUP;
    314  1.1.1.3.12.1       tls 
    315  1.1.1.3.12.1       tls /* Shared Info subtable */
    316  1.1.1.3.12.1       tls 
    317  1.1.1.3.12.1       tls typedef struct acpi_csrt_shared_info
    318  1.1.1.3.12.1       tls {
    319  1.1.1.3.12.1       tls     UINT16                  MajorVersion;
    320  1.1.1.3.12.1       tls     UINT16                  MinorVersion;
    321  1.1.1.3.12.1       tls     UINT32                  MmioBaseLow;
    322  1.1.1.3.12.1       tls     UINT32                  MmioBaseHigh;
    323  1.1.1.3.12.1       tls     UINT32                  GsiInterrupt;
    324  1.1.1.3.12.1       tls     UINT8                   InterruptPolarity;
    325  1.1.1.3.12.1       tls     UINT8                   InterruptMode;
    326  1.1.1.3.12.1       tls     UINT8                   NumChannels;
    327  1.1.1.3.12.1       tls     UINT8                   DmaAddressWidth;
    328  1.1.1.3.12.1       tls     UINT16                  BaseRequestLine;
    329  1.1.1.3.12.1       tls     UINT16                  NumHandshakeSignals;
    330  1.1.1.3.12.1       tls     UINT32                  MaxBlockSize;
    331  1.1.1.3.12.1       tls 
    332  1.1.1.3.12.1       tls     /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
    333  1.1.1.3.12.1       tls 
    334  1.1.1.3.12.1       tls } ACPI_CSRT_SHARED_INFO;
    335  1.1.1.3.12.1       tls 
    336  1.1.1.3.12.1       tls /* Resource Descriptor subtable */
    337  1.1.1.3.12.1       tls 
    338  1.1.1.3.12.1       tls typedef struct acpi_csrt_descriptor
    339  1.1.1.3.12.1       tls {
    340  1.1.1.3.12.1       tls     UINT32                  Length;
    341  1.1.1.3.12.1       tls     UINT16                  Type;
    342  1.1.1.3.12.1       tls     UINT16                  Subtype;
    343  1.1.1.3.12.1       tls     UINT32                  Uid;
    344  1.1.1.3.12.1       tls 
    345  1.1.1.3.12.1       tls     /* Resource-specific information immediately follows */
    346  1.1.1.3.12.1       tls 
    347  1.1.1.3.12.1       tls } ACPI_CSRT_DESCRIPTOR;
    348  1.1.1.3.12.1       tls 
    349  1.1.1.3.12.1       tls 
    350  1.1.1.3.12.1       tls /* Resource Types */
    351  1.1.1.3.12.1       tls 
    352  1.1.1.3.12.1       tls #define ACPI_CSRT_TYPE_INTERRUPT    0x0001
    353  1.1.1.3.12.1       tls #define ACPI_CSRT_TYPE_TIMER        0x0002
    354  1.1.1.3.12.1       tls #define ACPI_CSRT_TYPE_DMA          0x0003
    355  1.1.1.3.12.1       tls 
    356  1.1.1.3.12.1       tls /* Resource Subtypes */
    357  1.1.1.3.12.1       tls 
    358  1.1.1.3.12.1       tls #define ACPI_CSRT_XRUPT_LINE        0x0000
    359  1.1.1.3.12.1       tls #define ACPI_CSRT_XRUPT_CONTROLLER  0x0001
    360  1.1.1.3.12.1       tls #define ACPI_CSRT_TIMER             0x0000
    361  1.1.1.3.12.1       tls #define ACPI_CSRT_DMA_CHANNEL       0x0000
    362  1.1.1.3.12.1       tls #define ACPI_CSRT_DMA_CONTROLLER    0x0001
    363  1.1.1.3.12.1       tls 
    364  1.1.1.3.12.1       tls 
    365  1.1.1.3.12.1       tls /*******************************************************************************
    366  1.1.1.3.12.1       tls  *
    367  1.1.1.3.12.1       tls  * DBG2 - Debug Port Table 2
    368  1.1.1.3.12.1       tls  *        Version 0 (Both main table and subtables)
    369  1.1.1.3.12.1       tls  *
    370  1.1.1.3.12.2  jdolecek  * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
    371  1.1.1.3.12.1       tls  *
    372  1.1.1.3.12.1       tls  ******************************************************************************/
    373  1.1.1.3.12.1       tls 
    374  1.1.1.3.12.1       tls typedef struct acpi_table_dbg2
    375  1.1.1.3.12.1       tls {
    376  1.1.1.3.12.1       tls     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    377  1.1.1.3.12.1       tls     UINT32                  InfoOffset;
    378  1.1.1.3.12.1       tls     UINT32                  InfoCount;
    379  1.1.1.3.12.1       tls 
    380  1.1.1.3.12.1       tls } ACPI_TABLE_DBG2;
    381  1.1.1.3.12.1       tls 
    382  1.1.1.3.12.1       tls 
    383  1.1.1.3.12.1       tls typedef struct acpi_dbg2_header
    384  1.1.1.3.12.1       tls {
    385  1.1.1.3.12.1       tls     UINT32                  InfoOffset;
    386  1.1.1.3.12.1       tls     UINT32                  InfoCount;
    387  1.1.1.3.12.1       tls 
    388  1.1.1.3.12.1       tls } ACPI_DBG2_HEADER;
    389  1.1.1.3.12.1       tls 
    390  1.1.1.3.12.1       tls 
    391  1.1.1.3.12.1       tls /* Debug Device Information Subtable */
    392  1.1.1.3.12.1       tls 
    393  1.1.1.3.12.1       tls typedef struct acpi_dbg2_device
    394  1.1.1.3.12.1       tls {
    395  1.1.1.3.12.1       tls     UINT8                   Revision;
    396  1.1.1.3.12.1       tls     UINT16                  Length;
    397  1.1.1.3.12.1       tls     UINT8                   RegisterCount;      /* Number of BaseAddress registers */
    398  1.1.1.3.12.1       tls     UINT16                  NamepathLength;
    399  1.1.1.3.12.1       tls     UINT16                  NamepathOffset;
    400  1.1.1.3.12.1       tls     UINT16                  OemDataLength;
    401  1.1.1.3.12.1       tls     UINT16                  OemDataOffset;
    402  1.1.1.3.12.1       tls     UINT16                  PortType;
    403  1.1.1.3.12.1       tls     UINT16                  PortSubtype;
    404  1.1.1.3.12.1       tls     UINT16                  Reserved;
    405  1.1.1.3.12.1       tls     UINT16                  BaseAddressOffset;
    406  1.1.1.3.12.1       tls     UINT16                  AddressSizeOffset;
    407  1.1.1.3.12.1       tls     /*
    408  1.1.1.3.12.1       tls      * Data that follows:
    409  1.1.1.3.12.1       tls      *    BaseAddress (required) - Each in 12-byte Generic Address Structure format.
    410  1.1.1.3.12.1       tls      *    AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
    411  1.1.1.3.12.1       tls      *    Namepath    (required) - Null terminated string. Single dot if not supported.
    412  1.1.1.3.12.1       tls      *    OemData     (optional) - Length is OemDataLength.
    413  1.1.1.3.12.1       tls      */
    414  1.1.1.3.12.1       tls } ACPI_DBG2_DEVICE;
    415  1.1.1.3.12.1       tls 
    416  1.1.1.3.12.1       tls /* Types for PortType field above */
    417  1.1.1.3.12.1       tls 
    418  1.1.1.3.12.1       tls #define ACPI_DBG2_SERIAL_PORT       0x8000
    419  1.1.1.3.12.1       tls #define ACPI_DBG2_1394_PORT         0x8001
    420  1.1.1.3.12.1       tls #define ACPI_DBG2_USB_PORT          0x8002
    421  1.1.1.3.12.1       tls #define ACPI_DBG2_NET_PORT          0x8003
    422  1.1.1.3.12.1       tls 
    423  1.1.1.3.12.1       tls /* Subtypes for PortSubtype field above */
    424  1.1.1.3.12.1       tls 
    425  1.1.1.3.12.1       tls #define ACPI_DBG2_16550_COMPATIBLE  0x0000
    426  1.1.1.3.12.1       tls #define ACPI_DBG2_16550_SUBSET      0x0001
    427  1.1.1.3.12.2  jdolecek #define ACPI_DBG2_ARM_PL011         0x0003
    428  1.1.1.3.12.2  jdolecek #define ACPI_DBG2_ARM_SBSA_32BIT    0x000D
    429  1.1.1.3.12.2  jdolecek #define ACPI_DBG2_ARM_SBSA_GENERIC  0x000E
    430  1.1.1.3.12.2  jdolecek #define ACPI_DBG2_ARM_DCC           0x000F
    431  1.1.1.3.12.2  jdolecek #define ACPI_DBG2_BCM2835           0x0010
    432  1.1.1.3.12.1       tls 
    433  1.1.1.3.12.1       tls #define ACPI_DBG2_1394_STANDARD     0x0000
    434  1.1.1.3.12.1       tls 
    435  1.1.1.3.12.1       tls #define ACPI_DBG2_USB_XHCI          0x0000
    436  1.1.1.3.12.1       tls #define ACPI_DBG2_USB_EHCI          0x0001
    437  1.1.1.3.12.1       tls 
    438  1.1.1.3.12.1       tls 
    439  1.1.1.3.12.1       tls /*******************************************************************************
    440  1.1.1.3.12.1       tls  *
    441           1.1    jruoho  * DBGP - Debug Port table
    442           1.1    jruoho  *        Version 1
    443           1.1    jruoho  *
    444           1.1    jruoho  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
    445           1.1    jruoho  *
    446           1.1    jruoho  ******************************************************************************/
    447           1.1    jruoho 
    448           1.1    jruoho typedef struct acpi_table_dbgp
    449           1.1    jruoho {
    450           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    451           1.1    jruoho     UINT8                   Type;               /* 0=full 16550, 1=subset of 16550 */
    452           1.1    jruoho     UINT8                   Reserved[3];
    453           1.1    jruoho     ACPI_GENERIC_ADDRESS    DebugPort;
    454           1.1    jruoho 
    455           1.1    jruoho } ACPI_TABLE_DBGP;
    456           1.1    jruoho 
    457           1.1    jruoho 
    458           1.1    jruoho /*******************************************************************************
    459           1.1    jruoho  *
    460           1.1    jruoho  * DMAR - DMA Remapping table
    461           1.1    jruoho  *        Version 1
    462           1.1    jruoho  *
    463           1.1    jruoho  * Conforms to "Intel Virtualization Technology for Directed I/O",
    464  1.1.1.3.12.2  jdolecek  * Version 2.3, October 2014
    465           1.1    jruoho  *
    466           1.1    jruoho  ******************************************************************************/
    467           1.1    jruoho 
    468           1.1    jruoho typedef struct acpi_table_dmar
    469           1.1    jruoho {
    470           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    471           1.1    jruoho     UINT8                   Width;              /* Host Address Width */
    472           1.1    jruoho     UINT8                   Flags;
    473           1.1    jruoho     UINT8                   Reserved[10];
    474           1.1    jruoho 
    475           1.1    jruoho } ACPI_TABLE_DMAR;
    476           1.1    jruoho 
    477           1.1    jruoho /* Masks for Flags field above */
    478           1.1    jruoho 
    479           1.1    jruoho #define ACPI_DMAR_INTR_REMAP        (1)
    480  1.1.1.3.12.2  jdolecek #define ACPI_DMAR_X2APIC_OPT_OUT    (1<<1)
    481  1.1.1.3.12.2  jdolecek #define ACPI_DMAR_X2APIC_MODE       (1<<2)
    482           1.1    jruoho 
    483           1.1    jruoho 
    484           1.1    jruoho /* DMAR subtable header */
    485           1.1    jruoho 
    486           1.1    jruoho typedef struct acpi_dmar_header
    487           1.1    jruoho {
    488           1.1    jruoho     UINT16                  Type;
    489           1.1    jruoho     UINT16                  Length;
    490           1.1    jruoho 
    491           1.1    jruoho } ACPI_DMAR_HEADER;
    492           1.1    jruoho 
    493           1.1    jruoho /* Values for subtable type in ACPI_DMAR_HEADER */
    494           1.1    jruoho 
    495           1.1    jruoho enum AcpiDmarType
    496           1.1    jruoho {
    497           1.1    jruoho     ACPI_DMAR_TYPE_HARDWARE_UNIT        = 0,
    498           1.1    jruoho     ACPI_DMAR_TYPE_RESERVED_MEMORY      = 1,
    499  1.1.1.3.12.2  jdolecek     ACPI_DMAR_TYPE_ROOT_ATS             = 2,
    500  1.1.1.3.12.2  jdolecek     ACPI_DMAR_TYPE_HARDWARE_AFFINITY    = 3,
    501  1.1.1.3.12.2  jdolecek     ACPI_DMAR_TYPE_NAMESPACE            = 4,
    502  1.1.1.3.12.2  jdolecek     ACPI_DMAR_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
    503           1.1    jruoho };
    504           1.1    jruoho 
    505           1.1    jruoho 
    506           1.1    jruoho /* DMAR Device Scope structure */
    507           1.1    jruoho 
    508           1.1    jruoho typedef struct acpi_dmar_device_scope
    509           1.1    jruoho {
    510           1.1    jruoho     UINT8                   EntryType;
    511           1.1    jruoho     UINT8                   Length;
    512           1.1    jruoho     UINT16                  Reserved;
    513           1.1    jruoho     UINT8                   EnumerationId;
    514           1.1    jruoho     UINT8                   Bus;
    515           1.1    jruoho 
    516           1.1    jruoho } ACPI_DMAR_DEVICE_SCOPE;
    517           1.1    jruoho 
    518  1.1.1.3.12.2  jdolecek /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
    519           1.1    jruoho 
    520           1.1    jruoho enum AcpiDmarScopeType
    521           1.1    jruoho {
    522           1.1    jruoho     ACPI_DMAR_SCOPE_TYPE_NOT_USED       = 0,
    523           1.1    jruoho     ACPI_DMAR_SCOPE_TYPE_ENDPOINT       = 1,
    524           1.1    jruoho     ACPI_DMAR_SCOPE_TYPE_BRIDGE         = 2,
    525           1.1    jruoho     ACPI_DMAR_SCOPE_TYPE_IOAPIC         = 3,
    526           1.1    jruoho     ACPI_DMAR_SCOPE_TYPE_HPET           = 4,
    527  1.1.1.3.12.2  jdolecek     ACPI_DMAR_SCOPE_TYPE_NAMESPACE      = 5,
    528  1.1.1.3.12.2  jdolecek     ACPI_DMAR_SCOPE_TYPE_RESERVED       = 6     /* 6 and greater are reserved */
    529           1.1    jruoho };
    530           1.1    jruoho 
    531           1.1    jruoho typedef struct acpi_dmar_pci_path
    532           1.1    jruoho {
    533           1.1    jruoho     UINT8                   Device;
    534           1.1    jruoho     UINT8                   Function;
    535           1.1    jruoho 
    536           1.1    jruoho } ACPI_DMAR_PCI_PATH;
    537           1.1    jruoho 
    538           1.1    jruoho 
    539           1.1    jruoho /*
    540  1.1.1.3.12.2  jdolecek  * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
    541           1.1    jruoho  */
    542           1.1    jruoho 
    543           1.1    jruoho /* 0: Hardware Unit Definition */
    544           1.1    jruoho 
    545           1.1    jruoho typedef struct acpi_dmar_hardware_unit
    546           1.1    jruoho {
    547           1.1    jruoho     ACPI_DMAR_HEADER        Header;
    548           1.1    jruoho     UINT8                   Flags;
    549           1.1    jruoho     UINT8                   Reserved;
    550           1.1    jruoho     UINT16                  Segment;
    551           1.1    jruoho     UINT64                  Address;            /* Register Base Address */
    552           1.1    jruoho 
    553           1.1    jruoho } ACPI_DMAR_HARDWARE_UNIT;
    554           1.1    jruoho 
    555           1.1    jruoho /* Masks for Flags field above */
    556           1.1    jruoho 
    557           1.1    jruoho #define ACPI_DMAR_INCLUDE_ALL       (1)
    558           1.1    jruoho 
    559           1.1    jruoho 
    560           1.1    jruoho /* 1: Reserved Memory Defininition */
    561           1.1    jruoho 
    562           1.1    jruoho typedef struct acpi_dmar_reserved_memory
    563           1.1    jruoho {
    564           1.1    jruoho     ACPI_DMAR_HEADER        Header;
    565           1.1    jruoho     UINT16                  Reserved;
    566           1.1    jruoho     UINT16                  Segment;
    567           1.1    jruoho     UINT64                  BaseAddress;        /* 4K aligned base address */
    568           1.1    jruoho     UINT64                  EndAddress;         /* 4K aligned limit address */
    569           1.1    jruoho 
    570           1.1    jruoho } ACPI_DMAR_RESERVED_MEMORY;
    571           1.1    jruoho 
    572           1.1    jruoho /* Masks for Flags field above */
    573           1.1    jruoho 
    574           1.1    jruoho #define ACPI_DMAR_ALLOW_ALL         (1)
    575           1.1    jruoho 
    576           1.1    jruoho 
    577           1.1    jruoho /* 2: Root Port ATS Capability Reporting Structure */
    578           1.1    jruoho 
    579           1.1    jruoho typedef struct acpi_dmar_atsr
    580           1.1    jruoho {
    581           1.1    jruoho     ACPI_DMAR_HEADER        Header;
    582           1.1    jruoho     UINT8                   Flags;
    583           1.1    jruoho     UINT8                   Reserved;
    584           1.1    jruoho     UINT16                  Segment;
    585           1.1    jruoho 
    586           1.1    jruoho } ACPI_DMAR_ATSR;
    587           1.1    jruoho 
    588           1.1    jruoho /* Masks for Flags field above */
    589           1.1    jruoho 
    590           1.1    jruoho #define ACPI_DMAR_ALL_PORTS         (1)
    591           1.1    jruoho 
    592           1.1    jruoho 
    593           1.1    jruoho /* 3: Remapping Hardware Static Affinity Structure */
    594           1.1    jruoho 
    595           1.1    jruoho typedef struct acpi_dmar_rhsa
    596           1.1    jruoho {
    597           1.1    jruoho     ACPI_DMAR_HEADER        Header;
    598           1.1    jruoho     UINT32                  Reserved;
    599           1.1    jruoho     UINT64                  BaseAddress;
    600           1.1    jruoho     UINT32                  ProximityDomain;
    601           1.1    jruoho 
    602           1.1    jruoho } ACPI_DMAR_RHSA;
    603           1.1    jruoho 
    604           1.1    jruoho 
    605  1.1.1.3.12.2  jdolecek /* 4: ACPI Namespace Device Declaration Structure */
    606  1.1.1.3.12.2  jdolecek 
    607  1.1.1.3.12.2  jdolecek typedef struct acpi_dmar_andd
    608  1.1.1.3.12.2  jdolecek {
    609  1.1.1.3.12.2  jdolecek     ACPI_DMAR_HEADER        Header;
    610  1.1.1.3.12.2  jdolecek     UINT8                   Reserved[3];
    611  1.1.1.3.12.2  jdolecek     UINT8                   DeviceNumber;
    612  1.1.1.3.12.2  jdolecek     char                    DeviceName[1];
    613  1.1.1.3.12.2  jdolecek 
    614  1.1.1.3.12.2  jdolecek } ACPI_DMAR_ANDD;
    615  1.1.1.3.12.2  jdolecek 
    616  1.1.1.3.12.2  jdolecek 
    617           1.1    jruoho /*******************************************************************************
    618           1.1    jruoho  *
    619           1.1    jruoho  * HPET - High Precision Event Timer table
    620           1.1    jruoho  *        Version 1
    621           1.1    jruoho  *
    622           1.1    jruoho  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
    623           1.1    jruoho  * Version 1.0a, October 2004
    624           1.1    jruoho  *
    625           1.1    jruoho  ******************************************************************************/
    626           1.1    jruoho 
    627           1.1    jruoho typedef struct acpi_table_hpet
    628           1.1    jruoho {
    629           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    630           1.1    jruoho     UINT32                  Id;                 /* Hardware ID of event timer block */
    631           1.1    jruoho     ACPI_GENERIC_ADDRESS    Address;            /* Address of event timer block */
    632           1.1    jruoho     UINT8                   Sequence;           /* HPET sequence number */
    633           1.1    jruoho     UINT16                  MinimumTick;        /* Main counter min tick, periodic mode */
    634           1.1    jruoho     UINT8                   Flags;
    635           1.1    jruoho 
    636           1.1    jruoho } ACPI_TABLE_HPET;
    637           1.1    jruoho 
    638           1.1    jruoho /* Masks for Flags field above */
    639           1.1    jruoho 
    640           1.1    jruoho #define ACPI_HPET_PAGE_PROTECT_MASK (3)
    641           1.1    jruoho 
    642           1.1    jruoho /* Values for Page Protect flags */
    643           1.1    jruoho 
    644           1.1    jruoho enum AcpiHpetPageProtect
    645           1.1    jruoho {
    646           1.1    jruoho     ACPI_HPET_NO_PAGE_PROTECT       = 0,
    647           1.1    jruoho     ACPI_HPET_PAGE_PROTECT4         = 1,
    648           1.1    jruoho     ACPI_HPET_PAGE_PROTECT64        = 2
    649           1.1    jruoho };
    650           1.1    jruoho 
    651           1.1    jruoho 
    652           1.1    jruoho /*******************************************************************************
    653           1.1    jruoho  *
    654           1.1    jruoho  * IBFT - Boot Firmware Table
    655           1.1    jruoho  *        Version 1
    656           1.1    jruoho  *
    657           1.1    jruoho  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
    658           1.1    jruoho  * Specification", Version 1.01, March 1, 2007
    659           1.1    jruoho  *
    660           1.1    jruoho  * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
    661           1.1    jruoho  * Therefore, it is not currently supported by the disassembler.
    662           1.1    jruoho  *
    663           1.1    jruoho  ******************************************************************************/
    664           1.1    jruoho 
    665           1.1    jruoho typedef struct acpi_table_ibft
    666           1.1    jruoho {
    667           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    668           1.1    jruoho     UINT8                   Reserved[12];
    669           1.1    jruoho 
    670           1.1    jruoho } ACPI_TABLE_IBFT;
    671           1.1    jruoho 
    672           1.1    jruoho 
    673           1.1    jruoho /* IBFT common subtable header */
    674           1.1    jruoho 
    675           1.1    jruoho typedef struct acpi_ibft_header
    676           1.1    jruoho {
    677           1.1    jruoho     UINT8                   Type;
    678           1.1    jruoho     UINT8                   Version;
    679           1.1    jruoho     UINT16                  Length;
    680           1.1    jruoho     UINT8                   Index;
    681           1.1    jruoho     UINT8                   Flags;
    682           1.1    jruoho 
    683           1.1    jruoho } ACPI_IBFT_HEADER;
    684           1.1    jruoho 
    685           1.1    jruoho /* Values for Type field above */
    686           1.1    jruoho 
    687           1.1    jruoho enum AcpiIbftType
    688           1.1    jruoho {
    689           1.1    jruoho     ACPI_IBFT_TYPE_NOT_USED         = 0,
    690           1.1    jruoho     ACPI_IBFT_TYPE_CONTROL          = 1,
    691           1.1    jruoho     ACPI_IBFT_TYPE_INITIATOR        = 2,
    692           1.1    jruoho     ACPI_IBFT_TYPE_NIC              = 3,
    693           1.1    jruoho     ACPI_IBFT_TYPE_TARGET           = 4,
    694           1.1    jruoho     ACPI_IBFT_TYPE_EXTENSIONS       = 5,
    695           1.1    jruoho     ACPI_IBFT_TYPE_RESERVED         = 6     /* 6 and greater are reserved */
    696           1.1    jruoho };
    697           1.1    jruoho 
    698           1.1    jruoho 
    699           1.1    jruoho /* IBFT subtables */
    700           1.1    jruoho 
    701           1.1    jruoho typedef struct acpi_ibft_control
    702           1.1    jruoho {
    703           1.1    jruoho     ACPI_IBFT_HEADER        Header;
    704           1.1    jruoho     UINT16                  Extensions;
    705           1.1    jruoho     UINT16                  InitiatorOffset;
    706           1.1    jruoho     UINT16                  Nic0Offset;
    707           1.1    jruoho     UINT16                  Target0Offset;
    708           1.1    jruoho     UINT16                  Nic1Offset;
    709           1.1    jruoho     UINT16                  Target1Offset;
    710           1.1    jruoho 
    711           1.1    jruoho } ACPI_IBFT_CONTROL;
    712           1.1    jruoho 
    713           1.1    jruoho typedef struct acpi_ibft_initiator
    714           1.1    jruoho {
    715           1.1    jruoho     ACPI_IBFT_HEADER        Header;
    716           1.1    jruoho     UINT8                   SnsServer[16];
    717           1.1    jruoho     UINT8                   SlpServer[16];
    718           1.1    jruoho     UINT8                   PrimaryServer[16];
    719           1.1    jruoho     UINT8                   SecondaryServer[16];
    720           1.1    jruoho     UINT16                  NameLength;
    721           1.1    jruoho     UINT16                  NameOffset;
    722           1.1    jruoho 
    723           1.1    jruoho } ACPI_IBFT_INITIATOR;
    724           1.1    jruoho 
    725           1.1    jruoho typedef struct acpi_ibft_nic
    726           1.1    jruoho {
    727           1.1    jruoho     ACPI_IBFT_HEADER        Header;
    728           1.1    jruoho     UINT8                   IpAddress[16];
    729           1.1    jruoho     UINT8                   SubnetMaskPrefix;
    730           1.1    jruoho     UINT8                   Origin;
    731           1.1    jruoho     UINT8                   Gateway[16];
    732           1.1    jruoho     UINT8                   PrimaryDns[16];
    733           1.1    jruoho     UINT8                   SecondaryDns[16];
    734           1.1    jruoho     UINT8                   Dhcp[16];
    735           1.1    jruoho     UINT16                  Vlan;
    736           1.1    jruoho     UINT8                   MacAddress[6];
    737           1.1    jruoho     UINT16                  PciAddress;
    738           1.1    jruoho     UINT16                  NameLength;
    739           1.1    jruoho     UINT16                  NameOffset;
    740           1.1    jruoho 
    741           1.1    jruoho } ACPI_IBFT_NIC;
    742           1.1    jruoho 
    743           1.1    jruoho typedef struct acpi_ibft_target
    744           1.1    jruoho {
    745           1.1    jruoho     ACPI_IBFT_HEADER        Header;
    746           1.1    jruoho     UINT8                   TargetIpAddress[16];
    747           1.1    jruoho     UINT16                  TargetIpSocket;
    748           1.1    jruoho     UINT8                   TargetBootLun[8];
    749           1.1    jruoho     UINT8                   ChapType;
    750           1.1    jruoho     UINT8                   NicAssociation;
    751           1.1    jruoho     UINT16                  TargetNameLength;
    752           1.1    jruoho     UINT16                  TargetNameOffset;
    753           1.1    jruoho     UINT16                  ChapNameLength;
    754           1.1    jruoho     UINT16                  ChapNameOffset;
    755           1.1    jruoho     UINT16                  ChapSecretLength;
    756           1.1    jruoho     UINT16                  ChapSecretOffset;
    757           1.1    jruoho     UINT16                  ReverseChapNameLength;
    758           1.1    jruoho     UINT16                  ReverseChapNameOffset;
    759           1.1    jruoho     UINT16                  ReverseChapSecretLength;
    760           1.1    jruoho     UINT16                  ReverseChapSecretOffset;
    761           1.1    jruoho 
    762           1.1    jruoho } ACPI_IBFT_TARGET;
    763           1.1    jruoho 
    764           1.1    jruoho 
    765           1.1    jruoho /*******************************************************************************
    766           1.1    jruoho  *
    767  1.1.1.3.12.2  jdolecek  * IORT - IO Remapping Table
    768  1.1.1.3.12.2  jdolecek  *
    769  1.1.1.3.12.2  jdolecek  * Conforms to "IO Remapping Table System Software on ARM Platforms",
    770  1.1.1.3.12.2  jdolecek  * Document number: ARM DEN 0049C, May 2017
    771  1.1.1.3.12.2  jdolecek  *
    772  1.1.1.3.12.2  jdolecek  ******************************************************************************/
    773  1.1.1.3.12.2  jdolecek 
    774  1.1.1.3.12.2  jdolecek typedef struct acpi_table_iort
    775  1.1.1.3.12.2  jdolecek {
    776  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;
    777  1.1.1.3.12.2  jdolecek     UINT32                  NodeCount;
    778  1.1.1.3.12.2  jdolecek     UINT32                  NodeOffset;
    779  1.1.1.3.12.2  jdolecek     UINT32                  Reserved;
    780  1.1.1.3.12.2  jdolecek 
    781  1.1.1.3.12.2  jdolecek } ACPI_TABLE_IORT;
    782  1.1.1.3.12.2  jdolecek 
    783  1.1.1.3.12.2  jdolecek 
    784  1.1.1.3.12.2  jdolecek /*
    785  1.1.1.3.12.2  jdolecek  * IORT subtables
    786  1.1.1.3.12.2  jdolecek  */
    787  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_node
    788  1.1.1.3.12.2  jdolecek {
    789  1.1.1.3.12.2  jdolecek     UINT8                   Type;
    790  1.1.1.3.12.2  jdolecek     UINT16                  Length;
    791  1.1.1.3.12.2  jdolecek     UINT8                   Revision;
    792  1.1.1.3.12.2  jdolecek     UINT32                  Reserved;
    793  1.1.1.3.12.2  jdolecek     UINT32                  MappingCount;
    794  1.1.1.3.12.2  jdolecek     UINT32                  MappingOffset;
    795  1.1.1.3.12.2  jdolecek     char                    NodeData[1];
    796  1.1.1.3.12.2  jdolecek 
    797  1.1.1.3.12.2  jdolecek } ACPI_IORT_NODE;
    798  1.1.1.3.12.2  jdolecek 
    799  1.1.1.3.12.2  jdolecek /* Values for subtable Type above */
    800  1.1.1.3.12.2  jdolecek 
    801  1.1.1.3.12.2  jdolecek enum AcpiIortNodeType
    802  1.1.1.3.12.2  jdolecek {
    803  1.1.1.3.12.2  jdolecek     ACPI_IORT_NODE_ITS_GROUP            = 0x00,
    804  1.1.1.3.12.2  jdolecek     ACPI_IORT_NODE_NAMED_COMPONENT      = 0x01,
    805  1.1.1.3.12.2  jdolecek     ACPI_IORT_NODE_PCI_ROOT_COMPLEX     = 0x02,
    806  1.1.1.3.12.2  jdolecek     ACPI_IORT_NODE_SMMU                 = 0x03,
    807  1.1.1.3.12.2  jdolecek     ACPI_IORT_NODE_SMMU_V3              = 0x04
    808  1.1.1.3.12.2  jdolecek };
    809  1.1.1.3.12.2  jdolecek 
    810  1.1.1.3.12.2  jdolecek 
    811  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_id_mapping
    812  1.1.1.3.12.2  jdolecek {
    813  1.1.1.3.12.2  jdolecek     UINT32                  InputBase;          /* Lowest value in input range */
    814  1.1.1.3.12.2  jdolecek     UINT32                  IdCount;            /* Number of IDs */
    815  1.1.1.3.12.2  jdolecek     UINT32                  OutputBase;         /* Lowest value in output range */
    816  1.1.1.3.12.2  jdolecek     UINT32                  OutputReference;    /* A reference to the output node */
    817  1.1.1.3.12.2  jdolecek     UINT32                  Flags;
    818  1.1.1.3.12.2  jdolecek 
    819  1.1.1.3.12.2  jdolecek } ACPI_IORT_ID_MAPPING;
    820  1.1.1.3.12.2  jdolecek 
    821  1.1.1.3.12.2  jdolecek /* Masks for Flags field above for IORT subtable */
    822  1.1.1.3.12.2  jdolecek 
    823  1.1.1.3.12.2  jdolecek #define ACPI_IORT_ID_SINGLE_MAPPING (1)
    824  1.1.1.3.12.2  jdolecek 
    825  1.1.1.3.12.2  jdolecek 
    826  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_memory_access
    827  1.1.1.3.12.2  jdolecek {
    828  1.1.1.3.12.2  jdolecek     UINT32                  CacheCoherency;
    829  1.1.1.3.12.2  jdolecek     UINT8                   Hints;
    830  1.1.1.3.12.2  jdolecek     UINT16                  Reserved;
    831  1.1.1.3.12.2  jdolecek     UINT8                   MemoryFlags;
    832  1.1.1.3.12.2  jdolecek 
    833  1.1.1.3.12.2  jdolecek } ACPI_IORT_MEMORY_ACCESS;
    834  1.1.1.3.12.2  jdolecek 
    835  1.1.1.3.12.2  jdolecek /* Values for CacheCoherency field above */
    836  1.1.1.3.12.2  jdolecek 
    837  1.1.1.3.12.2  jdolecek #define ACPI_IORT_NODE_COHERENT         0x00000001  /* The device node is fully coherent */
    838  1.1.1.3.12.2  jdolecek #define ACPI_IORT_NODE_NOT_COHERENT     0x00000000  /* The device node is not coherent */
    839  1.1.1.3.12.2  jdolecek 
    840  1.1.1.3.12.2  jdolecek /* Masks for Hints field above */
    841  1.1.1.3.12.2  jdolecek 
    842  1.1.1.3.12.2  jdolecek #define ACPI_IORT_HT_TRANSIENT          (1)
    843  1.1.1.3.12.2  jdolecek #define ACPI_IORT_HT_WRITE              (1<<1)
    844  1.1.1.3.12.2  jdolecek #define ACPI_IORT_HT_READ               (1<<2)
    845  1.1.1.3.12.2  jdolecek #define ACPI_IORT_HT_OVERRIDE           (1<<3)
    846  1.1.1.3.12.2  jdolecek 
    847  1.1.1.3.12.2  jdolecek /* Masks for MemoryFlags field above */
    848  1.1.1.3.12.2  jdolecek 
    849  1.1.1.3.12.2  jdolecek #define ACPI_IORT_MF_COHERENCY          (1)
    850  1.1.1.3.12.2  jdolecek #define ACPI_IORT_MF_ATTRIBUTES         (1<<1)
    851  1.1.1.3.12.2  jdolecek 
    852  1.1.1.3.12.2  jdolecek 
    853  1.1.1.3.12.2  jdolecek /*
    854  1.1.1.3.12.2  jdolecek  * IORT node specific subtables
    855  1.1.1.3.12.2  jdolecek  */
    856  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_its_group
    857  1.1.1.3.12.2  jdolecek {
    858  1.1.1.3.12.2  jdolecek     UINT32                  ItsCount;
    859  1.1.1.3.12.2  jdolecek     UINT32                  Identifiers[1];         /* GIC ITS identifier arrary */
    860  1.1.1.3.12.2  jdolecek 
    861  1.1.1.3.12.2  jdolecek } ACPI_IORT_ITS_GROUP;
    862  1.1.1.3.12.2  jdolecek 
    863  1.1.1.3.12.2  jdolecek 
    864  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_named_component
    865  1.1.1.3.12.2  jdolecek {
    866  1.1.1.3.12.2  jdolecek     UINT32                  NodeFlags;
    867  1.1.1.3.12.2  jdolecek     UINT64                  MemoryProperties;       /* Memory access properties */
    868  1.1.1.3.12.2  jdolecek     UINT8                   MemoryAddressLimit;     /* Memory address size limit */
    869  1.1.1.3.12.2  jdolecek     char                    DeviceName[1];          /* Path of namespace object */
    870  1.1.1.3.12.2  jdolecek 
    871  1.1.1.3.12.2  jdolecek } ACPI_IORT_NAMED_COMPONENT;
    872  1.1.1.3.12.2  jdolecek 
    873  1.1.1.3.12.2  jdolecek 
    874  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_root_complex
    875  1.1.1.3.12.2  jdolecek {
    876  1.1.1.3.12.2  jdolecek     UINT64                  MemoryProperties;       /* Memory access properties */
    877  1.1.1.3.12.2  jdolecek     UINT32                  AtsAttribute;
    878  1.1.1.3.12.2  jdolecek     UINT32                  PciSegmentNumber;
    879  1.1.1.3.12.2  jdolecek 
    880  1.1.1.3.12.2  jdolecek } ACPI_IORT_ROOT_COMPLEX;
    881  1.1.1.3.12.2  jdolecek 
    882  1.1.1.3.12.2  jdolecek /* Values for AtsAttribute field above */
    883  1.1.1.3.12.2  jdolecek 
    884  1.1.1.3.12.2  jdolecek #define ACPI_IORT_ATS_SUPPORTED         0x00000001  /* The root complex supports ATS */
    885  1.1.1.3.12.2  jdolecek #define ACPI_IORT_ATS_UNSUPPORTED       0x00000000  /* The root complex doesn't support ATS */
    886  1.1.1.3.12.2  jdolecek 
    887  1.1.1.3.12.2  jdolecek 
    888  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_smmu
    889  1.1.1.3.12.2  jdolecek {
    890  1.1.1.3.12.2  jdolecek     UINT64                  BaseAddress;            /* SMMU base address */
    891  1.1.1.3.12.2  jdolecek     UINT64                  Span;                   /* Length of memory range */
    892  1.1.1.3.12.2  jdolecek     UINT32                  Model;
    893  1.1.1.3.12.2  jdolecek     UINT32                  Flags;
    894  1.1.1.3.12.2  jdolecek     UINT32                  GlobalInterruptOffset;
    895  1.1.1.3.12.2  jdolecek     UINT32                  ContextInterruptCount;
    896  1.1.1.3.12.2  jdolecek     UINT32                  ContextInterruptOffset;
    897  1.1.1.3.12.2  jdolecek     UINT32                  PmuInterruptCount;
    898  1.1.1.3.12.2  jdolecek     UINT32                  PmuInterruptOffset;
    899  1.1.1.3.12.2  jdolecek     UINT64                  Interrupts[1];          /* Interrupt array */
    900  1.1.1.3.12.2  jdolecek 
    901  1.1.1.3.12.2  jdolecek } ACPI_IORT_SMMU;
    902  1.1.1.3.12.2  jdolecek 
    903  1.1.1.3.12.2  jdolecek /* Values for Model field above */
    904  1.1.1.3.12.2  jdolecek 
    905  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V1               0x00000000  /* Generic SMMUv1 */
    906  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V2               0x00000001  /* Generic SMMUv2 */
    907  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_CORELINK_MMU400  0x00000002  /* ARM Corelink MMU-400 */
    908  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_CORELINK_MMU500  0x00000003  /* ARM Corelink MMU-500 */
    909  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_CORELINK_MMU401  0x00000004  /* ARM Corelink MMU-401 */
    910  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_CAVIUM_THUNDERX  0x00000005  /* Cavium ThunderX SMMUv2 */
    911  1.1.1.3.12.2  jdolecek 
    912  1.1.1.3.12.2  jdolecek /* Masks for Flags field above */
    913  1.1.1.3.12.2  jdolecek 
    914  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_DVM_SUPPORTED    (1)
    915  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_COHERENT_WALK    (1<<1)
    916  1.1.1.3.12.2  jdolecek 
    917  1.1.1.3.12.2  jdolecek /* Global interrupt format */
    918  1.1.1.3.12.2  jdolecek 
    919  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_smmu_gsi
    920  1.1.1.3.12.2  jdolecek {
    921  1.1.1.3.12.2  jdolecek     UINT32                  NSgIrpt;
    922  1.1.1.3.12.2  jdolecek     UINT32                  NSgIrptFlags;
    923  1.1.1.3.12.2  jdolecek     UINT32                  NSgCfgIrpt;
    924  1.1.1.3.12.2  jdolecek     UINT32                  NSgCfgIrptFlags;
    925  1.1.1.3.12.2  jdolecek 
    926  1.1.1.3.12.2  jdolecek } ACPI_IORT_SMMU_GSI;
    927  1.1.1.3.12.2  jdolecek 
    928  1.1.1.3.12.2  jdolecek 
    929  1.1.1.3.12.2  jdolecek typedef struct acpi_iort_smmu_v3
    930  1.1.1.3.12.2  jdolecek {
    931  1.1.1.3.12.2  jdolecek     UINT64                  BaseAddress;            /* SMMUv3 base address */
    932  1.1.1.3.12.2  jdolecek     UINT32                  Flags;
    933  1.1.1.3.12.2  jdolecek     UINT32                  Reserved;
    934  1.1.1.3.12.2  jdolecek     UINT64                  VatosAddress;
    935  1.1.1.3.12.2  jdolecek     UINT32                  Model;
    936  1.1.1.3.12.2  jdolecek     UINT32                  EventGsiv;
    937  1.1.1.3.12.2  jdolecek     UINT32                  PriGsiv;
    938  1.1.1.3.12.2  jdolecek     UINT32                  GerrGsiv;
    939  1.1.1.3.12.2  jdolecek     UINT32                  SyncGsiv;
    940  1.1.1.3.12.2  jdolecek     UINT8                   Pxm;
    941  1.1.1.3.12.2  jdolecek     UINT8                   Reserved1;
    942  1.1.1.3.12.2  jdolecek     UINT16                  Reserved2;
    943  1.1.1.3.12.2  jdolecek     UINT32                  IdMappingIndex;
    944  1.1.1.3.12.2  jdolecek 
    945  1.1.1.3.12.2  jdolecek } ACPI_IORT_SMMU_V3;
    946  1.1.1.3.12.2  jdolecek 
    947  1.1.1.3.12.2  jdolecek /* Values for Model field above */
    948  1.1.1.3.12.2  jdolecek 
    949  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_GENERIC           0x00000000  /* Generic SMMUv3 */
    950  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_HISILICON_HI161X  0x00000001  /* HiSilicon Hi161x SMMUv3 */
    951  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX     0x00000002  /* Cavium CN99xx SMMUv3 */
    952  1.1.1.3.12.2  jdolecek 
    953  1.1.1.3.12.2  jdolecek /* Masks for Flags field above */
    954  1.1.1.3.12.2  jdolecek 
    955  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE   (1)
    956  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE     (1<<1)
    957  1.1.1.3.12.2  jdolecek #define ACPI_IORT_SMMU_V3_PXM_VALID         (1<<3)
    958  1.1.1.3.12.2  jdolecek 
    959  1.1.1.3.12.2  jdolecek 
    960  1.1.1.3.12.2  jdolecek /*******************************************************************************
    961  1.1.1.3.12.2  jdolecek  *
    962           1.1    jruoho  * IVRS - I/O Virtualization Reporting Structure
    963           1.1    jruoho  *        Version 1
    964           1.1    jruoho  *
    965           1.1    jruoho  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
    966           1.1    jruoho  * Revision 1.26, February 2009.
    967           1.1    jruoho  *
    968           1.1    jruoho  ******************************************************************************/
    969           1.1    jruoho 
    970           1.1    jruoho typedef struct acpi_table_ivrs
    971           1.1    jruoho {
    972           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
    973           1.1    jruoho     UINT32                  Info;               /* Common virtualization info */
    974           1.1    jruoho     UINT64                  Reserved;
    975           1.1    jruoho 
    976           1.1    jruoho } ACPI_TABLE_IVRS;
    977           1.1    jruoho 
    978           1.1    jruoho /* Values for Info field above */
    979           1.1    jruoho 
    980           1.1    jruoho #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00  /* 7 bits, physical address size */
    981           1.1    jruoho #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000  /* 7 bits, virtual address size */
    982           1.1    jruoho #define ACPI_IVRS_ATS_RESERVED      0x00400000  /* ATS address translation range reserved */
    983           1.1    jruoho 
    984           1.1    jruoho 
    985           1.1    jruoho /* IVRS subtable header */
    986           1.1    jruoho 
    987           1.1    jruoho typedef struct acpi_ivrs_header
    988           1.1    jruoho {
    989           1.1    jruoho     UINT8                   Type;               /* Subtable type */
    990           1.1    jruoho     UINT8                   Flags;
    991           1.1    jruoho     UINT16                  Length;             /* Subtable length */
    992           1.1    jruoho     UINT16                  DeviceId;           /* ID of IOMMU */
    993           1.1    jruoho 
    994           1.1    jruoho } ACPI_IVRS_HEADER;
    995           1.1    jruoho 
    996           1.1    jruoho /* Values for subtable Type above */
    997           1.1    jruoho 
    998           1.1    jruoho enum AcpiIvrsType
    999           1.1    jruoho {
   1000           1.1    jruoho     ACPI_IVRS_TYPE_HARDWARE         = 0x10,
   1001           1.1    jruoho     ACPI_IVRS_TYPE_MEMORY1          = 0x20,
   1002           1.1    jruoho     ACPI_IVRS_TYPE_MEMORY2          = 0x21,
   1003           1.1    jruoho     ACPI_IVRS_TYPE_MEMORY3          = 0x22
   1004           1.1    jruoho };
   1005           1.1    jruoho 
   1006           1.1    jruoho /* Masks for Flags field above for IVHD subtable */
   1007           1.1    jruoho 
   1008           1.1    jruoho #define ACPI_IVHD_TT_ENABLE         (1)
   1009           1.1    jruoho #define ACPI_IVHD_PASS_PW           (1<<1)
   1010           1.1    jruoho #define ACPI_IVHD_RES_PASS_PW       (1<<2)
   1011           1.1    jruoho #define ACPI_IVHD_ISOC              (1<<3)
   1012           1.1    jruoho #define ACPI_IVHD_IOTLB             (1<<4)
   1013           1.1    jruoho 
   1014           1.1    jruoho /* Masks for Flags field above for IVMD subtable */
   1015           1.1    jruoho 
   1016           1.1    jruoho #define ACPI_IVMD_UNITY             (1)
   1017           1.1    jruoho #define ACPI_IVMD_READ              (1<<1)
   1018           1.1    jruoho #define ACPI_IVMD_WRITE             (1<<2)
   1019           1.1    jruoho #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3)
   1020           1.1    jruoho 
   1021           1.1    jruoho 
   1022           1.1    jruoho /*
   1023           1.1    jruoho  * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER
   1024           1.1    jruoho  */
   1025           1.1    jruoho 
   1026           1.1    jruoho /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
   1027           1.1    jruoho 
   1028           1.1    jruoho typedef struct acpi_ivrs_hardware
   1029           1.1    jruoho {
   1030           1.1    jruoho     ACPI_IVRS_HEADER        Header;
   1031           1.1    jruoho     UINT16                  CapabilityOffset;   /* Offset for IOMMU control fields */
   1032           1.1    jruoho     UINT64                  BaseAddress;        /* IOMMU control registers */
   1033           1.1    jruoho     UINT16                  PciSegmentGroup;
   1034           1.1    jruoho     UINT16                  Info;               /* MSI number and unit ID */
   1035           1.1    jruoho     UINT32                  Reserved;
   1036           1.1    jruoho 
   1037           1.1    jruoho } ACPI_IVRS_HARDWARE;
   1038           1.1    jruoho 
   1039           1.1    jruoho /* Masks for Info field above */
   1040           1.1    jruoho 
   1041           1.1    jruoho #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F      /* 5 bits, MSI message number */
   1042           1.1    jruoho #define ACPI_IVHD_UNIT_ID_MASK      0x1F00      /* 5 bits, UnitID */
   1043           1.1    jruoho 
   1044           1.1    jruoho 
   1045           1.1    jruoho /*
   1046           1.1    jruoho  * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure.
   1047           1.1    jruoho  * Upper two bits of the Type field are the (encoded) length of the structure.
   1048           1.1    jruoho  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
   1049           1.1    jruoho  * are reserved for future use but not defined.
   1050           1.1    jruoho  */
   1051           1.1    jruoho typedef struct acpi_ivrs_de_header
   1052           1.1    jruoho {
   1053           1.1    jruoho     UINT8                   Type;
   1054           1.1    jruoho     UINT16                  Id;
   1055           1.1    jruoho     UINT8                   DataSetting;
   1056           1.1    jruoho 
   1057           1.1    jruoho } ACPI_IVRS_DE_HEADER;
   1058           1.1    jruoho 
   1059           1.1    jruoho /* Length of device entry is in the top two bits of Type field above */
   1060           1.1    jruoho 
   1061           1.1    jruoho #define ACPI_IVHD_ENTRY_LENGTH      0xC0
   1062           1.1    jruoho 
   1063           1.1    jruoho /* Values for device entry Type field above */
   1064           1.1    jruoho 
   1065           1.1    jruoho enum AcpiIvrsDeviceEntryType
   1066           1.1    jruoho {
   1067           1.1    jruoho     /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */
   1068           1.1    jruoho 
   1069           1.1    jruoho     ACPI_IVRS_TYPE_PAD4             = 0,
   1070           1.1    jruoho     ACPI_IVRS_TYPE_ALL              = 1,
   1071           1.1    jruoho     ACPI_IVRS_TYPE_SELECT           = 2,
   1072           1.1    jruoho     ACPI_IVRS_TYPE_START            = 3,
   1073           1.1    jruoho     ACPI_IVRS_TYPE_END              = 4,
   1074           1.1    jruoho 
   1075           1.1    jruoho     /* 8-byte device entries */
   1076           1.1    jruoho 
   1077           1.1    jruoho     ACPI_IVRS_TYPE_PAD8             = 64,
   1078           1.1    jruoho     ACPI_IVRS_TYPE_NOT_USED         = 65,
   1079           1.1    jruoho     ACPI_IVRS_TYPE_ALIAS_SELECT     = 66, /* Uses ACPI_IVRS_DEVICE8A */
   1080           1.1    jruoho     ACPI_IVRS_TYPE_ALIAS_START      = 67, /* Uses ACPI_IVRS_DEVICE8A */
   1081           1.1    jruoho     ACPI_IVRS_TYPE_EXT_SELECT       = 70, /* Uses ACPI_IVRS_DEVICE8B */
   1082           1.1    jruoho     ACPI_IVRS_TYPE_EXT_START        = 71, /* Uses ACPI_IVRS_DEVICE8B */
   1083           1.1    jruoho     ACPI_IVRS_TYPE_SPECIAL          = 72  /* Uses ACPI_IVRS_DEVICE8C */
   1084           1.1    jruoho };
   1085           1.1    jruoho 
   1086           1.1    jruoho /* Values for Data field above */
   1087           1.1    jruoho 
   1088           1.1    jruoho #define ACPI_IVHD_INIT_PASS         (1)
   1089           1.1    jruoho #define ACPI_IVHD_EINT_PASS         (1<<1)
   1090           1.1    jruoho #define ACPI_IVHD_NMI_PASS          (1<<2)
   1091           1.1    jruoho #define ACPI_IVHD_SYSTEM_MGMT       (3<<4)
   1092           1.1    jruoho #define ACPI_IVHD_LINT0_PASS        (1<<6)
   1093           1.1    jruoho #define ACPI_IVHD_LINT1_PASS        (1<<7)
   1094           1.1    jruoho 
   1095           1.1    jruoho 
   1096           1.1    jruoho /* Types 0-4: 4-byte device entry */
   1097           1.1    jruoho 
   1098           1.1    jruoho typedef struct acpi_ivrs_device4
   1099           1.1    jruoho {
   1100           1.1    jruoho     ACPI_IVRS_DE_HEADER     Header;
   1101           1.1    jruoho 
   1102           1.1    jruoho } ACPI_IVRS_DEVICE4;
   1103           1.1    jruoho 
   1104           1.1    jruoho /* Types 66-67: 8-byte device entry */
   1105           1.1    jruoho 
   1106           1.1    jruoho typedef struct acpi_ivrs_device8a
   1107           1.1    jruoho {
   1108           1.1    jruoho     ACPI_IVRS_DE_HEADER     Header;
   1109           1.1    jruoho     UINT8                   Reserved1;
   1110           1.1    jruoho     UINT16                  UsedId;
   1111           1.1    jruoho     UINT8                   Reserved2;
   1112           1.1    jruoho 
   1113           1.1    jruoho } ACPI_IVRS_DEVICE8A;
   1114           1.1    jruoho 
   1115           1.1    jruoho /* Types 70-71: 8-byte device entry */
   1116           1.1    jruoho 
   1117           1.1    jruoho typedef struct acpi_ivrs_device8b
   1118           1.1    jruoho {
   1119           1.1    jruoho     ACPI_IVRS_DE_HEADER     Header;
   1120           1.1    jruoho     UINT32                  ExtendedData;
   1121           1.1    jruoho 
   1122           1.1    jruoho } ACPI_IVRS_DEVICE8B;
   1123           1.1    jruoho 
   1124           1.1    jruoho /* Values for ExtendedData above */
   1125           1.1    jruoho 
   1126           1.1    jruoho #define ACPI_IVHD_ATS_DISABLED      (1<<31)
   1127           1.1    jruoho 
   1128           1.1    jruoho /* Type 72: 8-byte device entry */
   1129           1.1    jruoho 
   1130           1.1    jruoho typedef struct acpi_ivrs_device8c
   1131           1.1    jruoho {
   1132           1.1    jruoho     ACPI_IVRS_DE_HEADER     Header;
   1133           1.1    jruoho     UINT8                   Handle;
   1134           1.1    jruoho     UINT16                  UsedId;
   1135           1.1    jruoho     UINT8                   Variety;
   1136           1.1    jruoho 
   1137           1.1    jruoho } ACPI_IVRS_DEVICE8C;
   1138           1.1    jruoho 
   1139           1.1    jruoho /* Values for Variety field above */
   1140           1.1    jruoho 
   1141           1.1    jruoho #define ACPI_IVHD_IOAPIC            1
   1142           1.1    jruoho #define ACPI_IVHD_HPET              2
   1143           1.1    jruoho 
   1144           1.1    jruoho 
   1145           1.1    jruoho /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
   1146           1.1    jruoho 
   1147           1.1    jruoho typedef struct acpi_ivrs_memory
   1148           1.1    jruoho {
   1149           1.1    jruoho     ACPI_IVRS_HEADER        Header;
   1150           1.1    jruoho     UINT16                  AuxData;
   1151           1.1    jruoho     UINT64                  Reserved;
   1152           1.1    jruoho     UINT64                  StartAddress;
   1153           1.1    jruoho     UINT64                  MemoryLength;
   1154           1.1    jruoho 
   1155           1.1    jruoho } ACPI_IVRS_MEMORY;
   1156           1.1    jruoho 
   1157           1.1    jruoho 
   1158           1.1    jruoho /*******************************************************************************
   1159           1.1    jruoho  *
   1160  1.1.1.3.12.2  jdolecek  * LPIT - Low Power Idle Table
   1161  1.1.1.3.12.2  jdolecek  *
   1162  1.1.1.3.12.2  jdolecek  * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014.
   1163  1.1.1.3.12.2  jdolecek  *
   1164  1.1.1.3.12.2  jdolecek  ******************************************************************************/
   1165  1.1.1.3.12.2  jdolecek 
   1166  1.1.1.3.12.2  jdolecek typedef struct acpi_table_lpit
   1167  1.1.1.3.12.2  jdolecek {
   1168  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1169  1.1.1.3.12.2  jdolecek 
   1170  1.1.1.3.12.2  jdolecek } ACPI_TABLE_LPIT;
   1171  1.1.1.3.12.2  jdolecek 
   1172  1.1.1.3.12.2  jdolecek 
   1173  1.1.1.3.12.2  jdolecek /* LPIT subtable header */
   1174  1.1.1.3.12.2  jdolecek 
   1175  1.1.1.3.12.2  jdolecek typedef struct acpi_lpit_header
   1176  1.1.1.3.12.2  jdolecek {
   1177  1.1.1.3.12.2  jdolecek     UINT32                  Type;               /* Subtable type */
   1178  1.1.1.3.12.2  jdolecek     UINT32                  Length;             /* Subtable length */
   1179  1.1.1.3.12.2  jdolecek     UINT16                  UniqueId;
   1180  1.1.1.3.12.2  jdolecek     UINT16                  Reserved;
   1181  1.1.1.3.12.2  jdolecek     UINT32                  Flags;
   1182  1.1.1.3.12.2  jdolecek 
   1183  1.1.1.3.12.2  jdolecek } ACPI_LPIT_HEADER;
   1184  1.1.1.3.12.2  jdolecek 
   1185  1.1.1.3.12.2  jdolecek /* Values for subtable Type above */
   1186  1.1.1.3.12.2  jdolecek 
   1187  1.1.1.3.12.2  jdolecek enum AcpiLpitType
   1188  1.1.1.3.12.2  jdolecek {
   1189  1.1.1.3.12.2  jdolecek     ACPI_LPIT_TYPE_NATIVE_CSTATE    = 0x00,
   1190  1.1.1.3.12.2  jdolecek     ACPI_LPIT_TYPE_RESERVED         = 0x01      /* 1 and above are reserved */
   1191  1.1.1.3.12.2  jdolecek };
   1192  1.1.1.3.12.2  jdolecek 
   1193  1.1.1.3.12.2  jdolecek /* Masks for Flags field above  */
   1194  1.1.1.3.12.2  jdolecek 
   1195  1.1.1.3.12.2  jdolecek #define ACPI_LPIT_STATE_DISABLED    (1)
   1196  1.1.1.3.12.2  jdolecek #define ACPI_LPIT_NO_COUNTER        (1<<1)
   1197  1.1.1.3.12.2  jdolecek 
   1198  1.1.1.3.12.2  jdolecek /*
   1199  1.1.1.3.12.2  jdolecek  * LPIT subtables, correspond to Type in ACPI_LPIT_HEADER
   1200  1.1.1.3.12.2  jdolecek  */
   1201  1.1.1.3.12.2  jdolecek 
   1202  1.1.1.3.12.2  jdolecek /* 0x00: Native C-state instruction based LPI structure */
   1203  1.1.1.3.12.2  jdolecek 
   1204  1.1.1.3.12.2  jdolecek typedef struct acpi_lpit_native
   1205  1.1.1.3.12.2  jdolecek {
   1206  1.1.1.3.12.2  jdolecek     ACPI_LPIT_HEADER        Header;
   1207  1.1.1.3.12.2  jdolecek     ACPI_GENERIC_ADDRESS    EntryTrigger;
   1208  1.1.1.3.12.2  jdolecek     UINT32                  Residency;
   1209  1.1.1.3.12.2  jdolecek     UINT32                  Latency;
   1210  1.1.1.3.12.2  jdolecek     ACPI_GENERIC_ADDRESS    ResidencyCounter;
   1211  1.1.1.3.12.2  jdolecek     UINT64                  CounterFrequency;
   1212  1.1.1.3.12.2  jdolecek 
   1213  1.1.1.3.12.2  jdolecek } ACPI_LPIT_NATIVE;
   1214  1.1.1.3.12.2  jdolecek 
   1215  1.1.1.3.12.2  jdolecek 
   1216  1.1.1.3.12.2  jdolecek /*******************************************************************************
   1217  1.1.1.3.12.2  jdolecek  *
   1218  1.1.1.3.12.2  jdolecek  * MCFG - PCI Memory Mapped Configuration table and subtable
   1219           1.1    jruoho  *        Version 1
   1220           1.1    jruoho  *
   1221           1.1    jruoho  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
   1222           1.1    jruoho  *
   1223           1.1    jruoho  ******************************************************************************/
   1224           1.1    jruoho 
   1225           1.1    jruoho typedef struct acpi_table_mcfg
   1226           1.1    jruoho {
   1227           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1228           1.1    jruoho     UINT8                   Reserved[8];
   1229           1.1    jruoho 
   1230           1.1    jruoho } ACPI_TABLE_MCFG;
   1231           1.1    jruoho 
   1232           1.1    jruoho 
   1233           1.1    jruoho /* Subtable */
   1234           1.1    jruoho 
   1235           1.1    jruoho typedef struct acpi_mcfg_allocation
   1236           1.1    jruoho {
   1237           1.1    jruoho     UINT64                  Address;            /* Base address, processor-relative */
   1238           1.1    jruoho     UINT16                  PciSegment;         /* PCI segment group number */
   1239           1.1    jruoho     UINT8                   StartBusNumber;     /* Starting PCI Bus number */
   1240           1.1    jruoho     UINT8                   EndBusNumber;       /* Final PCI Bus number */
   1241           1.1    jruoho     UINT32                  Reserved;
   1242           1.1    jruoho 
   1243           1.1    jruoho } ACPI_MCFG_ALLOCATION;
   1244           1.1    jruoho 
   1245           1.1    jruoho 
   1246           1.1    jruoho /*******************************************************************************
   1247           1.1    jruoho  *
   1248           1.1    jruoho  * MCHI - Management Controller Host Interface Table
   1249           1.1    jruoho  *        Version 1
   1250           1.1    jruoho  *
   1251           1.1    jruoho  * Conforms to "Management Component Transport Protocol (MCTP) Host
   1252           1.1    jruoho  * Interface Specification", Revision 1.0.0a, October 13, 2009
   1253           1.1    jruoho  *
   1254           1.1    jruoho  ******************************************************************************/
   1255           1.1    jruoho 
   1256           1.1    jruoho typedef struct acpi_table_mchi
   1257           1.1    jruoho {
   1258           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1259           1.1    jruoho     UINT8                   InterfaceType;
   1260           1.1    jruoho     UINT8                   Protocol;
   1261           1.1    jruoho     UINT64                  ProtocolData;
   1262           1.1    jruoho     UINT8                   InterruptType;
   1263           1.1    jruoho     UINT8                   Gpe;
   1264           1.1    jruoho     UINT8                   PciDeviceFlag;
   1265           1.1    jruoho     UINT32                  GlobalInterrupt;
   1266           1.1    jruoho     ACPI_GENERIC_ADDRESS    ControlRegister;
   1267           1.1    jruoho     UINT8                   PciSegment;
   1268           1.1    jruoho     UINT8                   PciBus;
   1269           1.1    jruoho     UINT8                   PciDevice;
   1270           1.1    jruoho     UINT8                   PciFunction;
   1271           1.1    jruoho 
   1272           1.1    jruoho } ACPI_TABLE_MCHI;
   1273           1.1    jruoho 
   1274           1.1    jruoho 
   1275           1.1    jruoho /*******************************************************************************
   1276           1.1    jruoho  *
   1277  1.1.1.3.12.2  jdolecek  * MSDM - Microsoft Data Management table
   1278  1.1.1.3.12.2  jdolecek  *
   1279  1.1.1.3.12.2  jdolecek  * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
   1280  1.1.1.3.12.2  jdolecek  * November 29, 2011. Copyright 2011 Microsoft
   1281  1.1.1.3.12.2  jdolecek  *
   1282  1.1.1.3.12.2  jdolecek  ******************************************************************************/
   1283  1.1.1.3.12.2  jdolecek 
   1284  1.1.1.3.12.2  jdolecek /* Basic MSDM table is only the common ACPI header */
   1285  1.1.1.3.12.2  jdolecek 
   1286  1.1.1.3.12.2  jdolecek typedef struct acpi_table_msdm
   1287  1.1.1.3.12.2  jdolecek {
   1288  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1289  1.1.1.3.12.2  jdolecek 
   1290  1.1.1.3.12.2  jdolecek } ACPI_TABLE_MSDM;
   1291  1.1.1.3.12.2  jdolecek 
   1292  1.1.1.3.12.2  jdolecek 
   1293  1.1.1.3.12.2  jdolecek /*******************************************************************************
   1294  1.1.1.3.12.2  jdolecek  *
   1295  1.1.1.3.12.1       tls  * MTMR - MID Timer Table
   1296  1.1.1.3.12.1       tls  *        Version 1
   1297  1.1.1.3.12.1       tls  *
   1298  1.1.1.3.12.1       tls  * Conforms to "Simple Firmware Interface Specification",
   1299  1.1.1.3.12.1       tls  * Draft 0.8.2, Oct 19, 2010
   1300  1.1.1.3.12.1       tls  * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table.
   1301  1.1.1.3.12.1       tls  *
   1302  1.1.1.3.12.1       tls  ******************************************************************************/
   1303  1.1.1.3.12.1       tls 
   1304  1.1.1.3.12.1       tls typedef struct acpi_table_mtmr
   1305  1.1.1.3.12.1       tls {
   1306  1.1.1.3.12.1       tls     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1307  1.1.1.3.12.1       tls 
   1308  1.1.1.3.12.1       tls } ACPI_TABLE_MTMR;
   1309  1.1.1.3.12.1       tls 
   1310  1.1.1.3.12.1       tls /* MTMR entry */
   1311  1.1.1.3.12.1       tls 
   1312  1.1.1.3.12.1       tls typedef struct acpi_mtmr_entry
   1313  1.1.1.3.12.1       tls {
   1314  1.1.1.3.12.1       tls     ACPI_GENERIC_ADDRESS    PhysicalAddress;
   1315  1.1.1.3.12.1       tls     UINT32                  Frequency;
   1316  1.1.1.3.12.1       tls     UINT32                  Irq;
   1317  1.1.1.3.12.1       tls 
   1318  1.1.1.3.12.1       tls } ACPI_MTMR_ENTRY;
   1319  1.1.1.3.12.1       tls 
   1320  1.1.1.3.12.1       tls /*******************************************************************************
   1321  1.1.1.3.12.1       tls  *
   1322  1.1.1.3.12.2  jdolecek  * SDEI - Software Delegated Exception Interface Descriptor Table
   1323       1.1.1.3    jruoho  *
   1324  1.1.1.3.12.2  jdolecek  * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A,
   1325  1.1.1.3.12.2  jdolecek  * May 8th, 2017. Copyright 2017 ARM Ltd.
   1326       1.1.1.3    jruoho  *
   1327       1.1.1.3    jruoho  ******************************************************************************/
   1328       1.1.1.3    jruoho 
   1329  1.1.1.3.12.2  jdolecek typedef struct acpi_table_sdei
   1330       1.1.1.3    jruoho {
   1331       1.1.1.3    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1332       1.1.1.3    jruoho 
   1333  1.1.1.3.12.2  jdolecek } ACPI_TABLE_SDEI;
   1334       1.1.1.3    jruoho 
   1335       1.1.1.3    jruoho 
   1336  1.1.1.3.12.2  jdolecek /*******************************************************************************
   1337  1.1.1.3.12.2  jdolecek  *
   1338  1.1.1.3.12.2  jdolecek  * SLIC - Software Licensing Description Table
   1339  1.1.1.3.12.2  jdolecek  *
   1340  1.1.1.3.12.2  jdolecek  * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
   1341  1.1.1.3.12.2  jdolecek  * November 29, 2011. Copyright 2011 Microsoft
   1342  1.1.1.3.12.2  jdolecek  *
   1343  1.1.1.3.12.2  jdolecek  ******************************************************************************/
   1344       1.1.1.3    jruoho 
   1345  1.1.1.3.12.2  jdolecek /* Basic SLIC table is only the common ACPI header */
   1346       1.1.1.3    jruoho 
   1347  1.1.1.3.12.2  jdolecek typedef struct acpi_table_slic
   1348       1.1.1.3    jruoho {
   1349  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1350       1.1.1.3    jruoho 
   1351  1.1.1.3.12.2  jdolecek } ACPI_TABLE_SLIC;
   1352       1.1.1.3    jruoho 
   1353       1.1.1.3    jruoho 
   1354       1.1.1.3    jruoho /*******************************************************************************
   1355       1.1.1.3    jruoho  *
   1356           1.1    jruoho  * SPCR - Serial Port Console Redirection table
   1357  1.1.1.3.12.2  jdolecek  *        Version 2
   1358           1.1    jruoho  *
   1359           1.1    jruoho  * Conforms to "Serial Port Console Redirection Table",
   1360  1.1.1.3.12.2  jdolecek  * Version 1.03, August 10, 2015
   1361           1.1    jruoho  *
   1362           1.1    jruoho  ******************************************************************************/
   1363           1.1    jruoho 
   1364           1.1    jruoho typedef struct acpi_table_spcr
   1365           1.1    jruoho {
   1366           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1367           1.1    jruoho     UINT8                   InterfaceType;      /* 0=full 16550, 1=subset of 16550 */
   1368           1.1    jruoho     UINT8                   Reserved[3];
   1369           1.1    jruoho     ACPI_GENERIC_ADDRESS    SerialPort;
   1370           1.1    jruoho     UINT8                   InterruptType;
   1371           1.1    jruoho     UINT8                   PcInterrupt;
   1372           1.1    jruoho     UINT32                  Interrupt;
   1373           1.1    jruoho     UINT8                   BaudRate;
   1374           1.1    jruoho     UINT8                   Parity;
   1375           1.1    jruoho     UINT8                   StopBits;
   1376           1.1    jruoho     UINT8                   FlowControl;
   1377           1.1    jruoho     UINT8                   TerminalType;
   1378           1.1    jruoho     UINT8                   Reserved1;
   1379           1.1    jruoho     UINT16                  PciDeviceId;
   1380           1.1    jruoho     UINT16                  PciVendorId;
   1381           1.1    jruoho     UINT8                   PciBus;
   1382           1.1    jruoho     UINT8                   PciDevice;
   1383           1.1    jruoho     UINT8                   PciFunction;
   1384           1.1    jruoho     UINT32                  PciFlags;
   1385           1.1    jruoho     UINT8                   PciSegment;
   1386           1.1    jruoho     UINT32                  Reserved2;
   1387           1.1    jruoho 
   1388           1.1    jruoho } ACPI_TABLE_SPCR;
   1389           1.1    jruoho 
   1390           1.1    jruoho /* Masks for PciFlags field above */
   1391           1.1    jruoho 
   1392           1.1    jruoho #define ACPI_SPCR_DO_NOT_DISABLE    (1)
   1393           1.1    jruoho 
   1394  1.1.1.3.12.2  jdolecek /* Values for Interface Type: See the definition of the DBG2 table */
   1395  1.1.1.3.12.2  jdolecek 
   1396           1.1    jruoho 
   1397           1.1    jruoho /*******************************************************************************
   1398           1.1    jruoho  *
   1399           1.1    jruoho  * SPMI - Server Platform Management Interface table
   1400           1.1    jruoho  *        Version 5
   1401           1.1    jruoho  *
   1402           1.1    jruoho  * Conforms to "Intelligent Platform Management Interface Specification
   1403           1.1    jruoho  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with
   1404           1.1    jruoho  * June 12, 2009 markup.
   1405           1.1    jruoho  *
   1406           1.1    jruoho  ******************************************************************************/
   1407           1.1    jruoho 
   1408           1.1    jruoho typedef struct acpi_table_spmi
   1409           1.1    jruoho {
   1410           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1411           1.1    jruoho     UINT8                   InterfaceType;
   1412           1.1    jruoho     UINT8                   Reserved;           /* Must be 1 */
   1413           1.1    jruoho     UINT16                  SpecRevision;       /* Version of IPMI */
   1414           1.1    jruoho     UINT8                   InterruptType;
   1415           1.1    jruoho     UINT8                   GpeNumber;          /* GPE assigned */
   1416           1.1    jruoho     UINT8                   Reserved1;
   1417           1.1    jruoho     UINT8                   PciDeviceFlag;
   1418           1.1    jruoho     UINT32                  Interrupt;
   1419           1.1    jruoho     ACPI_GENERIC_ADDRESS    IpmiRegister;
   1420           1.1    jruoho     UINT8                   PciSegment;
   1421           1.1    jruoho     UINT8                   PciBus;
   1422           1.1    jruoho     UINT8                   PciDevice;
   1423           1.1    jruoho     UINT8                   PciFunction;
   1424           1.1    jruoho     UINT8                   Reserved2;
   1425           1.1    jruoho 
   1426           1.1    jruoho } ACPI_TABLE_SPMI;
   1427           1.1    jruoho 
   1428           1.1    jruoho /* Values for InterfaceType above */
   1429           1.1    jruoho 
   1430           1.1    jruoho enum AcpiSpmiInterfaceTypes
   1431           1.1    jruoho {
   1432           1.1    jruoho     ACPI_SPMI_NOT_USED              = 0,
   1433           1.1    jruoho     ACPI_SPMI_KEYBOARD              = 1,
   1434           1.1    jruoho     ACPI_SPMI_SMI                   = 2,
   1435           1.1    jruoho     ACPI_SPMI_BLOCK_TRANSFER        = 3,
   1436           1.1    jruoho     ACPI_SPMI_SMBUS                 = 4,
   1437           1.1    jruoho     ACPI_SPMI_RESERVED              = 5         /* 5 and above are reserved */
   1438           1.1    jruoho };
   1439           1.1    jruoho 
   1440           1.1    jruoho 
   1441           1.1    jruoho /*******************************************************************************
   1442           1.1    jruoho  *
   1443           1.1    jruoho  * TCPA - Trusted Computing Platform Alliance table
   1444  1.1.1.3.12.2  jdolecek  *        Version 2
   1445           1.1    jruoho  *
   1446  1.1.1.3.12.2  jdolecek  * TCG Hardware Interface Table for TPM 1.2 Clients and Servers
   1447  1.1.1.3.12.2  jdolecek  *
   1448  1.1.1.3.12.2  jdolecek  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
   1449  1.1.1.3.12.2  jdolecek  * Version 1.2, Revision 8
   1450  1.1.1.3.12.2  jdolecek  * February 27, 2017
   1451  1.1.1.3.12.2  jdolecek  *
   1452  1.1.1.3.12.2  jdolecek  * NOTE: There are two versions of the table with the same signature --
   1453  1.1.1.3.12.2  jdolecek  * the client version and the server version. The common PlatformClass
   1454  1.1.1.3.12.2  jdolecek  * field is used to differentiate the two types of tables.
   1455           1.1    jruoho  *
   1456           1.1    jruoho  ******************************************************************************/
   1457           1.1    jruoho 
   1458  1.1.1.3.12.2  jdolecek typedef struct acpi_table_tcpa_hdr
   1459           1.1    jruoho {
   1460           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1461  1.1.1.3.12.2  jdolecek     UINT16                  PlatformClass;
   1462  1.1.1.3.12.2  jdolecek 
   1463  1.1.1.3.12.2  jdolecek } ACPI_TABLE_TCPA_HDR;
   1464  1.1.1.3.12.2  jdolecek 
   1465  1.1.1.3.12.2  jdolecek /*
   1466  1.1.1.3.12.2  jdolecek  * Values for PlatformClass above.
   1467  1.1.1.3.12.2  jdolecek  * This is how the client and server subtables are differentiated
   1468  1.1.1.3.12.2  jdolecek  */
   1469  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_CLIENT_TABLE          0
   1470  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_SERVER_TABLE          1
   1471  1.1.1.3.12.2  jdolecek 
   1472  1.1.1.3.12.2  jdolecek 
   1473  1.1.1.3.12.2  jdolecek typedef struct acpi_table_tcpa_client
   1474  1.1.1.3.12.2  jdolecek {
   1475  1.1.1.3.12.2  jdolecek     UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
   1476  1.1.1.3.12.2  jdolecek     UINT64                  LogAddress;         /* Address of the event log area */
   1477  1.1.1.3.12.2  jdolecek 
   1478  1.1.1.3.12.2  jdolecek } ACPI_TABLE_TCPA_CLIENT;
   1479  1.1.1.3.12.2  jdolecek 
   1480  1.1.1.3.12.2  jdolecek typedef struct acpi_table_tcpa_server
   1481  1.1.1.3.12.2  jdolecek {
   1482           1.1    jruoho     UINT16                  Reserved;
   1483  1.1.1.3.12.2  jdolecek     UINT64                  MinimumLogLength;   /* Minimum length for the event log area */
   1484           1.1    jruoho     UINT64                  LogAddress;         /* Address of the event log area */
   1485  1.1.1.3.12.2  jdolecek     UINT16                  SpecRevision;
   1486  1.1.1.3.12.2  jdolecek     UINT8                   DeviceFlags;
   1487  1.1.1.3.12.2  jdolecek     UINT8                   InterruptFlags;
   1488  1.1.1.3.12.2  jdolecek     UINT8                   GpeNumber;
   1489  1.1.1.3.12.2  jdolecek     UINT8                   Reserved2[3];
   1490  1.1.1.3.12.2  jdolecek     UINT32                  GlobalInterrupt;
   1491  1.1.1.3.12.2  jdolecek     ACPI_GENERIC_ADDRESS    Address;
   1492  1.1.1.3.12.2  jdolecek     UINT32                  Reserved3;
   1493  1.1.1.3.12.2  jdolecek     ACPI_GENERIC_ADDRESS    ConfigAddress;
   1494  1.1.1.3.12.2  jdolecek     UINT8                   Group;
   1495  1.1.1.3.12.2  jdolecek     UINT8                   Bus;                /* PCI Bus/Segment/Function numbers */
   1496  1.1.1.3.12.2  jdolecek     UINT8                   Device;
   1497  1.1.1.3.12.2  jdolecek     UINT8                   Function;
   1498  1.1.1.3.12.2  jdolecek 
   1499  1.1.1.3.12.2  jdolecek } ACPI_TABLE_TCPA_SERVER;
   1500           1.1    jruoho 
   1501  1.1.1.3.12.2  jdolecek /* Values for DeviceFlags above */
   1502  1.1.1.3.12.2  jdolecek 
   1503  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_PCI_DEVICE            (1)
   1504  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_BUS_PNP               (1<<1)
   1505  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_ADDRESS_VALID         (1<<2)
   1506  1.1.1.3.12.2  jdolecek 
   1507  1.1.1.3.12.2  jdolecek /* Values for InterruptFlags above */
   1508  1.1.1.3.12.2  jdolecek 
   1509  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_INTERRUPT_MODE        (1)
   1510  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_INTERRUPT_POLARITY    (1<<1)
   1511  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_SCI_VIA_GPE           (1<<2)
   1512  1.1.1.3.12.2  jdolecek #define ACPI_TCPA_GLOBAL_INTERRUPT      (1<<3)
   1513  1.1.1.3.12.2  jdolecek 
   1514  1.1.1.3.12.2  jdolecek 
   1515  1.1.1.3.12.2  jdolecek /*******************************************************************************
   1516  1.1.1.3.12.2  jdolecek  *
   1517  1.1.1.3.12.2  jdolecek  * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
   1518  1.1.1.3.12.2  jdolecek  *        Version 4
   1519  1.1.1.3.12.2  jdolecek  *
   1520  1.1.1.3.12.2  jdolecek  * TCG Hardware Interface Table for TPM 2.0 Clients and Servers
   1521  1.1.1.3.12.2  jdolecek  *
   1522  1.1.1.3.12.2  jdolecek  * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0",
   1523  1.1.1.3.12.2  jdolecek  * Version 1.2, Revision 8
   1524  1.1.1.3.12.2  jdolecek  * February 27, 2017
   1525  1.1.1.3.12.2  jdolecek  *
   1526  1.1.1.3.12.2  jdolecek  ******************************************************************************/
   1527  1.1.1.3.12.2  jdolecek 
   1528  1.1.1.3.12.2  jdolecek typedef struct acpi_table_tpm2
   1529  1.1.1.3.12.2  jdolecek {
   1530  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1531  1.1.1.3.12.2  jdolecek     UINT16                  PlatformClass;
   1532  1.1.1.3.12.2  jdolecek     UINT16                  Reserved;
   1533  1.1.1.3.12.2  jdolecek     UINT64                  ControlAddress;
   1534  1.1.1.3.12.2  jdolecek     UINT32                  StartMethod;
   1535  1.1.1.3.12.2  jdolecek 
   1536  1.1.1.3.12.2  jdolecek     /* Platform-specific data follows */
   1537  1.1.1.3.12.2  jdolecek 
   1538  1.1.1.3.12.2  jdolecek } ACPI_TABLE_TPM2;
   1539  1.1.1.3.12.2  jdolecek 
   1540  1.1.1.3.12.2  jdolecek /* Values for StartMethod above */
   1541  1.1.1.3.12.2  jdolecek 
   1542  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_NOT_ALLOWED                       0
   1543  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED1                         1
   1544  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_START_METHOD                      2
   1545  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED3                         3
   1546  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED4                         4
   1547  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED5                         5
   1548  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_MEMORY_MAPPED                     6
   1549  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_COMMAND_BUFFER                    7
   1550  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD  8
   1551  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED9                         9
   1552  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED10                        10
   1553  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11  /* V1.2 Rev 8 */
   1554  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_RESERVED                          12
   1555  1.1.1.3.12.2  jdolecek 
   1556  1.1.1.3.12.2  jdolecek 
   1557  1.1.1.3.12.2  jdolecek /* Optional trailer appears after any StartMethod subtables */
   1558  1.1.1.3.12.2  jdolecek 
   1559  1.1.1.3.12.2  jdolecek typedef struct acpi_tpm2_trailer
   1560  1.1.1.3.12.2  jdolecek {
   1561  1.1.1.3.12.2  jdolecek     UINT8                   MethodParameters[12];
   1562  1.1.1.3.12.2  jdolecek     UINT32                  MinimumLogLength;   /* Minimum length for the event log area */
   1563  1.1.1.3.12.2  jdolecek     UINT64                  LogAddress;         /* Address of the event log area */
   1564  1.1.1.3.12.2  jdolecek 
   1565  1.1.1.3.12.2  jdolecek } ACPI_TPM2_TRAILER;
   1566  1.1.1.3.12.2  jdolecek 
   1567  1.1.1.3.12.2  jdolecek 
   1568  1.1.1.3.12.2  jdolecek /*
   1569  1.1.1.3.12.2  jdolecek  * Subtables (StartMethod-specific)
   1570  1.1.1.3.12.2  jdolecek  */
   1571  1.1.1.3.12.2  jdolecek 
   1572  1.1.1.3.12.2  jdolecek /* 11: Start Method for ARM SMC (V1.2 Rev 8) */
   1573  1.1.1.3.12.2  jdolecek 
   1574  1.1.1.3.12.2  jdolecek typedef struct acpi_tpm2_arm_smc
   1575  1.1.1.3.12.2  jdolecek {
   1576  1.1.1.3.12.2  jdolecek     UINT32                  GlobalInterrupt;
   1577  1.1.1.3.12.2  jdolecek     UINT8                   InterruptFlags;
   1578  1.1.1.3.12.2  jdolecek     UINT8                   OperationFlags;
   1579  1.1.1.3.12.2  jdolecek     UINT16                  Reserved;
   1580  1.1.1.3.12.2  jdolecek     UINT32                  FunctionId;
   1581  1.1.1.3.12.2  jdolecek 
   1582  1.1.1.3.12.2  jdolecek } ACPI_TPM2_ARM_SMC;
   1583  1.1.1.3.12.2  jdolecek 
   1584  1.1.1.3.12.2  jdolecek /* Values for InterruptFlags above */
   1585  1.1.1.3.12.2  jdolecek 
   1586  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_INTERRUPT_SUPPORT     (1)
   1587  1.1.1.3.12.2  jdolecek 
   1588  1.1.1.3.12.2  jdolecek /* Values for OperationFlags above */
   1589  1.1.1.3.12.2  jdolecek 
   1590  1.1.1.3.12.2  jdolecek #define ACPI_TPM2_IDLE_SUPPORT          (1)
   1591           1.1    jruoho 
   1592           1.1    jruoho 
   1593           1.1    jruoho /*******************************************************************************
   1594           1.1    jruoho  *
   1595           1.1    jruoho  * UEFI - UEFI Boot optimization Table
   1596           1.1    jruoho  *        Version 1
   1597           1.1    jruoho  *
   1598           1.1    jruoho  * Conforms to "Unified Extensible Firmware Interface Specification",
   1599           1.1    jruoho  * Version 2.3, May 8, 2009
   1600           1.1    jruoho  *
   1601           1.1    jruoho  ******************************************************************************/
   1602           1.1    jruoho 
   1603           1.1    jruoho typedef struct acpi_table_uefi
   1604           1.1    jruoho {
   1605           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1606           1.1    jruoho     UINT8                   Identifier[16];     /* UUID identifier */
   1607           1.1    jruoho     UINT16                  DataOffset;         /* Offset of remaining data in table */
   1608           1.1    jruoho 
   1609           1.1    jruoho } ACPI_TABLE_UEFI;
   1610           1.1    jruoho 
   1611           1.1    jruoho 
   1612           1.1    jruoho /*******************************************************************************
   1613           1.1    jruoho  *
   1614  1.1.1.3.12.1       tls  * VRTC - Virtual Real Time Clock Table
   1615  1.1.1.3.12.1       tls  *        Version 1
   1616  1.1.1.3.12.1       tls  *
   1617  1.1.1.3.12.1       tls  * Conforms to "Simple Firmware Interface Specification",
   1618  1.1.1.3.12.1       tls  * Draft 0.8.2, Oct 19, 2010
   1619  1.1.1.3.12.1       tls  * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table.
   1620  1.1.1.3.12.1       tls  *
   1621  1.1.1.3.12.1       tls  ******************************************************************************/
   1622  1.1.1.3.12.1       tls 
   1623  1.1.1.3.12.1       tls typedef struct acpi_table_vrtc
   1624  1.1.1.3.12.1       tls {
   1625  1.1.1.3.12.1       tls     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1626  1.1.1.3.12.1       tls 
   1627  1.1.1.3.12.1       tls } ACPI_TABLE_VRTC;
   1628  1.1.1.3.12.1       tls 
   1629  1.1.1.3.12.1       tls /* VRTC entry */
   1630  1.1.1.3.12.1       tls 
   1631  1.1.1.3.12.1       tls typedef struct acpi_vrtc_entry
   1632  1.1.1.3.12.1       tls {
   1633  1.1.1.3.12.1       tls     ACPI_GENERIC_ADDRESS    PhysicalAddress;
   1634  1.1.1.3.12.1       tls     UINT32                  Irq;
   1635  1.1.1.3.12.1       tls 
   1636  1.1.1.3.12.1       tls } ACPI_VRTC_ENTRY;
   1637  1.1.1.3.12.1       tls 
   1638  1.1.1.3.12.1       tls 
   1639  1.1.1.3.12.1       tls /*******************************************************************************
   1640  1.1.1.3.12.1       tls  *
   1641           1.1    jruoho  * WAET - Windows ACPI Emulated devices Table
   1642           1.1    jruoho  *        Version 1
   1643           1.1    jruoho  *
   1644           1.1    jruoho  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009
   1645           1.1    jruoho  *
   1646           1.1    jruoho  ******************************************************************************/
   1647           1.1    jruoho 
   1648           1.1    jruoho typedef struct acpi_table_waet
   1649           1.1    jruoho {
   1650           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1651           1.1    jruoho     UINT32                  Flags;
   1652           1.1    jruoho 
   1653           1.1    jruoho } ACPI_TABLE_WAET;
   1654           1.1    jruoho 
   1655           1.1    jruoho /* Masks for Flags field above */
   1656           1.1    jruoho 
   1657           1.1    jruoho #define ACPI_WAET_RTC_NO_ACK        (1)         /* RTC requires no int acknowledge */
   1658           1.1    jruoho #define ACPI_WAET_TIMER_ONE_READ    (1<<1)      /* PM timer requires only one read */
   1659           1.1    jruoho 
   1660           1.1    jruoho 
   1661           1.1    jruoho /*******************************************************************************
   1662           1.1    jruoho  *
   1663           1.1    jruoho  * WDAT - Watchdog Action Table
   1664           1.1    jruoho  *        Version 1
   1665           1.1    jruoho  *
   1666           1.1    jruoho  * Conforms to "Hardware Watchdog Timers Design Specification",
   1667           1.1    jruoho  * Copyright 2006 Microsoft Corporation.
   1668           1.1    jruoho  *
   1669           1.1    jruoho  ******************************************************************************/
   1670           1.1    jruoho 
   1671           1.1    jruoho typedef struct acpi_table_wdat
   1672           1.1    jruoho {
   1673           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1674           1.1    jruoho     UINT32                  HeaderLength;       /* Watchdog Header Length */
   1675           1.1    jruoho     UINT16                  PciSegment;         /* PCI Segment number */
   1676           1.1    jruoho     UINT8                   PciBus;             /* PCI Bus number */
   1677           1.1    jruoho     UINT8                   PciDevice;          /* PCI Device number */
   1678           1.1    jruoho     UINT8                   PciFunction;        /* PCI Function number */
   1679           1.1    jruoho     UINT8                   Reserved[3];
   1680           1.1    jruoho     UINT32                  TimerPeriod;        /* Period of one timer count (msec) */
   1681           1.1    jruoho     UINT32                  MaxCount;           /* Maximum counter value supported */
   1682           1.1    jruoho     UINT32                  MinCount;           /* Minimum counter value */
   1683           1.1    jruoho     UINT8                   Flags;
   1684           1.1    jruoho     UINT8                   Reserved2[3];
   1685           1.1    jruoho     UINT32                  Entries;            /* Number of watchdog entries that follow */
   1686           1.1    jruoho 
   1687           1.1    jruoho } ACPI_TABLE_WDAT;
   1688           1.1    jruoho 
   1689           1.1    jruoho /* Masks for Flags field above */
   1690           1.1    jruoho 
   1691           1.1    jruoho #define ACPI_WDAT_ENABLED           (1)
   1692           1.1    jruoho #define ACPI_WDAT_STOPPED           0x80
   1693           1.1    jruoho 
   1694           1.1    jruoho 
   1695           1.1    jruoho /* WDAT Instruction Entries (actions) */
   1696           1.1    jruoho 
   1697           1.1    jruoho typedef struct acpi_wdat_entry
   1698           1.1    jruoho {
   1699           1.1    jruoho     UINT8                   Action;
   1700           1.1    jruoho     UINT8                   Instruction;
   1701           1.1    jruoho     UINT16                  Reserved;
   1702           1.1    jruoho     ACPI_GENERIC_ADDRESS    RegisterRegion;
   1703           1.1    jruoho     UINT32                  Value;              /* Value used with Read/Write register */
   1704           1.1    jruoho     UINT32                  Mask;               /* Bitmask required for this register instruction */
   1705           1.1    jruoho 
   1706           1.1    jruoho } ACPI_WDAT_ENTRY;
   1707           1.1    jruoho 
   1708           1.1    jruoho /* Values for Action field above */
   1709           1.1    jruoho 
   1710           1.1    jruoho enum AcpiWdatActions
   1711           1.1    jruoho {
   1712           1.1    jruoho     ACPI_WDAT_RESET                 = 1,
   1713           1.1    jruoho     ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
   1714           1.1    jruoho     ACPI_WDAT_GET_COUNTDOWN         = 5,
   1715           1.1    jruoho     ACPI_WDAT_SET_COUNTDOWN         = 6,
   1716           1.1    jruoho     ACPI_WDAT_GET_RUNNING_STATE     = 8,
   1717           1.1    jruoho     ACPI_WDAT_SET_RUNNING_STATE     = 9,
   1718           1.1    jruoho     ACPI_WDAT_GET_STOPPED_STATE     = 10,
   1719           1.1    jruoho     ACPI_WDAT_SET_STOPPED_STATE     = 11,
   1720           1.1    jruoho     ACPI_WDAT_GET_REBOOT            = 16,
   1721           1.1    jruoho     ACPI_WDAT_SET_REBOOT            = 17,
   1722           1.1    jruoho     ACPI_WDAT_GET_SHUTDOWN          = 18,
   1723           1.1    jruoho     ACPI_WDAT_SET_SHUTDOWN          = 19,
   1724           1.1    jruoho     ACPI_WDAT_GET_STATUS            = 32,
   1725           1.1    jruoho     ACPI_WDAT_SET_STATUS            = 33,
   1726           1.1    jruoho     ACPI_WDAT_ACTION_RESERVED       = 34    /* 34 and greater are reserved */
   1727           1.1    jruoho };
   1728           1.1    jruoho 
   1729           1.1    jruoho /* Values for Instruction field above */
   1730           1.1    jruoho 
   1731           1.1    jruoho enum AcpiWdatInstructions
   1732           1.1    jruoho {
   1733           1.1    jruoho     ACPI_WDAT_READ_VALUE            = 0,
   1734           1.1    jruoho     ACPI_WDAT_READ_COUNTDOWN        = 1,
   1735           1.1    jruoho     ACPI_WDAT_WRITE_VALUE           = 2,
   1736           1.1    jruoho     ACPI_WDAT_WRITE_COUNTDOWN       = 3,
   1737           1.1    jruoho     ACPI_WDAT_INSTRUCTION_RESERVED  = 4,    /* 4 and greater are reserved */
   1738           1.1    jruoho     ACPI_WDAT_PRESERVE_REGISTER     = 0x80  /* Except for this value */
   1739           1.1    jruoho };
   1740           1.1    jruoho 
   1741           1.1    jruoho 
   1742           1.1    jruoho /*******************************************************************************
   1743           1.1    jruoho  *
   1744       1.1.1.2    jruoho  * WDDT - Watchdog Descriptor Table
   1745       1.1.1.2    jruoho  *        Version 1
   1746       1.1.1.2    jruoho  *
   1747       1.1.1.2    jruoho  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)",
   1748       1.1.1.2    jruoho  * Version 001, September 2002
   1749       1.1.1.2    jruoho  *
   1750       1.1.1.2    jruoho  ******************************************************************************/
   1751       1.1.1.2    jruoho 
   1752       1.1.1.2    jruoho typedef struct acpi_table_wddt
   1753       1.1.1.2    jruoho {
   1754       1.1.1.2    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1755       1.1.1.2    jruoho     UINT16                  SpecVersion;
   1756       1.1.1.2    jruoho     UINT16                  TableVersion;
   1757       1.1.1.2    jruoho     UINT16                  PciVendorId;
   1758       1.1.1.2    jruoho     ACPI_GENERIC_ADDRESS    Address;
   1759       1.1.1.2    jruoho     UINT16                  MaxCount;           /* Maximum counter value supported */
   1760       1.1.1.2    jruoho     UINT16                  MinCount;           /* Minimum counter value supported */
   1761       1.1.1.2    jruoho     UINT16                  Period;
   1762       1.1.1.2    jruoho     UINT16                  Status;
   1763       1.1.1.2    jruoho     UINT16                  Capability;
   1764       1.1.1.2    jruoho 
   1765       1.1.1.2    jruoho } ACPI_TABLE_WDDT;
   1766       1.1.1.2    jruoho 
   1767       1.1.1.2    jruoho /* Flags for Status field above */
   1768       1.1.1.2    jruoho 
   1769       1.1.1.2    jruoho #define ACPI_WDDT_AVAILABLE     (1)
   1770       1.1.1.2    jruoho #define ACPI_WDDT_ACTIVE        (1<<1)
   1771       1.1.1.2    jruoho #define ACPI_WDDT_TCO_OS_OWNED  (1<<2)
   1772       1.1.1.2    jruoho #define ACPI_WDDT_USER_RESET    (1<<11)
   1773       1.1.1.2    jruoho #define ACPI_WDDT_WDT_RESET     (1<<12)
   1774       1.1.1.2    jruoho #define ACPI_WDDT_POWER_FAIL    (1<<13)
   1775       1.1.1.2    jruoho #define ACPI_WDDT_UNKNOWN_RESET (1<<14)
   1776       1.1.1.2    jruoho 
   1777       1.1.1.2    jruoho /* Flags for Capability field above */
   1778       1.1.1.2    jruoho 
   1779       1.1.1.2    jruoho #define ACPI_WDDT_AUTO_RESET    (1)
   1780       1.1.1.2    jruoho #define ACPI_WDDT_ALERT_SUPPORT (1<<1)
   1781       1.1.1.2    jruoho 
   1782       1.1.1.2    jruoho 
   1783       1.1.1.2    jruoho /*******************************************************************************
   1784       1.1.1.2    jruoho  *
   1785           1.1    jruoho  * WDRT - Watchdog Resource Table
   1786           1.1    jruoho  *        Version 1
   1787           1.1    jruoho  *
   1788           1.1    jruoho  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003",
   1789           1.1    jruoho  * Version 1.01, August 28, 2006
   1790           1.1    jruoho  *
   1791           1.1    jruoho  ******************************************************************************/
   1792           1.1    jruoho 
   1793           1.1    jruoho typedef struct acpi_table_wdrt
   1794           1.1    jruoho {
   1795           1.1    jruoho     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1796           1.1    jruoho     ACPI_GENERIC_ADDRESS    ControlRegister;
   1797           1.1    jruoho     ACPI_GENERIC_ADDRESS    CountRegister;
   1798           1.1    jruoho     UINT16                  PciDeviceId;
   1799           1.1    jruoho     UINT16                  PciVendorId;
   1800           1.1    jruoho     UINT8                   PciBus;             /* PCI Bus number */
   1801           1.1    jruoho     UINT8                   PciDevice;          /* PCI Device number */
   1802           1.1    jruoho     UINT8                   PciFunction;        /* PCI Function number */
   1803           1.1    jruoho     UINT8                   PciSegment;         /* PCI Segment number */
   1804           1.1    jruoho     UINT16                  MaxCount;           /* Maximum counter value supported */
   1805           1.1    jruoho     UINT8                   Units;
   1806           1.1    jruoho 
   1807           1.1    jruoho } ACPI_TABLE_WDRT;
   1808           1.1    jruoho 
   1809           1.1    jruoho 
   1810  1.1.1.3.12.2  jdolecek /*******************************************************************************
   1811  1.1.1.3.12.2  jdolecek  *
   1812  1.1.1.3.12.2  jdolecek  * WSMT - Windows SMM Security Migrations Table
   1813  1.1.1.3.12.2  jdolecek  *        Version 1
   1814  1.1.1.3.12.2  jdolecek  *
   1815  1.1.1.3.12.2  jdolecek  * Conforms to "Windows SMM Security Migrations Table",
   1816  1.1.1.3.12.2  jdolecek  * Version 1.0, April 18, 2016
   1817  1.1.1.3.12.2  jdolecek  *
   1818  1.1.1.3.12.2  jdolecek  ******************************************************************************/
   1819  1.1.1.3.12.2  jdolecek 
   1820  1.1.1.3.12.2  jdolecek typedef struct acpi_table_wsmt
   1821  1.1.1.3.12.2  jdolecek {
   1822  1.1.1.3.12.2  jdolecek     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
   1823  1.1.1.3.12.2  jdolecek     UINT32                  ProtectionFlags;
   1824  1.1.1.3.12.2  jdolecek 
   1825  1.1.1.3.12.2  jdolecek } ACPI_TABLE_WSMT;
   1826  1.1.1.3.12.2  jdolecek 
   1827  1.1.1.3.12.2  jdolecek /* Flags for ProtectionFlags field above */
   1828  1.1.1.3.12.2  jdolecek 
   1829  1.1.1.3.12.2  jdolecek #define ACPI_WSMT_FIXED_COMM_BUFFERS                (1)
   1830  1.1.1.3.12.2  jdolecek #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2)
   1831  1.1.1.3.12.2  jdolecek #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION        (4)
   1832  1.1.1.3.12.2  jdolecek 
   1833  1.1.1.3.12.2  jdolecek 
   1834           1.1    jruoho /* Reset to default packing */
   1835           1.1    jruoho 
   1836           1.1    jruoho #pragma pack()
   1837           1.1    jruoho 
   1838           1.1    jruoho #endif /* __ACTBL2_H__ */
   1839