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 /* 875e7386bSBob Moore * Copyright (C) 2000 - 2012, 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 */ 66b24aad44SBob Moore #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 67b24aad44SBob Moore #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 68b24aad44SBob Moore #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 69ba494beeSBob Moore #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ 706e2d5ebdSBob Moore #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ 71b24aad44SBob Moore #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 720e264f0bSBob Moore #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ 73b24aad44SBob Moore #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 74b24aad44SBob Moore #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 75b24aad44SBob Moore #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 76b24aad44SBob Moore #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 77b24aad44SBob Moore #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 786e2d5ebdSBob Moore #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 79b24aad44SBob Moore #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 809d8b5e7bSBob Moore #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 81b24aad44SBob Moore #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 82b24aad44SBob Moore 834461cf54SBob Moore #ifdef ACPI_UNDEFINED_TABLES 844461cf54SBob Moore /* 854461cf54SBob Moore * These tables have been seen in the field, but no definition has been found 864461cf54SBob Moore */ 874461cf54SBob Moore #define ACPI_SIG_ATKG "ATKG" 884461cf54SBob Moore #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 894461cf54SBob Moore #define ACPI_SIG_IEIT "IEIT" 904461cf54SBob Moore #endif 914461cf54SBob Moore 92b24aad44SBob Moore /* 93b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 94b24aad44SBob Moore * the tables are provided by the system BIOS. 95b24aad44SBob Moore */ 96b24aad44SBob Moore #pragma pack(1) 97b24aad44SBob Moore 98b24aad44SBob Moore /* 99b24aad44SBob Moore * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 100b24aad44SBob Moore * This is the only type that is even remotely portable. Anything else is not 101b24aad44SBob Moore * portable, so do not use any other bitfield types. 102b24aad44SBob Moore */ 103b24aad44SBob Moore 104b24aad44SBob Moore /******************************************************************************* 105b24aad44SBob Moore * 106b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 1076e2d5ebdSBob Moore * Revision 0x10 108b24aad44SBob Moore * 109b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 110b24aad44SBob Moore * 111b24aad44SBob Moore ******************************************************************************/ 112b24aad44SBob Moore 113b24aad44SBob Moore struct acpi_table_asf { 114b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 115b24aad44SBob Moore }; 116b24aad44SBob Moore 117b24aad44SBob Moore /* ASF subtable header */ 118b24aad44SBob Moore 119b24aad44SBob Moore struct acpi_asf_header { 120b24aad44SBob Moore u8 type; 121b24aad44SBob Moore u8 reserved; 122b24aad44SBob Moore u16 length; 123b24aad44SBob Moore }; 124b24aad44SBob Moore 125b24aad44SBob Moore /* Values for Type field above */ 126b24aad44SBob Moore 127b24aad44SBob Moore enum acpi_asf_type { 128b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 129b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 130b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 131b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 132b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 133b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 134b24aad44SBob Moore }; 135b24aad44SBob Moore 136b24aad44SBob Moore /* 137b24aad44SBob Moore * ASF subtables 138b24aad44SBob Moore */ 139b24aad44SBob Moore 140b24aad44SBob Moore /* 0: ASF Information */ 141b24aad44SBob Moore 142b24aad44SBob Moore struct acpi_asf_info { 143b24aad44SBob Moore struct acpi_asf_header header; 144b24aad44SBob Moore u8 min_reset_value; 145b24aad44SBob Moore u8 min_poll_interval; 146b24aad44SBob Moore u16 system_id; 147b24aad44SBob Moore u32 mfg_id; 148b24aad44SBob Moore u8 flags; 149b24aad44SBob Moore u8 reserved2[3]; 150b24aad44SBob Moore }; 151b24aad44SBob Moore 1526e2d5ebdSBob Moore /* Masks for Flags field above */ 1536e2d5ebdSBob Moore 1546e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1556e2d5ebdSBob Moore 156b24aad44SBob Moore /* 1: ASF Alerts */ 157b24aad44SBob Moore 158b24aad44SBob Moore struct acpi_asf_alert { 159b24aad44SBob Moore struct acpi_asf_header header; 160b24aad44SBob Moore u8 assert_mask; 161b24aad44SBob Moore u8 deassert_mask; 162b24aad44SBob Moore u8 alerts; 163b24aad44SBob Moore u8 data_length; 164b24aad44SBob Moore }; 165b24aad44SBob Moore 166b24aad44SBob Moore struct acpi_asf_alert_data { 167b24aad44SBob Moore u8 address; 168b24aad44SBob Moore u8 command; 169b24aad44SBob Moore u8 mask; 170b24aad44SBob Moore u8 value; 171b24aad44SBob Moore u8 sensor_type; 172b24aad44SBob Moore u8 type; 173b24aad44SBob Moore u8 offset; 174b24aad44SBob Moore u8 source_type; 175b24aad44SBob Moore u8 severity; 176b24aad44SBob Moore u8 sensor_number; 177b24aad44SBob Moore u8 entity; 178b24aad44SBob Moore u8 instance; 179b24aad44SBob Moore }; 180b24aad44SBob Moore 181b24aad44SBob Moore /* 2: ASF Remote Control */ 182b24aad44SBob Moore 183b24aad44SBob Moore struct acpi_asf_remote { 184b24aad44SBob Moore struct acpi_asf_header header; 185b24aad44SBob Moore u8 controls; 186b24aad44SBob Moore u8 data_length; 187b24aad44SBob Moore u16 reserved2; 188b24aad44SBob Moore }; 189b24aad44SBob Moore 190b24aad44SBob Moore struct acpi_asf_control_data { 191b24aad44SBob Moore u8 function; 192b24aad44SBob Moore u8 address; 193b24aad44SBob Moore u8 command; 194b24aad44SBob Moore u8 value; 195b24aad44SBob Moore }; 196b24aad44SBob Moore 197b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 198b24aad44SBob Moore 199b24aad44SBob Moore struct acpi_asf_rmcp { 200b24aad44SBob Moore struct acpi_asf_header header; 201b24aad44SBob Moore u8 capabilities[7]; 202b24aad44SBob Moore u8 completion_code; 203b24aad44SBob Moore u32 enterprise_id; 204b24aad44SBob Moore u8 command; 205b24aad44SBob Moore u16 parameter; 206b24aad44SBob Moore u16 boot_options; 207b24aad44SBob Moore u16 oem_parameters; 208b24aad44SBob Moore }; 209b24aad44SBob Moore 210b24aad44SBob Moore /* 4: ASF Address */ 211b24aad44SBob Moore 212b24aad44SBob Moore struct acpi_asf_address { 213b24aad44SBob Moore struct acpi_asf_header header; 214b24aad44SBob Moore u8 eprom_address; 215b24aad44SBob Moore u8 devices; 216b24aad44SBob Moore }; 217b24aad44SBob Moore 218b24aad44SBob Moore /******************************************************************************* 219b24aad44SBob Moore * 220b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2216e2d5ebdSBob Moore * Version 1 2226e2d5ebdSBob Moore * 2236e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 224b24aad44SBob Moore * 225b24aad44SBob Moore ******************************************************************************/ 226b24aad44SBob Moore 227b24aad44SBob Moore struct acpi_table_boot { 228b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 229b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 230b24aad44SBob Moore u8 reserved[3]; 231b24aad44SBob Moore }; 232b24aad44SBob Moore 233b24aad44SBob Moore /******************************************************************************* 234b24aad44SBob Moore * 235b24aad44SBob Moore * DBGP - Debug Port table 2366e2d5ebdSBob Moore * Version 1 2376e2d5ebdSBob Moore * 2386e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 239b24aad44SBob Moore * 240b24aad44SBob Moore ******************************************************************************/ 241b24aad44SBob Moore 242b24aad44SBob Moore struct acpi_table_dbgp { 243b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 244b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 245b24aad44SBob Moore u8 reserved[3]; 246b24aad44SBob Moore struct acpi_generic_address debug_port; 247b24aad44SBob Moore }; 248b24aad44SBob Moore 249b24aad44SBob Moore /******************************************************************************* 250b24aad44SBob Moore * 251b24aad44SBob Moore * DMAR - DMA Remapping table 2526e2d5ebdSBob Moore * Version 1 2536e2d5ebdSBob Moore * 2546e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 2556e2d5ebdSBob Moore * Version 1.2, Sept. 2008 256b24aad44SBob Moore * 257b24aad44SBob Moore ******************************************************************************/ 258b24aad44SBob Moore 259b24aad44SBob Moore struct acpi_table_dmar { 260b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 261b24aad44SBob Moore u8 width; /* Host Address Width */ 262b24aad44SBob Moore u8 flags; 263b24aad44SBob Moore u8 reserved[10]; 264b24aad44SBob Moore }; 265b24aad44SBob Moore 2666e2d5ebdSBob Moore /* Masks for Flags field above */ 267b24aad44SBob Moore 268b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 269b24aad44SBob Moore 270b24aad44SBob Moore /* DMAR subtable header */ 271b24aad44SBob Moore 272b24aad44SBob Moore struct acpi_dmar_header { 273b24aad44SBob Moore u16 type; 274b24aad44SBob Moore u16 length; 275b24aad44SBob Moore }; 276b24aad44SBob Moore 277b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 278b24aad44SBob Moore 279b24aad44SBob Moore enum acpi_dmar_type { 280b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 281b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 282b24aad44SBob Moore ACPI_DMAR_TYPE_ATSR = 2, 2836e2d5ebdSBob Moore ACPI_DMAR_HARDWARE_AFFINITY = 3, 2846e2d5ebdSBob Moore ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 285b24aad44SBob Moore }; 286b24aad44SBob Moore 2876e2d5ebdSBob Moore /* DMAR Device Scope structure */ 2886e2d5ebdSBob Moore 289b24aad44SBob Moore struct acpi_dmar_device_scope { 290b24aad44SBob Moore u8 entry_type; 291b24aad44SBob Moore u8 length; 292b24aad44SBob Moore u16 reserved; 293b24aad44SBob Moore u8 enumeration_id; 294b24aad44SBob Moore u8 bus; 295b24aad44SBob Moore }; 296b24aad44SBob Moore 297b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */ 298b24aad44SBob Moore 299b24aad44SBob Moore enum acpi_dmar_scope_type { 300b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 301b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 302b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 303b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 304b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 305b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 306b24aad44SBob Moore }; 307b24aad44SBob Moore 308b24aad44SBob Moore struct acpi_dmar_pci_path { 309b24aad44SBob Moore u8 dev; 310b24aad44SBob Moore u8 fn; 311b24aad44SBob Moore }; 312b24aad44SBob Moore 313b24aad44SBob Moore /* 314b24aad44SBob Moore * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 315b24aad44SBob Moore */ 316b24aad44SBob Moore 317b24aad44SBob Moore /* 0: Hardware Unit Definition */ 318b24aad44SBob Moore 319b24aad44SBob Moore struct acpi_dmar_hardware_unit { 320b24aad44SBob Moore struct acpi_dmar_header header; 321b24aad44SBob Moore u8 flags; 322b24aad44SBob Moore u8 reserved; 323b24aad44SBob Moore u16 segment; 324b24aad44SBob Moore u64 address; /* Register Base Address */ 325b24aad44SBob Moore }; 326b24aad44SBob Moore 3276e2d5ebdSBob Moore /* Masks for Flags field above */ 328b24aad44SBob Moore 329b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 330b24aad44SBob Moore 331b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 332b24aad44SBob Moore 333b24aad44SBob Moore struct acpi_dmar_reserved_memory { 334b24aad44SBob Moore struct acpi_dmar_header header; 335b24aad44SBob Moore u16 reserved; 336b24aad44SBob Moore u16 segment; 337ba494beeSBob Moore u64 base_address; /* 4K aligned base address */ 338ba494beeSBob Moore u64 end_address; /* 4K aligned limit address */ 339b24aad44SBob Moore }; 340b24aad44SBob Moore 3416e2d5ebdSBob Moore /* Masks for Flags field above */ 342b24aad44SBob Moore 343b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 344b24aad44SBob Moore 345b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 346b24aad44SBob Moore 347b24aad44SBob Moore struct acpi_dmar_atsr { 348b24aad44SBob Moore struct acpi_dmar_header header; 349b24aad44SBob Moore u8 flags; 350b24aad44SBob Moore u8 reserved; 351b24aad44SBob Moore u16 segment; 352b24aad44SBob Moore }; 353b24aad44SBob Moore 3546e2d5ebdSBob Moore /* Masks for Flags field above */ 355b24aad44SBob Moore 356b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 357b24aad44SBob Moore 3586e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 3596e2d5ebdSBob Moore 3606e2d5ebdSBob Moore struct acpi_dmar_rhsa { 3616e2d5ebdSBob Moore struct acpi_dmar_header header; 3626e2d5ebdSBob Moore u32 reserved; 3636e2d5ebdSBob Moore u64 base_address; 3646e2d5ebdSBob Moore u32 proximity_domain; 3656e2d5ebdSBob Moore }; 3666e2d5ebdSBob Moore 367b24aad44SBob Moore /******************************************************************************* 368b24aad44SBob Moore * 369b24aad44SBob Moore * HPET - High Precision Event Timer table 3706e2d5ebdSBob Moore * Version 1 3716e2d5ebdSBob Moore * 3726e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 3736e2d5ebdSBob Moore * Version 1.0a, October 2004 374b24aad44SBob Moore * 375b24aad44SBob Moore ******************************************************************************/ 376b24aad44SBob Moore 377b24aad44SBob Moore struct acpi_table_hpet { 378b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 379b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 380b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 381b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 382b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 383b24aad44SBob Moore u8 flags; 384b24aad44SBob Moore }; 385b24aad44SBob Moore 3866e2d5ebdSBob Moore /* Masks for Flags field above */ 387b24aad44SBob Moore 3886e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 389b24aad44SBob Moore 3906e2d5ebdSBob Moore /* Values for Page Protect flags */ 3916e2d5ebdSBob Moore 3926e2d5ebdSBob Moore enum acpi_hpet_page_protect { 3936e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 3946e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 3956e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 3966e2d5ebdSBob Moore }; 397b24aad44SBob Moore 398b24aad44SBob Moore /******************************************************************************* 399b24aad44SBob Moore * 400b24aad44SBob Moore * IBFT - Boot Firmware Table 4016e2d5ebdSBob Moore * Version 1 4026e2d5ebdSBob Moore * 4036e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 4046e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 4056e2d5ebdSBob Moore * 4066e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 4076e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 408b24aad44SBob Moore * 409b24aad44SBob Moore ******************************************************************************/ 410b24aad44SBob Moore 411b24aad44SBob Moore struct acpi_table_ibft { 412b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 413b24aad44SBob Moore u8 reserved[12]; 414b24aad44SBob Moore }; 415b24aad44SBob Moore 416b24aad44SBob Moore /* IBFT common subtable header */ 417b24aad44SBob Moore 418b24aad44SBob Moore struct acpi_ibft_header { 419b24aad44SBob Moore u8 type; 420b24aad44SBob Moore u8 version; 421b24aad44SBob Moore u16 length; 422b24aad44SBob Moore u8 index; 423b24aad44SBob Moore u8 flags; 424b24aad44SBob Moore }; 425b24aad44SBob Moore 426b24aad44SBob Moore /* Values for Type field above */ 427b24aad44SBob Moore 428b24aad44SBob Moore enum acpi_ibft_type { 429b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 430b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 431b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 432b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 433b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 434b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 435b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 436b24aad44SBob Moore }; 437b24aad44SBob Moore 438b24aad44SBob Moore /* IBFT subtables */ 439b24aad44SBob Moore 440b24aad44SBob Moore struct acpi_ibft_control { 441b24aad44SBob Moore struct acpi_ibft_header header; 442b24aad44SBob Moore u16 extensions; 443b24aad44SBob Moore u16 initiator_offset; 444b24aad44SBob Moore u16 nic0_offset; 445b24aad44SBob Moore u16 target0_offset; 446b24aad44SBob Moore u16 nic1_offset; 447b24aad44SBob Moore u16 target1_offset; 448b24aad44SBob Moore }; 449b24aad44SBob Moore 450b24aad44SBob Moore struct acpi_ibft_initiator { 451b24aad44SBob Moore struct acpi_ibft_header header; 452b24aad44SBob Moore u8 sns_server[16]; 453b24aad44SBob Moore u8 slp_server[16]; 454b24aad44SBob Moore u8 primary_server[16]; 455b24aad44SBob Moore u8 secondary_server[16]; 456b24aad44SBob Moore u16 name_length; 457b24aad44SBob Moore u16 name_offset; 458b24aad44SBob Moore }; 459b24aad44SBob Moore 460b24aad44SBob Moore struct acpi_ibft_nic { 461b24aad44SBob Moore struct acpi_ibft_header header; 462b24aad44SBob Moore u8 ip_address[16]; 463b24aad44SBob Moore u8 subnet_mask_prefix; 464b24aad44SBob Moore u8 origin; 465b24aad44SBob Moore u8 gateway[16]; 466b24aad44SBob Moore u8 primary_dns[16]; 467b24aad44SBob Moore u8 secondary_dns[16]; 468b24aad44SBob Moore u8 dhcp[16]; 469b24aad44SBob Moore u16 vlan; 470b24aad44SBob Moore u8 mac_address[6]; 471b24aad44SBob Moore u16 pci_address; 472b24aad44SBob Moore u16 name_length; 473b24aad44SBob Moore u16 name_offset; 474b24aad44SBob Moore }; 475b24aad44SBob Moore 476b24aad44SBob Moore struct acpi_ibft_target { 477b24aad44SBob Moore struct acpi_ibft_header header; 478b24aad44SBob Moore u8 target_ip_address[16]; 479b24aad44SBob Moore u16 target_ip_socket; 480b24aad44SBob Moore u8 target_boot_lun[8]; 481b24aad44SBob Moore u8 chap_type; 482b24aad44SBob Moore u8 nic_association; 483b24aad44SBob Moore u16 target_name_length; 484b24aad44SBob Moore u16 target_name_offset; 485b24aad44SBob Moore u16 chap_name_length; 486b24aad44SBob Moore u16 chap_name_offset; 487b24aad44SBob Moore u16 chap_secret_length; 488b24aad44SBob Moore u16 chap_secret_offset; 489b24aad44SBob Moore u16 reverse_chap_name_length; 490b24aad44SBob Moore u16 reverse_chap_name_offset; 491b24aad44SBob Moore u16 reverse_chap_secret_length; 492b24aad44SBob Moore u16 reverse_chap_secret_offset; 493b24aad44SBob Moore }; 494b24aad44SBob Moore 495b24aad44SBob Moore /******************************************************************************* 496b24aad44SBob Moore * 4976e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 4986e2d5ebdSBob Moore * Version 1 4996e2d5ebdSBob Moore * 5006e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 5016e2d5ebdSBob Moore * Revision 1.26, February 2009. 5026e2d5ebdSBob Moore * 5036e2d5ebdSBob Moore ******************************************************************************/ 5046e2d5ebdSBob Moore 5056e2d5ebdSBob Moore struct acpi_table_ivrs { 5066e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 5076e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 5086e2d5ebdSBob Moore u64 reserved; 5096e2d5ebdSBob Moore }; 5106e2d5ebdSBob Moore 5116e2d5ebdSBob Moore /* Values for Info field above */ 5126e2d5ebdSBob Moore 5136e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 5146e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 5156e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 5166e2d5ebdSBob Moore 5176e2d5ebdSBob Moore /* IVRS subtable header */ 5186e2d5ebdSBob Moore 5196e2d5ebdSBob Moore struct acpi_ivrs_header { 5206e2d5ebdSBob Moore u8 type; /* Subtable type */ 5216e2d5ebdSBob Moore u8 flags; 5226e2d5ebdSBob Moore u16 length; /* Subtable length */ 5236e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 5246e2d5ebdSBob Moore }; 5256e2d5ebdSBob Moore 5266e2d5ebdSBob Moore /* Values for subtable Type above */ 5276e2d5ebdSBob Moore 5286e2d5ebdSBob Moore enum acpi_ivrs_type { 5296e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 5306e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 5316e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 5326e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 5336e2d5ebdSBob Moore }; 5346e2d5ebdSBob Moore 5356e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 5366e2d5ebdSBob Moore 5376e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 5386e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 5396e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 5406e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 5416e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 5426e2d5ebdSBob Moore 5436e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 5446e2d5ebdSBob Moore 5456e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 5466e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 5476e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 5486e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 5496e2d5ebdSBob Moore 5506e2d5ebdSBob Moore /* 5516e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 5526e2d5ebdSBob Moore */ 5536e2d5ebdSBob Moore 5546e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 5556e2d5ebdSBob Moore 5566e2d5ebdSBob Moore struct acpi_ivrs_hardware { 5576e2d5ebdSBob Moore struct acpi_ivrs_header header; 5586e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 5596e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 5606e2d5ebdSBob Moore u16 pci_segment_group; 5616e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 5626e2d5ebdSBob Moore u32 reserved; 5636e2d5ebdSBob Moore }; 5646e2d5ebdSBob Moore 5656e2d5ebdSBob Moore /* Masks for Info field above */ 5666e2d5ebdSBob Moore 5676e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 568ba494beeSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_ID */ 5696e2d5ebdSBob Moore 5706e2d5ebdSBob Moore /* 5716e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 5726e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 5736e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 5746e2d5ebdSBob Moore * are reserved for future use but not defined. 5756e2d5ebdSBob Moore */ 5766e2d5ebdSBob Moore struct acpi_ivrs_de_header { 5776e2d5ebdSBob Moore u8 type; 5786e2d5ebdSBob Moore u16 id; 5796e2d5ebdSBob Moore u8 data_setting; 5806e2d5ebdSBob Moore }; 5816e2d5ebdSBob Moore 5826e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 5836e2d5ebdSBob Moore 5846e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 5856e2d5ebdSBob Moore 5866e2d5ebdSBob Moore /* Values for device entry Type field above */ 5876e2d5ebdSBob Moore 5886e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 5896e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 5906e2d5ebdSBob Moore 5916e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 5926e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 5936e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 5946e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 5956e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 5966e2d5ebdSBob Moore 5976e2d5ebdSBob Moore /* 8-byte device entries */ 5986e2d5ebdSBob Moore 5996e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 6006e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 6016e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 6026e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 6036e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 6046e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 6056e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 6066e2d5ebdSBob Moore }; 6076e2d5ebdSBob Moore 6086e2d5ebdSBob Moore /* Values for Data field above */ 6096e2d5ebdSBob Moore 6106e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 6116e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 6126e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 6136e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 6146e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 6156e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 6166e2d5ebdSBob Moore 6176e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 6186e2d5ebdSBob Moore 6196e2d5ebdSBob Moore struct acpi_ivrs_device4 { 6206e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6216e2d5ebdSBob Moore }; 6226e2d5ebdSBob Moore 6236e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 6246e2d5ebdSBob Moore 6256e2d5ebdSBob Moore struct acpi_ivrs_device8a { 6266e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6276e2d5ebdSBob Moore u8 reserved1; 6286e2d5ebdSBob Moore u16 used_id; 6296e2d5ebdSBob Moore u8 reserved2; 6306e2d5ebdSBob Moore }; 6316e2d5ebdSBob Moore 6326e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 6336e2d5ebdSBob Moore 6346e2d5ebdSBob Moore struct acpi_ivrs_device8b { 6356e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6366e2d5ebdSBob Moore u32 extended_data; 6376e2d5ebdSBob Moore }; 6386e2d5ebdSBob Moore 6396e2d5ebdSBob Moore /* Values for extended_data above */ 6406e2d5ebdSBob Moore 6416e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 6426e2d5ebdSBob Moore 6436e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 6446e2d5ebdSBob Moore 6456e2d5ebdSBob Moore struct acpi_ivrs_device8c { 6466e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6476e2d5ebdSBob Moore u8 handle; 6486e2d5ebdSBob Moore u16 used_id; 6496e2d5ebdSBob Moore u8 variety; 6506e2d5ebdSBob Moore }; 6516e2d5ebdSBob Moore 6526e2d5ebdSBob Moore /* Values for Variety field above */ 6536e2d5ebdSBob Moore 6546e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 6556e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 6566e2d5ebdSBob Moore 6576e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 6586e2d5ebdSBob Moore 6596e2d5ebdSBob Moore struct acpi_ivrs_memory { 6606e2d5ebdSBob Moore struct acpi_ivrs_header header; 6616e2d5ebdSBob Moore u16 aux_data; 6626e2d5ebdSBob Moore u64 reserved; 6636e2d5ebdSBob Moore u64 start_address; 6646e2d5ebdSBob Moore u64 memory_length; 6656e2d5ebdSBob Moore }; 6666e2d5ebdSBob Moore 6676e2d5ebdSBob Moore /******************************************************************************* 6686e2d5ebdSBob Moore * 669b24aad44SBob Moore * MCFG - PCI Memory Mapped Configuration table and sub-table 6706e2d5ebdSBob Moore * Version 1 6716e2d5ebdSBob Moore * 6726e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 673b24aad44SBob Moore * 674b24aad44SBob Moore ******************************************************************************/ 675b24aad44SBob Moore 676b24aad44SBob Moore struct acpi_table_mcfg { 677b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 678b24aad44SBob Moore u8 reserved[8]; 679b24aad44SBob Moore }; 680b24aad44SBob Moore 681b24aad44SBob Moore /* Subtable */ 682b24aad44SBob Moore 683b24aad44SBob Moore struct acpi_mcfg_allocation { 684b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 685b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 686b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 687b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 688b24aad44SBob Moore u32 reserved; 689b24aad44SBob Moore }; 690b24aad44SBob Moore 691b24aad44SBob Moore /******************************************************************************* 692b24aad44SBob Moore * 6930e264f0bSBob Moore * MCHI - Management Controller Host Interface Table 6940e264f0bSBob Moore * Version 1 6950e264f0bSBob Moore * 6960e264f0bSBob Moore * Conforms to "Management Component Transport Protocol (MCTP) Host 6970e264f0bSBob Moore * Interface Specification", Revision 1.0.0a, October 13, 2009 6980e264f0bSBob Moore * 6990e264f0bSBob Moore ******************************************************************************/ 7000e264f0bSBob Moore 7010e264f0bSBob Moore struct acpi_table_mchi { 7020e264f0bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 7030e264f0bSBob Moore u8 interface_type; 7040e264f0bSBob Moore u8 protocol; 7050e264f0bSBob Moore u64 protocol_data; 7060e264f0bSBob Moore u8 interrupt_type; 7070e264f0bSBob Moore u8 gpe; 7080e264f0bSBob Moore u8 pci_device_flag; 7090e264f0bSBob Moore u32 global_interrupt; 7100e264f0bSBob Moore struct acpi_generic_address control_register; 7110e264f0bSBob Moore u8 pci_segment; 7120e264f0bSBob Moore u8 pci_bus; 7130e264f0bSBob Moore u8 pci_device; 7140e264f0bSBob Moore u8 pci_function; 7150e264f0bSBob Moore }; 7160e264f0bSBob Moore 7170e264f0bSBob Moore /******************************************************************************* 7180e264f0bSBob Moore * 7195cf4d733SBob Moore * SLIC - Software Licensing Description Table 7205cf4d733SBob Moore * Version 1 7215cf4d733SBob Moore * 7225cf4d733SBob Moore * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems", 7235cf4d733SBob Moore * Copyright 2006 7245cf4d733SBob Moore * 7255cf4d733SBob Moore ******************************************************************************/ 7265cf4d733SBob Moore 7275cf4d733SBob Moore /* Basic SLIC table is only the common ACPI header */ 7285cf4d733SBob Moore 7295cf4d733SBob Moore struct acpi_table_slic { 7305cf4d733SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 7315cf4d733SBob Moore }; 7325cf4d733SBob Moore 7335cf4d733SBob Moore /* Common SLIC subtable header */ 7345cf4d733SBob Moore 7355cf4d733SBob Moore struct acpi_slic_header { 7365cf4d733SBob Moore u32 type; 7375cf4d733SBob Moore u32 length; 7385cf4d733SBob Moore }; 7395cf4d733SBob Moore 7405cf4d733SBob Moore /* Values for Type field above */ 7415cf4d733SBob Moore 7425cf4d733SBob Moore enum acpi_slic_type { 7435cf4d733SBob Moore ACPI_SLIC_TYPE_PUBLIC_KEY = 0, 7445cf4d733SBob Moore ACPI_SLIC_TYPE_WINDOWS_MARKER = 1, 7455cf4d733SBob Moore ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */ 7465cf4d733SBob Moore }; 7475cf4d733SBob Moore 7485cf4d733SBob Moore /* 7495cf4d733SBob Moore * SLIC Sub-tables, correspond to Type in struct acpi_slic_header 7505cf4d733SBob Moore */ 7515cf4d733SBob Moore 7525cf4d733SBob Moore /* 0: Public Key Structure */ 7535cf4d733SBob Moore 7545cf4d733SBob Moore struct acpi_slic_key { 7555cf4d733SBob Moore struct acpi_slic_header header; 7565cf4d733SBob Moore u8 key_type; 7575cf4d733SBob Moore u8 version; 7585cf4d733SBob Moore u16 reserved; 7595cf4d733SBob Moore u32 algorithm; 7605cf4d733SBob Moore char magic[4]; 7615cf4d733SBob Moore u32 bit_length; 7625cf4d733SBob Moore u32 exponent; 7635cf4d733SBob Moore u8 modulus[128]; 7645cf4d733SBob Moore }; 7655cf4d733SBob Moore 7665cf4d733SBob Moore /* 1: Windows Marker Structure */ 7675cf4d733SBob Moore 7685cf4d733SBob Moore struct acpi_slic_marker { 7695cf4d733SBob Moore struct acpi_slic_header header; 7705cf4d733SBob Moore u32 version; 7715cf4d733SBob Moore char oem_id[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ 7725cf4d733SBob Moore char oem_table_id[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ 7735cf4d733SBob Moore char windows_flag[8]; 7745cf4d733SBob Moore u32 slic_version; 7755cf4d733SBob Moore u8 reserved[16]; 7765cf4d733SBob Moore u8 signature[128]; 7775cf4d733SBob Moore }; 7785cf4d733SBob Moore 7795cf4d733SBob Moore /******************************************************************************* 7805cf4d733SBob Moore * 781b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 7826e2d5ebdSBob Moore * Version 1 7836e2d5ebdSBob Moore * 7846e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 7856e2d5ebdSBob Moore * Version 1.00, January 11, 2002 786b24aad44SBob Moore * 787b24aad44SBob Moore ******************************************************************************/ 788b24aad44SBob Moore 789b24aad44SBob Moore struct acpi_table_spcr { 790b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 791b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 792b24aad44SBob Moore u8 reserved[3]; 793b24aad44SBob Moore struct acpi_generic_address serial_port; 794b24aad44SBob Moore u8 interrupt_type; 795b24aad44SBob Moore u8 pc_interrupt; 796b24aad44SBob Moore u32 interrupt; 797b24aad44SBob Moore u8 baud_rate; 798b24aad44SBob Moore u8 parity; 799b24aad44SBob Moore u8 stop_bits; 800b24aad44SBob Moore u8 flow_control; 801b24aad44SBob Moore u8 terminal_type; 802b24aad44SBob Moore u8 reserved1; 803b24aad44SBob Moore u16 pci_device_id; 804b24aad44SBob Moore u16 pci_vendor_id; 805b24aad44SBob Moore u8 pci_bus; 806b24aad44SBob Moore u8 pci_device; 807b24aad44SBob Moore u8 pci_function; 808b24aad44SBob Moore u32 pci_flags; 809b24aad44SBob Moore u8 pci_segment; 810b24aad44SBob Moore u32 reserved2; 811b24aad44SBob Moore }; 812b24aad44SBob Moore 8136e2d5ebdSBob Moore /* Masks for pci_flags field above */ 8146e2d5ebdSBob Moore 8156e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 8166e2d5ebdSBob Moore 817b24aad44SBob Moore /******************************************************************************* 818b24aad44SBob Moore * 819b24aad44SBob Moore * SPMI - Server Platform Management Interface table 8206e2d5ebdSBob Moore * Version 5 8216e2d5ebdSBob Moore * 8226e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 8236e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 8246e2d5ebdSBob Moore * June 12, 2009 markup. 825b24aad44SBob Moore * 826b24aad44SBob Moore ******************************************************************************/ 827b24aad44SBob Moore 828b24aad44SBob Moore struct acpi_table_spmi { 829b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 830b24aad44SBob Moore u8 interface_type; 8316e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 832b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 833b24aad44SBob Moore u8 interrupt_type; 834b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 835b24aad44SBob Moore u8 reserved1; 836b24aad44SBob Moore u8 pci_device_flag; 837b24aad44SBob Moore u32 interrupt; 838b24aad44SBob Moore struct acpi_generic_address ipmi_register; 839b24aad44SBob Moore u8 pci_segment; 840b24aad44SBob Moore u8 pci_bus; 841b24aad44SBob Moore u8 pci_device; 842b24aad44SBob Moore u8 pci_function; 8436e2d5ebdSBob Moore u8 reserved2; 8446e2d5ebdSBob Moore }; 8456e2d5ebdSBob Moore 8466e2d5ebdSBob Moore /* Values for interface_type above */ 8476e2d5ebdSBob Moore 8486e2d5ebdSBob Moore enum acpi_spmi_interface_types { 8496e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 8506e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 8516e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 8526e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 8536e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 8546e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 855b24aad44SBob Moore }; 856b24aad44SBob Moore 857b24aad44SBob Moore /******************************************************************************* 858b24aad44SBob Moore * 859b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 8606e2d5ebdSBob Moore * Version 1 8616e2d5ebdSBob Moore * 8626e2d5ebdSBob Moore * Conforms to "TCG PC Specific Implementation Specification", 8636e2d5ebdSBob Moore * Version 1.1, August 18, 2003 864b24aad44SBob Moore * 865b24aad44SBob Moore ******************************************************************************/ 866b24aad44SBob Moore 867b24aad44SBob Moore struct acpi_table_tcpa { 868b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 869b24aad44SBob Moore u16 reserved; 870b24aad44SBob Moore u32 max_log_length; /* Maximum length for the event log area */ 871b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 872b24aad44SBob Moore }; 873b24aad44SBob Moore 874b24aad44SBob Moore /******************************************************************************* 875b24aad44SBob Moore * 876b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 8776e2d5ebdSBob Moore * Version 1 8786e2d5ebdSBob Moore * 8796e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 8806e2d5ebdSBob Moore * Version 2.3, May 8, 2009 881b24aad44SBob Moore * 882b24aad44SBob Moore ******************************************************************************/ 883b24aad44SBob Moore 884b24aad44SBob Moore struct acpi_table_uefi { 885b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 886b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 887b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 888b24aad44SBob Moore }; 889b24aad44SBob Moore 890b24aad44SBob Moore /******************************************************************************* 891b24aad44SBob Moore * 8926e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 8936e2d5ebdSBob Moore * Version 1 8946e2d5ebdSBob Moore * 8956e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 8966e2d5ebdSBob Moore * 8976e2d5ebdSBob Moore ******************************************************************************/ 8986e2d5ebdSBob Moore 8996e2d5ebdSBob Moore struct acpi_table_waet { 9006e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 9016e2d5ebdSBob Moore u32 flags; 9026e2d5ebdSBob Moore }; 9036e2d5ebdSBob Moore 9046e2d5ebdSBob Moore /* Masks for Flags field above */ 9056e2d5ebdSBob Moore 9066e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 9076e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 9086e2d5ebdSBob Moore 9096e2d5ebdSBob Moore /******************************************************************************* 9106e2d5ebdSBob Moore * 911b24aad44SBob Moore * WDAT - Watchdog Action Table 9126e2d5ebdSBob Moore * Version 1 9136e2d5ebdSBob Moore * 9146e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 9156e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 916b24aad44SBob Moore * 917b24aad44SBob Moore ******************************************************************************/ 918b24aad44SBob Moore 919b24aad44SBob Moore struct acpi_table_wdat { 920b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 921b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 922b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 923b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 924b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 925b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 926b24aad44SBob Moore u8 reserved[3]; 927b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 928b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 929b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 930b24aad44SBob Moore u8 flags; 931b24aad44SBob Moore u8 reserved2[3]; 932b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 933b24aad44SBob Moore }; 934b24aad44SBob Moore 9356e2d5ebdSBob Moore /* Masks for Flags field above */ 9366e2d5ebdSBob Moore 9376e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 9386e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 9396e2d5ebdSBob Moore 940b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 941b24aad44SBob Moore 942b24aad44SBob Moore struct acpi_wdat_entry { 9436e2d5ebdSBob Moore u8 action; 9446e2d5ebdSBob Moore u8 instruction; 9456e2d5ebdSBob Moore u16 reserved; 9466e2d5ebdSBob Moore struct acpi_generic_address register_region; 9476e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 9486e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 949b24aad44SBob Moore }; 950b24aad44SBob Moore 951b24aad44SBob Moore /* Values for Action field above */ 952b24aad44SBob Moore 953b24aad44SBob Moore enum acpi_wdat_actions { 954b24aad44SBob Moore ACPI_WDAT_RESET = 1, 955b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 956b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 957b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 958b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 959b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 960b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 961b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 962b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 963b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 964b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 965b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 966b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 967b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 968b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 969b24aad44SBob Moore }; 970b24aad44SBob Moore 971b24aad44SBob Moore /* Values for Instruction field above */ 972b24aad44SBob Moore 973b24aad44SBob Moore enum acpi_wdat_instructions { 974b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 975b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 976b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 977b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 978b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 979b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 980b24aad44SBob Moore }; 981b24aad44SBob Moore 982b24aad44SBob Moore /******************************************************************************* 983b24aad44SBob Moore * 9849d8b5e7bSBob Moore * WDDT - Watchdog Descriptor Table 9859d8b5e7bSBob Moore * Version 1 9869d8b5e7bSBob Moore * 9879d8b5e7bSBob Moore * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 9889d8b5e7bSBob Moore * Version 001, September 2002 9899d8b5e7bSBob Moore * 9909d8b5e7bSBob Moore ******************************************************************************/ 9919d8b5e7bSBob Moore 9929d8b5e7bSBob Moore struct acpi_table_wddt { 9939d8b5e7bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 9949d8b5e7bSBob Moore u16 spec_version; 9959d8b5e7bSBob Moore u16 table_version; 9969d8b5e7bSBob Moore u16 pci_vendor_id; 9979d8b5e7bSBob Moore struct acpi_generic_address address; 9989d8b5e7bSBob Moore u16 max_count; /* Maximum counter value supported */ 9999d8b5e7bSBob Moore u16 min_count; /* Minimum counter value supported */ 10009d8b5e7bSBob Moore u16 period; 10019d8b5e7bSBob Moore u16 status; 10029d8b5e7bSBob Moore u16 capability; 10039d8b5e7bSBob Moore }; 10049d8b5e7bSBob Moore 10059d8b5e7bSBob Moore /* Flags for Status field above */ 10069d8b5e7bSBob Moore 10079d8b5e7bSBob Moore #define ACPI_WDDT_AVAILABLE (1) 10089d8b5e7bSBob Moore #define ACPI_WDDT_ACTIVE (1<<1) 10099d8b5e7bSBob Moore #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 10109d8b5e7bSBob Moore #define ACPI_WDDT_USER_RESET (1<<11) 10119d8b5e7bSBob Moore #define ACPI_WDDT_WDT_RESET (1<<12) 10129d8b5e7bSBob Moore #define ACPI_WDDT_POWER_FAIL (1<<13) 10139d8b5e7bSBob Moore #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 10149d8b5e7bSBob Moore 10159d8b5e7bSBob Moore /* Flags for Capability field above */ 10169d8b5e7bSBob Moore 10179d8b5e7bSBob Moore #define ACPI_WDDT_AUTO_RESET (1) 10189d8b5e7bSBob Moore #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 10199d8b5e7bSBob Moore 10209d8b5e7bSBob Moore /******************************************************************************* 10219d8b5e7bSBob Moore * 1022b24aad44SBob Moore * WDRT - Watchdog Resource Table 10236e2d5ebdSBob Moore * Version 1 10246e2d5ebdSBob Moore * 10256e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 10266e2d5ebdSBob Moore * Version 1.01, August 28, 2006 1027b24aad44SBob Moore * 1028b24aad44SBob Moore ******************************************************************************/ 1029b24aad44SBob Moore 1030b24aad44SBob Moore struct acpi_table_wdrt { 1031b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 10326e2d5ebdSBob Moore struct acpi_generic_address control_register; 10336e2d5ebdSBob Moore struct acpi_generic_address count_register; 10346e2d5ebdSBob Moore u16 pci_device_id; 10356e2d5ebdSBob Moore u16 pci_vendor_id; 1036b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 1037b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 1038b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 10396e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 10406e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 10416e2d5ebdSBob Moore u8 units; 1042b24aad44SBob Moore }; 1043b24aad44SBob Moore 1044b24aad44SBob Moore /* Reset to default packing */ 1045b24aad44SBob Moore 1046b24aad44SBob Moore #pragma pack() 1047b24aad44SBob Moore 1048b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 1049