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 82b24aad44SBob Moore /* 83b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 84b24aad44SBob Moore * the tables are provided by the system BIOS. 85b24aad44SBob Moore */ 86b24aad44SBob Moore #pragma pack(1) 87b24aad44SBob Moore 88b24aad44SBob Moore /* 89b24aad44SBob Moore * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 90b24aad44SBob Moore * This is the only type that is even remotely portable. Anything else is not 91b24aad44SBob Moore * portable, so do not use any other bitfield types. 92b24aad44SBob Moore */ 93b24aad44SBob Moore 94b24aad44SBob Moore /******************************************************************************* 95b24aad44SBob Moore * 96b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 976e2d5ebdSBob Moore * Revision 0x10 98b24aad44SBob Moore * 99b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 100b24aad44SBob Moore * 101b24aad44SBob Moore ******************************************************************************/ 102b24aad44SBob Moore 103b24aad44SBob Moore struct acpi_table_asf { 104b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 105b24aad44SBob Moore }; 106b24aad44SBob Moore 107b24aad44SBob Moore /* ASF subtable header */ 108b24aad44SBob Moore 109b24aad44SBob Moore struct acpi_asf_header { 110b24aad44SBob Moore u8 type; 111b24aad44SBob Moore u8 reserved; 112b24aad44SBob Moore u16 length; 113b24aad44SBob Moore }; 114b24aad44SBob Moore 115b24aad44SBob Moore /* Values for Type field above */ 116b24aad44SBob Moore 117b24aad44SBob Moore enum acpi_asf_type { 118b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 119b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 120b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 121b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 122b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 123b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 124b24aad44SBob Moore }; 125b24aad44SBob Moore 126b24aad44SBob Moore /* 127b24aad44SBob Moore * ASF subtables 128b24aad44SBob Moore */ 129b24aad44SBob Moore 130b24aad44SBob Moore /* 0: ASF Information */ 131b24aad44SBob Moore 132b24aad44SBob Moore struct acpi_asf_info { 133b24aad44SBob Moore struct acpi_asf_header header; 134b24aad44SBob Moore u8 min_reset_value; 135b24aad44SBob Moore u8 min_poll_interval; 136b24aad44SBob Moore u16 system_id; 137b24aad44SBob Moore u32 mfg_id; 138b24aad44SBob Moore u8 flags; 139b24aad44SBob Moore u8 reserved2[3]; 140b24aad44SBob Moore }; 141b24aad44SBob Moore 1426e2d5ebdSBob Moore /* Masks for Flags field above */ 1436e2d5ebdSBob Moore 1446e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1456e2d5ebdSBob Moore 146b24aad44SBob Moore /* 1: ASF Alerts */ 147b24aad44SBob Moore 148b24aad44SBob Moore struct acpi_asf_alert { 149b24aad44SBob Moore struct acpi_asf_header header; 150b24aad44SBob Moore u8 assert_mask; 151b24aad44SBob Moore u8 deassert_mask; 152b24aad44SBob Moore u8 alerts; 153b24aad44SBob Moore u8 data_length; 154b24aad44SBob Moore }; 155b24aad44SBob Moore 156b24aad44SBob Moore struct acpi_asf_alert_data { 157b24aad44SBob Moore u8 address; 158b24aad44SBob Moore u8 command; 159b24aad44SBob Moore u8 mask; 160b24aad44SBob Moore u8 value; 161b24aad44SBob Moore u8 sensor_type; 162b24aad44SBob Moore u8 type; 163b24aad44SBob Moore u8 offset; 164b24aad44SBob Moore u8 source_type; 165b24aad44SBob Moore u8 severity; 166b24aad44SBob Moore u8 sensor_number; 167b24aad44SBob Moore u8 entity; 168b24aad44SBob Moore u8 instance; 169b24aad44SBob Moore }; 170b24aad44SBob Moore 171b24aad44SBob Moore /* 2: ASF Remote Control */ 172b24aad44SBob Moore 173b24aad44SBob Moore struct acpi_asf_remote { 174b24aad44SBob Moore struct acpi_asf_header header; 175b24aad44SBob Moore u8 controls; 176b24aad44SBob Moore u8 data_length; 177b24aad44SBob Moore u16 reserved2; 178b24aad44SBob Moore }; 179b24aad44SBob Moore 180b24aad44SBob Moore struct acpi_asf_control_data { 181b24aad44SBob Moore u8 function; 182b24aad44SBob Moore u8 address; 183b24aad44SBob Moore u8 command; 184b24aad44SBob Moore u8 value; 185b24aad44SBob Moore }; 186b24aad44SBob Moore 187b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 188b24aad44SBob Moore 189b24aad44SBob Moore struct acpi_asf_rmcp { 190b24aad44SBob Moore struct acpi_asf_header header; 191b24aad44SBob Moore u8 capabilities[7]; 192b24aad44SBob Moore u8 completion_code; 193b24aad44SBob Moore u32 enterprise_id; 194b24aad44SBob Moore u8 command; 195b24aad44SBob Moore u16 parameter; 196b24aad44SBob Moore u16 boot_options; 197b24aad44SBob Moore u16 oem_parameters; 198b24aad44SBob Moore }; 199b24aad44SBob Moore 200b24aad44SBob Moore /* 4: ASF Address */ 201b24aad44SBob Moore 202b24aad44SBob Moore struct acpi_asf_address { 203b24aad44SBob Moore struct acpi_asf_header header; 204b24aad44SBob Moore u8 eprom_address; 205b24aad44SBob Moore u8 devices; 206b24aad44SBob Moore }; 207b24aad44SBob Moore 208b24aad44SBob Moore /******************************************************************************* 209b24aad44SBob Moore * 210b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2116e2d5ebdSBob Moore * Version 1 2126e2d5ebdSBob Moore * 2136e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 214b24aad44SBob Moore * 215b24aad44SBob Moore ******************************************************************************/ 216b24aad44SBob Moore 217b24aad44SBob Moore struct acpi_table_boot { 218b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 219b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 220b24aad44SBob Moore u8 reserved[3]; 221b24aad44SBob Moore }; 222b24aad44SBob Moore 223b24aad44SBob Moore /******************************************************************************* 224b24aad44SBob Moore * 225b24aad44SBob Moore * DBGP - Debug Port table 2266e2d5ebdSBob Moore * Version 1 2276e2d5ebdSBob Moore * 2286e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 229b24aad44SBob Moore * 230b24aad44SBob Moore ******************************************************************************/ 231b24aad44SBob Moore 232b24aad44SBob Moore struct acpi_table_dbgp { 233b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 234b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 235b24aad44SBob Moore u8 reserved[3]; 236b24aad44SBob Moore struct acpi_generic_address debug_port; 237b24aad44SBob Moore }; 238b24aad44SBob Moore 239b24aad44SBob Moore /******************************************************************************* 240b24aad44SBob Moore * 241b24aad44SBob Moore * DMAR - DMA Remapping table 2426e2d5ebdSBob Moore * Version 1 2436e2d5ebdSBob Moore * 2446e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 2456e2d5ebdSBob Moore * Version 1.2, Sept. 2008 246b24aad44SBob Moore * 247b24aad44SBob Moore ******************************************************************************/ 248b24aad44SBob Moore 249b24aad44SBob Moore struct acpi_table_dmar { 250b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 251b24aad44SBob Moore u8 width; /* Host Address Width */ 252b24aad44SBob Moore u8 flags; 253b24aad44SBob Moore u8 reserved[10]; 254b24aad44SBob Moore }; 255b24aad44SBob Moore 2566e2d5ebdSBob Moore /* Masks for Flags field above */ 257b24aad44SBob Moore 258b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 259b24aad44SBob Moore 260b24aad44SBob Moore /* DMAR subtable header */ 261b24aad44SBob Moore 262b24aad44SBob Moore struct acpi_dmar_header { 263b24aad44SBob Moore u16 type; 264b24aad44SBob Moore u16 length; 265b24aad44SBob Moore }; 266b24aad44SBob Moore 267b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 268b24aad44SBob Moore 269b24aad44SBob Moore enum acpi_dmar_type { 270b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 271b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 272b24aad44SBob Moore ACPI_DMAR_TYPE_ATSR = 2, 2736e2d5ebdSBob Moore ACPI_DMAR_HARDWARE_AFFINITY = 3, 2746e2d5ebdSBob Moore ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 275b24aad44SBob Moore }; 276b24aad44SBob Moore 2776e2d5ebdSBob Moore /* DMAR Device Scope structure */ 2786e2d5ebdSBob Moore 279b24aad44SBob Moore struct acpi_dmar_device_scope { 280b24aad44SBob Moore u8 entry_type; 281b24aad44SBob Moore u8 length; 282b24aad44SBob Moore u16 reserved; 283b24aad44SBob Moore u8 enumeration_id; 284b24aad44SBob Moore u8 bus; 285b24aad44SBob Moore }; 286b24aad44SBob Moore 287b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */ 288b24aad44SBob Moore 289b24aad44SBob Moore enum acpi_dmar_scope_type { 290b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 291b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 292b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 293b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 294b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 295b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 296b24aad44SBob Moore }; 297b24aad44SBob Moore 298b24aad44SBob Moore struct acpi_dmar_pci_path { 299b24aad44SBob Moore u8 dev; 300b24aad44SBob Moore u8 fn; 301b24aad44SBob Moore }; 302b24aad44SBob Moore 303b24aad44SBob Moore /* 304b24aad44SBob Moore * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 305b24aad44SBob Moore */ 306b24aad44SBob Moore 307b24aad44SBob Moore /* 0: Hardware Unit Definition */ 308b24aad44SBob Moore 309b24aad44SBob Moore struct acpi_dmar_hardware_unit { 310b24aad44SBob Moore struct acpi_dmar_header header; 311b24aad44SBob Moore u8 flags; 312b24aad44SBob Moore u8 reserved; 313b24aad44SBob Moore u16 segment; 314b24aad44SBob Moore u64 address; /* Register Base Address */ 315b24aad44SBob Moore }; 316b24aad44SBob Moore 3176e2d5ebdSBob Moore /* Masks for Flags field above */ 318b24aad44SBob Moore 319b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 320b24aad44SBob Moore 321b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 322b24aad44SBob Moore 323b24aad44SBob Moore struct acpi_dmar_reserved_memory { 324b24aad44SBob Moore struct acpi_dmar_header header; 325b24aad44SBob Moore u16 reserved; 326b24aad44SBob Moore u16 segment; 327b24aad44SBob Moore u64 base_address; /* 4_k aligned base address */ 328b24aad44SBob Moore u64 end_address; /* 4_k aligned limit address */ 329b24aad44SBob Moore }; 330b24aad44SBob Moore 3316e2d5ebdSBob Moore /* Masks for Flags field above */ 332b24aad44SBob Moore 333b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 334b24aad44SBob Moore 335b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 336b24aad44SBob Moore 337b24aad44SBob Moore struct acpi_dmar_atsr { 338b24aad44SBob Moore struct acpi_dmar_header header; 339b24aad44SBob Moore u8 flags; 340b24aad44SBob Moore u8 reserved; 341b24aad44SBob Moore u16 segment; 342b24aad44SBob Moore }; 343b24aad44SBob Moore 3446e2d5ebdSBob Moore /* Masks for Flags field above */ 345b24aad44SBob Moore 346b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 347b24aad44SBob Moore 3486e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 3496e2d5ebdSBob Moore 3506e2d5ebdSBob Moore struct acpi_dmar_rhsa { 3516e2d5ebdSBob Moore struct acpi_dmar_header header; 3526e2d5ebdSBob Moore u32 reserved; 3536e2d5ebdSBob Moore u64 base_address; 3546e2d5ebdSBob Moore u32 proximity_domain; 3556e2d5ebdSBob Moore }; 3566e2d5ebdSBob Moore 357b24aad44SBob Moore /******************************************************************************* 358b24aad44SBob Moore * 359b24aad44SBob Moore * HPET - High Precision Event Timer table 3606e2d5ebdSBob Moore * Version 1 3616e2d5ebdSBob Moore * 3626e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 3636e2d5ebdSBob Moore * Version 1.0a, October 2004 364b24aad44SBob Moore * 365b24aad44SBob Moore ******************************************************************************/ 366b24aad44SBob Moore 367b24aad44SBob Moore struct acpi_table_hpet { 368b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 369b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 370b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 371b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 372b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 373b24aad44SBob Moore u8 flags; 374b24aad44SBob Moore }; 375b24aad44SBob Moore 3766e2d5ebdSBob Moore /* Masks for Flags field above */ 377b24aad44SBob Moore 3786e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 379b24aad44SBob Moore 3806e2d5ebdSBob Moore /* Values for Page Protect flags */ 3816e2d5ebdSBob Moore 3826e2d5ebdSBob Moore enum acpi_hpet_page_protect { 3836e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 3846e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 3856e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 3866e2d5ebdSBob Moore }; 387b24aad44SBob Moore 388b24aad44SBob Moore /******************************************************************************* 389b24aad44SBob Moore * 390b24aad44SBob Moore * IBFT - Boot Firmware Table 3916e2d5ebdSBob Moore * Version 1 3926e2d5ebdSBob Moore * 3936e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 3946e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 3956e2d5ebdSBob Moore * 3966e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 3976e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 398b24aad44SBob Moore * 399b24aad44SBob Moore ******************************************************************************/ 400b24aad44SBob Moore 401b24aad44SBob Moore struct acpi_table_ibft { 402b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 403b24aad44SBob Moore u8 reserved[12]; 404b24aad44SBob Moore }; 405b24aad44SBob Moore 406b24aad44SBob Moore /* IBFT common subtable header */ 407b24aad44SBob Moore 408b24aad44SBob Moore struct acpi_ibft_header { 409b24aad44SBob Moore u8 type; 410b24aad44SBob Moore u8 version; 411b24aad44SBob Moore u16 length; 412b24aad44SBob Moore u8 index; 413b24aad44SBob Moore u8 flags; 414b24aad44SBob Moore }; 415b24aad44SBob Moore 416b24aad44SBob Moore /* Values for Type field above */ 417b24aad44SBob Moore 418b24aad44SBob Moore enum acpi_ibft_type { 419b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 420b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 421b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 422b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 423b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 424b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 425b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 426b24aad44SBob Moore }; 427b24aad44SBob Moore 428b24aad44SBob Moore /* IBFT subtables */ 429b24aad44SBob Moore 430b24aad44SBob Moore struct acpi_ibft_control { 431b24aad44SBob Moore struct acpi_ibft_header header; 432b24aad44SBob Moore u16 extensions; 433b24aad44SBob Moore u16 initiator_offset; 434b24aad44SBob Moore u16 nic0_offset; 435b24aad44SBob Moore u16 target0_offset; 436b24aad44SBob Moore u16 nic1_offset; 437b24aad44SBob Moore u16 target1_offset; 438b24aad44SBob Moore }; 439b24aad44SBob Moore 440b24aad44SBob Moore struct acpi_ibft_initiator { 441b24aad44SBob Moore struct acpi_ibft_header header; 442b24aad44SBob Moore u8 sns_server[16]; 443b24aad44SBob Moore u8 slp_server[16]; 444b24aad44SBob Moore u8 primary_server[16]; 445b24aad44SBob Moore u8 secondary_server[16]; 446b24aad44SBob Moore u16 name_length; 447b24aad44SBob Moore u16 name_offset; 448b24aad44SBob Moore }; 449b24aad44SBob Moore 450b24aad44SBob Moore struct acpi_ibft_nic { 451b24aad44SBob Moore struct acpi_ibft_header header; 452b24aad44SBob Moore u8 ip_address[16]; 453b24aad44SBob Moore u8 subnet_mask_prefix; 454b24aad44SBob Moore u8 origin; 455b24aad44SBob Moore u8 gateway[16]; 456b24aad44SBob Moore u8 primary_dns[16]; 457b24aad44SBob Moore u8 secondary_dns[16]; 458b24aad44SBob Moore u8 dhcp[16]; 459b24aad44SBob Moore u16 vlan; 460b24aad44SBob Moore u8 mac_address[6]; 461b24aad44SBob Moore u16 pci_address; 462b24aad44SBob Moore u16 name_length; 463b24aad44SBob Moore u16 name_offset; 464b24aad44SBob Moore }; 465b24aad44SBob Moore 466b24aad44SBob Moore struct acpi_ibft_target { 467b24aad44SBob Moore struct acpi_ibft_header header; 468b24aad44SBob Moore u8 target_ip_address[16]; 469b24aad44SBob Moore u16 target_ip_socket; 470b24aad44SBob Moore u8 target_boot_lun[8]; 471b24aad44SBob Moore u8 chap_type; 472b24aad44SBob Moore u8 nic_association; 473b24aad44SBob Moore u16 target_name_length; 474b24aad44SBob Moore u16 target_name_offset; 475b24aad44SBob Moore u16 chap_name_length; 476b24aad44SBob Moore u16 chap_name_offset; 477b24aad44SBob Moore u16 chap_secret_length; 478b24aad44SBob Moore u16 chap_secret_offset; 479b24aad44SBob Moore u16 reverse_chap_name_length; 480b24aad44SBob Moore u16 reverse_chap_name_offset; 481b24aad44SBob Moore u16 reverse_chap_secret_length; 482b24aad44SBob Moore u16 reverse_chap_secret_offset; 483b24aad44SBob Moore }; 484b24aad44SBob Moore 485b24aad44SBob Moore /******************************************************************************* 486b24aad44SBob Moore * 4876e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 4886e2d5ebdSBob Moore * Version 1 4896e2d5ebdSBob Moore * 4906e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 4916e2d5ebdSBob Moore * Revision 1.26, February 2009. 4926e2d5ebdSBob Moore * 4936e2d5ebdSBob Moore ******************************************************************************/ 4946e2d5ebdSBob Moore 4956e2d5ebdSBob Moore struct acpi_table_ivrs { 4966e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 4976e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 4986e2d5ebdSBob Moore u64 reserved; 4996e2d5ebdSBob Moore }; 5006e2d5ebdSBob Moore 5016e2d5ebdSBob Moore /* Values for Info field above */ 5026e2d5ebdSBob Moore 5036e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 5046e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 5056e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 5066e2d5ebdSBob Moore 5076e2d5ebdSBob Moore /* IVRS subtable header */ 5086e2d5ebdSBob Moore 5096e2d5ebdSBob Moore struct acpi_ivrs_header { 5106e2d5ebdSBob Moore u8 type; /* Subtable type */ 5116e2d5ebdSBob Moore u8 flags; 5126e2d5ebdSBob Moore u16 length; /* Subtable length */ 5136e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 5146e2d5ebdSBob Moore }; 5156e2d5ebdSBob Moore 5166e2d5ebdSBob Moore /* Values for subtable Type above */ 5176e2d5ebdSBob Moore 5186e2d5ebdSBob Moore enum acpi_ivrs_type { 5196e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 5206e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 5216e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 5226e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 5236e2d5ebdSBob Moore }; 5246e2d5ebdSBob Moore 5256e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 5266e2d5ebdSBob Moore 5276e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 5286e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 5296e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 5306e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 5316e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 5326e2d5ebdSBob Moore 5336e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 5346e2d5ebdSBob Moore 5356e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 5366e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 5376e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 5386e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 5396e2d5ebdSBob Moore 5406e2d5ebdSBob Moore /* 5416e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 5426e2d5ebdSBob Moore */ 5436e2d5ebdSBob Moore 5446e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 5456e2d5ebdSBob Moore 5466e2d5ebdSBob Moore struct acpi_ivrs_hardware { 5476e2d5ebdSBob Moore struct acpi_ivrs_header header; 5486e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 5496e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 5506e2d5ebdSBob Moore u16 pci_segment_group; 5516e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 5526e2d5ebdSBob Moore u32 reserved; 5536e2d5ebdSBob Moore }; 5546e2d5ebdSBob Moore 5556e2d5ebdSBob Moore /* Masks for Info field above */ 5566e2d5ebdSBob Moore 5576e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 5586e2d5ebdSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */ 5596e2d5ebdSBob Moore 5606e2d5ebdSBob Moore /* 5616e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 5626e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 5636e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 5646e2d5ebdSBob Moore * are reserved for future use but not defined. 5656e2d5ebdSBob Moore */ 5666e2d5ebdSBob Moore struct acpi_ivrs_de_header { 5676e2d5ebdSBob Moore u8 type; 5686e2d5ebdSBob Moore u16 id; 5696e2d5ebdSBob Moore u8 data_setting; 5706e2d5ebdSBob Moore }; 5716e2d5ebdSBob Moore 5726e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 5736e2d5ebdSBob Moore 5746e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 5756e2d5ebdSBob Moore 5766e2d5ebdSBob Moore /* Values for device entry Type field above */ 5776e2d5ebdSBob Moore 5786e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 5796e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 5806e2d5ebdSBob Moore 5816e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 5826e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 5836e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 5846e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 5856e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 5866e2d5ebdSBob Moore 5876e2d5ebdSBob Moore /* 8-byte device entries */ 5886e2d5ebdSBob Moore 5896e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 5906e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 5916e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 5926e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 5936e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 5946e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 5956e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 5966e2d5ebdSBob Moore }; 5976e2d5ebdSBob Moore 5986e2d5ebdSBob Moore /* Values for Data field above */ 5996e2d5ebdSBob Moore 6006e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 6016e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 6026e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 6036e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 6046e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 6056e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 6066e2d5ebdSBob Moore 6076e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 6086e2d5ebdSBob Moore 6096e2d5ebdSBob Moore struct acpi_ivrs_device4 { 6106e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6116e2d5ebdSBob Moore }; 6126e2d5ebdSBob Moore 6136e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 6146e2d5ebdSBob Moore 6156e2d5ebdSBob Moore struct acpi_ivrs_device8a { 6166e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6176e2d5ebdSBob Moore u8 reserved1; 6186e2d5ebdSBob Moore u16 used_id; 6196e2d5ebdSBob Moore u8 reserved2; 6206e2d5ebdSBob Moore }; 6216e2d5ebdSBob Moore 6226e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 6236e2d5ebdSBob Moore 6246e2d5ebdSBob Moore struct acpi_ivrs_device8b { 6256e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6266e2d5ebdSBob Moore u32 extended_data; 6276e2d5ebdSBob Moore }; 6286e2d5ebdSBob Moore 6296e2d5ebdSBob Moore /* Values for extended_data above */ 6306e2d5ebdSBob Moore 6316e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 6326e2d5ebdSBob Moore 6336e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 6346e2d5ebdSBob Moore 6356e2d5ebdSBob Moore struct acpi_ivrs_device8c { 6366e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6376e2d5ebdSBob Moore u8 handle; 6386e2d5ebdSBob Moore u16 used_id; 6396e2d5ebdSBob Moore u8 variety; 6406e2d5ebdSBob Moore }; 6416e2d5ebdSBob Moore 6426e2d5ebdSBob Moore /* Values for Variety field above */ 6436e2d5ebdSBob Moore 6446e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 6456e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 6466e2d5ebdSBob Moore 6476e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 6486e2d5ebdSBob Moore 6496e2d5ebdSBob Moore struct acpi_ivrs_memory { 6506e2d5ebdSBob Moore struct acpi_ivrs_header header; 6516e2d5ebdSBob Moore u16 aux_data; 6526e2d5ebdSBob Moore u64 reserved; 6536e2d5ebdSBob Moore u64 start_address; 6546e2d5ebdSBob Moore u64 memory_length; 6556e2d5ebdSBob Moore }; 6566e2d5ebdSBob Moore 6576e2d5ebdSBob Moore /******************************************************************************* 6586e2d5ebdSBob Moore * 659b24aad44SBob Moore * MCFG - PCI Memory Mapped Configuration table and sub-table 6606e2d5ebdSBob Moore * Version 1 6616e2d5ebdSBob Moore * 6626e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 663b24aad44SBob Moore * 664b24aad44SBob Moore ******************************************************************************/ 665b24aad44SBob Moore 666b24aad44SBob Moore struct acpi_table_mcfg { 667b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 668b24aad44SBob Moore u8 reserved[8]; 669b24aad44SBob Moore }; 670b24aad44SBob Moore 671b24aad44SBob Moore /* Subtable */ 672b24aad44SBob Moore 673b24aad44SBob Moore struct acpi_mcfg_allocation { 674b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 675b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 676b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 677b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 678b24aad44SBob Moore u32 reserved; 679b24aad44SBob Moore }; 680b24aad44SBob Moore 681b24aad44SBob Moore /******************************************************************************* 682b24aad44SBob Moore * 6830e264f0bSBob Moore * MCHI - Management Controller Host Interface Table 6840e264f0bSBob Moore * Version 1 6850e264f0bSBob Moore * 6860e264f0bSBob Moore * Conforms to "Management Component Transport Protocol (MCTP) Host 6870e264f0bSBob Moore * Interface Specification", Revision 1.0.0a, October 13, 2009 6880e264f0bSBob Moore * 6890e264f0bSBob Moore ******************************************************************************/ 6900e264f0bSBob Moore 6910e264f0bSBob Moore struct acpi_table_mchi { 6920e264f0bSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 6930e264f0bSBob Moore u8 interface_type; 6940e264f0bSBob Moore u8 protocol; 6950e264f0bSBob Moore u64 protocol_data; 6960e264f0bSBob Moore u8 interrupt_type; 6970e264f0bSBob Moore u8 gpe; 6980e264f0bSBob Moore u8 pci_device_flag; 6990e264f0bSBob Moore u32 global_interrupt; 7000e264f0bSBob Moore struct acpi_generic_address control_register; 7010e264f0bSBob Moore u8 pci_segment; 7020e264f0bSBob Moore u8 pci_bus; 7030e264f0bSBob Moore u8 pci_device; 7040e264f0bSBob Moore u8 pci_function; 7050e264f0bSBob Moore }; 7060e264f0bSBob Moore 7070e264f0bSBob Moore /******************************************************************************* 7080e264f0bSBob Moore * 709b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 7106e2d5ebdSBob Moore * Version 1 7116e2d5ebdSBob Moore * 7126e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 7136e2d5ebdSBob Moore * Version 1.00, January 11, 2002 714b24aad44SBob Moore * 715b24aad44SBob Moore ******************************************************************************/ 716b24aad44SBob Moore 717b24aad44SBob Moore struct acpi_table_spcr { 718b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 719b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 720b24aad44SBob Moore u8 reserved[3]; 721b24aad44SBob Moore struct acpi_generic_address serial_port; 722b24aad44SBob Moore u8 interrupt_type; 723b24aad44SBob Moore u8 pc_interrupt; 724b24aad44SBob Moore u32 interrupt; 725b24aad44SBob Moore u8 baud_rate; 726b24aad44SBob Moore u8 parity; 727b24aad44SBob Moore u8 stop_bits; 728b24aad44SBob Moore u8 flow_control; 729b24aad44SBob Moore u8 terminal_type; 730b24aad44SBob Moore u8 reserved1; 731b24aad44SBob Moore u16 pci_device_id; 732b24aad44SBob Moore u16 pci_vendor_id; 733b24aad44SBob Moore u8 pci_bus; 734b24aad44SBob Moore u8 pci_device; 735b24aad44SBob Moore u8 pci_function; 736b24aad44SBob Moore u32 pci_flags; 737b24aad44SBob Moore u8 pci_segment; 738b24aad44SBob Moore u32 reserved2; 739b24aad44SBob Moore }; 740b24aad44SBob Moore 7416e2d5ebdSBob Moore /* Masks for pci_flags field above */ 7426e2d5ebdSBob Moore 7436e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 7446e2d5ebdSBob Moore 745b24aad44SBob Moore /******************************************************************************* 746b24aad44SBob Moore * 747b24aad44SBob Moore * SPMI - Server Platform Management Interface table 7486e2d5ebdSBob Moore * Version 5 7496e2d5ebdSBob Moore * 7506e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 7516e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 7526e2d5ebdSBob Moore * June 12, 2009 markup. 753b24aad44SBob Moore * 754b24aad44SBob Moore ******************************************************************************/ 755b24aad44SBob Moore 756b24aad44SBob Moore struct acpi_table_spmi { 757b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 758b24aad44SBob Moore u8 interface_type; 7596e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 760b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 761b24aad44SBob Moore u8 interrupt_type; 762b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 763b24aad44SBob Moore u8 reserved1; 764b24aad44SBob Moore u8 pci_device_flag; 765b24aad44SBob Moore u32 interrupt; 766b24aad44SBob Moore struct acpi_generic_address ipmi_register; 767b24aad44SBob Moore u8 pci_segment; 768b24aad44SBob Moore u8 pci_bus; 769b24aad44SBob Moore u8 pci_device; 770b24aad44SBob Moore u8 pci_function; 7716e2d5ebdSBob Moore u8 reserved2; 7726e2d5ebdSBob Moore }; 7736e2d5ebdSBob Moore 7746e2d5ebdSBob Moore /* Values for interface_type above */ 7756e2d5ebdSBob Moore 7766e2d5ebdSBob Moore enum acpi_spmi_interface_types { 7776e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 7786e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 7796e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 7806e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 7816e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 7826e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 783b24aad44SBob Moore }; 784b24aad44SBob Moore 785b24aad44SBob Moore /******************************************************************************* 786b24aad44SBob Moore * 787b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 7886e2d5ebdSBob Moore * Version 1 7896e2d5ebdSBob Moore * 7906e2d5ebdSBob Moore * Conforms to "TCG PC Specific Implementation Specification", 7916e2d5ebdSBob Moore * Version 1.1, August 18, 2003 792b24aad44SBob Moore * 793b24aad44SBob Moore ******************************************************************************/ 794b24aad44SBob Moore 795b24aad44SBob Moore struct acpi_table_tcpa { 796b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 797b24aad44SBob Moore u16 reserved; 798b24aad44SBob Moore u32 max_log_length; /* Maximum length for the event log area */ 799b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 800b24aad44SBob Moore }; 801b24aad44SBob Moore 802b24aad44SBob Moore /******************************************************************************* 803b24aad44SBob Moore * 804b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 8056e2d5ebdSBob Moore * Version 1 8066e2d5ebdSBob Moore * 8076e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 8086e2d5ebdSBob Moore * Version 2.3, May 8, 2009 809b24aad44SBob Moore * 810b24aad44SBob Moore ******************************************************************************/ 811b24aad44SBob Moore 812b24aad44SBob Moore struct acpi_table_uefi { 813b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 814b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 815b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 816b24aad44SBob Moore }; 817b24aad44SBob Moore 818b24aad44SBob Moore /******************************************************************************* 819b24aad44SBob Moore * 8206e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 8216e2d5ebdSBob Moore * Version 1 8226e2d5ebdSBob Moore * 8236e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 8246e2d5ebdSBob Moore * 8256e2d5ebdSBob Moore ******************************************************************************/ 8266e2d5ebdSBob Moore 8276e2d5ebdSBob Moore struct acpi_table_waet { 8286e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8296e2d5ebdSBob Moore u32 flags; 8306e2d5ebdSBob Moore }; 8316e2d5ebdSBob Moore 8326e2d5ebdSBob Moore /* Masks for Flags field above */ 8336e2d5ebdSBob Moore 8346e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 8356e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 8366e2d5ebdSBob Moore 8376e2d5ebdSBob Moore /******************************************************************************* 8386e2d5ebdSBob Moore * 839b24aad44SBob Moore * WDAT - Watchdog Action Table 8406e2d5ebdSBob Moore * Version 1 8416e2d5ebdSBob Moore * 8426e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 8436e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 844b24aad44SBob Moore * 845b24aad44SBob Moore ******************************************************************************/ 846b24aad44SBob Moore 847b24aad44SBob Moore struct acpi_table_wdat { 848b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 849b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 850b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 851b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 852b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 853b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 854b24aad44SBob Moore u8 reserved[3]; 855b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 856b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 857b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 858b24aad44SBob Moore u8 flags; 859b24aad44SBob Moore u8 reserved2[3]; 860b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 861b24aad44SBob Moore }; 862b24aad44SBob Moore 8636e2d5ebdSBob Moore /* Masks for Flags field above */ 8646e2d5ebdSBob Moore 8656e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 8666e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 8676e2d5ebdSBob Moore 868b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 869b24aad44SBob Moore 870b24aad44SBob Moore struct acpi_wdat_entry { 8716e2d5ebdSBob Moore u8 action; 8726e2d5ebdSBob Moore u8 instruction; 8736e2d5ebdSBob Moore u16 reserved; 8746e2d5ebdSBob Moore struct acpi_generic_address register_region; 8756e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 8766e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 877b24aad44SBob Moore }; 878b24aad44SBob Moore 879b24aad44SBob Moore /* Values for Action field above */ 880b24aad44SBob Moore 881b24aad44SBob Moore enum acpi_wdat_actions { 882b24aad44SBob Moore ACPI_WDAT_RESET = 1, 883b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 884b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 885b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 886b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 887b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 888b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 889b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 890b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 891b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 892b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 893b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 894b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 895b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 896b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 897b24aad44SBob Moore }; 898b24aad44SBob Moore 899b24aad44SBob Moore /* Values for Instruction field above */ 900b24aad44SBob Moore 901b24aad44SBob Moore enum acpi_wdat_instructions { 902b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 903b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 904b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 905b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 906b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 907b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 908b24aad44SBob Moore }; 909b24aad44SBob Moore 910b24aad44SBob Moore /******************************************************************************* 911b24aad44SBob Moore * 912b24aad44SBob Moore * WDRT - Watchdog Resource Table 9136e2d5ebdSBob Moore * Version 1 9146e2d5ebdSBob Moore * 9156e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 9166e2d5ebdSBob Moore * Version 1.01, August 28, 2006 917b24aad44SBob Moore * 918b24aad44SBob Moore ******************************************************************************/ 919b24aad44SBob Moore 920b24aad44SBob Moore struct acpi_table_wdrt { 921b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 9226e2d5ebdSBob Moore struct acpi_generic_address control_register; 9236e2d5ebdSBob Moore struct acpi_generic_address count_register; 9246e2d5ebdSBob Moore u16 pci_device_id; 9256e2d5ebdSBob Moore u16 pci_vendor_id; 926b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 927b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 928b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 9296e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 9306e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 9316e2d5ebdSBob Moore u8 units; 932b24aad44SBob Moore }; 933b24aad44SBob Moore 934b24aad44SBob Moore /* Reset to default packing */ 935b24aad44SBob Moore 936b24aad44SBob Moore #pragma pack() 937b24aad44SBob Moore 938b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 939