1a8357b0cSBob Moore /****************************************************************************** 2a8357b0cSBob Moore * 35cf4d733SBob Moore * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) 4a8357b0cSBob Moore * 5a8357b0cSBob Moore *****************************************************************************/ 6a8357b0cSBob Moore 7a8357b0cSBob Moore /* 87735ca0eSBob Moore * Copyright (C) 2000 - 2017, Intel Corp. 9a8357b0cSBob Moore * All rights reserved. 10a8357b0cSBob Moore * 11a8357b0cSBob Moore * Redistribution and use in source and binary forms, with or without 12a8357b0cSBob Moore * modification, are permitted provided that the following conditions 13a8357b0cSBob Moore * are met: 14a8357b0cSBob Moore * 1. Redistributions of source code must retain the above copyright 15a8357b0cSBob Moore * notice, this list of conditions, and the following disclaimer, 16a8357b0cSBob Moore * without modification. 17a8357b0cSBob Moore * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18a8357b0cSBob Moore * substantially similar to the "NO WARRANTY" disclaimer below 19a8357b0cSBob Moore * ("Disclaimer") and any redistribution must be conditioned upon 20a8357b0cSBob Moore * including a substantially similar Disclaimer requirement for further 21a8357b0cSBob Moore * binary redistribution. 22a8357b0cSBob Moore * 3. Neither the names of the above-listed copyright holders nor the names 23a8357b0cSBob Moore * of any contributors may be used to endorse or promote products derived 24a8357b0cSBob Moore * from this software without specific prior written permission. 25a8357b0cSBob Moore * 26a8357b0cSBob Moore * Alternatively, this software may be distributed under the terms of the 27a8357b0cSBob Moore * GNU General Public License ("GPL") version 2 as published by the Free 28a8357b0cSBob Moore * Software Foundation. 29a8357b0cSBob Moore * 30a8357b0cSBob Moore * NO WARRANTY 31a8357b0cSBob Moore * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32a8357b0cSBob Moore * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33a8357b0cSBob Moore * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34a8357b0cSBob Moore * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35a8357b0cSBob Moore * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36a8357b0cSBob Moore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37a8357b0cSBob Moore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38a8357b0cSBob Moore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39a8357b0cSBob Moore * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40a8357b0cSBob Moore * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41a8357b0cSBob Moore * POSSIBILITY OF SUCH DAMAGES. 42a8357b0cSBob Moore */ 43a8357b0cSBob Moore 44b24aad44SBob Moore #ifndef __ACTBL2_H__ 45b24aad44SBob Moore #define __ACTBL2_H__ 46b24aad44SBob Moore 47b24aad44SBob Moore /******************************************************************************* 48b24aad44SBob Moore * 49b24aad44SBob Moore * Additional ACPI Tables (2) 50b24aad44SBob Moore * 51b24aad44SBob Moore * These tables are not consumed directly by the ACPICA subsystem, but are 52b24aad44SBob Moore * included here to support device drivers and the AML disassembler. 53b24aad44SBob Moore * 549005694eSBob Moore * Generally, the tables in this file are defined by third-party specifications, 559005694eSBob Moore * and are not defined directly by the ACPI specification itself. 56b24aad44SBob Moore * 57b24aad44SBob Moore ******************************************************************************/ 58b24aad44SBob Moore 59b24aad44SBob Moore /* 606e2d5ebdSBob Moore * Values for description table header signatures for tables defined in this 616e2d5ebdSBob Moore * file. Useful because they make it more difficult to inadvertently type in 626e2d5ebdSBob Moore * the wrong signature. 63b24aad44SBob Moore */ 64b24aad44SBob Moore #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 65b24aad44SBob Moore #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 664e2f9c27SBob Moore #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ 674e2f9c27SBob Moore #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ 68b24aad44SBob Moore #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 69b24aad44SBob Moore #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 70b24aad44SBob Moore #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 71ba494beeSBob Moore #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 72874f6a72SLv Zheng #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ 736e2d5ebdSBob Moore #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 74d36d4e30SBob Moore #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ 75b24aad44SBob Moore #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 760e264f0bSBob Moore #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 775132f2faSBob Moore #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 7898b5c993SLv Zheng #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 793bd38469SJames Morse #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ 80b24aad44SBob Moore #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 81b24aad44SBob Moore #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 82b24aad44SBob Moore #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 83b24aad44SBob Moore #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 849005694eSBob Moore #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 85b24aad44SBob Moore #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 8625c0330aSLv Zheng #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 876e2d5ebdSBob Moore #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 88b24aad44SBob Moore #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 899d8b5e7bSBob Moore #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 90b24aad44SBob Moore #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 91e6ab3b77SLv Zheng #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */ 929cf7adecSBob Moore #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 93b24aad44SBob Moore 944461cf54SBob Moore #ifdef ACPI_UNDEFINED_TABLES 954461cf54SBob Moore /* 964461cf54SBob Moore * These tables have been seen in the field, but no definition has been found 974461cf54SBob Moore */ 984461cf54SBob Moore #define ACPI_SIG_ATKG "ATKG" 994461cf54SBob Moore #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 1004461cf54SBob Moore #define ACPI_SIG_IEIT "IEIT" 1014461cf54SBob Moore #endif 1024461cf54SBob Moore 103b24aad44SBob Moore /* 104b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 105b24aad44SBob Moore * the tables are provided by the system BIOS. 106b24aad44SBob Moore */ 107b24aad44SBob Moore #pragma pack(1) 108b24aad44SBob Moore 109b24aad44SBob Moore /* 110be030a57SBob Moore * Note: C bitfields are not used for this reason: 111be030a57SBob Moore * 112be030a57SBob Moore * "Bitfields are great and easy to read, but unfortunately the C language 113be030a57SBob Moore * does not specify the layout of bitfields in memory, which means they are 114be030a57SBob Moore * essentially useless for dealing with packed data in on-disk formats or 115be030a57SBob Moore * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 116be030a57SBob Moore * this decision was a design error in C. Ritchie could have picked an order 117be030a57SBob Moore * and stuck with it." Norman Ramsey. 118be030a57SBob Moore * See http://stackoverflow.com/a/1053662/41661 119b24aad44SBob Moore */ 120b24aad44SBob Moore 121b24aad44SBob Moore /******************************************************************************* 122b24aad44SBob Moore * 123b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 1246e2d5ebdSBob Moore * Revision 0x10 125b24aad44SBob Moore * 126b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 127b24aad44SBob Moore * 128b24aad44SBob Moore ******************************************************************************/ 129b24aad44SBob Moore 130b24aad44SBob Moore struct acpi_table_asf { 131b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 132b24aad44SBob Moore }; 133b24aad44SBob Moore 134b24aad44SBob Moore /* ASF subtable header */ 135b24aad44SBob Moore 136b24aad44SBob Moore struct acpi_asf_header { 137b24aad44SBob Moore u8 type; 138b24aad44SBob Moore u8 reserved; 139b24aad44SBob Moore u16 length; 140b24aad44SBob Moore }; 141b24aad44SBob Moore 142b24aad44SBob Moore /* Values for Type field above */ 143b24aad44SBob Moore 144b24aad44SBob Moore enum acpi_asf_type { 145b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 146b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 147b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 148b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 149b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 150b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 151b24aad44SBob Moore }; 152b24aad44SBob Moore 153b24aad44SBob Moore /* 154b24aad44SBob Moore * ASF subtables 155b24aad44SBob Moore */ 156b24aad44SBob Moore 157b24aad44SBob Moore /* 0: ASF Information */ 158b24aad44SBob Moore 159b24aad44SBob Moore struct acpi_asf_info { 160b24aad44SBob Moore struct acpi_asf_header header; 161b24aad44SBob Moore u8 min_reset_value; 162b24aad44SBob Moore u8 min_poll_interval; 163b24aad44SBob Moore u16 system_id; 164b24aad44SBob Moore u32 mfg_id; 165b24aad44SBob Moore u8 flags; 166b24aad44SBob Moore u8 reserved2[3]; 167b24aad44SBob Moore }; 168b24aad44SBob Moore 1696e2d5ebdSBob Moore /* Masks for Flags field above */ 1706e2d5ebdSBob Moore 1716e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1726e2d5ebdSBob Moore 173b24aad44SBob Moore /* 1: ASF Alerts */ 174b24aad44SBob Moore 175b24aad44SBob Moore struct acpi_asf_alert { 176b24aad44SBob Moore struct acpi_asf_header header; 177b24aad44SBob Moore u8 assert_mask; 178b24aad44SBob Moore u8 deassert_mask; 179b24aad44SBob Moore u8 alerts; 180b24aad44SBob Moore u8 data_length; 181b24aad44SBob Moore }; 182b24aad44SBob Moore 183b24aad44SBob Moore struct acpi_asf_alert_data { 184b24aad44SBob Moore u8 address; 185b24aad44SBob Moore u8 command; 186b24aad44SBob Moore u8 mask; 187b24aad44SBob Moore u8 value; 188b24aad44SBob Moore u8 sensor_type; 189b24aad44SBob Moore u8 type; 190b24aad44SBob Moore u8 offset; 191b24aad44SBob Moore u8 source_type; 192b24aad44SBob Moore u8 severity; 193b24aad44SBob Moore u8 sensor_number; 194b24aad44SBob Moore u8 entity; 195b24aad44SBob Moore u8 instance; 196b24aad44SBob Moore }; 197b24aad44SBob Moore 198b24aad44SBob Moore /* 2: ASF Remote Control */ 199b24aad44SBob Moore 200b24aad44SBob Moore struct acpi_asf_remote { 201b24aad44SBob Moore struct acpi_asf_header header; 202b24aad44SBob Moore u8 controls; 203b24aad44SBob Moore u8 data_length; 204b24aad44SBob Moore u16 reserved2; 205b24aad44SBob Moore }; 206b24aad44SBob Moore 207b24aad44SBob Moore struct acpi_asf_control_data { 208b24aad44SBob Moore u8 function; 209b24aad44SBob Moore u8 address; 210b24aad44SBob Moore u8 command; 211b24aad44SBob Moore u8 value; 212b24aad44SBob Moore }; 213b24aad44SBob Moore 214b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 215b24aad44SBob Moore 216b24aad44SBob Moore struct acpi_asf_rmcp { 217b24aad44SBob Moore struct acpi_asf_header header; 218b24aad44SBob Moore u8 capabilities[7]; 219b24aad44SBob Moore u8 completion_code; 220b24aad44SBob Moore u32 enterprise_id; 221b24aad44SBob Moore u8 command; 222b24aad44SBob Moore u16 parameter; 223b24aad44SBob Moore u16 boot_options; 224b24aad44SBob Moore u16 oem_parameters; 225b24aad44SBob Moore }; 226b24aad44SBob Moore 227b24aad44SBob Moore /* 4: ASF Address */ 228b24aad44SBob Moore 229b24aad44SBob Moore struct acpi_asf_address { 230b24aad44SBob Moore struct acpi_asf_header header; 231b24aad44SBob Moore u8 eprom_address; 232b24aad44SBob Moore u8 devices; 233b24aad44SBob Moore }; 234b24aad44SBob Moore 235b24aad44SBob Moore /******************************************************************************* 236b24aad44SBob Moore * 237b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2386e2d5ebdSBob Moore * Version 1 2396e2d5ebdSBob Moore * 2406e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 241b24aad44SBob Moore * 242b24aad44SBob Moore ******************************************************************************/ 243b24aad44SBob Moore 244b24aad44SBob Moore struct acpi_table_boot { 245b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 246b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 247b24aad44SBob Moore u8 reserved[3]; 248b24aad44SBob Moore }; 249b24aad44SBob Moore 250b24aad44SBob Moore /******************************************************************************* 251b24aad44SBob Moore * 2524e2f9c27SBob Moore * CSRT - Core System Resource Table 2534e2f9c27SBob Moore * Version 0 2544e2f9c27SBob Moore * 2554e2f9c27SBob Moore * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 2564e2f9c27SBob Moore * 2574e2f9c27SBob Moore ******************************************************************************/ 2584e2f9c27SBob Moore 2594e2f9c27SBob Moore struct acpi_table_csrt { 2604e2f9c27SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 2614e2f9c27SBob Moore }; 2624e2f9c27SBob Moore 2634e2f9c27SBob Moore /* Resource Group subtable */ 2644e2f9c27SBob Moore 2654e2f9c27SBob Moore struct acpi_csrt_group { 2664e2f9c27SBob Moore u32 length; 2674e2f9c27SBob Moore u32 vendor_id; 2684e2f9c27SBob Moore u32 subvendor_id; 2694e2f9c27SBob Moore u16 device_id; 2704e2f9c27SBob Moore u16 subdevice_id; 2714e2f9c27SBob Moore u16 revision; 2724e2f9c27SBob Moore u16 reserved; 273e6750be9SBob Moore u32 shared_info_length; 2744e2f9c27SBob Moore 275e6750be9SBob Moore /* Shared data immediately follows (Length = shared_info_length) */ 276e6750be9SBob Moore }; 277e6750be9SBob Moore 278e6750be9SBob Moore /* Shared Info subtable */ 279e6750be9SBob Moore 280e6750be9SBob Moore struct acpi_csrt_shared_info { 281e6750be9SBob Moore u16 major_version; 282e6750be9SBob Moore u16 minor_version; 283e6750be9SBob Moore u32 mmio_base_low; 284e6750be9SBob Moore u32 mmio_base_high; 285e6750be9SBob Moore u32 gsi_interrupt; 286e6750be9SBob Moore u8 interrupt_polarity; 287e6750be9SBob Moore u8 interrupt_mode; 288e6750be9SBob Moore u8 num_channels; 289e6750be9SBob Moore u8 dma_address_width; 290e6750be9SBob Moore u16 base_request_line; 291e6750be9SBob Moore u16 num_handshake_signals; 292e6750be9SBob Moore u32 max_block_size; 293e6750be9SBob Moore 294e6750be9SBob Moore /* Resource descriptors immediately follow (Length = Group length - shared_info_length) */ 2954e2f9c27SBob Moore }; 2964e2f9c27SBob Moore 2974e2f9c27SBob Moore /* Resource Descriptor subtable */ 2984e2f9c27SBob Moore 2994e2f9c27SBob Moore struct acpi_csrt_descriptor { 3004e2f9c27SBob Moore u32 length; 3014e2f9c27SBob Moore u16 type; 3024e2f9c27SBob Moore u16 subtype; 3034e2f9c27SBob Moore u32 uid; 3044e2f9c27SBob Moore 3054e2f9c27SBob Moore /* Resource-specific information immediately follows */ 3064e2f9c27SBob Moore }; 3074e2f9c27SBob Moore 3084e2f9c27SBob Moore /* Resource Types */ 3094e2f9c27SBob Moore 3104e2f9c27SBob Moore #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 3114e2f9c27SBob Moore #define ACPI_CSRT_TYPE_TIMER 0x0002 3124e2f9c27SBob Moore #define ACPI_CSRT_TYPE_DMA 0x0003 3134e2f9c27SBob Moore 3144e2f9c27SBob Moore /* Resource Subtypes */ 3154e2f9c27SBob Moore 3164e2f9c27SBob Moore #define ACPI_CSRT_XRUPT_LINE 0x0000 3174e2f9c27SBob Moore #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 3184e2f9c27SBob Moore #define ACPI_CSRT_TIMER 0x0000 3194e2f9c27SBob Moore #define ACPI_CSRT_DMA_CHANNEL 0x0000 3204e2f9c27SBob Moore #define ACPI_CSRT_DMA_CONTROLLER 0x0001 3214e2f9c27SBob Moore 3224e2f9c27SBob Moore /******************************************************************************* 3234e2f9c27SBob Moore * 3244e2f9c27SBob Moore * DBG2 - Debug Port Table 2 3254e2f9c27SBob Moore * Version 0 (Both main table and subtables) 3264e2f9c27SBob Moore * 327c7200ffeSAleksey Makarov * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015 3284e2f9c27SBob Moore * 3294e2f9c27SBob Moore ******************************************************************************/ 3304e2f9c27SBob Moore 3314e2f9c27SBob Moore struct acpi_table_dbg2 { 3324e2f9c27SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 3334e2f9c27SBob Moore u32 info_offset; 3344e2f9c27SBob Moore u32 info_count; 3354e2f9c27SBob Moore }; 3364e2f9c27SBob Moore 33777455222SBob Moore struct acpi_dbg2_header { 33877455222SBob Moore u32 info_offset; 33977455222SBob Moore u32 info_count; 34077455222SBob Moore }; 34177455222SBob Moore 3424e2f9c27SBob Moore /* Debug Device Information Subtable */ 3434e2f9c27SBob Moore 3444e2f9c27SBob Moore struct acpi_dbg2_device { 3454e2f9c27SBob Moore u8 revision; 3464e2f9c27SBob Moore u16 length; 3474e2f9c27SBob Moore u8 register_count; /* Number of base_address registers */ 3484e2f9c27SBob Moore u16 namepath_length; 3494e2f9c27SBob Moore u16 namepath_offset; 3504e2f9c27SBob Moore u16 oem_data_length; 3514e2f9c27SBob Moore u16 oem_data_offset; 3524e2f9c27SBob Moore u16 port_type; 3534e2f9c27SBob Moore u16 port_subtype; 3544e2f9c27SBob Moore u16 reserved; 3554e2f9c27SBob Moore u16 base_address_offset; 3564e2f9c27SBob Moore u16 address_size_offset; 3574e2f9c27SBob Moore /* 3584e2f9c27SBob Moore * Data that follows: 3594e2f9c27SBob Moore * base_address (required) - Each in 12-byte Generic Address Structure format. 3604e2f9c27SBob Moore * address_size (required) - Array of u32 sizes corresponding to each base_address register. 3614e2f9c27SBob Moore * Namepath (required) - Null terminated string. Single dot if not supported. 3624e2f9c27SBob Moore * oem_data (optional) - Length is oem_data_length. 3634e2f9c27SBob Moore */ 3644e2f9c27SBob Moore }; 3654e2f9c27SBob Moore 3664e2f9c27SBob Moore /* Types for port_type field above */ 3674e2f9c27SBob Moore 3684e2f9c27SBob Moore #define ACPI_DBG2_SERIAL_PORT 0x8000 3694e2f9c27SBob Moore #define ACPI_DBG2_1394_PORT 0x8001 3704e2f9c27SBob Moore #define ACPI_DBG2_USB_PORT 0x8002 3714e2f9c27SBob Moore #define ACPI_DBG2_NET_PORT 0x8003 3724e2f9c27SBob Moore 3734e2f9c27SBob Moore /* Subtypes for port_subtype field above */ 3744e2f9c27SBob Moore 3754e2f9c27SBob Moore #define ACPI_DBG2_16550_COMPATIBLE 0x0000 3764e2f9c27SBob Moore #define ACPI_DBG2_16550_SUBSET 0x0001 377c7200ffeSAleksey Makarov #define ACPI_DBG2_ARM_PL011 0x0003 378c7200ffeSAleksey Makarov #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D 379c7200ffeSAleksey Makarov #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E 380c7200ffeSAleksey Makarov #define ACPI_DBG2_ARM_DCC 0x000F 381c7200ffeSAleksey Makarov #define ACPI_DBG2_BCM2835 0x0010 3824e2f9c27SBob Moore 3834e2f9c27SBob Moore #define ACPI_DBG2_1394_STANDARD 0x0000 3844e2f9c27SBob Moore 3854e2f9c27SBob Moore #define ACPI_DBG2_USB_XHCI 0x0000 3864e2f9c27SBob Moore #define ACPI_DBG2_USB_EHCI 0x0001 3874e2f9c27SBob Moore 3884e2f9c27SBob Moore /******************************************************************************* 3894e2f9c27SBob Moore * 390b24aad44SBob Moore * DBGP - Debug Port table 3916e2d5ebdSBob Moore * Version 1 3926e2d5ebdSBob Moore * 3936e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 394b24aad44SBob Moore * 395b24aad44SBob Moore ******************************************************************************/ 396b24aad44SBob Moore 397b24aad44SBob Moore struct acpi_table_dbgp { 398b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 399b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 400b24aad44SBob Moore u8 reserved[3]; 401b24aad44SBob Moore struct acpi_generic_address debug_port; 402b24aad44SBob Moore }; 403b24aad44SBob Moore 404b24aad44SBob Moore /******************************************************************************* 405b24aad44SBob Moore * 406b24aad44SBob Moore * DMAR - DMA Remapping table 4076e2d5ebdSBob Moore * Version 1 4086e2d5ebdSBob Moore * 4096e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 4103a9ca4d5SBob Moore * Version 2.3, October 2014 411b24aad44SBob Moore * 412b24aad44SBob Moore ******************************************************************************/ 413b24aad44SBob Moore 414b24aad44SBob Moore struct acpi_table_dmar { 415b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 416b24aad44SBob Moore u8 width; /* Host Address Width */ 417b24aad44SBob Moore u8 flags; 418b24aad44SBob Moore u8 reserved[10]; 419b24aad44SBob Moore }; 420b24aad44SBob Moore 4216e2d5ebdSBob Moore /* Masks for Flags field above */ 422b24aad44SBob Moore 423b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 4243a9ca4d5SBob Moore #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1) 4253a9ca4d5SBob Moore #define ACPI_DMAR_X2APIC_MODE (1<<2) 426b24aad44SBob Moore 427b24aad44SBob Moore /* DMAR subtable header */ 428b24aad44SBob Moore 429b24aad44SBob Moore struct acpi_dmar_header { 430b24aad44SBob Moore u16 type; 431b24aad44SBob Moore u16 length; 432b24aad44SBob Moore }; 433b24aad44SBob Moore 434b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 435b24aad44SBob Moore 436b24aad44SBob Moore enum acpi_dmar_type { 437b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 438b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 43983118b0dSBob Moore ACPI_DMAR_TYPE_ROOT_ATS = 2, 44083118b0dSBob Moore ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3, 44183118b0dSBob Moore ACPI_DMAR_TYPE_NAMESPACE = 4, 44286a54dccSDavid Woodhouse ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 443b24aad44SBob Moore }; 444b24aad44SBob Moore 4456e2d5ebdSBob Moore /* DMAR Device Scope structure */ 4466e2d5ebdSBob Moore 447b24aad44SBob Moore struct acpi_dmar_device_scope { 448b24aad44SBob Moore u8 entry_type; 449b24aad44SBob Moore u8 length; 450b24aad44SBob Moore u16 reserved; 451b24aad44SBob Moore u8 enumeration_id; 452b24aad44SBob Moore u8 bus; 453b24aad44SBob Moore }; 454b24aad44SBob Moore 45583118b0dSBob Moore /* Values for entry_type in struct acpi_dmar_device_scope - device types */ 456b24aad44SBob Moore 457b24aad44SBob Moore enum acpi_dmar_scope_type { 458b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 459b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 460b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 461b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 462b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 46383118b0dSBob Moore ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5, 46486a54dccSDavid Woodhouse ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 465b24aad44SBob Moore }; 466b24aad44SBob Moore 467b24aad44SBob Moore struct acpi_dmar_pci_path { 468fa5f508fSLv Zheng u8 device; 469fa5f508fSLv Zheng u8 function; 470b24aad44SBob Moore }; 471b24aad44SBob Moore 472b24aad44SBob Moore /* 4731a49b72cSBob Moore * DMAR Subtables, correspond to Type in struct acpi_dmar_header 474b24aad44SBob Moore */ 475b24aad44SBob Moore 476b24aad44SBob Moore /* 0: Hardware Unit Definition */ 477b24aad44SBob Moore 478b24aad44SBob Moore struct acpi_dmar_hardware_unit { 479b24aad44SBob Moore struct acpi_dmar_header header; 480b24aad44SBob Moore u8 flags; 481b24aad44SBob Moore u8 reserved; 482b24aad44SBob Moore u16 segment; 483b24aad44SBob Moore u64 address; /* Register Base Address */ 484b24aad44SBob Moore }; 485b24aad44SBob Moore 4866e2d5ebdSBob Moore /* Masks for Flags field above */ 487b24aad44SBob Moore 488b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 489b24aad44SBob Moore 490b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 491b24aad44SBob Moore 492b24aad44SBob Moore struct acpi_dmar_reserved_memory { 493b24aad44SBob Moore struct acpi_dmar_header header; 494b24aad44SBob Moore u16 reserved; 495b24aad44SBob Moore u16 segment; 496ba494beeSBob Moore u64 base_address; /* 4K aligned base address */ 497ba494beeSBob Moore u64 end_address; /* 4K aligned limit address */ 498b24aad44SBob Moore }; 499b24aad44SBob Moore 5006e2d5ebdSBob Moore /* Masks for Flags field above */ 501b24aad44SBob Moore 502b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 503b24aad44SBob Moore 504b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 505b24aad44SBob Moore 506b24aad44SBob Moore struct acpi_dmar_atsr { 507b24aad44SBob Moore struct acpi_dmar_header header; 508b24aad44SBob Moore u8 flags; 509b24aad44SBob Moore u8 reserved; 510b24aad44SBob Moore u16 segment; 511b24aad44SBob Moore }; 512b24aad44SBob Moore 5136e2d5ebdSBob Moore /* Masks for Flags field above */ 514b24aad44SBob Moore 515b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 516b24aad44SBob Moore 5176e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 5186e2d5ebdSBob Moore 5196e2d5ebdSBob Moore struct acpi_dmar_rhsa { 5206e2d5ebdSBob Moore struct acpi_dmar_header header; 5216e2d5ebdSBob Moore u32 reserved; 5226e2d5ebdSBob Moore u64 base_address; 5236e2d5ebdSBob Moore u32 proximity_domain; 5246e2d5ebdSBob Moore }; 5256e2d5ebdSBob Moore 52686a54dccSDavid Woodhouse /* 4: ACPI Namespace Device Declaration Structure */ 52786a54dccSDavid Woodhouse 52886a54dccSDavid Woodhouse struct acpi_dmar_andd { 52986a54dccSDavid Woodhouse struct acpi_dmar_header header; 53086a54dccSDavid Woodhouse u8 reserved[3]; 53186a54dccSDavid Woodhouse u8 device_number; 53283118b0dSBob Moore char device_name[1]; 53386a54dccSDavid Woodhouse }; 53486a54dccSDavid Woodhouse 535b24aad44SBob Moore /******************************************************************************* 536b24aad44SBob Moore * 537b24aad44SBob Moore * HPET - High Precision Event Timer table 5386e2d5ebdSBob Moore * Version 1 5396e2d5ebdSBob Moore * 5406e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 5416e2d5ebdSBob Moore * Version 1.0a, October 2004 542b24aad44SBob Moore * 543b24aad44SBob Moore ******************************************************************************/ 544b24aad44SBob Moore 545b24aad44SBob Moore struct acpi_table_hpet { 546b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 547b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 548b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 549b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 550b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 551b24aad44SBob Moore u8 flags; 552b24aad44SBob Moore }; 553b24aad44SBob Moore 5546e2d5ebdSBob Moore /* Masks for Flags field above */ 555b24aad44SBob Moore 5566e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 557b24aad44SBob Moore 5586e2d5ebdSBob Moore /* Values for Page Protect flags */ 5596e2d5ebdSBob Moore 5606e2d5ebdSBob Moore enum acpi_hpet_page_protect { 5616e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 5626e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 5636e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 5646e2d5ebdSBob Moore }; 565b24aad44SBob Moore 566b24aad44SBob Moore /******************************************************************************* 567b24aad44SBob Moore * 568b24aad44SBob Moore * IBFT - Boot Firmware Table 5696e2d5ebdSBob Moore * Version 1 5706e2d5ebdSBob Moore * 5716e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 5726e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 5736e2d5ebdSBob Moore * 5746e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 5756e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 576b24aad44SBob Moore * 577b24aad44SBob Moore ******************************************************************************/ 578b24aad44SBob Moore 579b24aad44SBob Moore struct acpi_table_ibft { 580b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 581b24aad44SBob Moore u8 reserved[12]; 582b24aad44SBob Moore }; 583b24aad44SBob Moore 584b24aad44SBob Moore /* IBFT common subtable header */ 585b24aad44SBob Moore 586b24aad44SBob Moore struct acpi_ibft_header { 587b24aad44SBob Moore u8 type; 588b24aad44SBob Moore u8 version; 589b24aad44SBob Moore u16 length; 590b24aad44SBob Moore u8 index; 591b24aad44SBob Moore u8 flags; 592b24aad44SBob Moore }; 593b24aad44SBob Moore 594b24aad44SBob Moore /* Values for Type field above */ 595b24aad44SBob Moore 596b24aad44SBob Moore enum acpi_ibft_type { 597b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 598b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 599b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 600b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 601b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 602b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 603b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 604b24aad44SBob Moore }; 605b24aad44SBob Moore 606b24aad44SBob Moore /* IBFT subtables */ 607b24aad44SBob Moore 608b24aad44SBob Moore struct acpi_ibft_control { 609b24aad44SBob Moore struct acpi_ibft_header header; 610b24aad44SBob Moore u16 extensions; 611b24aad44SBob Moore u16 initiator_offset; 612b24aad44SBob Moore u16 nic0_offset; 613b24aad44SBob Moore u16 target0_offset; 614b24aad44SBob Moore u16 nic1_offset; 615b24aad44SBob Moore u16 target1_offset; 616b24aad44SBob Moore }; 617b24aad44SBob Moore 618b24aad44SBob Moore struct acpi_ibft_initiator { 619b24aad44SBob Moore struct acpi_ibft_header header; 620b24aad44SBob Moore u8 sns_server[16]; 621b24aad44SBob Moore u8 slp_server[16]; 622b24aad44SBob Moore u8 primary_server[16]; 623b24aad44SBob Moore u8 secondary_server[16]; 624b24aad44SBob Moore u16 name_length; 625b24aad44SBob Moore u16 name_offset; 626b24aad44SBob Moore }; 627b24aad44SBob Moore 628b24aad44SBob Moore struct acpi_ibft_nic { 629b24aad44SBob Moore struct acpi_ibft_header header; 630b24aad44SBob Moore u8 ip_address[16]; 631b24aad44SBob Moore u8 subnet_mask_prefix; 632b24aad44SBob Moore u8 origin; 633b24aad44SBob Moore u8 gateway[16]; 634b24aad44SBob Moore u8 primary_dns[16]; 635b24aad44SBob Moore u8 secondary_dns[16]; 636b24aad44SBob Moore u8 dhcp[16]; 637b24aad44SBob Moore u16 vlan; 638b24aad44SBob Moore u8 mac_address[6]; 639b24aad44SBob Moore u16 pci_address; 640b24aad44SBob Moore u16 name_length; 641b24aad44SBob Moore u16 name_offset; 642b24aad44SBob Moore }; 643b24aad44SBob Moore 644b24aad44SBob Moore struct acpi_ibft_target { 645b24aad44SBob Moore struct acpi_ibft_header header; 646b24aad44SBob Moore u8 target_ip_address[16]; 647b24aad44SBob Moore u16 target_ip_socket; 648b24aad44SBob Moore u8 target_boot_lun[8]; 649b24aad44SBob Moore u8 chap_type; 650b24aad44SBob Moore u8 nic_association; 651b24aad44SBob Moore u16 target_name_length; 652b24aad44SBob Moore u16 target_name_offset; 653b24aad44SBob Moore u16 chap_name_length; 654b24aad44SBob Moore u16 chap_name_offset; 655b24aad44SBob Moore u16 chap_secret_length; 656b24aad44SBob Moore u16 chap_secret_offset; 657b24aad44SBob Moore u16 reverse_chap_name_length; 658b24aad44SBob Moore u16 reverse_chap_name_offset; 659b24aad44SBob Moore u16 reverse_chap_secret_length; 660b24aad44SBob Moore u16 reverse_chap_secret_offset; 661b24aad44SBob Moore }; 662b24aad44SBob Moore 663b24aad44SBob Moore /******************************************************************************* 664b24aad44SBob Moore * 665874f6a72SLv Zheng * IORT - IO Remapping Table 666874f6a72SLv Zheng * 667874f6a72SLv Zheng * Conforms to "IO Remapping Table System Software on ARM Platforms", 6680c2021c0SRobin Murphy * Document number: ARM DEN 0049C, May 2017 669874f6a72SLv Zheng * 670874f6a72SLv Zheng ******************************************************************************/ 671874f6a72SLv Zheng 672874f6a72SLv Zheng struct acpi_table_iort { 673874f6a72SLv Zheng struct acpi_table_header header; 674874f6a72SLv Zheng u32 node_count; 675874f6a72SLv Zheng u32 node_offset; 676874f6a72SLv Zheng u32 reserved; 677874f6a72SLv Zheng }; 678874f6a72SLv Zheng 679874f6a72SLv Zheng /* 680874f6a72SLv Zheng * IORT subtables 681874f6a72SLv Zheng */ 682874f6a72SLv Zheng struct acpi_iort_node { 683874f6a72SLv Zheng u8 type; 684874f6a72SLv Zheng u16 length; 685874f6a72SLv Zheng u8 revision; 686874f6a72SLv Zheng u32 reserved; 687874f6a72SLv Zheng u32 mapping_count; 688874f6a72SLv Zheng u32 mapping_offset; 689874f6a72SLv Zheng char node_data[1]; 690874f6a72SLv Zheng }; 691874f6a72SLv Zheng 692874f6a72SLv Zheng /* Values for subtable Type above */ 693874f6a72SLv Zheng 694874f6a72SLv Zheng enum acpi_iort_node_type { 695874f6a72SLv Zheng ACPI_IORT_NODE_ITS_GROUP = 0x00, 696874f6a72SLv Zheng ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 697874f6a72SLv Zheng ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 6984ac78bafSAl Stone ACPI_IORT_NODE_SMMU = 0x03, 6994ac78bafSAl Stone ACPI_IORT_NODE_SMMU_V3 = 0x04 700874f6a72SLv Zheng }; 701874f6a72SLv Zheng 702874f6a72SLv Zheng struct acpi_iort_id_mapping { 703874f6a72SLv Zheng u32 input_base; /* Lowest value in input range */ 704874f6a72SLv Zheng u32 id_count; /* Number of IDs */ 705874f6a72SLv Zheng u32 output_base; /* Lowest value in output range */ 706874f6a72SLv Zheng u32 output_reference; /* A reference to the output node */ 707874f6a72SLv Zheng u32 flags; 708874f6a72SLv Zheng }; 709874f6a72SLv Zheng 710874f6a72SLv Zheng /* Masks for Flags field above for IORT subtable */ 711874f6a72SLv Zheng 712874f6a72SLv Zheng #define ACPI_IORT_ID_SINGLE_MAPPING (1) 713874f6a72SLv Zheng 714874f6a72SLv Zheng struct acpi_iort_memory_access { 715874f6a72SLv Zheng u32 cache_coherency; 716874f6a72SLv Zheng u8 hints; 717874f6a72SLv Zheng u16 reserved; 718874f6a72SLv Zheng u8 memory_flags; 719874f6a72SLv Zheng }; 720874f6a72SLv Zheng 721874f6a72SLv Zheng /* Values for cache_coherency field above */ 722874f6a72SLv Zheng 723874f6a72SLv Zheng #define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */ 724874f6a72SLv Zheng #define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */ 725874f6a72SLv Zheng 726874f6a72SLv Zheng /* Masks for Hints field above */ 727874f6a72SLv Zheng 728874f6a72SLv Zheng #define ACPI_IORT_HT_TRANSIENT (1) 729874f6a72SLv Zheng #define ACPI_IORT_HT_WRITE (1<<1) 730874f6a72SLv Zheng #define ACPI_IORT_HT_READ (1<<2) 731874f6a72SLv Zheng #define ACPI_IORT_HT_OVERRIDE (1<<3) 732874f6a72SLv Zheng 733874f6a72SLv Zheng /* Masks for memory_flags field above */ 734874f6a72SLv Zheng 735874f6a72SLv Zheng #define ACPI_IORT_MF_COHERENCY (1) 736874f6a72SLv Zheng #define ACPI_IORT_MF_ATTRIBUTES (1<<1) 737874f6a72SLv Zheng 738874f6a72SLv Zheng /* 739874f6a72SLv Zheng * IORT node specific subtables 740874f6a72SLv Zheng */ 741874f6a72SLv Zheng struct acpi_iort_its_group { 742874f6a72SLv Zheng u32 its_count; 743874f6a72SLv Zheng u32 identifiers[1]; /* GIC ITS identifier arrary */ 744874f6a72SLv Zheng }; 745874f6a72SLv Zheng 746874f6a72SLv Zheng struct acpi_iort_named_component { 747874f6a72SLv Zheng u32 node_flags; 748874f6a72SLv Zheng u64 memory_properties; /* Memory access properties */ 749874f6a72SLv Zheng u8 memory_address_limit; /* Memory address size limit */ 750874f6a72SLv Zheng char device_name[1]; /* Path of namespace object */ 751874f6a72SLv Zheng }; 752874f6a72SLv Zheng 753874f6a72SLv Zheng struct acpi_iort_root_complex { 754874f6a72SLv Zheng u64 memory_properties; /* Memory access properties */ 755874f6a72SLv Zheng u32 ats_attribute; 756874f6a72SLv Zheng u32 pci_segment_number; 757874f6a72SLv Zheng }; 758874f6a72SLv Zheng 759874f6a72SLv Zheng /* Values for ats_attribute field above */ 760874f6a72SLv Zheng 761874f6a72SLv Zheng #define ACPI_IORT_ATS_SUPPORTED 0x00000001 /* The root complex supports ATS */ 762874f6a72SLv Zheng #define ACPI_IORT_ATS_UNSUPPORTED 0x00000000 /* The root complex doesn't support ATS */ 763874f6a72SLv Zheng 764874f6a72SLv Zheng struct acpi_iort_smmu { 765874f6a72SLv Zheng u64 base_address; /* SMMU base address */ 766874f6a72SLv Zheng u64 span; /* Length of memory range */ 767874f6a72SLv Zheng u32 model; 768874f6a72SLv Zheng u32 flags; 769874f6a72SLv Zheng u32 global_interrupt_offset; 770874f6a72SLv Zheng u32 context_interrupt_count; 771874f6a72SLv Zheng u32 context_interrupt_offset; 772874f6a72SLv Zheng u32 pmu_interrupt_count; 773874f6a72SLv Zheng u32 pmu_interrupt_offset; 774874f6a72SLv Zheng u64 interrupts[1]; /* Interrupt array */ 775874f6a72SLv Zheng }; 776874f6a72SLv Zheng 777874f6a72SLv Zheng /* Values for Model field above */ 778874f6a72SLv Zheng 779874f6a72SLv Zheng #define ACPI_IORT_SMMU_V1 0x00000000 /* Generic SMMUv1 */ 780874f6a72SLv Zheng #define ACPI_IORT_SMMU_V2 0x00000001 /* Generic SMMUv2 */ 781874f6a72SLv Zheng #define ACPI_IORT_SMMU_CORELINK_MMU400 0x00000002 /* ARM Corelink MMU-400 */ 782874f6a72SLv Zheng #define ACPI_IORT_SMMU_CORELINK_MMU500 0x00000003 /* ARM Corelink MMU-500 */ 7830c2021c0SRobin Murphy #define ACPI_IORT_SMMU_CORELINK_MMU401 0x00000004 /* ARM Corelink MMU-401 */ 7840c2021c0SRobin Murphy #define ACPI_IORT_SMMU_CAVIUM_THUNDERX 0x00000005 /* Cavium thunder_x SMMUv2 */ 785874f6a72SLv Zheng 786874f6a72SLv Zheng /* Masks for Flags field above */ 787874f6a72SLv Zheng 788874f6a72SLv Zheng #define ACPI_IORT_SMMU_DVM_SUPPORTED (1) 789874f6a72SLv Zheng #define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) 790874f6a72SLv Zheng 791bb1e23e6SLv Zheng /* Global interrupt format */ 792bb1e23e6SLv Zheng 793bb1e23e6SLv Zheng struct acpi_iort_smmu_gsi { 794bb1e23e6SLv Zheng u32 nsg_irpt; 795bb1e23e6SLv Zheng u32 nsg_irpt_flags; 796bb1e23e6SLv Zheng u32 nsg_cfg_irpt; 797bb1e23e6SLv Zheng u32 nsg_cfg_irpt_flags; 798bb1e23e6SLv Zheng }; 799bb1e23e6SLv Zheng 8004ac78bafSAl Stone struct acpi_iort_smmu_v3 { 8014ac78bafSAl Stone u64 base_address; /* SMMUv3 base address */ 8024ac78bafSAl Stone u32 flags; 8034ac78bafSAl Stone u32 reserved; 8044ac78bafSAl Stone u64 vatos_address; 8050c2021c0SRobin Murphy u32 model; 8064ac78bafSAl Stone u32 event_gsiv; 8074ac78bafSAl Stone u32 pri_gsiv; 8084ac78bafSAl Stone u32 gerr_gsiv; 8094ac78bafSAl Stone u32 sync_gsiv; 810c9442300SGanapatrao Kulkarni u8 pxm; 811c9442300SGanapatrao Kulkarni u8 reserved1; 812c9442300SGanapatrao Kulkarni u16 reserved2; 8134c106aa4SHanjun Guo u32 id_mapping_index; 8144ac78bafSAl Stone }; 8154ac78bafSAl Stone 8160c2021c0SRobin Murphy /* Values for Model field above */ 8170c2021c0SRobin Murphy 8180c2021c0SRobin Murphy #define ACPI_IORT_SMMU_V3_GENERIC 0x00000000 /* Generic SMMUv3 */ 8190c2021c0SRobin Murphy #define ACPI_IORT_SMMU_V3_HISILICON_HI161X 0x00000001 /* hi_silicon Hi161x SMMUv3 */ 8200c2021c0SRobin Murphy #define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX 0x00000002 /* Cavium CN99xx SMMUv3 */ 8210c2021c0SRobin Murphy 8224ac78bafSAl Stone /* Masks for Flags field above */ 8234ac78bafSAl Stone 8244ac78bafSAl Stone #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 8254ac78bafSAl Stone #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (1<<1) 826c9442300SGanapatrao Kulkarni #define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) 8274ac78bafSAl Stone 828874f6a72SLv Zheng /******************************************************************************* 829874f6a72SLv Zheng * 8306e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 8316e2d5ebdSBob Moore * Version 1 8326e2d5ebdSBob Moore * 8336e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 8346e2d5ebdSBob Moore * Revision 1.26, February 2009. 8356e2d5ebdSBob Moore * 8366e2d5ebdSBob Moore ******************************************************************************/ 8376e2d5ebdSBob Moore 8386e2d5ebdSBob Moore struct acpi_table_ivrs { 8396e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8406e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 8416e2d5ebdSBob Moore u64 reserved; 8426e2d5ebdSBob Moore }; 8436e2d5ebdSBob Moore 8446e2d5ebdSBob Moore /* Values for Info field above */ 8456e2d5ebdSBob Moore 8466e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 8476e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 8486e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 8496e2d5ebdSBob Moore 8506e2d5ebdSBob Moore /* IVRS subtable header */ 8516e2d5ebdSBob Moore 8526e2d5ebdSBob Moore struct acpi_ivrs_header { 8536e2d5ebdSBob Moore u8 type; /* Subtable type */ 8546e2d5ebdSBob Moore u8 flags; 8556e2d5ebdSBob Moore u16 length; /* Subtable length */ 8566e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 8576e2d5ebdSBob Moore }; 8586e2d5ebdSBob Moore 8596e2d5ebdSBob Moore /* Values for subtable Type above */ 8606e2d5ebdSBob Moore 8616e2d5ebdSBob Moore enum acpi_ivrs_type { 8626e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 8636e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 8646e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 8656e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 8666e2d5ebdSBob Moore }; 8676e2d5ebdSBob Moore 8686e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 8696e2d5ebdSBob Moore 8706e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 8716e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 8726e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 8736e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 8746e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 8756e2d5ebdSBob Moore 8766e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 8776e2d5ebdSBob Moore 8786e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 8796e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 8806e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 8816e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 8826e2d5ebdSBob Moore 8836e2d5ebdSBob Moore /* 8846e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 8856e2d5ebdSBob Moore */ 8866e2d5ebdSBob Moore 8876e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 8886e2d5ebdSBob Moore 8896e2d5ebdSBob Moore struct acpi_ivrs_hardware { 8906e2d5ebdSBob Moore struct acpi_ivrs_header header; 8916e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 8926e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 8936e2d5ebdSBob Moore u16 pci_segment_group; 8946e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 8956e2d5ebdSBob Moore u32 reserved; 8966e2d5ebdSBob Moore }; 8976e2d5ebdSBob Moore 8986e2d5ebdSBob Moore /* Masks for Info field above */ 8996e2d5ebdSBob Moore 9006e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 901ba494beeSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_ID */ 9026e2d5ebdSBob Moore 9036e2d5ebdSBob Moore /* 9046e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 9056e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 9066e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 9076e2d5ebdSBob Moore * are reserved for future use but not defined. 9086e2d5ebdSBob Moore */ 9096e2d5ebdSBob Moore struct acpi_ivrs_de_header { 9106e2d5ebdSBob Moore u8 type; 9116e2d5ebdSBob Moore u16 id; 9126e2d5ebdSBob Moore u8 data_setting; 9136e2d5ebdSBob Moore }; 9146e2d5ebdSBob Moore 9156e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 9166e2d5ebdSBob Moore 9176e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 9186e2d5ebdSBob Moore 9196e2d5ebdSBob Moore /* Values for device entry Type field above */ 9206e2d5ebdSBob Moore 9216e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 9226e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 9236e2d5ebdSBob Moore 9246e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 9256e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 9266e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 9276e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 9286e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 9296e2d5ebdSBob Moore 9306e2d5ebdSBob Moore /* 8-byte device entries */ 9316e2d5ebdSBob Moore 9326e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 9336e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 9346e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 9356e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 9366e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 9376e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 9386e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 9396e2d5ebdSBob Moore }; 9406e2d5ebdSBob Moore 9416e2d5ebdSBob Moore /* Values for Data field above */ 9426e2d5ebdSBob Moore 9436e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 9446e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 9456e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 9466e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 9476e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 9486e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 9496e2d5ebdSBob Moore 9506e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 9516e2d5ebdSBob Moore 9526e2d5ebdSBob Moore struct acpi_ivrs_device4 { 9536e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 9546e2d5ebdSBob Moore }; 9556e2d5ebdSBob Moore 9566e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 9576e2d5ebdSBob Moore 9586e2d5ebdSBob Moore struct acpi_ivrs_device8a { 9596e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 9606e2d5ebdSBob Moore u8 reserved1; 9616e2d5ebdSBob Moore u16 used_id; 9626e2d5ebdSBob Moore u8 reserved2; 9636e2d5ebdSBob Moore }; 9646e2d5ebdSBob Moore 9656e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 9666e2d5ebdSBob Moore 9676e2d5ebdSBob Moore struct acpi_ivrs_device8b { 9686e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 9696e2d5ebdSBob Moore u32 extended_data; 9706e2d5ebdSBob Moore }; 9716e2d5ebdSBob Moore 9726e2d5ebdSBob Moore /* Values for extended_data above */ 9736e2d5ebdSBob Moore 9746e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 9756e2d5ebdSBob Moore 9766e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 9776e2d5ebdSBob Moore 9786e2d5ebdSBob Moore struct acpi_ivrs_device8c { 9796e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 9806e2d5ebdSBob Moore u8 handle; 9816e2d5ebdSBob Moore u16 used_id; 9826e2d5ebdSBob Moore u8 variety; 9836e2d5ebdSBob Moore }; 9846e2d5ebdSBob Moore 9856e2d5ebdSBob Moore /* Values for Variety field above */ 9866e2d5ebdSBob Moore 9876e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 9886e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 9896e2d5ebdSBob Moore 9906e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 9916e2d5ebdSBob Moore 9926e2d5ebdSBob Moore struct acpi_ivrs_memory { 9936e2d5ebdSBob Moore struct acpi_ivrs_header header; 9946e2d5ebdSBob Moore u16 aux_data; 9956e2d5ebdSBob Moore u64 reserved; 9966e2d5ebdSBob Moore u64 start_address; 9976e2d5ebdSBob Moore u64 memory_length; 9986e2d5ebdSBob Moore }; 9996e2d5ebdSBob Moore 10006e2d5ebdSBob Moore /******************************************************************************* 10016e2d5ebdSBob Moore * 1002d36d4e30SBob Moore * LPIT - Low Power Idle Table 1003d36d4e30SBob Moore * 10049ab8cf1bSBob Moore * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. 1005d36d4e30SBob Moore * 1006d36d4e30SBob Moore ******************************************************************************/ 1007d36d4e30SBob Moore 1008d36d4e30SBob Moore struct acpi_table_lpit { 1009d36d4e30SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1010d36d4e30SBob Moore }; 1011d36d4e30SBob Moore 1012d36d4e30SBob Moore /* LPIT subtable header */ 1013d36d4e30SBob Moore 1014d36d4e30SBob Moore struct acpi_lpit_header { 1015d36d4e30SBob Moore u32 type; /* Subtable type */ 1016d36d4e30SBob Moore u32 length; /* Subtable length */ 1017d36d4e30SBob Moore u16 unique_id; 1018d36d4e30SBob Moore u16 reserved; 1019d36d4e30SBob Moore u32 flags; 1020d36d4e30SBob Moore }; 1021d36d4e30SBob Moore 1022d36d4e30SBob Moore /* Values for subtable Type above */ 1023d36d4e30SBob Moore 1024d36d4e30SBob Moore enum acpi_lpit_type { 1025d36d4e30SBob Moore ACPI_LPIT_TYPE_NATIVE_CSTATE = 0x00, 10269ab8cf1bSBob Moore ACPI_LPIT_TYPE_RESERVED = 0x01 /* 1 and above are reserved */ 1027d36d4e30SBob Moore }; 1028d36d4e30SBob Moore 1029d36d4e30SBob Moore /* Masks for Flags field above */ 1030d36d4e30SBob Moore 1031d36d4e30SBob Moore #define ACPI_LPIT_STATE_DISABLED (1) 1032d36d4e30SBob Moore #define ACPI_LPIT_NO_COUNTER (1<<1) 1033d36d4e30SBob Moore 1034d36d4e30SBob Moore /* 1035d36d4e30SBob Moore * LPIT subtables, correspond to Type in struct acpi_lpit_header 1036d36d4e30SBob Moore */ 1037d36d4e30SBob Moore 1038d36d4e30SBob Moore /* 0x00: Native C-state instruction based LPI structure */ 1039d36d4e30SBob Moore 1040d36d4e30SBob Moore struct acpi_lpit_native { 1041d36d4e30SBob Moore struct acpi_lpit_header header; 1042d36d4e30SBob Moore struct acpi_generic_address entry_trigger; 1043d36d4e30SBob Moore u32 residency; 1044d36d4e30SBob Moore u32 latency; 1045d36d4e30SBob Moore struct acpi_generic_address residency_counter; 1046d36d4e30SBob Moore u64 counter_frequency; 1047d36d4e30SBob Moore }; 1048d36d4e30SBob Moore 1049d36d4e30SBob Moore /******************************************************************************* 1050d36d4e30SBob Moore * 10511a49b72cSBob Moore * MCFG - PCI Memory Mapped Configuration table and subtable 10526e2d5ebdSBob Moore * Version 1 10536e2d5ebdSBob Moore * 10546e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 1055b24aad44SBob Moore * 1056b24aad44SBob Moore ******************************************************************************/ 1057b24aad44SBob Moore 1058b24aad44SBob Moore struct acpi_table_mcfg { 1059b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1060b24aad44SBob Moore u8 reserved[8]; 1061b24aad44SBob Moore }; 1062b24aad44SBob Moore 1063b24aad44SBob Moore /* Subtable */ 1064b24aad44SBob Moore 1065b24aad44SBob Moore struct acpi_mcfg_allocation { 1066b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 1067b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 1068b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 1069b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 1070b24aad44SBob Moore u32 reserved; 1071b24aad44SBob Moore }; 1072b24aad44SBob Moore 1073b24aad44SBob Moore /******************************************************************************* 1074b24aad44SBob Moore * 10750e264f0bSBob Moore * MCHI - Management Controller Host Interface Table 10760e264f0bSBob Moore * Version 1 10770e264f0bSBob Moore * 10780e264f0bSBob Moore * Conforms to "Management Component Transport Protocol (MCTP) Host 10790e264f0bSBob Moore * Interface Specification", Revision 1.0.0a, October 13, 2009 10800e264f0bSBob Moore * 10810e264f0bSBob Moore ******************************************************************************/ 10820e264f0bSBob Moore 10830e264f0bSBob Moore struct acpi_table_mchi { 10840e264f0bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 10850e264f0bSBob Moore u8 interface_type; 10860e264f0bSBob Moore u8 protocol; 10870e264f0bSBob Moore u64 protocol_data; 10880e264f0bSBob Moore u8 interrupt_type; 10890e264f0bSBob Moore u8 gpe; 10900e264f0bSBob Moore u8 pci_device_flag; 10910e264f0bSBob Moore u32 global_interrupt; 10920e264f0bSBob Moore struct acpi_generic_address control_register; 10930e264f0bSBob Moore u8 pci_segment; 10940e264f0bSBob Moore u8 pci_bus; 10950e264f0bSBob Moore u8 pci_device; 10960e264f0bSBob Moore u8 pci_function; 10970e264f0bSBob Moore }; 10980e264f0bSBob Moore 10990e264f0bSBob Moore /******************************************************************************* 11000e264f0bSBob Moore * 11015132f2faSBob Moore * MSDM - Microsoft Data Management table 11025132f2faSBob Moore * 11035132f2faSBob Moore * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 11045132f2faSBob Moore * November 29, 2011. Copyright 2011 Microsoft 11055132f2faSBob Moore * 11065132f2faSBob Moore ******************************************************************************/ 11075132f2faSBob Moore 11085132f2faSBob Moore /* Basic MSDM table is only the common ACPI header */ 11095132f2faSBob Moore 11105132f2faSBob Moore struct acpi_table_msdm { 11115132f2faSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 11125132f2faSBob Moore }; 11135132f2faSBob Moore 11145132f2faSBob Moore /******************************************************************************* 11155132f2faSBob Moore * 111698b5c993SLv Zheng * MTMR - MID Timer Table 111798b5c993SLv Zheng * Version 1 111898b5c993SLv Zheng * 111998b5c993SLv Zheng * Conforms to "Simple Firmware Interface Specification", 112098b5c993SLv Zheng * Draft 0.8.2, Oct 19, 2010 112198b5c993SLv Zheng * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 112298b5c993SLv Zheng * 112398b5c993SLv Zheng ******************************************************************************/ 112498b5c993SLv Zheng 112598b5c993SLv Zheng struct acpi_table_mtmr { 112698b5c993SLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 112798b5c993SLv Zheng }; 112898b5c993SLv Zheng 112998b5c993SLv Zheng /* MTMR entry */ 113098b5c993SLv Zheng 113198b5c993SLv Zheng struct acpi_mtmr_entry { 113298b5c993SLv Zheng struct acpi_generic_address physical_address; 113398b5c993SLv Zheng u32 frequency; 113498b5c993SLv Zheng u32 irq; 113598b5c993SLv Zheng }; 113698b5c993SLv Zheng 113798b5c993SLv Zheng /******************************************************************************* 113898b5c993SLv Zheng * 11393bd38469SJames Morse * SDEI - Software Delegated Exception Interface Descriptor Table 11403bd38469SJames Morse * 11413bd38469SJames Morse * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A, 11423bd38469SJames Morse * May 8th, 2017. Copyright 2017 ARM Ltd. 11433bd38469SJames Morse * 11443bd38469SJames Morse ******************************************************************************/ 11453bd38469SJames Morse 11463bd38469SJames Morse struct acpi_table_sdei { 11473bd38469SJames Morse struct acpi_table_header header; /* Common ACPI table header */ 11483bd38469SJames Morse }; 11493bd38469SJames Morse 11503bd38469SJames Morse /******************************************************************************* 11513bd38469SJames Morse * 11525cf4d733SBob Moore * SLIC - Software Licensing Description Table 11535cf4d733SBob Moore * 115464645c3fSBob Moore * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 11555132f2faSBob Moore * November 29, 2011. Copyright 2011 Microsoft 11565cf4d733SBob Moore * 11575cf4d733SBob Moore ******************************************************************************/ 11585cf4d733SBob Moore 11595cf4d733SBob Moore /* Basic SLIC table is only the common ACPI header */ 11605cf4d733SBob Moore 11615cf4d733SBob Moore struct acpi_table_slic { 11625cf4d733SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 11635cf4d733SBob Moore }; 11645cf4d733SBob Moore 11655cf4d733SBob Moore /******************************************************************************* 11665cf4d733SBob Moore * 1167b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 116829a3f38eSBob Moore * Version 2 11696e2d5ebdSBob Moore * 11706e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 117129a3f38eSBob Moore * Version 1.03, August 10, 2015 1172b24aad44SBob Moore * 1173b24aad44SBob Moore ******************************************************************************/ 1174b24aad44SBob Moore 1175b24aad44SBob Moore struct acpi_table_spcr { 1176b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1177b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 1178b24aad44SBob Moore u8 reserved[3]; 1179b24aad44SBob Moore struct acpi_generic_address serial_port; 1180b24aad44SBob Moore u8 interrupt_type; 1181b24aad44SBob Moore u8 pc_interrupt; 1182b24aad44SBob Moore u32 interrupt; 1183b24aad44SBob Moore u8 baud_rate; 1184b24aad44SBob Moore u8 parity; 1185b24aad44SBob Moore u8 stop_bits; 1186b24aad44SBob Moore u8 flow_control; 1187b24aad44SBob Moore u8 terminal_type; 1188b24aad44SBob Moore u8 reserved1; 1189b24aad44SBob Moore u16 pci_device_id; 1190b24aad44SBob Moore u16 pci_vendor_id; 1191b24aad44SBob Moore u8 pci_bus; 1192b24aad44SBob Moore u8 pci_device; 1193b24aad44SBob Moore u8 pci_function; 1194b24aad44SBob Moore u32 pci_flags; 1195b24aad44SBob Moore u8 pci_segment; 1196b24aad44SBob Moore u32 reserved2; 1197b24aad44SBob Moore }; 1198b24aad44SBob Moore 11996e2d5ebdSBob Moore /* Masks for pci_flags field above */ 12006e2d5ebdSBob Moore 12016e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 12026e2d5ebdSBob Moore 120329a3f38eSBob Moore /* Values for Interface Type: See the definition of the DBG2 table */ 120429a3f38eSBob Moore 1205b24aad44SBob Moore /******************************************************************************* 1206b24aad44SBob Moore * 1207b24aad44SBob Moore * SPMI - Server Platform Management Interface table 12086e2d5ebdSBob Moore * Version 5 12096e2d5ebdSBob Moore * 12106e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 12116e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 12126e2d5ebdSBob Moore * June 12, 2009 markup. 1213b24aad44SBob Moore * 1214b24aad44SBob Moore ******************************************************************************/ 1215b24aad44SBob Moore 1216b24aad44SBob Moore struct acpi_table_spmi { 1217b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1218b24aad44SBob Moore u8 interface_type; 12196e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 1220b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 1221b24aad44SBob Moore u8 interrupt_type; 1222b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 1223b24aad44SBob Moore u8 reserved1; 1224b24aad44SBob Moore u8 pci_device_flag; 1225b24aad44SBob Moore u32 interrupt; 1226b24aad44SBob Moore struct acpi_generic_address ipmi_register; 1227b24aad44SBob Moore u8 pci_segment; 1228b24aad44SBob Moore u8 pci_bus; 1229b24aad44SBob Moore u8 pci_device; 1230b24aad44SBob Moore u8 pci_function; 12316e2d5ebdSBob Moore u8 reserved2; 12326e2d5ebdSBob Moore }; 12336e2d5ebdSBob Moore 12346e2d5ebdSBob Moore /* Values for interface_type above */ 12356e2d5ebdSBob Moore 12366e2d5ebdSBob Moore enum acpi_spmi_interface_types { 12376e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 12386e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 12396e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 12406e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 12416e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 12426e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1243b24aad44SBob Moore }; 1244b24aad44SBob Moore 1245b24aad44SBob Moore /******************************************************************************* 1246b24aad44SBob Moore * 1247b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 12489005694eSBob Moore * Version 2 12496e2d5ebdSBob Moore * 12504c189c9dSBob Moore * TCG Hardware Interface Table for TPM 1.2 Clients and Servers 12514c189c9dSBob Moore * 12529005694eSBob Moore * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1253bff7f90bSBob Moore * Version 1.2, Revision 8 1254bff7f90bSBob Moore * February 27, 2017 12559005694eSBob Moore * 12569005694eSBob Moore * NOTE: There are two versions of the table with the same signature -- 125715a61aa1SBob Moore * the client version and the server version. The common platform_class 125815a61aa1SBob Moore * field is used to differentiate the two types of tables. 1259b24aad44SBob Moore * 1260b24aad44SBob Moore ******************************************************************************/ 1261b24aad44SBob Moore 126215a61aa1SBob Moore struct acpi_table_tcpa_hdr { 1263b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 12649005694eSBob Moore u16 platform_class; 126515a61aa1SBob Moore }; 126615a61aa1SBob Moore 126715a61aa1SBob Moore /* 126815a61aa1SBob Moore * Values for platform_class above. 126915a61aa1SBob Moore * This is how the client and server subtables are differentiated 127015a61aa1SBob Moore */ 127115a61aa1SBob Moore #define ACPI_TCPA_CLIENT_TABLE 0 127215a61aa1SBob Moore #define ACPI_TCPA_SERVER_TABLE 1 127315a61aa1SBob Moore 127415a61aa1SBob Moore struct acpi_table_tcpa_client { 12759005694eSBob Moore u32 minimum_log_length; /* Minimum length for the event log area */ 1276b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 1277b24aad44SBob Moore }; 1278b24aad44SBob Moore 12799005694eSBob Moore struct acpi_table_tcpa_server { 12809005694eSBob Moore u16 reserved; 12819005694eSBob Moore u64 minimum_log_length; /* Minimum length for the event log area */ 12829005694eSBob Moore u64 log_address; /* Address of the event log area */ 12839005694eSBob Moore u16 spec_revision; 12849005694eSBob Moore u8 device_flags; 12859005694eSBob Moore u8 interrupt_flags; 12869005694eSBob Moore u8 gpe_number; 12879005694eSBob Moore u8 reserved2[3]; 12889005694eSBob Moore u32 global_interrupt; 12899005694eSBob Moore struct acpi_generic_address address; 12909005694eSBob Moore u32 reserved3; 12919005694eSBob Moore struct acpi_generic_address config_address; 12929005694eSBob Moore u8 group; 12939005694eSBob Moore u8 bus; /* PCI Bus/Segment/Function numbers */ 12949005694eSBob Moore u8 device; 12959005694eSBob Moore u8 function; 12969005694eSBob Moore }; 12979005694eSBob Moore 12989005694eSBob Moore /* Values for device_flags above */ 12999005694eSBob Moore 13009005694eSBob Moore #define ACPI_TCPA_PCI_DEVICE (1) 13019005694eSBob Moore #define ACPI_TCPA_BUS_PNP (1<<1) 13029005694eSBob Moore #define ACPI_TCPA_ADDRESS_VALID (1<<2) 13039005694eSBob Moore 13049005694eSBob Moore /* Values for interrupt_flags above */ 13059005694eSBob Moore 13069005694eSBob Moore #define ACPI_TCPA_INTERRUPT_MODE (1) 13079005694eSBob Moore #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 13089005694eSBob Moore #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 13099005694eSBob Moore #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 13109005694eSBob Moore 13119005694eSBob Moore /******************************************************************************* 13129005694eSBob Moore * 13139005694eSBob Moore * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 13149005694eSBob Moore * Version 4 13159005694eSBob Moore * 13164c189c9dSBob Moore * TCG Hardware Interface Table for TPM 2.0 Clients and Servers 13174c189c9dSBob Moore * 13189005694eSBob Moore * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 1319bff7f90bSBob Moore * Version 1.2, Revision 8 1320bff7f90bSBob Moore * February 27, 2017 13219005694eSBob Moore * 13229005694eSBob Moore ******************************************************************************/ 13239005694eSBob Moore 13249005694eSBob Moore struct acpi_table_tpm2 { 13259005694eSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 13269005694eSBob Moore u16 platform_class; 13279005694eSBob Moore u16 reserved; 13289005694eSBob Moore u64 control_address; 13299005694eSBob Moore u32 start_method; 13309005694eSBob Moore 13319005694eSBob Moore /* Platform-specific data follows */ 13329005694eSBob Moore }; 13339005694eSBob Moore 1334413d4a6dSBob Moore /* Values for start_method above */ 13359005694eSBob Moore 1336413d4a6dSBob Moore #define ACPI_TPM2_NOT_ALLOWED 0 13374c189c9dSBob Moore #define ACPI_TPM2_RESERVED1 1 1338413d4a6dSBob Moore #define ACPI_TPM2_START_METHOD 2 13394c189c9dSBob Moore #define ACPI_TPM2_RESERVED3 3 13404c189c9dSBob Moore #define ACPI_TPM2_RESERVED4 4 13414c189c9dSBob Moore #define ACPI_TPM2_RESERVED5 5 1342413d4a6dSBob Moore #define ACPI_TPM2_MEMORY_MAPPED 6 1343413d4a6dSBob Moore #define ACPI_TPM2_COMMAND_BUFFER 7 1344413d4a6dSBob Moore #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 13454c189c9dSBob Moore #define ACPI_TPM2_RESERVED9 9 13464c189c9dSBob Moore #define ACPI_TPM2_RESERVED10 10 1347bff7f90bSBob Moore #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 13484c189c9dSBob Moore #define ACPI_TPM2_RESERVED 12 1349bff7f90bSBob Moore 13504c189c9dSBob Moore /* Optional trailer appears after any start_method subtables */ 1351bff7f90bSBob Moore 1352bff7f90bSBob Moore struct acpi_tpm2_trailer { 13534c189c9dSBob Moore u8 method_parameters[12]; 1354bff7f90bSBob Moore u32 minimum_log_length; /* Minimum length for the event log area */ 1355bff7f90bSBob Moore u64 log_address; /* Address of the event log area */ 1356bff7f90bSBob Moore }; 1357bff7f90bSBob Moore 1358bff7f90bSBob Moore /* 1359bff7f90bSBob Moore * Subtables (start_method-specific) 1360bff7f90bSBob Moore */ 1361bff7f90bSBob Moore 1362bff7f90bSBob Moore /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 1363bff7f90bSBob Moore 1364bff7f90bSBob Moore struct acpi_tpm2_arm_smc { 1365bff7f90bSBob Moore u32 global_interrupt; 1366bff7f90bSBob Moore u8 interrupt_flags; 1367bff7f90bSBob Moore u8 operation_flags; 1368bff7f90bSBob Moore u16 reserved; 1369bff7f90bSBob Moore u32 function_id; 1370bff7f90bSBob Moore }; 1371bff7f90bSBob Moore 1372bff7f90bSBob Moore /* Values for interrupt_flags above */ 1373bff7f90bSBob Moore 1374bff7f90bSBob Moore #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 1375bff7f90bSBob Moore 1376bff7f90bSBob Moore /* Values for operation_flags above */ 1377bff7f90bSBob Moore 1378bff7f90bSBob Moore #define ACPI_TPM2_IDLE_SUPPORT (1) 1379cf8252caSJiandi An 1380b24aad44SBob Moore /******************************************************************************* 1381b24aad44SBob Moore * 1382b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 13836e2d5ebdSBob Moore * Version 1 13846e2d5ebdSBob Moore * 13856e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 13866e2d5ebdSBob Moore * Version 2.3, May 8, 2009 1387b24aad44SBob Moore * 1388b24aad44SBob Moore ******************************************************************************/ 1389b24aad44SBob Moore 1390b24aad44SBob Moore struct acpi_table_uefi { 1391b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1392b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 1393b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 1394b24aad44SBob Moore }; 1395b24aad44SBob Moore 1396b24aad44SBob Moore /******************************************************************************* 1397b24aad44SBob Moore * 139825c0330aSLv Zheng * VRTC - Virtual Real Time Clock Table 139925c0330aSLv Zheng * Version 1 140025c0330aSLv Zheng * 140125c0330aSLv Zheng * Conforms to "Simple Firmware Interface Specification", 140225c0330aSLv Zheng * Draft 0.8.2, Oct 19, 2010 140325c0330aSLv Zheng * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 140425c0330aSLv Zheng * 140525c0330aSLv Zheng ******************************************************************************/ 140625c0330aSLv Zheng 140725c0330aSLv Zheng struct acpi_table_vrtc { 140825c0330aSLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 140925c0330aSLv Zheng }; 141025c0330aSLv Zheng 141125c0330aSLv Zheng /* VRTC entry */ 141225c0330aSLv Zheng 141325c0330aSLv Zheng struct acpi_vrtc_entry { 141425c0330aSLv Zheng struct acpi_generic_address physical_address; 141525c0330aSLv Zheng u32 irq; 141625c0330aSLv Zheng }; 141725c0330aSLv Zheng 141825c0330aSLv Zheng /******************************************************************************* 141925c0330aSLv Zheng * 14206e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 14216e2d5ebdSBob Moore * Version 1 14226e2d5ebdSBob Moore * 14236e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 14246e2d5ebdSBob Moore * 14256e2d5ebdSBob Moore ******************************************************************************/ 14266e2d5ebdSBob Moore 14276e2d5ebdSBob Moore struct acpi_table_waet { 14286e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 14296e2d5ebdSBob Moore u32 flags; 14306e2d5ebdSBob Moore }; 14316e2d5ebdSBob Moore 14326e2d5ebdSBob Moore /* Masks for Flags field above */ 14336e2d5ebdSBob Moore 14346e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 14356e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 14366e2d5ebdSBob Moore 14376e2d5ebdSBob Moore /******************************************************************************* 14386e2d5ebdSBob Moore * 1439b24aad44SBob Moore * WDAT - Watchdog Action Table 14406e2d5ebdSBob Moore * Version 1 14416e2d5ebdSBob Moore * 14426e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 14436e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 1444b24aad44SBob Moore * 1445b24aad44SBob Moore ******************************************************************************/ 1446b24aad44SBob Moore 1447b24aad44SBob Moore struct acpi_table_wdat { 1448b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1449b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 1450b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 1451b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 1452b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 1453b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 1454b24aad44SBob Moore u8 reserved[3]; 1455b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 1456b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 1457b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 1458b24aad44SBob Moore u8 flags; 1459b24aad44SBob Moore u8 reserved2[3]; 1460b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 1461b24aad44SBob Moore }; 1462b24aad44SBob Moore 14636e2d5ebdSBob Moore /* Masks for Flags field above */ 14646e2d5ebdSBob Moore 14656e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 14666e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 14676e2d5ebdSBob Moore 1468b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 1469b24aad44SBob Moore 1470b24aad44SBob Moore struct acpi_wdat_entry { 14716e2d5ebdSBob Moore u8 action; 14726e2d5ebdSBob Moore u8 instruction; 14736e2d5ebdSBob Moore u16 reserved; 14746e2d5ebdSBob Moore struct acpi_generic_address register_region; 14756e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 14766e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 1477b24aad44SBob Moore }; 1478b24aad44SBob Moore 1479b24aad44SBob Moore /* Values for Action field above */ 1480b24aad44SBob Moore 1481b24aad44SBob Moore enum acpi_wdat_actions { 1482b24aad44SBob Moore ACPI_WDAT_RESET = 1, 1483b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1484b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 1485b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 1486b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 1487b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 1488b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 1489b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 1490b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 1491b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 1492b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 1493b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 1494b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 1495b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 1496b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1497b24aad44SBob Moore }; 1498b24aad44SBob Moore 1499b24aad44SBob Moore /* Values for Instruction field above */ 1500b24aad44SBob Moore 1501b24aad44SBob Moore enum acpi_wdat_instructions { 1502b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 1503b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 1504b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 1505b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 1506b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1507b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1508b24aad44SBob Moore }; 1509b24aad44SBob Moore 1510b24aad44SBob Moore /******************************************************************************* 1511b24aad44SBob Moore * 15129d8b5e7bSBob Moore * WDDT - Watchdog Descriptor Table 15139d8b5e7bSBob Moore * Version 1 15149d8b5e7bSBob Moore * 15159d8b5e7bSBob Moore * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 15169d8b5e7bSBob Moore * Version 001, September 2002 15179d8b5e7bSBob Moore * 15189d8b5e7bSBob Moore ******************************************************************************/ 15199d8b5e7bSBob Moore 15209d8b5e7bSBob Moore struct acpi_table_wddt { 15219d8b5e7bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 15229d8b5e7bSBob Moore u16 spec_version; 15239d8b5e7bSBob Moore u16 table_version; 15249d8b5e7bSBob Moore u16 pci_vendor_id; 15259d8b5e7bSBob Moore struct acpi_generic_address address; 15269d8b5e7bSBob Moore u16 max_count; /* Maximum counter value supported */ 15279d8b5e7bSBob Moore u16 min_count; /* Minimum counter value supported */ 15289d8b5e7bSBob Moore u16 period; 15299d8b5e7bSBob Moore u16 status; 15309d8b5e7bSBob Moore u16 capability; 15319d8b5e7bSBob Moore }; 15329d8b5e7bSBob Moore 15339d8b5e7bSBob Moore /* Flags for Status field above */ 15349d8b5e7bSBob Moore 15359d8b5e7bSBob Moore #define ACPI_WDDT_AVAILABLE (1) 15369d8b5e7bSBob Moore #define ACPI_WDDT_ACTIVE (1<<1) 15379d8b5e7bSBob Moore #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 15389d8b5e7bSBob Moore #define ACPI_WDDT_USER_RESET (1<<11) 15399d8b5e7bSBob Moore #define ACPI_WDDT_WDT_RESET (1<<12) 15409d8b5e7bSBob Moore #define ACPI_WDDT_POWER_FAIL (1<<13) 15419d8b5e7bSBob Moore #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 15429d8b5e7bSBob Moore 15439d8b5e7bSBob Moore /* Flags for Capability field above */ 15449d8b5e7bSBob Moore 15459d8b5e7bSBob Moore #define ACPI_WDDT_AUTO_RESET (1) 15469d8b5e7bSBob Moore #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 15479d8b5e7bSBob Moore 15489d8b5e7bSBob Moore /******************************************************************************* 15499d8b5e7bSBob Moore * 1550b24aad44SBob Moore * WDRT - Watchdog Resource Table 15516e2d5ebdSBob Moore * Version 1 15526e2d5ebdSBob Moore * 15536e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 15546e2d5ebdSBob Moore * Version 1.01, August 28, 2006 1555b24aad44SBob Moore * 1556b24aad44SBob Moore ******************************************************************************/ 1557b24aad44SBob Moore 1558b24aad44SBob Moore struct acpi_table_wdrt { 1559b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 15606e2d5ebdSBob Moore struct acpi_generic_address control_register; 15616e2d5ebdSBob Moore struct acpi_generic_address count_register; 15626e2d5ebdSBob Moore u16 pci_device_id; 15636e2d5ebdSBob Moore u16 pci_vendor_id; 1564b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 1565b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 1566b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 15676e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 15686e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 15696e2d5ebdSBob Moore u8 units; 1570b24aad44SBob Moore }; 1571b24aad44SBob Moore 1572e6ab3b77SLv Zheng /******************************************************************************* 1573e6ab3b77SLv Zheng * 1574e6ab3b77SLv Zheng * WSMT - Windows SMM Security Migrations Table 1575e6ab3b77SLv Zheng * Version 1 1576e6ab3b77SLv Zheng * 1577e6ab3b77SLv Zheng * Conforms to "Windows SMM Security Migrations Table", 1578e6ab3b77SLv Zheng * Version 1.0, April 18, 2016 1579e6ab3b77SLv Zheng * 1580e6ab3b77SLv Zheng ******************************************************************************/ 1581e6ab3b77SLv Zheng 1582e6ab3b77SLv Zheng struct acpi_table_wsmt { 1583e6ab3b77SLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 1584e6ab3b77SLv Zheng u32 protection_flags; 1585e6ab3b77SLv Zheng }; 1586e6ab3b77SLv Zheng 1587e6ab3b77SLv Zheng /* Flags for protection_flags field above */ 1588e6ab3b77SLv Zheng 1589e6ab3b77SLv Zheng #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 1590e6ab3b77SLv Zheng #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 1591e6ab3b77SLv Zheng #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 1592e6ab3b77SLv Zheng 15936e596084SRobert Moore /* Reset to default packing */ 15946e596084SRobert Moore 15956e596084SRobert Moore #pragma pack() 1596b24aad44SBob Moore 1597b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 1598