1a8357b0cSBob Moore /****************************************************************************** 2a8357b0cSBob Moore * 3a8357b0cSBob Moore * Name: actbl2.h - ACPI Specification Revision 2.0 Tables 4a8357b0cSBob Moore * 5a8357b0cSBob Moore *****************************************************************************/ 6a8357b0cSBob Moore 7a8357b0cSBob Moore /* 8a8357b0cSBob Moore * Copyright (C) 2000 - 2010, 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 */ 69b24aad44SBob Moore #define ACPI_SIG_IBFT "IBFT" /* i_sCSI 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 */ 80b24aad44SBob Moore #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 81b24aad44SBob Moore 824461cf54SBob Moore #ifdef ACPI_UNDEFINED_TABLES 834461cf54SBob Moore /* 844461cf54SBob Moore * These tables have been seen in the field, but no definition has been found 854461cf54SBob Moore */ 864461cf54SBob Moore #define ACPI_SIG_ATKG "ATKG" 874461cf54SBob Moore #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ 884461cf54SBob Moore #define ACPI_SIG_IEIT "IEIT" 894461cf54SBob Moore #endif 904461cf54SBob Moore 91b24aad44SBob Moore /* 92b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 93b24aad44SBob Moore * the tables are provided by the system BIOS. 94b24aad44SBob Moore */ 95b24aad44SBob Moore #pragma pack(1) 96b24aad44SBob Moore 97b24aad44SBob Moore /* 98b24aad44SBob Moore * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 99b24aad44SBob Moore * This is the only type that is even remotely portable. Anything else is not 100b24aad44SBob Moore * portable, so do not use any other bitfield types. 101b24aad44SBob Moore */ 102b24aad44SBob Moore 103b24aad44SBob Moore /******************************************************************************* 104b24aad44SBob Moore * 105b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 1066e2d5ebdSBob Moore * Revision 0x10 107b24aad44SBob Moore * 108b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 109b24aad44SBob Moore * 110b24aad44SBob Moore ******************************************************************************/ 111b24aad44SBob Moore 112b24aad44SBob Moore struct acpi_table_asf { 113b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 114b24aad44SBob Moore }; 115b24aad44SBob Moore 116b24aad44SBob Moore /* ASF subtable header */ 117b24aad44SBob Moore 118b24aad44SBob Moore struct acpi_asf_header { 119b24aad44SBob Moore u8 type; 120b24aad44SBob Moore u8 reserved; 121b24aad44SBob Moore u16 length; 122b24aad44SBob Moore }; 123b24aad44SBob Moore 124b24aad44SBob Moore /* Values for Type field above */ 125b24aad44SBob Moore 126b24aad44SBob Moore enum acpi_asf_type { 127b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 128b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 129b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 130b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 131b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 132b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 133b24aad44SBob Moore }; 134b24aad44SBob Moore 135b24aad44SBob Moore /* 136b24aad44SBob Moore * ASF subtables 137b24aad44SBob Moore */ 138b24aad44SBob Moore 139b24aad44SBob Moore /* 0: ASF Information */ 140b24aad44SBob Moore 141b24aad44SBob Moore struct acpi_asf_info { 142b24aad44SBob Moore struct acpi_asf_header header; 143b24aad44SBob Moore u8 min_reset_value; 144b24aad44SBob Moore u8 min_poll_interval; 145b24aad44SBob Moore u16 system_id; 146b24aad44SBob Moore u32 mfg_id; 147b24aad44SBob Moore u8 flags; 148b24aad44SBob Moore u8 reserved2[3]; 149b24aad44SBob Moore }; 150b24aad44SBob Moore 1516e2d5ebdSBob Moore /* Masks for Flags field above */ 1526e2d5ebdSBob Moore 1536e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1546e2d5ebdSBob Moore 155b24aad44SBob Moore /* 1: ASF Alerts */ 156b24aad44SBob Moore 157b24aad44SBob Moore struct acpi_asf_alert { 158b24aad44SBob Moore struct acpi_asf_header header; 159b24aad44SBob Moore u8 assert_mask; 160b24aad44SBob Moore u8 deassert_mask; 161b24aad44SBob Moore u8 alerts; 162b24aad44SBob Moore u8 data_length; 163b24aad44SBob Moore }; 164b24aad44SBob Moore 165b24aad44SBob Moore struct acpi_asf_alert_data { 166b24aad44SBob Moore u8 address; 167b24aad44SBob Moore u8 command; 168b24aad44SBob Moore u8 mask; 169b24aad44SBob Moore u8 value; 170b24aad44SBob Moore u8 sensor_type; 171b24aad44SBob Moore u8 type; 172b24aad44SBob Moore u8 offset; 173b24aad44SBob Moore u8 source_type; 174b24aad44SBob Moore u8 severity; 175b24aad44SBob Moore u8 sensor_number; 176b24aad44SBob Moore u8 entity; 177b24aad44SBob Moore u8 instance; 178b24aad44SBob Moore }; 179b24aad44SBob Moore 180b24aad44SBob Moore /* 2: ASF Remote Control */ 181b24aad44SBob Moore 182b24aad44SBob Moore struct acpi_asf_remote { 183b24aad44SBob Moore struct acpi_asf_header header; 184b24aad44SBob Moore u8 controls; 185b24aad44SBob Moore u8 data_length; 186b24aad44SBob Moore u16 reserved2; 187b24aad44SBob Moore }; 188b24aad44SBob Moore 189b24aad44SBob Moore struct acpi_asf_control_data { 190b24aad44SBob Moore u8 function; 191b24aad44SBob Moore u8 address; 192b24aad44SBob Moore u8 command; 193b24aad44SBob Moore u8 value; 194b24aad44SBob Moore }; 195b24aad44SBob Moore 196b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 197b24aad44SBob Moore 198b24aad44SBob Moore struct acpi_asf_rmcp { 199b24aad44SBob Moore struct acpi_asf_header header; 200b24aad44SBob Moore u8 capabilities[7]; 201b24aad44SBob Moore u8 completion_code; 202b24aad44SBob Moore u32 enterprise_id; 203b24aad44SBob Moore u8 command; 204b24aad44SBob Moore u16 parameter; 205b24aad44SBob Moore u16 boot_options; 206b24aad44SBob Moore u16 oem_parameters; 207b24aad44SBob Moore }; 208b24aad44SBob Moore 209b24aad44SBob Moore /* 4: ASF Address */ 210b24aad44SBob Moore 211b24aad44SBob Moore struct acpi_asf_address { 212b24aad44SBob Moore struct acpi_asf_header header; 213b24aad44SBob Moore u8 eprom_address; 214b24aad44SBob Moore u8 devices; 215b24aad44SBob Moore }; 216b24aad44SBob Moore 217b24aad44SBob Moore /******************************************************************************* 218b24aad44SBob Moore * 219b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2206e2d5ebdSBob Moore * Version 1 2216e2d5ebdSBob Moore * 2226e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 223b24aad44SBob Moore * 224b24aad44SBob Moore ******************************************************************************/ 225b24aad44SBob Moore 226b24aad44SBob Moore struct acpi_table_boot { 227b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 228b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 229b24aad44SBob Moore u8 reserved[3]; 230b24aad44SBob Moore }; 231b24aad44SBob Moore 232b24aad44SBob Moore /******************************************************************************* 233b24aad44SBob Moore * 234b24aad44SBob Moore * DBGP - Debug Port table 2356e2d5ebdSBob Moore * Version 1 2366e2d5ebdSBob Moore * 2376e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 238b24aad44SBob Moore * 239b24aad44SBob Moore ******************************************************************************/ 240b24aad44SBob Moore 241b24aad44SBob Moore struct acpi_table_dbgp { 242b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 243b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 244b24aad44SBob Moore u8 reserved[3]; 245b24aad44SBob Moore struct acpi_generic_address debug_port; 246b24aad44SBob Moore }; 247b24aad44SBob Moore 248b24aad44SBob Moore /******************************************************************************* 249b24aad44SBob Moore * 250b24aad44SBob Moore * DMAR - DMA Remapping table 2516e2d5ebdSBob Moore * Version 1 2526e2d5ebdSBob Moore * 2536e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 2546e2d5ebdSBob Moore * Version 1.2, Sept. 2008 255b24aad44SBob Moore * 256b24aad44SBob Moore ******************************************************************************/ 257b24aad44SBob Moore 258b24aad44SBob Moore struct acpi_table_dmar { 259b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 260b24aad44SBob Moore u8 width; /* Host Address Width */ 261b24aad44SBob Moore u8 flags; 262b24aad44SBob Moore u8 reserved[10]; 263b24aad44SBob Moore }; 264b24aad44SBob Moore 2656e2d5ebdSBob Moore /* Masks for Flags field above */ 266b24aad44SBob Moore 267b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 268b24aad44SBob Moore 269b24aad44SBob Moore /* DMAR subtable header */ 270b24aad44SBob Moore 271b24aad44SBob Moore struct acpi_dmar_header { 272b24aad44SBob Moore u16 type; 273b24aad44SBob Moore u16 length; 274b24aad44SBob Moore }; 275b24aad44SBob Moore 276b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 277b24aad44SBob Moore 278b24aad44SBob Moore enum acpi_dmar_type { 279b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 280b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 281b24aad44SBob Moore ACPI_DMAR_TYPE_ATSR = 2, 2826e2d5ebdSBob Moore ACPI_DMAR_HARDWARE_AFFINITY = 3, 2836e2d5ebdSBob Moore ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 284b24aad44SBob Moore }; 285b24aad44SBob Moore 2866e2d5ebdSBob Moore /* DMAR Device Scope structure */ 2876e2d5ebdSBob Moore 288b24aad44SBob Moore struct acpi_dmar_device_scope { 289b24aad44SBob Moore u8 entry_type; 290b24aad44SBob Moore u8 length; 291b24aad44SBob Moore u16 reserved; 292b24aad44SBob Moore u8 enumeration_id; 293b24aad44SBob Moore u8 bus; 294b24aad44SBob Moore }; 295b24aad44SBob Moore 296b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */ 297b24aad44SBob Moore 298b24aad44SBob Moore enum acpi_dmar_scope_type { 299b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 300b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 301b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 302b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 303b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 304b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 305b24aad44SBob Moore }; 306b24aad44SBob Moore 307b24aad44SBob Moore struct acpi_dmar_pci_path { 308b24aad44SBob Moore u8 dev; 309b24aad44SBob Moore u8 fn; 310b24aad44SBob Moore }; 311b24aad44SBob Moore 312b24aad44SBob Moore /* 313b24aad44SBob Moore * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 314b24aad44SBob Moore */ 315b24aad44SBob Moore 316b24aad44SBob Moore /* 0: Hardware Unit Definition */ 317b24aad44SBob Moore 318b24aad44SBob Moore struct acpi_dmar_hardware_unit { 319b24aad44SBob Moore struct acpi_dmar_header header; 320b24aad44SBob Moore u8 flags; 321b24aad44SBob Moore u8 reserved; 322b24aad44SBob Moore u16 segment; 323b24aad44SBob Moore u64 address; /* Register Base Address */ 324b24aad44SBob Moore }; 325b24aad44SBob Moore 3266e2d5ebdSBob Moore /* Masks for Flags field above */ 327b24aad44SBob Moore 328b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 329b24aad44SBob Moore 330b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 331b24aad44SBob Moore 332b24aad44SBob Moore struct acpi_dmar_reserved_memory { 333b24aad44SBob Moore struct acpi_dmar_header header; 334b24aad44SBob Moore u16 reserved; 335b24aad44SBob Moore u16 segment; 336b24aad44SBob Moore u64 base_address; /* 4_k aligned base address */ 337b24aad44SBob Moore u64 end_address; /* 4_k aligned limit address */ 338b24aad44SBob Moore }; 339b24aad44SBob Moore 3406e2d5ebdSBob Moore /* Masks for Flags field above */ 341b24aad44SBob Moore 342b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 343b24aad44SBob Moore 344b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 345b24aad44SBob Moore 346b24aad44SBob Moore struct acpi_dmar_atsr { 347b24aad44SBob Moore struct acpi_dmar_header header; 348b24aad44SBob Moore u8 flags; 349b24aad44SBob Moore u8 reserved; 350b24aad44SBob Moore u16 segment; 351b24aad44SBob Moore }; 352b24aad44SBob Moore 3536e2d5ebdSBob Moore /* Masks for Flags field above */ 354b24aad44SBob Moore 355b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 356b24aad44SBob Moore 3576e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 3586e2d5ebdSBob Moore 3596e2d5ebdSBob Moore struct acpi_dmar_rhsa { 3606e2d5ebdSBob Moore struct acpi_dmar_header header; 3616e2d5ebdSBob Moore u32 reserved; 3626e2d5ebdSBob Moore u64 base_address; 3636e2d5ebdSBob Moore u32 proximity_domain; 3646e2d5ebdSBob Moore }; 3656e2d5ebdSBob Moore 366b24aad44SBob Moore /******************************************************************************* 367b24aad44SBob Moore * 368b24aad44SBob Moore * HPET - High Precision Event Timer table 3696e2d5ebdSBob Moore * Version 1 3706e2d5ebdSBob Moore * 3716e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 3726e2d5ebdSBob Moore * Version 1.0a, October 2004 373b24aad44SBob Moore * 374b24aad44SBob Moore ******************************************************************************/ 375b24aad44SBob Moore 376b24aad44SBob Moore struct acpi_table_hpet { 377b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 378b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 379b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 380b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 381b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 382b24aad44SBob Moore u8 flags; 383b24aad44SBob Moore }; 384b24aad44SBob Moore 3856e2d5ebdSBob Moore /* Masks for Flags field above */ 386b24aad44SBob Moore 3876e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 388b24aad44SBob Moore 3896e2d5ebdSBob Moore /* Values for Page Protect flags */ 3906e2d5ebdSBob Moore 3916e2d5ebdSBob Moore enum acpi_hpet_page_protect { 3926e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 3936e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 3946e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 3956e2d5ebdSBob Moore }; 396b24aad44SBob Moore 397b24aad44SBob Moore /******************************************************************************* 398b24aad44SBob Moore * 399b24aad44SBob Moore * IBFT - Boot Firmware Table 4006e2d5ebdSBob Moore * Version 1 4016e2d5ebdSBob Moore * 4026e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 4036e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 4046e2d5ebdSBob Moore * 4056e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 4066e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 407b24aad44SBob Moore * 408b24aad44SBob Moore ******************************************************************************/ 409b24aad44SBob Moore 410b24aad44SBob Moore struct acpi_table_ibft { 411b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 412b24aad44SBob Moore u8 reserved[12]; 413b24aad44SBob Moore }; 414b24aad44SBob Moore 415b24aad44SBob Moore /* IBFT common subtable header */ 416b24aad44SBob Moore 417b24aad44SBob Moore struct acpi_ibft_header { 418b24aad44SBob Moore u8 type; 419b24aad44SBob Moore u8 version; 420b24aad44SBob Moore u16 length; 421b24aad44SBob Moore u8 index; 422b24aad44SBob Moore u8 flags; 423b24aad44SBob Moore }; 424b24aad44SBob Moore 425b24aad44SBob Moore /* Values for Type field above */ 426b24aad44SBob Moore 427b24aad44SBob Moore enum acpi_ibft_type { 428b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 429b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 430b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 431b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 432b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 433b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 434b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 435b24aad44SBob Moore }; 436b24aad44SBob Moore 437b24aad44SBob Moore /* IBFT subtables */ 438b24aad44SBob Moore 439b24aad44SBob Moore struct acpi_ibft_control { 440b24aad44SBob Moore struct acpi_ibft_header header; 441b24aad44SBob Moore u16 extensions; 442b24aad44SBob Moore u16 initiator_offset; 443b24aad44SBob Moore u16 nic0_offset; 444b24aad44SBob Moore u16 target0_offset; 445b24aad44SBob Moore u16 nic1_offset; 446b24aad44SBob Moore u16 target1_offset; 447b24aad44SBob Moore }; 448b24aad44SBob Moore 449b24aad44SBob Moore struct acpi_ibft_initiator { 450b24aad44SBob Moore struct acpi_ibft_header header; 451b24aad44SBob Moore u8 sns_server[16]; 452b24aad44SBob Moore u8 slp_server[16]; 453b24aad44SBob Moore u8 primary_server[16]; 454b24aad44SBob Moore u8 secondary_server[16]; 455b24aad44SBob Moore u16 name_length; 456b24aad44SBob Moore u16 name_offset; 457b24aad44SBob Moore }; 458b24aad44SBob Moore 459b24aad44SBob Moore struct acpi_ibft_nic { 460b24aad44SBob Moore struct acpi_ibft_header header; 461b24aad44SBob Moore u8 ip_address[16]; 462b24aad44SBob Moore u8 subnet_mask_prefix; 463b24aad44SBob Moore u8 origin; 464b24aad44SBob Moore u8 gateway[16]; 465b24aad44SBob Moore u8 primary_dns[16]; 466b24aad44SBob Moore u8 secondary_dns[16]; 467b24aad44SBob Moore u8 dhcp[16]; 468b24aad44SBob Moore u16 vlan; 469b24aad44SBob Moore u8 mac_address[6]; 470b24aad44SBob Moore u16 pci_address; 471b24aad44SBob Moore u16 name_length; 472b24aad44SBob Moore u16 name_offset; 473b24aad44SBob Moore }; 474b24aad44SBob Moore 475b24aad44SBob Moore struct acpi_ibft_target { 476b24aad44SBob Moore struct acpi_ibft_header header; 477b24aad44SBob Moore u8 target_ip_address[16]; 478b24aad44SBob Moore u16 target_ip_socket; 479b24aad44SBob Moore u8 target_boot_lun[8]; 480b24aad44SBob Moore u8 chap_type; 481b24aad44SBob Moore u8 nic_association; 482b24aad44SBob Moore u16 target_name_length; 483b24aad44SBob Moore u16 target_name_offset; 484b24aad44SBob Moore u16 chap_name_length; 485b24aad44SBob Moore u16 chap_name_offset; 486b24aad44SBob Moore u16 chap_secret_length; 487b24aad44SBob Moore u16 chap_secret_offset; 488b24aad44SBob Moore u16 reverse_chap_name_length; 489b24aad44SBob Moore u16 reverse_chap_name_offset; 490b24aad44SBob Moore u16 reverse_chap_secret_length; 491b24aad44SBob Moore u16 reverse_chap_secret_offset; 492b24aad44SBob Moore }; 493b24aad44SBob Moore 494b24aad44SBob Moore /******************************************************************************* 495b24aad44SBob Moore * 4966e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 4976e2d5ebdSBob Moore * Version 1 4986e2d5ebdSBob Moore * 4996e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 5006e2d5ebdSBob Moore * Revision 1.26, February 2009. 5016e2d5ebdSBob Moore * 5026e2d5ebdSBob Moore ******************************************************************************/ 5036e2d5ebdSBob Moore 5046e2d5ebdSBob Moore struct acpi_table_ivrs { 5056e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 5066e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 5076e2d5ebdSBob Moore u64 reserved; 5086e2d5ebdSBob Moore }; 5096e2d5ebdSBob Moore 5106e2d5ebdSBob Moore /* Values for Info field above */ 5116e2d5ebdSBob Moore 5126e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 5136e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 5146e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 5156e2d5ebdSBob Moore 5166e2d5ebdSBob Moore /* IVRS subtable header */ 5176e2d5ebdSBob Moore 5186e2d5ebdSBob Moore struct acpi_ivrs_header { 5196e2d5ebdSBob Moore u8 type; /* Subtable type */ 5206e2d5ebdSBob Moore u8 flags; 5216e2d5ebdSBob Moore u16 length; /* Subtable length */ 5226e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 5236e2d5ebdSBob Moore }; 5246e2d5ebdSBob Moore 5256e2d5ebdSBob Moore /* Values for subtable Type above */ 5266e2d5ebdSBob Moore 5276e2d5ebdSBob Moore enum acpi_ivrs_type { 5286e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 5296e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 5306e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 5316e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 5326e2d5ebdSBob Moore }; 5336e2d5ebdSBob Moore 5346e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 5356e2d5ebdSBob Moore 5366e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 5376e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 5386e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 5396e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 5406e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 5416e2d5ebdSBob Moore 5426e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 5436e2d5ebdSBob Moore 5446e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 5456e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 5466e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 5476e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 5486e2d5ebdSBob Moore 5496e2d5ebdSBob Moore /* 5506e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 5516e2d5ebdSBob Moore */ 5526e2d5ebdSBob Moore 5536e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 5546e2d5ebdSBob Moore 5556e2d5ebdSBob Moore struct acpi_ivrs_hardware { 5566e2d5ebdSBob Moore struct acpi_ivrs_header header; 5576e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 5586e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 5596e2d5ebdSBob Moore u16 pci_segment_group; 5606e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 5616e2d5ebdSBob Moore u32 reserved; 5626e2d5ebdSBob Moore }; 5636e2d5ebdSBob Moore 5646e2d5ebdSBob Moore /* Masks for Info field above */ 5656e2d5ebdSBob Moore 5666e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 5676e2d5ebdSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */ 5686e2d5ebdSBob Moore 5696e2d5ebdSBob Moore /* 5706e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 5716e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 5726e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 5736e2d5ebdSBob Moore * are reserved for future use but not defined. 5746e2d5ebdSBob Moore */ 5756e2d5ebdSBob Moore struct acpi_ivrs_de_header { 5766e2d5ebdSBob Moore u8 type; 5776e2d5ebdSBob Moore u16 id; 5786e2d5ebdSBob Moore u8 data_setting; 5796e2d5ebdSBob Moore }; 5806e2d5ebdSBob Moore 5816e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 5826e2d5ebdSBob Moore 5836e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 5846e2d5ebdSBob Moore 5856e2d5ebdSBob Moore /* Values for device entry Type field above */ 5866e2d5ebdSBob Moore 5876e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 5886e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 5896e2d5ebdSBob Moore 5906e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 5916e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 5926e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 5936e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 5946e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 5956e2d5ebdSBob Moore 5966e2d5ebdSBob Moore /* 8-byte device entries */ 5976e2d5ebdSBob Moore 5986e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 5996e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 6006e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 6016e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 6026e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 6036e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 6046e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 6056e2d5ebdSBob Moore }; 6066e2d5ebdSBob Moore 6076e2d5ebdSBob Moore /* Values for Data field above */ 6086e2d5ebdSBob Moore 6096e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 6106e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 6116e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 6126e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 6136e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 6146e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 6156e2d5ebdSBob Moore 6166e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 6176e2d5ebdSBob Moore 6186e2d5ebdSBob Moore struct acpi_ivrs_device4 { 6196e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6206e2d5ebdSBob Moore }; 6216e2d5ebdSBob Moore 6226e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 6236e2d5ebdSBob Moore 6246e2d5ebdSBob Moore struct acpi_ivrs_device8a { 6256e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6266e2d5ebdSBob Moore u8 reserved1; 6276e2d5ebdSBob Moore u16 used_id; 6286e2d5ebdSBob Moore u8 reserved2; 6296e2d5ebdSBob Moore }; 6306e2d5ebdSBob Moore 6316e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 6326e2d5ebdSBob Moore 6336e2d5ebdSBob Moore struct acpi_ivrs_device8b { 6346e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6356e2d5ebdSBob Moore u32 extended_data; 6366e2d5ebdSBob Moore }; 6376e2d5ebdSBob Moore 6386e2d5ebdSBob Moore /* Values for extended_data above */ 6396e2d5ebdSBob Moore 6406e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 6416e2d5ebdSBob Moore 6426e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 6436e2d5ebdSBob Moore 6446e2d5ebdSBob Moore struct acpi_ivrs_device8c { 6456e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6466e2d5ebdSBob Moore u8 handle; 6476e2d5ebdSBob Moore u16 used_id; 6486e2d5ebdSBob Moore u8 variety; 6496e2d5ebdSBob Moore }; 6506e2d5ebdSBob Moore 6516e2d5ebdSBob Moore /* Values for Variety field above */ 6526e2d5ebdSBob Moore 6536e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 6546e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 6556e2d5ebdSBob Moore 6566e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 6576e2d5ebdSBob Moore 6586e2d5ebdSBob Moore struct acpi_ivrs_memory { 6596e2d5ebdSBob Moore struct acpi_ivrs_header header; 6606e2d5ebdSBob Moore u16 aux_data; 6616e2d5ebdSBob Moore u64 reserved; 6626e2d5ebdSBob Moore u64 start_address; 6636e2d5ebdSBob Moore u64 memory_length; 6646e2d5ebdSBob Moore }; 6656e2d5ebdSBob Moore 6666e2d5ebdSBob Moore /******************************************************************************* 6676e2d5ebdSBob Moore * 668b24aad44SBob Moore * MCFG - PCI Memory Mapped Configuration table and sub-table 6696e2d5ebdSBob Moore * Version 1 6706e2d5ebdSBob Moore * 6716e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 672b24aad44SBob Moore * 673b24aad44SBob Moore ******************************************************************************/ 674b24aad44SBob Moore 675b24aad44SBob Moore struct acpi_table_mcfg { 676b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 677b24aad44SBob Moore u8 reserved[8]; 678b24aad44SBob Moore }; 679b24aad44SBob Moore 680b24aad44SBob Moore /* Subtable */ 681b24aad44SBob Moore 682b24aad44SBob Moore struct acpi_mcfg_allocation { 683b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 684b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 685b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 686b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 687b24aad44SBob Moore u32 reserved; 688b24aad44SBob Moore }; 689b24aad44SBob Moore 690b24aad44SBob Moore /******************************************************************************* 691b24aad44SBob Moore * 6920e264f0bSBob Moore * MCHI - Management Controller Host Interface Table 6930e264f0bSBob Moore * Version 1 6940e264f0bSBob Moore * 6950e264f0bSBob Moore * Conforms to "Management Component Transport Protocol (MCTP) Host 6960e264f0bSBob Moore * Interface Specification", Revision 1.0.0a, October 13, 2009 6970e264f0bSBob Moore * 6980e264f0bSBob Moore ******************************************************************************/ 6990e264f0bSBob Moore 7000e264f0bSBob Moore struct acpi_table_mchi { 7010e264f0bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 7020e264f0bSBob Moore u8 interface_type; 7030e264f0bSBob Moore u8 protocol; 7040e264f0bSBob Moore u64 protocol_data; 7050e264f0bSBob Moore u8 interrupt_type; 7060e264f0bSBob Moore u8 gpe; 7070e264f0bSBob Moore u8 pci_device_flag; 7080e264f0bSBob Moore u32 global_interrupt; 7090e264f0bSBob Moore struct acpi_generic_address control_register; 7100e264f0bSBob Moore u8 pci_segment; 7110e264f0bSBob Moore u8 pci_bus; 7120e264f0bSBob Moore u8 pci_device; 7130e264f0bSBob Moore u8 pci_function; 7140e264f0bSBob Moore }; 7150e264f0bSBob Moore 7160e264f0bSBob Moore /******************************************************************************* 7170e264f0bSBob Moore * 718b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 7196e2d5ebdSBob Moore * Version 1 7206e2d5ebdSBob Moore * 7216e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 7226e2d5ebdSBob Moore * Version 1.00, January 11, 2002 723b24aad44SBob Moore * 724b24aad44SBob Moore ******************************************************************************/ 725b24aad44SBob Moore 726b24aad44SBob Moore struct acpi_table_spcr { 727b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 728b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 729b24aad44SBob Moore u8 reserved[3]; 730b24aad44SBob Moore struct acpi_generic_address serial_port; 731b24aad44SBob Moore u8 interrupt_type; 732b24aad44SBob Moore u8 pc_interrupt; 733b24aad44SBob Moore u32 interrupt; 734b24aad44SBob Moore u8 baud_rate; 735b24aad44SBob Moore u8 parity; 736b24aad44SBob Moore u8 stop_bits; 737b24aad44SBob Moore u8 flow_control; 738b24aad44SBob Moore u8 terminal_type; 739b24aad44SBob Moore u8 reserved1; 740b24aad44SBob Moore u16 pci_device_id; 741b24aad44SBob Moore u16 pci_vendor_id; 742b24aad44SBob Moore u8 pci_bus; 743b24aad44SBob Moore u8 pci_device; 744b24aad44SBob Moore u8 pci_function; 745b24aad44SBob Moore u32 pci_flags; 746b24aad44SBob Moore u8 pci_segment; 747b24aad44SBob Moore u32 reserved2; 748b24aad44SBob Moore }; 749b24aad44SBob Moore 7506e2d5ebdSBob Moore /* Masks for pci_flags field above */ 7516e2d5ebdSBob Moore 7526e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 7536e2d5ebdSBob Moore 754b24aad44SBob Moore /******************************************************************************* 755b24aad44SBob Moore * 756b24aad44SBob Moore * SPMI - Server Platform Management Interface table 7576e2d5ebdSBob Moore * Version 5 7586e2d5ebdSBob Moore * 7596e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 7606e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 7616e2d5ebdSBob Moore * June 12, 2009 markup. 762b24aad44SBob Moore * 763b24aad44SBob Moore ******************************************************************************/ 764b24aad44SBob Moore 765b24aad44SBob Moore struct acpi_table_spmi { 766b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 767b24aad44SBob Moore u8 interface_type; 7686e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 769b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 770b24aad44SBob Moore u8 interrupt_type; 771b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 772b24aad44SBob Moore u8 reserved1; 773b24aad44SBob Moore u8 pci_device_flag; 774b24aad44SBob Moore u32 interrupt; 775b24aad44SBob Moore struct acpi_generic_address ipmi_register; 776b24aad44SBob Moore u8 pci_segment; 777b24aad44SBob Moore u8 pci_bus; 778b24aad44SBob Moore u8 pci_device; 779b24aad44SBob Moore u8 pci_function; 7806e2d5ebdSBob Moore u8 reserved2; 7816e2d5ebdSBob Moore }; 7826e2d5ebdSBob Moore 7836e2d5ebdSBob Moore /* Values for interface_type above */ 7846e2d5ebdSBob Moore 7856e2d5ebdSBob Moore enum acpi_spmi_interface_types { 7866e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 7876e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 7886e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 7896e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 7906e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 7916e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 792b24aad44SBob Moore }; 793b24aad44SBob Moore 794b24aad44SBob Moore /******************************************************************************* 795b24aad44SBob Moore * 796b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 7976e2d5ebdSBob Moore * Version 1 7986e2d5ebdSBob Moore * 7996e2d5ebdSBob Moore * Conforms to "TCG PC Specific Implementation Specification", 8006e2d5ebdSBob Moore * Version 1.1, August 18, 2003 801b24aad44SBob Moore * 802b24aad44SBob Moore ******************************************************************************/ 803b24aad44SBob Moore 804b24aad44SBob Moore struct acpi_table_tcpa { 805b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 806b24aad44SBob Moore u16 reserved; 807b24aad44SBob Moore u32 max_log_length; /* Maximum length for the event log area */ 808b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 809b24aad44SBob Moore }; 810b24aad44SBob Moore 811b24aad44SBob Moore /******************************************************************************* 812b24aad44SBob Moore * 813b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 8146e2d5ebdSBob Moore * Version 1 8156e2d5ebdSBob Moore * 8166e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 8176e2d5ebdSBob Moore * Version 2.3, May 8, 2009 818b24aad44SBob Moore * 819b24aad44SBob Moore ******************************************************************************/ 820b24aad44SBob Moore 821b24aad44SBob Moore struct acpi_table_uefi { 822b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 823b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 824b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 825b24aad44SBob Moore }; 826b24aad44SBob Moore 827b24aad44SBob Moore /******************************************************************************* 828b24aad44SBob Moore * 8296e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 8306e2d5ebdSBob Moore * Version 1 8316e2d5ebdSBob Moore * 8326e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 8336e2d5ebdSBob Moore * 8346e2d5ebdSBob Moore ******************************************************************************/ 8356e2d5ebdSBob Moore 8366e2d5ebdSBob Moore struct acpi_table_waet { 8376e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8386e2d5ebdSBob Moore u32 flags; 8396e2d5ebdSBob Moore }; 8406e2d5ebdSBob Moore 8416e2d5ebdSBob Moore /* Masks for Flags field above */ 8426e2d5ebdSBob Moore 8436e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 8446e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 8456e2d5ebdSBob Moore 8466e2d5ebdSBob Moore /******************************************************************************* 8476e2d5ebdSBob Moore * 848b24aad44SBob Moore * WDAT - Watchdog Action Table 8496e2d5ebdSBob Moore * Version 1 8506e2d5ebdSBob Moore * 8516e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 8526e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 853b24aad44SBob Moore * 854b24aad44SBob Moore ******************************************************************************/ 855b24aad44SBob Moore 856b24aad44SBob Moore struct acpi_table_wdat { 857b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 858b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 859b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 860b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 861b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 862b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 863b24aad44SBob Moore u8 reserved[3]; 864b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 865b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 866b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 867b24aad44SBob Moore u8 flags; 868b24aad44SBob Moore u8 reserved2[3]; 869b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 870b24aad44SBob Moore }; 871b24aad44SBob Moore 8726e2d5ebdSBob Moore /* Masks for Flags field above */ 8736e2d5ebdSBob Moore 8746e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 8756e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 8766e2d5ebdSBob Moore 877b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 878b24aad44SBob Moore 879b24aad44SBob Moore struct acpi_wdat_entry { 8806e2d5ebdSBob Moore u8 action; 8816e2d5ebdSBob Moore u8 instruction; 8826e2d5ebdSBob Moore u16 reserved; 8836e2d5ebdSBob Moore struct acpi_generic_address register_region; 8846e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 8856e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 886b24aad44SBob Moore }; 887b24aad44SBob Moore 888b24aad44SBob Moore /* Values for Action field above */ 889b24aad44SBob Moore 890b24aad44SBob Moore enum acpi_wdat_actions { 891b24aad44SBob Moore ACPI_WDAT_RESET = 1, 892b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 893b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 894b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 895b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 896b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 897b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 898b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 899b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 900b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 901b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 902b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 903b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 904b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 905b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 906b24aad44SBob Moore }; 907b24aad44SBob Moore 908b24aad44SBob Moore /* Values for Instruction field above */ 909b24aad44SBob Moore 910b24aad44SBob Moore enum acpi_wdat_instructions { 911b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 912b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 913b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 914b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 915b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 916b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 917b24aad44SBob Moore }; 918b24aad44SBob Moore 919b24aad44SBob Moore /******************************************************************************* 920b24aad44SBob Moore * 921b24aad44SBob Moore * WDRT - Watchdog Resource Table 9226e2d5ebdSBob Moore * Version 1 9236e2d5ebdSBob Moore * 9246e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 9256e2d5ebdSBob Moore * Version 1.01, August 28, 2006 926b24aad44SBob Moore * 927b24aad44SBob Moore ******************************************************************************/ 928b24aad44SBob Moore 929b24aad44SBob Moore struct acpi_table_wdrt { 930b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 9316e2d5ebdSBob Moore struct acpi_generic_address control_register; 9326e2d5ebdSBob Moore struct acpi_generic_address count_register; 9336e2d5ebdSBob Moore u16 pci_device_id; 9346e2d5ebdSBob Moore u16 pci_vendor_id; 935b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 936b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 937b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 9386e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 9396e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 9406e2d5ebdSBob Moore u8 units; 941b24aad44SBob Moore }; 942b24aad44SBob Moore 943b24aad44SBob Moore /* Reset to default packing */ 944b24aad44SBob Moore 945b24aad44SBob Moore #pragma pack() 946b24aad44SBob Moore 947b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 948