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 /* 8fbb7a2dcSBob Moore * Copyright (C) 2000 - 2014, 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 * 54b24aad44SBob Moore * The tables in this file are defined by third-party specifications, and are 55b24aad44SBob Moore * 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 */ 726e2d5ebdSBob Moore #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 73b24aad44SBob Moore #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 740e264f0bSBob Moore #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 7598b5c993SLv Zheng #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ 76b24aad44SBob Moore #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 77b24aad44SBob Moore #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 78b24aad44SBob Moore #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 79b24aad44SBob Moore #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 80b24aad44SBob Moore #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 8125c0330aSLv Zheng #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ 826e2d5ebdSBob Moore #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 83b24aad44SBob Moore #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 849d8b5e7bSBob Moore #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 85b24aad44SBob Moore #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 86b24aad44SBob Moore 874461cf54SBob Moore #ifdef ACPI_UNDEFINED_TABLES 884461cf54SBob Moore /* 894461cf54SBob Moore * These tables have been seen in the field, but no definition has been found 904461cf54SBob Moore */ 914461cf54SBob Moore #define ACPI_SIG_ATKG "ATKG" 924461cf54SBob Moore #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 934461cf54SBob Moore #define ACPI_SIG_IEIT "IEIT" 944461cf54SBob Moore #endif 954461cf54SBob Moore 96b24aad44SBob Moore /* 97b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 98b24aad44SBob Moore * the tables are provided by the system BIOS. 99b24aad44SBob Moore */ 100b24aad44SBob Moore #pragma pack(1) 101b24aad44SBob Moore 102b24aad44SBob Moore /* 103be030a57SBob Moore * Note: C bitfields are not used for this reason: 104be030a57SBob Moore * 105be030a57SBob Moore * "Bitfields are great and easy to read, but unfortunately the C language 106be030a57SBob Moore * does not specify the layout of bitfields in memory, which means they are 107be030a57SBob Moore * essentially useless for dealing with packed data in on-disk formats or 108be030a57SBob Moore * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 109be030a57SBob Moore * this decision was a design error in C. Ritchie could have picked an order 110be030a57SBob Moore * and stuck with it." Norman Ramsey. 111be030a57SBob Moore * See http://stackoverflow.com/a/1053662/41661 112b24aad44SBob Moore */ 113b24aad44SBob Moore 114b24aad44SBob Moore /******************************************************************************* 115b24aad44SBob Moore * 116b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 1176e2d5ebdSBob Moore * Revision 0x10 118b24aad44SBob Moore * 119b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 120b24aad44SBob Moore * 121b24aad44SBob Moore ******************************************************************************/ 122b24aad44SBob Moore 123b24aad44SBob Moore struct acpi_table_asf { 124b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 125b24aad44SBob Moore }; 126b24aad44SBob Moore 127b24aad44SBob Moore /* ASF subtable header */ 128b24aad44SBob Moore 129b24aad44SBob Moore struct acpi_asf_header { 130b24aad44SBob Moore u8 type; 131b24aad44SBob Moore u8 reserved; 132b24aad44SBob Moore u16 length; 133b24aad44SBob Moore }; 134b24aad44SBob Moore 135b24aad44SBob Moore /* Values for Type field above */ 136b24aad44SBob Moore 137b24aad44SBob Moore enum acpi_asf_type { 138b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 139b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 140b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 141b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 142b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 143b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 144b24aad44SBob Moore }; 145b24aad44SBob Moore 146b24aad44SBob Moore /* 147b24aad44SBob Moore * ASF subtables 148b24aad44SBob Moore */ 149b24aad44SBob Moore 150b24aad44SBob Moore /* 0: ASF Information */ 151b24aad44SBob Moore 152b24aad44SBob Moore struct acpi_asf_info { 153b24aad44SBob Moore struct acpi_asf_header header; 154b24aad44SBob Moore u8 min_reset_value; 155b24aad44SBob Moore u8 min_poll_interval; 156b24aad44SBob Moore u16 system_id; 157b24aad44SBob Moore u32 mfg_id; 158b24aad44SBob Moore u8 flags; 159b24aad44SBob Moore u8 reserved2[3]; 160b24aad44SBob Moore }; 161b24aad44SBob Moore 1626e2d5ebdSBob Moore /* Masks for Flags field above */ 1636e2d5ebdSBob Moore 1646e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1656e2d5ebdSBob Moore 166b24aad44SBob Moore /* 1: ASF Alerts */ 167b24aad44SBob Moore 168b24aad44SBob Moore struct acpi_asf_alert { 169b24aad44SBob Moore struct acpi_asf_header header; 170b24aad44SBob Moore u8 assert_mask; 171b24aad44SBob Moore u8 deassert_mask; 172b24aad44SBob Moore u8 alerts; 173b24aad44SBob Moore u8 data_length; 174b24aad44SBob Moore }; 175b24aad44SBob Moore 176b24aad44SBob Moore struct acpi_asf_alert_data { 177b24aad44SBob Moore u8 address; 178b24aad44SBob Moore u8 command; 179b24aad44SBob Moore u8 mask; 180b24aad44SBob Moore u8 value; 181b24aad44SBob Moore u8 sensor_type; 182b24aad44SBob Moore u8 type; 183b24aad44SBob Moore u8 offset; 184b24aad44SBob Moore u8 source_type; 185b24aad44SBob Moore u8 severity; 186b24aad44SBob Moore u8 sensor_number; 187b24aad44SBob Moore u8 entity; 188b24aad44SBob Moore u8 instance; 189b24aad44SBob Moore }; 190b24aad44SBob Moore 191b24aad44SBob Moore /* 2: ASF Remote Control */ 192b24aad44SBob Moore 193b24aad44SBob Moore struct acpi_asf_remote { 194b24aad44SBob Moore struct acpi_asf_header header; 195b24aad44SBob Moore u8 controls; 196b24aad44SBob Moore u8 data_length; 197b24aad44SBob Moore u16 reserved2; 198b24aad44SBob Moore }; 199b24aad44SBob Moore 200b24aad44SBob Moore struct acpi_asf_control_data { 201b24aad44SBob Moore u8 function; 202b24aad44SBob Moore u8 address; 203b24aad44SBob Moore u8 command; 204b24aad44SBob Moore u8 value; 205b24aad44SBob Moore }; 206b24aad44SBob Moore 207b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 208b24aad44SBob Moore 209b24aad44SBob Moore struct acpi_asf_rmcp { 210b24aad44SBob Moore struct acpi_asf_header header; 211b24aad44SBob Moore u8 capabilities[7]; 212b24aad44SBob Moore u8 completion_code; 213b24aad44SBob Moore u32 enterprise_id; 214b24aad44SBob Moore u8 command; 215b24aad44SBob Moore u16 parameter; 216b24aad44SBob Moore u16 boot_options; 217b24aad44SBob Moore u16 oem_parameters; 218b24aad44SBob Moore }; 219b24aad44SBob Moore 220b24aad44SBob Moore /* 4: ASF Address */ 221b24aad44SBob Moore 222b24aad44SBob Moore struct acpi_asf_address { 223b24aad44SBob Moore struct acpi_asf_header header; 224b24aad44SBob Moore u8 eprom_address; 225b24aad44SBob Moore u8 devices; 226b24aad44SBob Moore }; 227b24aad44SBob Moore 228b24aad44SBob Moore /******************************************************************************* 229b24aad44SBob Moore * 230b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2316e2d5ebdSBob Moore * Version 1 2326e2d5ebdSBob Moore * 2336e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 234b24aad44SBob Moore * 235b24aad44SBob Moore ******************************************************************************/ 236b24aad44SBob Moore 237b24aad44SBob Moore struct acpi_table_boot { 238b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 239b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 240b24aad44SBob Moore u8 reserved[3]; 241b24aad44SBob Moore }; 242b24aad44SBob Moore 243b24aad44SBob Moore /******************************************************************************* 244b24aad44SBob Moore * 2454e2f9c27SBob Moore * CSRT - Core System Resource Table 2464e2f9c27SBob Moore * Version 0 2474e2f9c27SBob Moore * 2484e2f9c27SBob Moore * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 2494e2f9c27SBob Moore * 2504e2f9c27SBob Moore ******************************************************************************/ 2514e2f9c27SBob Moore 2524e2f9c27SBob Moore struct acpi_table_csrt { 2534e2f9c27SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 2544e2f9c27SBob Moore }; 2554e2f9c27SBob Moore 2564e2f9c27SBob Moore /* Resource Group subtable */ 2574e2f9c27SBob Moore 2584e2f9c27SBob Moore struct acpi_csrt_group { 2594e2f9c27SBob Moore u32 length; 2604e2f9c27SBob Moore u32 vendor_id; 2614e2f9c27SBob Moore u32 subvendor_id; 2624e2f9c27SBob Moore u16 device_id; 2634e2f9c27SBob Moore u16 subdevice_id; 2644e2f9c27SBob Moore u16 revision; 2654e2f9c27SBob Moore u16 reserved; 266e6750be9SBob Moore u32 shared_info_length; 2674e2f9c27SBob Moore 268e6750be9SBob Moore /* Shared data immediately follows (Length = shared_info_length) */ 269e6750be9SBob Moore }; 270e6750be9SBob Moore 271e6750be9SBob Moore /* Shared Info subtable */ 272e6750be9SBob Moore 273e6750be9SBob Moore struct acpi_csrt_shared_info { 274e6750be9SBob Moore u16 major_version; 275e6750be9SBob Moore u16 minor_version; 276e6750be9SBob Moore u32 mmio_base_low; 277e6750be9SBob Moore u32 mmio_base_high; 278e6750be9SBob Moore u32 gsi_interrupt; 279e6750be9SBob Moore u8 interrupt_polarity; 280e6750be9SBob Moore u8 interrupt_mode; 281e6750be9SBob Moore u8 num_channels; 282e6750be9SBob Moore u8 dma_address_width; 283e6750be9SBob Moore u16 base_request_line; 284e6750be9SBob Moore u16 num_handshake_signals; 285e6750be9SBob Moore u32 max_block_size; 286e6750be9SBob Moore 287e6750be9SBob Moore /* Resource descriptors immediately follow (Length = Group length - shared_info_length) */ 2884e2f9c27SBob Moore }; 2894e2f9c27SBob Moore 2904e2f9c27SBob Moore /* Resource Descriptor subtable */ 2914e2f9c27SBob Moore 2924e2f9c27SBob Moore struct acpi_csrt_descriptor { 2934e2f9c27SBob Moore u32 length; 2944e2f9c27SBob Moore u16 type; 2954e2f9c27SBob Moore u16 subtype; 2964e2f9c27SBob Moore u32 uid; 2974e2f9c27SBob Moore 2984e2f9c27SBob Moore /* Resource-specific information immediately follows */ 2994e2f9c27SBob Moore }; 3004e2f9c27SBob Moore 3014e2f9c27SBob Moore /* Resource Types */ 3024e2f9c27SBob Moore 3034e2f9c27SBob Moore #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 3044e2f9c27SBob Moore #define ACPI_CSRT_TYPE_TIMER 0x0002 3054e2f9c27SBob Moore #define ACPI_CSRT_TYPE_DMA 0x0003 3064e2f9c27SBob Moore 3074e2f9c27SBob Moore /* Resource Subtypes */ 3084e2f9c27SBob Moore 3094e2f9c27SBob Moore #define ACPI_CSRT_XRUPT_LINE 0x0000 3104e2f9c27SBob Moore #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 3114e2f9c27SBob Moore #define ACPI_CSRT_TIMER 0x0000 3124e2f9c27SBob Moore #define ACPI_CSRT_DMA_CHANNEL 0x0000 3134e2f9c27SBob Moore #define ACPI_CSRT_DMA_CONTROLLER 0x0001 3144e2f9c27SBob Moore 3154e2f9c27SBob Moore /******************************************************************************* 3164e2f9c27SBob Moore * 3174e2f9c27SBob Moore * DBG2 - Debug Port Table 2 3184e2f9c27SBob Moore * Version 0 (Both main table and subtables) 3194e2f9c27SBob Moore * 3204e2f9c27SBob Moore * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. 3214e2f9c27SBob Moore * 3224e2f9c27SBob Moore ******************************************************************************/ 3234e2f9c27SBob Moore 3244e2f9c27SBob Moore struct acpi_table_dbg2 { 3254e2f9c27SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 3264e2f9c27SBob Moore u32 info_offset; 3274e2f9c27SBob Moore u32 info_count; 3284e2f9c27SBob Moore }; 3294e2f9c27SBob Moore 33077455222SBob Moore struct acpi_dbg2_header { 33177455222SBob Moore u32 info_offset; 33277455222SBob Moore u32 info_count; 33377455222SBob Moore }; 33477455222SBob Moore 3354e2f9c27SBob Moore /* Debug Device Information Subtable */ 3364e2f9c27SBob Moore 3374e2f9c27SBob Moore struct acpi_dbg2_device { 3384e2f9c27SBob Moore u8 revision; 3394e2f9c27SBob Moore u16 length; 3404e2f9c27SBob Moore u8 register_count; /* Number of base_address registers */ 3414e2f9c27SBob Moore u16 namepath_length; 3424e2f9c27SBob Moore u16 namepath_offset; 3434e2f9c27SBob Moore u16 oem_data_length; 3444e2f9c27SBob Moore u16 oem_data_offset; 3454e2f9c27SBob Moore u16 port_type; 3464e2f9c27SBob Moore u16 port_subtype; 3474e2f9c27SBob Moore u16 reserved; 3484e2f9c27SBob Moore u16 base_address_offset; 3494e2f9c27SBob Moore u16 address_size_offset; 3504e2f9c27SBob Moore /* 3514e2f9c27SBob Moore * Data that follows: 3524e2f9c27SBob Moore * base_address (required) - Each in 12-byte Generic Address Structure format. 3534e2f9c27SBob Moore * address_size (required) - Array of u32 sizes corresponding to each base_address register. 3544e2f9c27SBob Moore * Namepath (required) - Null terminated string. Single dot if not supported. 3554e2f9c27SBob Moore * oem_data (optional) - Length is oem_data_length. 3564e2f9c27SBob Moore */ 3574e2f9c27SBob Moore }; 3584e2f9c27SBob Moore 3594e2f9c27SBob Moore /* Types for port_type field above */ 3604e2f9c27SBob Moore 3614e2f9c27SBob Moore #define ACPI_DBG2_SERIAL_PORT 0x8000 3624e2f9c27SBob Moore #define ACPI_DBG2_1394_PORT 0x8001 3634e2f9c27SBob Moore #define ACPI_DBG2_USB_PORT 0x8002 3644e2f9c27SBob Moore #define ACPI_DBG2_NET_PORT 0x8003 3654e2f9c27SBob Moore 3664e2f9c27SBob Moore /* Subtypes for port_subtype field above */ 3674e2f9c27SBob Moore 3684e2f9c27SBob Moore #define ACPI_DBG2_16550_COMPATIBLE 0x0000 3694e2f9c27SBob Moore #define ACPI_DBG2_16550_SUBSET 0x0001 3704e2f9c27SBob Moore 3714e2f9c27SBob Moore #define ACPI_DBG2_1394_STANDARD 0x0000 3724e2f9c27SBob Moore 3734e2f9c27SBob Moore #define ACPI_DBG2_USB_XHCI 0x0000 3744e2f9c27SBob Moore #define ACPI_DBG2_USB_EHCI 0x0001 3754e2f9c27SBob Moore 3764e2f9c27SBob Moore /******************************************************************************* 3774e2f9c27SBob Moore * 378b24aad44SBob Moore * DBGP - Debug Port table 3796e2d5ebdSBob Moore * Version 1 3806e2d5ebdSBob Moore * 3816e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 382b24aad44SBob Moore * 383b24aad44SBob Moore ******************************************************************************/ 384b24aad44SBob Moore 385b24aad44SBob Moore struct acpi_table_dbgp { 386b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 387b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 388b24aad44SBob Moore u8 reserved[3]; 389b24aad44SBob Moore struct acpi_generic_address debug_port; 390b24aad44SBob Moore }; 391b24aad44SBob Moore 392b24aad44SBob Moore /******************************************************************************* 393b24aad44SBob Moore * 394b24aad44SBob Moore * DMAR - DMA Remapping table 3956e2d5ebdSBob Moore * Version 1 3966e2d5ebdSBob Moore * 3976e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 3986e2d5ebdSBob Moore * Version 1.2, Sept. 2008 399b24aad44SBob Moore * 400b24aad44SBob Moore ******************************************************************************/ 401b24aad44SBob Moore 402b24aad44SBob Moore struct acpi_table_dmar { 403b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 404b24aad44SBob Moore u8 width; /* Host Address Width */ 405b24aad44SBob Moore u8 flags; 406b24aad44SBob Moore u8 reserved[10]; 407b24aad44SBob Moore }; 408b24aad44SBob Moore 4096e2d5ebdSBob Moore /* Masks for Flags field above */ 410b24aad44SBob Moore 411b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 412b24aad44SBob Moore 413b24aad44SBob Moore /* DMAR subtable header */ 414b24aad44SBob Moore 415b24aad44SBob Moore struct acpi_dmar_header { 416b24aad44SBob Moore u16 type; 417b24aad44SBob Moore u16 length; 418b24aad44SBob Moore }; 419b24aad44SBob Moore 420b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 421b24aad44SBob Moore 422b24aad44SBob Moore enum acpi_dmar_type { 423b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 424b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 425b24aad44SBob Moore ACPI_DMAR_TYPE_ATSR = 2, 4266e2d5ebdSBob Moore ACPI_DMAR_HARDWARE_AFFINITY = 3, 4276e2d5ebdSBob Moore ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 428b24aad44SBob Moore }; 429b24aad44SBob Moore 4306e2d5ebdSBob Moore /* DMAR Device Scope structure */ 4316e2d5ebdSBob Moore 432b24aad44SBob Moore struct acpi_dmar_device_scope { 433b24aad44SBob Moore u8 entry_type; 434b24aad44SBob Moore u8 length; 435b24aad44SBob Moore u16 reserved; 436b24aad44SBob Moore u8 enumeration_id; 437b24aad44SBob Moore u8 bus; 438b24aad44SBob Moore }; 439b24aad44SBob Moore 440b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */ 441b24aad44SBob Moore 442b24aad44SBob Moore enum acpi_dmar_scope_type { 443b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 444b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 445b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 446b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 447b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 448b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 449b24aad44SBob Moore }; 450b24aad44SBob Moore 451b24aad44SBob Moore struct acpi_dmar_pci_path { 452fa5f508fSLv Zheng u8 device; 453fa5f508fSLv Zheng u8 function; 454b24aad44SBob Moore }; 455b24aad44SBob Moore 456b24aad44SBob Moore /* 457b24aad44SBob Moore * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 458b24aad44SBob Moore */ 459b24aad44SBob Moore 460b24aad44SBob Moore /* 0: Hardware Unit Definition */ 461b24aad44SBob Moore 462b24aad44SBob Moore struct acpi_dmar_hardware_unit { 463b24aad44SBob Moore struct acpi_dmar_header header; 464b24aad44SBob Moore u8 flags; 465b24aad44SBob Moore u8 reserved; 466b24aad44SBob Moore u16 segment; 467b24aad44SBob Moore u64 address; /* Register Base Address */ 468b24aad44SBob Moore }; 469b24aad44SBob Moore 4706e2d5ebdSBob Moore /* Masks for Flags field above */ 471b24aad44SBob Moore 472b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 473b24aad44SBob Moore 474b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 475b24aad44SBob Moore 476b24aad44SBob Moore struct acpi_dmar_reserved_memory { 477b24aad44SBob Moore struct acpi_dmar_header header; 478b24aad44SBob Moore u16 reserved; 479b24aad44SBob Moore u16 segment; 480ba494beeSBob Moore u64 base_address; /* 4K aligned base address */ 481ba494beeSBob Moore u64 end_address; /* 4K aligned limit address */ 482b24aad44SBob Moore }; 483b24aad44SBob Moore 4846e2d5ebdSBob Moore /* Masks for Flags field above */ 485b24aad44SBob Moore 486b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 487b24aad44SBob Moore 488b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 489b24aad44SBob Moore 490b24aad44SBob Moore struct acpi_dmar_atsr { 491b24aad44SBob Moore struct acpi_dmar_header header; 492b24aad44SBob Moore u8 flags; 493b24aad44SBob Moore u8 reserved; 494b24aad44SBob Moore u16 segment; 495b24aad44SBob Moore }; 496b24aad44SBob Moore 4976e2d5ebdSBob Moore /* Masks for Flags field above */ 498b24aad44SBob Moore 499b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 500b24aad44SBob Moore 5016e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 5026e2d5ebdSBob Moore 5036e2d5ebdSBob Moore struct acpi_dmar_rhsa { 5046e2d5ebdSBob Moore struct acpi_dmar_header header; 5056e2d5ebdSBob Moore u32 reserved; 5066e2d5ebdSBob Moore u64 base_address; 5076e2d5ebdSBob Moore u32 proximity_domain; 5086e2d5ebdSBob Moore }; 5096e2d5ebdSBob Moore 510b24aad44SBob Moore /******************************************************************************* 511b24aad44SBob Moore * 512b24aad44SBob Moore * HPET - High Precision Event Timer table 5136e2d5ebdSBob Moore * Version 1 5146e2d5ebdSBob Moore * 5156e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 5166e2d5ebdSBob Moore * Version 1.0a, October 2004 517b24aad44SBob Moore * 518b24aad44SBob Moore ******************************************************************************/ 519b24aad44SBob Moore 520b24aad44SBob Moore struct acpi_table_hpet { 521b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 522b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 523b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 524b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 525b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 526b24aad44SBob Moore u8 flags; 527b24aad44SBob Moore }; 528b24aad44SBob Moore 5296e2d5ebdSBob Moore /* Masks for Flags field above */ 530b24aad44SBob Moore 5316e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 532b24aad44SBob Moore 5336e2d5ebdSBob Moore /* Values for Page Protect flags */ 5346e2d5ebdSBob Moore 5356e2d5ebdSBob Moore enum acpi_hpet_page_protect { 5366e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 5376e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 5386e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 5396e2d5ebdSBob Moore }; 540b24aad44SBob Moore 541b24aad44SBob Moore /******************************************************************************* 542b24aad44SBob Moore * 543b24aad44SBob Moore * IBFT - Boot Firmware Table 5446e2d5ebdSBob Moore * Version 1 5456e2d5ebdSBob Moore * 5466e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 5476e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 5486e2d5ebdSBob Moore * 5496e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 5506e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 551b24aad44SBob Moore * 552b24aad44SBob Moore ******************************************************************************/ 553b24aad44SBob Moore 554b24aad44SBob Moore struct acpi_table_ibft { 555b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 556b24aad44SBob Moore u8 reserved[12]; 557b24aad44SBob Moore }; 558b24aad44SBob Moore 559b24aad44SBob Moore /* IBFT common subtable header */ 560b24aad44SBob Moore 561b24aad44SBob Moore struct acpi_ibft_header { 562b24aad44SBob Moore u8 type; 563b24aad44SBob Moore u8 version; 564b24aad44SBob Moore u16 length; 565b24aad44SBob Moore u8 index; 566b24aad44SBob Moore u8 flags; 567b24aad44SBob Moore }; 568b24aad44SBob Moore 569b24aad44SBob Moore /* Values for Type field above */ 570b24aad44SBob Moore 571b24aad44SBob Moore enum acpi_ibft_type { 572b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 573b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 574b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 575b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 576b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 577b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 578b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 579b24aad44SBob Moore }; 580b24aad44SBob Moore 581b24aad44SBob Moore /* IBFT subtables */ 582b24aad44SBob Moore 583b24aad44SBob Moore struct acpi_ibft_control { 584b24aad44SBob Moore struct acpi_ibft_header header; 585b24aad44SBob Moore u16 extensions; 586b24aad44SBob Moore u16 initiator_offset; 587b24aad44SBob Moore u16 nic0_offset; 588b24aad44SBob Moore u16 target0_offset; 589b24aad44SBob Moore u16 nic1_offset; 590b24aad44SBob Moore u16 target1_offset; 591b24aad44SBob Moore }; 592b24aad44SBob Moore 593b24aad44SBob Moore struct acpi_ibft_initiator { 594b24aad44SBob Moore struct acpi_ibft_header header; 595b24aad44SBob Moore u8 sns_server[16]; 596b24aad44SBob Moore u8 slp_server[16]; 597b24aad44SBob Moore u8 primary_server[16]; 598b24aad44SBob Moore u8 secondary_server[16]; 599b24aad44SBob Moore u16 name_length; 600b24aad44SBob Moore u16 name_offset; 601b24aad44SBob Moore }; 602b24aad44SBob Moore 603b24aad44SBob Moore struct acpi_ibft_nic { 604b24aad44SBob Moore struct acpi_ibft_header header; 605b24aad44SBob Moore u8 ip_address[16]; 606b24aad44SBob Moore u8 subnet_mask_prefix; 607b24aad44SBob Moore u8 origin; 608b24aad44SBob Moore u8 gateway[16]; 609b24aad44SBob Moore u8 primary_dns[16]; 610b24aad44SBob Moore u8 secondary_dns[16]; 611b24aad44SBob Moore u8 dhcp[16]; 612b24aad44SBob Moore u16 vlan; 613b24aad44SBob Moore u8 mac_address[6]; 614b24aad44SBob Moore u16 pci_address; 615b24aad44SBob Moore u16 name_length; 616b24aad44SBob Moore u16 name_offset; 617b24aad44SBob Moore }; 618b24aad44SBob Moore 619b24aad44SBob Moore struct acpi_ibft_target { 620b24aad44SBob Moore struct acpi_ibft_header header; 621b24aad44SBob Moore u8 target_ip_address[16]; 622b24aad44SBob Moore u16 target_ip_socket; 623b24aad44SBob Moore u8 target_boot_lun[8]; 624b24aad44SBob Moore u8 chap_type; 625b24aad44SBob Moore u8 nic_association; 626b24aad44SBob Moore u16 target_name_length; 627b24aad44SBob Moore u16 target_name_offset; 628b24aad44SBob Moore u16 chap_name_length; 629b24aad44SBob Moore u16 chap_name_offset; 630b24aad44SBob Moore u16 chap_secret_length; 631b24aad44SBob Moore u16 chap_secret_offset; 632b24aad44SBob Moore u16 reverse_chap_name_length; 633b24aad44SBob Moore u16 reverse_chap_name_offset; 634b24aad44SBob Moore u16 reverse_chap_secret_length; 635b24aad44SBob Moore u16 reverse_chap_secret_offset; 636b24aad44SBob Moore }; 637b24aad44SBob Moore 638b24aad44SBob Moore /******************************************************************************* 639b24aad44SBob Moore * 6406e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 6416e2d5ebdSBob Moore * Version 1 6426e2d5ebdSBob Moore * 6436e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 6446e2d5ebdSBob Moore * Revision 1.26, February 2009. 6456e2d5ebdSBob Moore * 6466e2d5ebdSBob Moore ******************************************************************************/ 6476e2d5ebdSBob Moore 6486e2d5ebdSBob Moore struct acpi_table_ivrs { 6496e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 6506e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 6516e2d5ebdSBob Moore u64 reserved; 6526e2d5ebdSBob Moore }; 6536e2d5ebdSBob Moore 6546e2d5ebdSBob Moore /* Values for Info field above */ 6556e2d5ebdSBob Moore 6566e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 6576e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 6586e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 6596e2d5ebdSBob Moore 6606e2d5ebdSBob Moore /* IVRS subtable header */ 6616e2d5ebdSBob Moore 6626e2d5ebdSBob Moore struct acpi_ivrs_header { 6636e2d5ebdSBob Moore u8 type; /* Subtable type */ 6646e2d5ebdSBob Moore u8 flags; 6656e2d5ebdSBob Moore u16 length; /* Subtable length */ 6666e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 6676e2d5ebdSBob Moore }; 6686e2d5ebdSBob Moore 6696e2d5ebdSBob Moore /* Values for subtable Type above */ 6706e2d5ebdSBob Moore 6716e2d5ebdSBob Moore enum acpi_ivrs_type { 6726e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 6736e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 6746e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 6756e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 6766e2d5ebdSBob Moore }; 6776e2d5ebdSBob Moore 6786e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 6796e2d5ebdSBob Moore 6806e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 6816e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 6826e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 6836e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 6846e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 6856e2d5ebdSBob Moore 6866e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 6876e2d5ebdSBob Moore 6886e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 6896e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 6906e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 6916e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 6926e2d5ebdSBob Moore 6936e2d5ebdSBob Moore /* 6946e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 6956e2d5ebdSBob Moore */ 6966e2d5ebdSBob Moore 6976e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 6986e2d5ebdSBob Moore 6996e2d5ebdSBob Moore struct acpi_ivrs_hardware { 7006e2d5ebdSBob Moore struct acpi_ivrs_header header; 7016e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 7026e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 7036e2d5ebdSBob Moore u16 pci_segment_group; 7046e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 7056e2d5ebdSBob Moore u32 reserved; 7066e2d5ebdSBob Moore }; 7076e2d5ebdSBob Moore 7086e2d5ebdSBob Moore /* Masks for Info field above */ 7096e2d5ebdSBob Moore 7106e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 711ba494beeSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_ID */ 7126e2d5ebdSBob Moore 7136e2d5ebdSBob Moore /* 7146e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 7156e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 7166e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 7176e2d5ebdSBob Moore * are reserved for future use but not defined. 7186e2d5ebdSBob Moore */ 7196e2d5ebdSBob Moore struct acpi_ivrs_de_header { 7206e2d5ebdSBob Moore u8 type; 7216e2d5ebdSBob Moore u16 id; 7226e2d5ebdSBob Moore u8 data_setting; 7236e2d5ebdSBob Moore }; 7246e2d5ebdSBob Moore 7256e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 7266e2d5ebdSBob Moore 7276e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 7286e2d5ebdSBob Moore 7296e2d5ebdSBob Moore /* Values for device entry Type field above */ 7306e2d5ebdSBob Moore 7316e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 7326e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 7336e2d5ebdSBob Moore 7346e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 7356e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 7366e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 7376e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 7386e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 7396e2d5ebdSBob Moore 7406e2d5ebdSBob Moore /* 8-byte device entries */ 7416e2d5ebdSBob Moore 7426e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 7436e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 7446e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 7456e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 7466e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 7476e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 7486e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 7496e2d5ebdSBob Moore }; 7506e2d5ebdSBob Moore 7516e2d5ebdSBob Moore /* Values for Data field above */ 7526e2d5ebdSBob Moore 7536e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 7546e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 7556e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 7566e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 7576e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 7586e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 7596e2d5ebdSBob Moore 7606e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 7616e2d5ebdSBob Moore 7626e2d5ebdSBob Moore struct acpi_ivrs_device4 { 7636e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 7646e2d5ebdSBob Moore }; 7656e2d5ebdSBob Moore 7666e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 7676e2d5ebdSBob Moore 7686e2d5ebdSBob Moore struct acpi_ivrs_device8a { 7696e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 7706e2d5ebdSBob Moore u8 reserved1; 7716e2d5ebdSBob Moore u16 used_id; 7726e2d5ebdSBob Moore u8 reserved2; 7736e2d5ebdSBob Moore }; 7746e2d5ebdSBob Moore 7756e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 7766e2d5ebdSBob Moore 7776e2d5ebdSBob Moore struct acpi_ivrs_device8b { 7786e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 7796e2d5ebdSBob Moore u32 extended_data; 7806e2d5ebdSBob Moore }; 7816e2d5ebdSBob Moore 7826e2d5ebdSBob Moore /* Values for extended_data above */ 7836e2d5ebdSBob Moore 7846e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 7856e2d5ebdSBob Moore 7866e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 7876e2d5ebdSBob Moore 7886e2d5ebdSBob Moore struct acpi_ivrs_device8c { 7896e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 7906e2d5ebdSBob Moore u8 handle; 7916e2d5ebdSBob Moore u16 used_id; 7926e2d5ebdSBob Moore u8 variety; 7936e2d5ebdSBob Moore }; 7946e2d5ebdSBob Moore 7956e2d5ebdSBob Moore /* Values for Variety field above */ 7966e2d5ebdSBob Moore 7976e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 7986e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 7996e2d5ebdSBob Moore 8006e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 8016e2d5ebdSBob Moore 8026e2d5ebdSBob Moore struct acpi_ivrs_memory { 8036e2d5ebdSBob Moore struct acpi_ivrs_header header; 8046e2d5ebdSBob Moore u16 aux_data; 8056e2d5ebdSBob Moore u64 reserved; 8066e2d5ebdSBob Moore u64 start_address; 8076e2d5ebdSBob Moore u64 memory_length; 8086e2d5ebdSBob Moore }; 8096e2d5ebdSBob Moore 8106e2d5ebdSBob Moore /******************************************************************************* 8116e2d5ebdSBob Moore * 812b24aad44SBob Moore * MCFG - PCI Memory Mapped Configuration table and sub-table 8136e2d5ebdSBob Moore * Version 1 8146e2d5ebdSBob Moore * 8156e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 816b24aad44SBob Moore * 817b24aad44SBob Moore ******************************************************************************/ 818b24aad44SBob Moore 819b24aad44SBob Moore struct acpi_table_mcfg { 820b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 821b24aad44SBob Moore u8 reserved[8]; 822b24aad44SBob Moore }; 823b24aad44SBob Moore 824b24aad44SBob Moore /* Subtable */ 825b24aad44SBob Moore 826b24aad44SBob Moore struct acpi_mcfg_allocation { 827b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 828b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 829b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 830b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 831b24aad44SBob Moore u32 reserved; 832b24aad44SBob Moore }; 833b24aad44SBob Moore 834b24aad44SBob Moore /******************************************************************************* 835b24aad44SBob Moore * 8360e264f0bSBob Moore * MCHI - Management Controller Host Interface Table 8370e264f0bSBob Moore * Version 1 8380e264f0bSBob Moore * 8390e264f0bSBob Moore * Conforms to "Management Component Transport Protocol (MCTP) Host 8400e264f0bSBob Moore * Interface Specification", Revision 1.0.0a, October 13, 2009 8410e264f0bSBob Moore * 8420e264f0bSBob Moore ******************************************************************************/ 8430e264f0bSBob Moore 8440e264f0bSBob Moore struct acpi_table_mchi { 8450e264f0bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8460e264f0bSBob Moore u8 interface_type; 8470e264f0bSBob Moore u8 protocol; 8480e264f0bSBob Moore u64 protocol_data; 8490e264f0bSBob Moore u8 interrupt_type; 8500e264f0bSBob Moore u8 gpe; 8510e264f0bSBob Moore u8 pci_device_flag; 8520e264f0bSBob Moore u32 global_interrupt; 8530e264f0bSBob Moore struct acpi_generic_address control_register; 8540e264f0bSBob Moore u8 pci_segment; 8550e264f0bSBob Moore u8 pci_bus; 8560e264f0bSBob Moore u8 pci_device; 8570e264f0bSBob Moore u8 pci_function; 8580e264f0bSBob Moore }; 8590e264f0bSBob Moore 8600e264f0bSBob Moore /******************************************************************************* 8610e264f0bSBob Moore * 86298b5c993SLv Zheng * MTMR - MID Timer Table 86398b5c993SLv Zheng * Version 1 86498b5c993SLv Zheng * 86598b5c993SLv Zheng * Conforms to "Simple Firmware Interface Specification", 86698b5c993SLv Zheng * Draft 0.8.2, Oct 19, 2010 86798b5c993SLv Zheng * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. 86898b5c993SLv Zheng * 86998b5c993SLv Zheng ******************************************************************************/ 87098b5c993SLv Zheng 87198b5c993SLv Zheng struct acpi_table_mtmr { 87298b5c993SLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 87398b5c993SLv Zheng }; 87498b5c993SLv Zheng 87598b5c993SLv Zheng /* MTMR entry */ 87698b5c993SLv Zheng 87798b5c993SLv Zheng struct acpi_mtmr_entry { 87898b5c993SLv Zheng struct acpi_generic_address physical_address; 87998b5c993SLv Zheng u32 frequency; 88098b5c993SLv Zheng u32 irq; 88198b5c993SLv Zheng }; 88298b5c993SLv Zheng 88398b5c993SLv Zheng /******************************************************************************* 88498b5c993SLv Zheng * 8855cf4d733SBob Moore * SLIC - Software Licensing Description Table 8865cf4d733SBob Moore * Version 1 8875cf4d733SBob Moore * 8885cf4d733SBob Moore * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems", 8895cf4d733SBob Moore * Copyright 2006 8905cf4d733SBob Moore * 8915cf4d733SBob Moore ******************************************************************************/ 8925cf4d733SBob Moore 8935cf4d733SBob Moore /* Basic SLIC table is only the common ACPI header */ 8945cf4d733SBob Moore 8955cf4d733SBob Moore struct acpi_table_slic { 8965cf4d733SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8975cf4d733SBob Moore }; 8985cf4d733SBob Moore 8995cf4d733SBob Moore /* Common SLIC subtable header */ 9005cf4d733SBob Moore 9015cf4d733SBob Moore struct acpi_slic_header { 9025cf4d733SBob Moore u32 type; 9035cf4d733SBob Moore u32 length; 9045cf4d733SBob Moore }; 9055cf4d733SBob Moore 9065cf4d733SBob Moore /* Values for Type field above */ 9075cf4d733SBob Moore 9085cf4d733SBob Moore enum acpi_slic_type { 9095cf4d733SBob Moore ACPI_SLIC_TYPE_PUBLIC_KEY = 0, 9105cf4d733SBob Moore ACPI_SLIC_TYPE_WINDOWS_MARKER = 1, 9115cf4d733SBob Moore ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 9125cf4d733SBob Moore }; 9135cf4d733SBob Moore 9145cf4d733SBob Moore /* 9155cf4d733SBob Moore * SLIC Sub-tables, correspond to Type in struct acpi_slic_header 9165cf4d733SBob Moore */ 9175cf4d733SBob Moore 9185cf4d733SBob Moore /* 0: Public Key Structure */ 9195cf4d733SBob Moore 9205cf4d733SBob Moore struct acpi_slic_key { 9215cf4d733SBob Moore struct acpi_slic_header header; 9225cf4d733SBob Moore u8 key_type; 9235cf4d733SBob Moore u8 version; 9245cf4d733SBob Moore u16 reserved; 9255cf4d733SBob Moore u32 algorithm; 9265cf4d733SBob Moore char magic[4]; 9275cf4d733SBob Moore u32 bit_length; 9285cf4d733SBob Moore u32 exponent; 9295cf4d733SBob Moore u8 modulus[128]; 9305cf4d733SBob Moore }; 9315cf4d733SBob Moore 9325cf4d733SBob Moore /* 1: Windows Marker Structure */ 9335cf4d733SBob Moore 9345cf4d733SBob Moore struct acpi_slic_marker { 9355cf4d733SBob Moore struct acpi_slic_header header; 9365cf4d733SBob Moore u32 version; 9375cf4d733SBob Moore char oem_id[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ 9385cf4d733SBob Moore char oem_table_id[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ 9395cf4d733SBob Moore char windows_flag[8]; 9405cf4d733SBob Moore u32 slic_version; 9415cf4d733SBob Moore u8 reserved[16]; 9425cf4d733SBob Moore u8 signature[128]; 9435cf4d733SBob Moore }; 9445cf4d733SBob Moore 9455cf4d733SBob Moore /******************************************************************************* 9465cf4d733SBob Moore * 947b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 9486e2d5ebdSBob Moore * Version 1 9496e2d5ebdSBob Moore * 9506e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 9516e2d5ebdSBob Moore * Version 1.00, January 11, 2002 952b24aad44SBob Moore * 953b24aad44SBob Moore ******************************************************************************/ 954b24aad44SBob Moore 955b24aad44SBob Moore struct acpi_table_spcr { 956b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 957b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 958b24aad44SBob Moore u8 reserved[3]; 959b24aad44SBob Moore struct acpi_generic_address serial_port; 960b24aad44SBob Moore u8 interrupt_type; 961b24aad44SBob Moore u8 pc_interrupt; 962b24aad44SBob Moore u32 interrupt; 963b24aad44SBob Moore u8 baud_rate; 964b24aad44SBob Moore u8 parity; 965b24aad44SBob Moore u8 stop_bits; 966b24aad44SBob Moore u8 flow_control; 967b24aad44SBob Moore u8 terminal_type; 968b24aad44SBob Moore u8 reserved1; 969b24aad44SBob Moore u16 pci_device_id; 970b24aad44SBob Moore u16 pci_vendor_id; 971b24aad44SBob Moore u8 pci_bus; 972b24aad44SBob Moore u8 pci_device; 973b24aad44SBob Moore u8 pci_function; 974b24aad44SBob Moore u32 pci_flags; 975b24aad44SBob Moore u8 pci_segment; 976b24aad44SBob Moore u32 reserved2; 977b24aad44SBob Moore }; 978b24aad44SBob Moore 9796e2d5ebdSBob Moore /* Masks for pci_flags field above */ 9806e2d5ebdSBob Moore 9816e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 9826e2d5ebdSBob Moore 983b24aad44SBob Moore /******************************************************************************* 984b24aad44SBob Moore * 985b24aad44SBob Moore * SPMI - Server Platform Management Interface table 9866e2d5ebdSBob Moore * Version 5 9876e2d5ebdSBob Moore * 9886e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 9896e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 9906e2d5ebdSBob Moore * June 12, 2009 markup. 991b24aad44SBob Moore * 992b24aad44SBob Moore ******************************************************************************/ 993b24aad44SBob Moore 994b24aad44SBob Moore struct acpi_table_spmi { 995b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 996b24aad44SBob Moore u8 interface_type; 9976e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 998b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 999b24aad44SBob Moore u8 interrupt_type; 1000b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 1001b24aad44SBob Moore u8 reserved1; 1002b24aad44SBob Moore u8 pci_device_flag; 1003b24aad44SBob Moore u32 interrupt; 1004b24aad44SBob Moore struct acpi_generic_address ipmi_register; 1005b24aad44SBob Moore u8 pci_segment; 1006b24aad44SBob Moore u8 pci_bus; 1007b24aad44SBob Moore u8 pci_device; 1008b24aad44SBob Moore u8 pci_function; 10096e2d5ebdSBob Moore u8 reserved2; 10106e2d5ebdSBob Moore }; 10116e2d5ebdSBob Moore 10126e2d5ebdSBob Moore /* Values for interface_type above */ 10136e2d5ebdSBob Moore 10146e2d5ebdSBob Moore enum acpi_spmi_interface_types { 10156e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 10166e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 10176e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 10186e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 10196e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 10206e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 1021b24aad44SBob Moore }; 1022b24aad44SBob Moore 1023b24aad44SBob Moore /******************************************************************************* 1024b24aad44SBob Moore * 1025b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 10266e2d5ebdSBob Moore * Version 1 10276e2d5ebdSBob Moore * 10286e2d5ebdSBob Moore * Conforms to "TCG PC Specific Implementation Specification", 10296e2d5ebdSBob Moore * Version 1.1, August 18, 2003 1030b24aad44SBob Moore * 1031b24aad44SBob Moore ******************************************************************************/ 1032b24aad44SBob Moore 1033b24aad44SBob Moore struct acpi_table_tcpa { 1034b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1035b24aad44SBob Moore u16 reserved; 1036b24aad44SBob Moore u32 max_log_length; /* Maximum length for the event log area */ 1037b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 1038b24aad44SBob Moore }; 1039b24aad44SBob Moore 1040b24aad44SBob Moore /******************************************************************************* 1041b24aad44SBob Moore * 1042b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 10436e2d5ebdSBob Moore * Version 1 10446e2d5ebdSBob Moore * 10456e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 10466e2d5ebdSBob Moore * Version 2.3, May 8, 2009 1047b24aad44SBob Moore * 1048b24aad44SBob Moore ******************************************************************************/ 1049b24aad44SBob Moore 1050b24aad44SBob Moore struct acpi_table_uefi { 1051b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1052b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 1053b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 1054b24aad44SBob Moore }; 1055b24aad44SBob Moore 1056b24aad44SBob Moore /******************************************************************************* 1057b24aad44SBob Moore * 105825c0330aSLv Zheng * VRTC - Virtual Real Time Clock Table 105925c0330aSLv Zheng * Version 1 106025c0330aSLv Zheng * 106125c0330aSLv Zheng * Conforms to "Simple Firmware Interface Specification", 106225c0330aSLv Zheng * Draft 0.8.2, Oct 19, 2010 106325c0330aSLv Zheng * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. 106425c0330aSLv Zheng * 106525c0330aSLv Zheng ******************************************************************************/ 106625c0330aSLv Zheng 106725c0330aSLv Zheng struct acpi_table_vrtc { 106825c0330aSLv Zheng struct acpi_table_header header; /* Common ACPI table header */ 106925c0330aSLv Zheng }; 107025c0330aSLv Zheng 107125c0330aSLv Zheng /* VRTC entry */ 107225c0330aSLv Zheng 107325c0330aSLv Zheng struct acpi_vrtc_entry { 107425c0330aSLv Zheng struct acpi_generic_address physical_address; 107525c0330aSLv Zheng u32 irq; 107625c0330aSLv Zheng }; 107725c0330aSLv Zheng 107825c0330aSLv Zheng /******************************************************************************* 107925c0330aSLv Zheng * 10806e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 10816e2d5ebdSBob Moore * Version 1 10826e2d5ebdSBob Moore * 10836e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 10846e2d5ebdSBob Moore * 10856e2d5ebdSBob Moore ******************************************************************************/ 10866e2d5ebdSBob Moore 10876e2d5ebdSBob Moore struct acpi_table_waet { 10886e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 10896e2d5ebdSBob Moore u32 flags; 10906e2d5ebdSBob Moore }; 10916e2d5ebdSBob Moore 10926e2d5ebdSBob Moore /* Masks for Flags field above */ 10936e2d5ebdSBob Moore 10946e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 10956e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 10966e2d5ebdSBob Moore 10976e2d5ebdSBob Moore /******************************************************************************* 10986e2d5ebdSBob Moore * 1099b24aad44SBob Moore * WDAT - Watchdog Action Table 11006e2d5ebdSBob Moore * Version 1 11016e2d5ebdSBob Moore * 11026e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 11036e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 1104b24aad44SBob Moore * 1105b24aad44SBob Moore ******************************************************************************/ 1106b24aad44SBob Moore 1107b24aad44SBob Moore struct acpi_table_wdat { 1108b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 1109b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 1110b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 1111b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 1112b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 1113b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 1114b24aad44SBob Moore u8 reserved[3]; 1115b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 1116b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 1117b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 1118b24aad44SBob Moore u8 flags; 1119b24aad44SBob Moore u8 reserved2[3]; 1120b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 1121b24aad44SBob Moore }; 1122b24aad44SBob Moore 11236e2d5ebdSBob Moore /* Masks for Flags field above */ 11246e2d5ebdSBob Moore 11256e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 11266e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 11276e2d5ebdSBob Moore 1128b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 1129b24aad44SBob Moore 1130b24aad44SBob Moore struct acpi_wdat_entry { 11316e2d5ebdSBob Moore u8 action; 11326e2d5ebdSBob Moore u8 instruction; 11336e2d5ebdSBob Moore u16 reserved; 11346e2d5ebdSBob Moore struct acpi_generic_address register_region; 11356e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 11366e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 1137b24aad44SBob Moore }; 1138b24aad44SBob Moore 1139b24aad44SBob Moore /* Values for Action field above */ 1140b24aad44SBob Moore 1141b24aad44SBob Moore enum acpi_wdat_actions { 1142b24aad44SBob Moore ACPI_WDAT_RESET = 1, 1143b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1144b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 1145b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 1146b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 1147b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 1148b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 1149b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 1150b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 1151b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 1152b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 1153b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 1154b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 1155b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 1156b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1157b24aad44SBob Moore }; 1158b24aad44SBob Moore 1159b24aad44SBob Moore /* Values for Instruction field above */ 1160b24aad44SBob Moore 1161b24aad44SBob Moore enum acpi_wdat_instructions { 1162b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 1163b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 1164b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 1165b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 1166b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1167b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1168b24aad44SBob Moore }; 1169b24aad44SBob Moore 1170b24aad44SBob Moore /******************************************************************************* 1171b24aad44SBob Moore * 11729d8b5e7bSBob Moore * WDDT - Watchdog Descriptor Table 11739d8b5e7bSBob Moore * Version 1 11749d8b5e7bSBob Moore * 11759d8b5e7bSBob Moore * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 11769d8b5e7bSBob Moore * Version 001, September 2002 11779d8b5e7bSBob Moore * 11789d8b5e7bSBob Moore ******************************************************************************/ 11799d8b5e7bSBob Moore 11809d8b5e7bSBob Moore struct acpi_table_wddt { 11819d8b5e7bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 11829d8b5e7bSBob Moore u16 spec_version; 11839d8b5e7bSBob Moore u16 table_version; 11849d8b5e7bSBob Moore u16 pci_vendor_id; 11859d8b5e7bSBob Moore struct acpi_generic_address address; 11869d8b5e7bSBob Moore u16 max_count; /* Maximum counter value supported */ 11879d8b5e7bSBob Moore u16 min_count; /* Minimum counter value supported */ 11889d8b5e7bSBob Moore u16 period; 11899d8b5e7bSBob Moore u16 status; 11909d8b5e7bSBob Moore u16 capability; 11919d8b5e7bSBob Moore }; 11929d8b5e7bSBob Moore 11939d8b5e7bSBob Moore /* Flags for Status field above */ 11949d8b5e7bSBob Moore 11959d8b5e7bSBob Moore #define ACPI_WDDT_AVAILABLE (1) 11969d8b5e7bSBob Moore #define ACPI_WDDT_ACTIVE (1<<1) 11979d8b5e7bSBob Moore #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 11989d8b5e7bSBob Moore #define ACPI_WDDT_USER_RESET (1<<11) 11999d8b5e7bSBob Moore #define ACPI_WDDT_WDT_RESET (1<<12) 12009d8b5e7bSBob Moore #define ACPI_WDDT_POWER_FAIL (1<<13) 12019d8b5e7bSBob Moore #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 12029d8b5e7bSBob Moore 12039d8b5e7bSBob Moore /* Flags for Capability field above */ 12049d8b5e7bSBob Moore 12059d8b5e7bSBob Moore #define ACPI_WDDT_AUTO_RESET (1) 12069d8b5e7bSBob Moore #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 12079d8b5e7bSBob Moore 12089d8b5e7bSBob Moore /******************************************************************************* 12099d8b5e7bSBob Moore * 1210b24aad44SBob Moore * WDRT - Watchdog Resource Table 12116e2d5ebdSBob Moore * Version 1 12126e2d5ebdSBob Moore * 12136e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 12146e2d5ebdSBob Moore * Version 1.01, August 28, 2006 1215b24aad44SBob Moore * 1216b24aad44SBob Moore ******************************************************************************/ 1217b24aad44SBob Moore 1218b24aad44SBob Moore struct acpi_table_wdrt { 1219b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 12206e2d5ebdSBob Moore struct acpi_generic_address control_register; 12216e2d5ebdSBob Moore struct acpi_generic_address count_register; 12226e2d5ebdSBob Moore u16 pci_device_id; 12236e2d5ebdSBob Moore u16 pci_vendor_id; 1224b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 1225b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 1226b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 12276e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 12286e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 12296e2d5ebdSBob Moore u8 units; 1230b24aad44SBob Moore }; 1231b24aad44SBob Moore 12326e596084SRobert Moore /* Reset to default packing */ 12336e596084SRobert Moore 12346e596084SRobert Moore #pragma pack() 1235b24aad44SBob Moore 1236b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 1237