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 */ 72b24aad44SBob Moore #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 73b24aad44SBob Moore #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 74b24aad44SBob Moore #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 75b24aad44SBob Moore #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 76b24aad44SBob Moore #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 776e2d5ebdSBob Moore #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 78b24aad44SBob Moore #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 79b24aad44SBob Moore #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 80b24aad44SBob Moore 81b24aad44SBob Moore /* 82b24aad44SBob Moore * All tables must be byte-packed to match the ACPI specification, since 83b24aad44SBob Moore * the tables are provided by the system BIOS. 84b24aad44SBob Moore */ 85b24aad44SBob Moore #pragma pack(1) 86b24aad44SBob Moore 87b24aad44SBob Moore /* 88b24aad44SBob Moore * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 89b24aad44SBob Moore * This is the only type that is even remotely portable. Anything else is not 90b24aad44SBob Moore * portable, so do not use any other bitfield types. 91b24aad44SBob Moore */ 92b24aad44SBob Moore 93b24aad44SBob Moore /******************************************************************************* 94b24aad44SBob Moore * 95b24aad44SBob Moore * ASF - Alert Standard Format table (Signature "ASF!") 966e2d5ebdSBob Moore * Revision 0x10 97b24aad44SBob Moore * 98b24aad44SBob Moore * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 99b24aad44SBob Moore * 100b24aad44SBob Moore ******************************************************************************/ 101b24aad44SBob Moore 102b24aad44SBob Moore struct acpi_table_asf { 103b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 104b24aad44SBob Moore }; 105b24aad44SBob Moore 106b24aad44SBob Moore /* ASF subtable header */ 107b24aad44SBob Moore 108b24aad44SBob Moore struct acpi_asf_header { 109b24aad44SBob Moore u8 type; 110b24aad44SBob Moore u8 reserved; 111b24aad44SBob Moore u16 length; 112b24aad44SBob Moore }; 113b24aad44SBob Moore 114b24aad44SBob Moore /* Values for Type field above */ 115b24aad44SBob Moore 116b24aad44SBob Moore enum acpi_asf_type { 117b24aad44SBob Moore ACPI_ASF_TYPE_INFO = 0, 118b24aad44SBob Moore ACPI_ASF_TYPE_ALERT = 1, 119b24aad44SBob Moore ACPI_ASF_TYPE_CONTROL = 2, 120b24aad44SBob Moore ACPI_ASF_TYPE_BOOT = 3, 121b24aad44SBob Moore ACPI_ASF_TYPE_ADDRESS = 4, 122b24aad44SBob Moore ACPI_ASF_TYPE_RESERVED = 5 123b24aad44SBob Moore }; 124b24aad44SBob Moore 125b24aad44SBob Moore /* 126b24aad44SBob Moore * ASF subtables 127b24aad44SBob Moore */ 128b24aad44SBob Moore 129b24aad44SBob Moore /* 0: ASF Information */ 130b24aad44SBob Moore 131b24aad44SBob Moore struct acpi_asf_info { 132b24aad44SBob Moore struct acpi_asf_header header; 133b24aad44SBob Moore u8 min_reset_value; 134b24aad44SBob Moore u8 min_poll_interval; 135b24aad44SBob Moore u16 system_id; 136b24aad44SBob Moore u32 mfg_id; 137b24aad44SBob Moore u8 flags; 138b24aad44SBob Moore u8 reserved2[3]; 139b24aad44SBob Moore }; 140b24aad44SBob Moore 1416e2d5ebdSBob Moore /* Masks for Flags field above */ 1426e2d5ebdSBob Moore 1436e2d5ebdSBob Moore #define ACPI_ASF_SMBUS_PROTOCOLS (1) 1446e2d5ebdSBob Moore 145b24aad44SBob Moore /* 1: ASF Alerts */ 146b24aad44SBob Moore 147b24aad44SBob Moore struct acpi_asf_alert { 148b24aad44SBob Moore struct acpi_asf_header header; 149b24aad44SBob Moore u8 assert_mask; 150b24aad44SBob Moore u8 deassert_mask; 151b24aad44SBob Moore u8 alerts; 152b24aad44SBob Moore u8 data_length; 153b24aad44SBob Moore }; 154b24aad44SBob Moore 155b24aad44SBob Moore struct acpi_asf_alert_data { 156b24aad44SBob Moore u8 address; 157b24aad44SBob Moore u8 command; 158b24aad44SBob Moore u8 mask; 159b24aad44SBob Moore u8 value; 160b24aad44SBob Moore u8 sensor_type; 161b24aad44SBob Moore u8 type; 162b24aad44SBob Moore u8 offset; 163b24aad44SBob Moore u8 source_type; 164b24aad44SBob Moore u8 severity; 165b24aad44SBob Moore u8 sensor_number; 166b24aad44SBob Moore u8 entity; 167b24aad44SBob Moore u8 instance; 168b24aad44SBob Moore }; 169b24aad44SBob Moore 170b24aad44SBob Moore /* 2: ASF Remote Control */ 171b24aad44SBob Moore 172b24aad44SBob Moore struct acpi_asf_remote { 173b24aad44SBob Moore struct acpi_asf_header header; 174b24aad44SBob Moore u8 controls; 175b24aad44SBob Moore u8 data_length; 176b24aad44SBob Moore u16 reserved2; 177b24aad44SBob Moore }; 178b24aad44SBob Moore 179b24aad44SBob Moore struct acpi_asf_control_data { 180b24aad44SBob Moore u8 function; 181b24aad44SBob Moore u8 address; 182b24aad44SBob Moore u8 command; 183b24aad44SBob Moore u8 value; 184b24aad44SBob Moore }; 185b24aad44SBob Moore 186b24aad44SBob Moore /* 3: ASF RMCP Boot Options */ 187b24aad44SBob Moore 188b24aad44SBob Moore struct acpi_asf_rmcp { 189b24aad44SBob Moore struct acpi_asf_header header; 190b24aad44SBob Moore u8 capabilities[7]; 191b24aad44SBob Moore u8 completion_code; 192b24aad44SBob Moore u32 enterprise_id; 193b24aad44SBob Moore u8 command; 194b24aad44SBob Moore u16 parameter; 195b24aad44SBob Moore u16 boot_options; 196b24aad44SBob Moore u16 oem_parameters; 197b24aad44SBob Moore }; 198b24aad44SBob Moore 199b24aad44SBob Moore /* 4: ASF Address */ 200b24aad44SBob Moore 201b24aad44SBob Moore struct acpi_asf_address { 202b24aad44SBob Moore struct acpi_asf_header header; 203b24aad44SBob Moore u8 eprom_address; 204b24aad44SBob Moore u8 devices; 205b24aad44SBob Moore }; 206b24aad44SBob Moore 207b24aad44SBob Moore /******************************************************************************* 208b24aad44SBob Moore * 209b24aad44SBob Moore * BOOT - Simple Boot Flag Table 2106e2d5ebdSBob Moore * Version 1 2116e2d5ebdSBob Moore * 2126e2d5ebdSBob Moore * Conforms to the "Simple Boot Flag Specification", Version 2.1 213b24aad44SBob Moore * 214b24aad44SBob Moore ******************************************************************************/ 215b24aad44SBob Moore 216b24aad44SBob Moore struct acpi_table_boot { 217b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 218b24aad44SBob Moore u8 cmos_index; /* Index in CMOS RAM for the boot register */ 219b24aad44SBob Moore u8 reserved[3]; 220b24aad44SBob Moore }; 221b24aad44SBob Moore 222b24aad44SBob Moore /******************************************************************************* 223b24aad44SBob Moore * 224b24aad44SBob Moore * DBGP - Debug Port table 2256e2d5ebdSBob Moore * Version 1 2266e2d5ebdSBob Moore * 2276e2d5ebdSBob Moore * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 228b24aad44SBob Moore * 229b24aad44SBob Moore ******************************************************************************/ 230b24aad44SBob Moore 231b24aad44SBob Moore struct acpi_table_dbgp { 232b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 233b24aad44SBob Moore u8 type; /* 0=full 16550, 1=subset of 16550 */ 234b24aad44SBob Moore u8 reserved[3]; 235b24aad44SBob Moore struct acpi_generic_address debug_port; 236b24aad44SBob Moore }; 237b24aad44SBob Moore 238b24aad44SBob Moore /******************************************************************************* 239b24aad44SBob Moore * 240b24aad44SBob Moore * DMAR - DMA Remapping table 2416e2d5ebdSBob Moore * Version 1 2426e2d5ebdSBob Moore * 2436e2d5ebdSBob Moore * Conforms to "Intel Virtualization Technology for Directed I/O", 2446e2d5ebdSBob Moore * Version 1.2, Sept. 2008 245b24aad44SBob Moore * 246b24aad44SBob Moore ******************************************************************************/ 247b24aad44SBob Moore 248b24aad44SBob Moore struct acpi_table_dmar { 249b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 250b24aad44SBob Moore u8 width; /* Host Address Width */ 251b24aad44SBob Moore u8 flags; 252b24aad44SBob Moore u8 reserved[10]; 253b24aad44SBob Moore }; 254b24aad44SBob Moore 2556e2d5ebdSBob Moore /* Masks for Flags field above */ 256b24aad44SBob Moore 257b24aad44SBob Moore #define ACPI_DMAR_INTR_REMAP (1) 258b24aad44SBob Moore 259b24aad44SBob Moore /* DMAR subtable header */ 260b24aad44SBob Moore 261b24aad44SBob Moore struct acpi_dmar_header { 262b24aad44SBob Moore u16 type; 263b24aad44SBob Moore u16 length; 264b24aad44SBob Moore }; 265b24aad44SBob Moore 266b24aad44SBob Moore /* Values for subtable type in struct acpi_dmar_header */ 267b24aad44SBob Moore 268b24aad44SBob Moore enum acpi_dmar_type { 269b24aad44SBob Moore ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 270b24aad44SBob Moore ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 271b24aad44SBob Moore ACPI_DMAR_TYPE_ATSR = 2, 2726e2d5ebdSBob Moore ACPI_DMAR_HARDWARE_AFFINITY = 3, 2736e2d5ebdSBob Moore ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ 274b24aad44SBob Moore }; 275b24aad44SBob Moore 2766e2d5ebdSBob Moore /* DMAR Device Scope structure */ 2776e2d5ebdSBob Moore 278b24aad44SBob Moore struct acpi_dmar_device_scope { 279b24aad44SBob Moore u8 entry_type; 280b24aad44SBob Moore u8 length; 281b24aad44SBob Moore u16 reserved; 282b24aad44SBob Moore u8 enumeration_id; 283b24aad44SBob Moore u8 bus; 284b24aad44SBob Moore }; 285b24aad44SBob Moore 286b24aad44SBob Moore /* Values for entry_type in struct acpi_dmar_device_scope */ 287b24aad44SBob Moore 288b24aad44SBob Moore enum acpi_dmar_scope_type { 289b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 290b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 291b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 292b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 293b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_HPET = 4, 294b24aad44SBob Moore ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 295b24aad44SBob Moore }; 296b24aad44SBob Moore 297b24aad44SBob Moore struct acpi_dmar_pci_path { 298b24aad44SBob Moore u8 dev; 299b24aad44SBob Moore u8 fn; 300b24aad44SBob Moore }; 301b24aad44SBob Moore 302b24aad44SBob Moore /* 303b24aad44SBob Moore * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 304b24aad44SBob Moore */ 305b24aad44SBob Moore 306b24aad44SBob Moore /* 0: Hardware Unit Definition */ 307b24aad44SBob Moore 308b24aad44SBob Moore struct acpi_dmar_hardware_unit { 309b24aad44SBob Moore struct acpi_dmar_header header; 310b24aad44SBob Moore u8 flags; 311b24aad44SBob Moore u8 reserved; 312b24aad44SBob Moore u16 segment; 313b24aad44SBob Moore u64 address; /* Register Base Address */ 314b24aad44SBob Moore }; 315b24aad44SBob Moore 3166e2d5ebdSBob Moore /* Masks for Flags field above */ 317b24aad44SBob Moore 318b24aad44SBob Moore #define ACPI_DMAR_INCLUDE_ALL (1) 319b24aad44SBob Moore 320b24aad44SBob Moore /* 1: Reserved Memory Defininition */ 321b24aad44SBob Moore 322b24aad44SBob Moore struct acpi_dmar_reserved_memory { 323b24aad44SBob Moore struct acpi_dmar_header header; 324b24aad44SBob Moore u16 reserved; 325b24aad44SBob Moore u16 segment; 326b24aad44SBob Moore u64 base_address; /* 4_k aligned base address */ 327b24aad44SBob Moore u64 end_address; /* 4_k aligned limit address */ 328b24aad44SBob Moore }; 329b24aad44SBob Moore 3306e2d5ebdSBob Moore /* Masks for Flags field above */ 331b24aad44SBob Moore 332b24aad44SBob Moore #define ACPI_DMAR_ALLOW_ALL (1) 333b24aad44SBob Moore 334b24aad44SBob Moore /* 2: Root Port ATS Capability Reporting Structure */ 335b24aad44SBob Moore 336b24aad44SBob Moore struct acpi_dmar_atsr { 337b24aad44SBob Moore struct acpi_dmar_header header; 338b24aad44SBob Moore u8 flags; 339b24aad44SBob Moore u8 reserved; 340b24aad44SBob Moore u16 segment; 341b24aad44SBob Moore }; 342b24aad44SBob Moore 3436e2d5ebdSBob Moore /* Masks for Flags field above */ 344b24aad44SBob Moore 345b24aad44SBob Moore #define ACPI_DMAR_ALL_PORTS (1) 346b24aad44SBob Moore 3476e2d5ebdSBob Moore /* 3: Remapping Hardware Static Affinity Structure */ 3486e2d5ebdSBob Moore 3496e2d5ebdSBob Moore struct acpi_dmar_rhsa { 3506e2d5ebdSBob Moore struct acpi_dmar_header header; 3516e2d5ebdSBob Moore u32 reserved; 3526e2d5ebdSBob Moore u64 base_address; 3536e2d5ebdSBob Moore u32 proximity_domain; 3546e2d5ebdSBob Moore }; 3556e2d5ebdSBob Moore 356b24aad44SBob Moore /******************************************************************************* 357b24aad44SBob Moore * 358b24aad44SBob Moore * HPET - High Precision Event Timer table 3596e2d5ebdSBob Moore * Version 1 3606e2d5ebdSBob Moore * 3616e2d5ebdSBob Moore * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", 3626e2d5ebdSBob Moore * Version 1.0a, October 2004 363b24aad44SBob Moore * 364b24aad44SBob Moore ******************************************************************************/ 365b24aad44SBob Moore 366b24aad44SBob Moore struct acpi_table_hpet { 367b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 368b24aad44SBob Moore u32 id; /* Hardware ID of event timer block */ 369b24aad44SBob Moore struct acpi_generic_address address; /* Address of event timer block */ 370b24aad44SBob Moore u8 sequence; /* HPET sequence number */ 371b24aad44SBob Moore u16 minimum_tick; /* Main counter min tick, periodic mode */ 372b24aad44SBob Moore u8 flags; 373b24aad44SBob Moore }; 374b24aad44SBob Moore 3756e2d5ebdSBob Moore /* Masks for Flags field above */ 376b24aad44SBob Moore 3776e2d5ebdSBob Moore #define ACPI_HPET_PAGE_PROTECT_MASK (3) 378b24aad44SBob Moore 3796e2d5ebdSBob Moore /* Values for Page Protect flags */ 3806e2d5ebdSBob Moore 3816e2d5ebdSBob Moore enum acpi_hpet_page_protect { 3826e2d5ebdSBob Moore ACPI_HPET_NO_PAGE_PROTECT = 0, 3836e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT4 = 1, 3846e2d5ebdSBob Moore ACPI_HPET_PAGE_PROTECT64 = 2 3856e2d5ebdSBob Moore }; 386b24aad44SBob Moore 387b24aad44SBob Moore /******************************************************************************* 388b24aad44SBob Moore * 389b24aad44SBob Moore * IBFT - Boot Firmware Table 3906e2d5ebdSBob Moore * Version 1 3916e2d5ebdSBob Moore * 3926e2d5ebdSBob Moore * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b 3936e2d5ebdSBob Moore * Specification", Version 1.01, March 1, 2007 3946e2d5ebdSBob Moore * 3956e2d5ebdSBob Moore * Note: It appears that this table is not intended to appear in the RSDT/XSDT. 3966e2d5ebdSBob Moore * Therefore, it is not currently supported by the disassembler. 397b24aad44SBob Moore * 398b24aad44SBob Moore ******************************************************************************/ 399b24aad44SBob Moore 400b24aad44SBob Moore struct acpi_table_ibft { 401b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 402b24aad44SBob Moore u8 reserved[12]; 403b24aad44SBob Moore }; 404b24aad44SBob Moore 405b24aad44SBob Moore /* IBFT common subtable header */ 406b24aad44SBob Moore 407b24aad44SBob Moore struct acpi_ibft_header { 408b24aad44SBob Moore u8 type; 409b24aad44SBob Moore u8 version; 410b24aad44SBob Moore u16 length; 411b24aad44SBob Moore u8 index; 412b24aad44SBob Moore u8 flags; 413b24aad44SBob Moore }; 414b24aad44SBob Moore 415b24aad44SBob Moore /* Values for Type field above */ 416b24aad44SBob Moore 417b24aad44SBob Moore enum acpi_ibft_type { 418b24aad44SBob Moore ACPI_IBFT_TYPE_NOT_USED = 0, 419b24aad44SBob Moore ACPI_IBFT_TYPE_CONTROL = 1, 420b24aad44SBob Moore ACPI_IBFT_TYPE_INITIATOR = 2, 421b24aad44SBob Moore ACPI_IBFT_TYPE_NIC = 3, 422b24aad44SBob Moore ACPI_IBFT_TYPE_TARGET = 4, 423b24aad44SBob Moore ACPI_IBFT_TYPE_EXTENSIONS = 5, 424b24aad44SBob Moore ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 425b24aad44SBob Moore }; 426b24aad44SBob Moore 427b24aad44SBob Moore /* IBFT subtables */ 428b24aad44SBob Moore 429b24aad44SBob Moore struct acpi_ibft_control { 430b24aad44SBob Moore struct acpi_ibft_header header; 431b24aad44SBob Moore u16 extensions; 432b24aad44SBob Moore u16 initiator_offset; 433b24aad44SBob Moore u16 nic0_offset; 434b24aad44SBob Moore u16 target0_offset; 435b24aad44SBob Moore u16 nic1_offset; 436b24aad44SBob Moore u16 target1_offset; 437b24aad44SBob Moore }; 438b24aad44SBob Moore 439b24aad44SBob Moore struct acpi_ibft_initiator { 440b24aad44SBob Moore struct acpi_ibft_header header; 441b24aad44SBob Moore u8 sns_server[16]; 442b24aad44SBob Moore u8 slp_server[16]; 443b24aad44SBob Moore u8 primary_server[16]; 444b24aad44SBob Moore u8 secondary_server[16]; 445b24aad44SBob Moore u16 name_length; 446b24aad44SBob Moore u16 name_offset; 447b24aad44SBob Moore }; 448b24aad44SBob Moore 449b24aad44SBob Moore struct acpi_ibft_nic { 450b24aad44SBob Moore struct acpi_ibft_header header; 451b24aad44SBob Moore u8 ip_address[16]; 452b24aad44SBob Moore u8 subnet_mask_prefix; 453b24aad44SBob Moore u8 origin; 454b24aad44SBob Moore u8 gateway[16]; 455b24aad44SBob Moore u8 primary_dns[16]; 456b24aad44SBob Moore u8 secondary_dns[16]; 457b24aad44SBob Moore u8 dhcp[16]; 458b24aad44SBob Moore u16 vlan; 459b24aad44SBob Moore u8 mac_address[6]; 460b24aad44SBob Moore u16 pci_address; 461b24aad44SBob Moore u16 name_length; 462b24aad44SBob Moore u16 name_offset; 463b24aad44SBob Moore }; 464b24aad44SBob Moore 465b24aad44SBob Moore struct acpi_ibft_target { 466b24aad44SBob Moore struct acpi_ibft_header header; 467b24aad44SBob Moore u8 target_ip_address[16]; 468b24aad44SBob Moore u16 target_ip_socket; 469b24aad44SBob Moore u8 target_boot_lun[8]; 470b24aad44SBob Moore u8 chap_type; 471b24aad44SBob Moore u8 nic_association; 472b24aad44SBob Moore u16 target_name_length; 473b24aad44SBob Moore u16 target_name_offset; 474b24aad44SBob Moore u16 chap_name_length; 475b24aad44SBob Moore u16 chap_name_offset; 476b24aad44SBob Moore u16 chap_secret_length; 477b24aad44SBob Moore u16 chap_secret_offset; 478b24aad44SBob Moore u16 reverse_chap_name_length; 479b24aad44SBob Moore u16 reverse_chap_name_offset; 480b24aad44SBob Moore u16 reverse_chap_secret_length; 481b24aad44SBob Moore u16 reverse_chap_secret_offset; 482b24aad44SBob Moore }; 483b24aad44SBob Moore 484b24aad44SBob Moore /******************************************************************************* 485b24aad44SBob Moore * 4866e2d5ebdSBob Moore * IVRS - I/O Virtualization Reporting Structure 4876e2d5ebdSBob Moore * Version 1 4886e2d5ebdSBob Moore * 4896e2d5ebdSBob Moore * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", 4906e2d5ebdSBob Moore * Revision 1.26, February 2009. 4916e2d5ebdSBob Moore * 4926e2d5ebdSBob Moore ******************************************************************************/ 4936e2d5ebdSBob Moore 4946e2d5ebdSBob Moore struct acpi_table_ivrs { 4956e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 4966e2d5ebdSBob Moore u32 info; /* Common virtualization info */ 4976e2d5ebdSBob Moore u64 reserved; 4986e2d5ebdSBob Moore }; 4996e2d5ebdSBob Moore 5006e2d5ebdSBob Moore /* Values for Info field above */ 5016e2d5ebdSBob Moore 5026e2d5ebdSBob Moore #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ 5036e2d5ebdSBob Moore #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ 5046e2d5ebdSBob Moore #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ 5056e2d5ebdSBob Moore 5066e2d5ebdSBob Moore /* IVRS subtable header */ 5076e2d5ebdSBob Moore 5086e2d5ebdSBob Moore struct acpi_ivrs_header { 5096e2d5ebdSBob Moore u8 type; /* Subtable type */ 5106e2d5ebdSBob Moore u8 flags; 5116e2d5ebdSBob Moore u16 length; /* Subtable length */ 5126e2d5ebdSBob Moore u16 device_id; /* ID of IOMMU */ 5136e2d5ebdSBob Moore }; 5146e2d5ebdSBob Moore 5156e2d5ebdSBob Moore /* Values for subtable Type above */ 5166e2d5ebdSBob Moore 5176e2d5ebdSBob Moore enum acpi_ivrs_type { 5186e2d5ebdSBob Moore ACPI_IVRS_TYPE_HARDWARE = 0x10, 5196e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY1 = 0x20, 5206e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY2 = 0x21, 5216e2d5ebdSBob Moore ACPI_IVRS_TYPE_MEMORY3 = 0x22 5226e2d5ebdSBob Moore }; 5236e2d5ebdSBob Moore 5246e2d5ebdSBob Moore /* Masks for Flags field above for IVHD subtable */ 5256e2d5ebdSBob Moore 5266e2d5ebdSBob Moore #define ACPI_IVHD_TT_ENABLE (1) 5276e2d5ebdSBob Moore #define ACPI_IVHD_PASS_PW (1<<1) 5286e2d5ebdSBob Moore #define ACPI_IVHD_RES_PASS_PW (1<<2) 5296e2d5ebdSBob Moore #define ACPI_IVHD_ISOC (1<<3) 5306e2d5ebdSBob Moore #define ACPI_IVHD_IOTLB (1<<4) 5316e2d5ebdSBob Moore 5326e2d5ebdSBob Moore /* Masks for Flags field above for IVMD subtable */ 5336e2d5ebdSBob Moore 5346e2d5ebdSBob Moore #define ACPI_IVMD_UNITY (1) 5356e2d5ebdSBob Moore #define ACPI_IVMD_READ (1<<1) 5366e2d5ebdSBob Moore #define ACPI_IVMD_WRITE (1<<2) 5376e2d5ebdSBob Moore #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) 5386e2d5ebdSBob Moore 5396e2d5ebdSBob Moore /* 5406e2d5ebdSBob Moore * IVRS subtables, correspond to Type in struct acpi_ivrs_header 5416e2d5ebdSBob Moore */ 5426e2d5ebdSBob Moore 5436e2d5ebdSBob Moore /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ 5446e2d5ebdSBob Moore 5456e2d5ebdSBob Moore struct acpi_ivrs_hardware { 5466e2d5ebdSBob Moore struct acpi_ivrs_header header; 5476e2d5ebdSBob Moore u16 capability_offset; /* Offset for IOMMU control fields */ 5486e2d5ebdSBob Moore u64 base_address; /* IOMMU control registers */ 5496e2d5ebdSBob Moore u16 pci_segment_group; 5506e2d5ebdSBob Moore u16 info; /* MSI number and unit ID */ 5516e2d5ebdSBob Moore u32 reserved; 5526e2d5ebdSBob Moore }; 5536e2d5ebdSBob Moore 5546e2d5ebdSBob Moore /* Masks for Info field above */ 5556e2d5ebdSBob Moore 5566e2d5ebdSBob Moore #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ 5576e2d5ebdSBob Moore #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */ 5586e2d5ebdSBob Moore 5596e2d5ebdSBob Moore /* 5606e2d5ebdSBob Moore * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. 5616e2d5ebdSBob Moore * Upper two bits of the Type field are the (encoded) length of the structure. 5626e2d5ebdSBob Moore * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries 5636e2d5ebdSBob Moore * are reserved for future use but not defined. 5646e2d5ebdSBob Moore */ 5656e2d5ebdSBob Moore struct acpi_ivrs_de_header { 5666e2d5ebdSBob Moore u8 type; 5676e2d5ebdSBob Moore u16 id; 5686e2d5ebdSBob Moore u8 data_setting; 5696e2d5ebdSBob Moore }; 5706e2d5ebdSBob Moore 5716e2d5ebdSBob Moore /* Length of device entry is in the top two bits of Type field above */ 5726e2d5ebdSBob Moore 5736e2d5ebdSBob Moore #define ACPI_IVHD_ENTRY_LENGTH 0xC0 5746e2d5ebdSBob Moore 5756e2d5ebdSBob Moore /* Values for device entry Type field above */ 5766e2d5ebdSBob Moore 5776e2d5ebdSBob Moore enum acpi_ivrs_device_entry_type { 5786e2d5ebdSBob Moore /* 4-byte device entries, all use struct acpi_ivrs_device4 */ 5796e2d5ebdSBob Moore 5806e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD4 = 0, 5816e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALL = 1, 5826e2d5ebdSBob Moore ACPI_IVRS_TYPE_SELECT = 2, 5836e2d5ebdSBob Moore ACPI_IVRS_TYPE_START = 3, 5846e2d5ebdSBob Moore ACPI_IVRS_TYPE_END = 4, 5856e2d5ebdSBob Moore 5866e2d5ebdSBob Moore /* 8-byte device entries */ 5876e2d5ebdSBob Moore 5886e2d5ebdSBob Moore ACPI_IVRS_TYPE_PAD8 = 64, 5896e2d5ebdSBob Moore ACPI_IVRS_TYPE_NOT_USED = 65, 5906e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ 5916e2d5ebdSBob Moore ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ 5926e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ 5936e2d5ebdSBob Moore ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ 5946e2d5ebdSBob Moore ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ 5956e2d5ebdSBob Moore }; 5966e2d5ebdSBob Moore 5976e2d5ebdSBob Moore /* Values for Data field above */ 5986e2d5ebdSBob Moore 5996e2d5ebdSBob Moore #define ACPI_IVHD_INIT_PASS (1) 6006e2d5ebdSBob Moore #define ACPI_IVHD_EINT_PASS (1<<1) 6016e2d5ebdSBob Moore #define ACPI_IVHD_NMI_PASS (1<<2) 6026e2d5ebdSBob Moore #define ACPI_IVHD_SYSTEM_MGMT (3<<4) 6036e2d5ebdSBob Moore #define ACPI_IVHD_LINT0_PASS (1<<6) 6046e2d5ebdSBob Moore #define ACPI_IVHD_LINT1_PASS (1<<7) 6056e2d5ebdSBob Moore 6066e2d5ebdSBob Moore /* Types 0-4: 4-byte device entry */ 6076e2d5ebdSBob Moore 6086e2d5ebdSBob Moore struct acpi_ivrs_device4 { 6096e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6106e2d5ebdSBob Moore }; 6116e2d5ebdSBob Moore 6126e2d5ebdSBob Moore /* Types 66-67: 8-byte device entry */ 6136e2d5ebdSBob Moore 6146e2d5ebdSBob Moore struct acpi_ivrs_device8a { 6156e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6166e2d5ebdSBob Moore u8 reserved1; 6176e2d5ebdSBob Moore u16 used_id; 6186e2d5ebdSBob Moore u8 reserved2; 6196e2d5ebdSBob Moore }; 6206e2d5ebdSBob Moore 6216e2d5ebdSBob Moore /* Types 70-71: 8-byte device entry */ 6226e2d5ebdSBob Moore 6236e2d5ebdSBob Moore struct acpi_ivrs_device8b { 6246e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6256e2d5ebdSBob Moore u32 extended_data; 6266e2d5ebdSBob Moore }; 6276e2d5ebdSBob Moore 6286e2d5ebdSBob Moore /* Values for extended_data above */ 6296e2d5ebdSBob Moore 6306e2d5ebdSBob Moore #define ACPI_IVHD_ATS_DISABLED (1<<31) 6316e2d5ebdSBob Moore 6326e2d5ebdSBob Moore /* Type 72: 8-byte device entry */ 6336e2d5ebdSBob Moore 6346e2d5ebdSBob Moore struct acpi_ivrs_device8c { 6356e2d5ebdSBob Moore struct acpi_ivrs_de_header header; 6366e2d5ebdSBob Moore u8 handle; 6376e2d5ebdSBob Moore u16 used_id; 6386e2d5ebdSBob Moore u8 variety; 6396e2d5ebdSBob Moore }; 6406e2d5ebdSBob Moore 6416e2d5ebdSBob Moore /* Values for Variety field above */ 6426e2d5ebdSBob Moore 6436e2d5ebdSBob Moore #define ACPI_IVHD_IOAPIC 1 6446e2d5ebdSBob Moore #define ACPI_IVHD_HPET 2 6456e2d5ebdSBob Moore 6466e2d5ebdSBob Moore /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ 6476e2d5ebdSBob Moore 6486e2d5ebdSBob Moore struct acpi_ivrs_memory { 6496e2d5ebdSBob Moore struct acpi_ivrs_header header; 6506e2d5ebdSBob Moore u16 aux_data; 6516e2d5ebdSBob Moore u64 reserved; 6526e2d5ebdSBob Moore u64 start_address; 6536e2d5ebdSBob Moore u64 memory_length; 6546e2d5ebdSBob Moore }; 6556e2d5ebdSBob Moore 6566e2d5ebdSBob Moore /******************************************************************************* 6576e2d5ebdSBob Moore * 658b24aad44SBob Moore * MCFG - PCI Memory Mapped Configuration table and sub-table 6596e2d5ebdSBob Moore * Version 1 6606e2d5ebdSBob Moore * 6616e2d5ebdSBob Moore * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 662b24aad44SBob Moore * 663b24aad44SBob Moore ******************************************************************************/ 664b24aad44SBob Moore 665b24aad44SBob Moore struct acpi_table_mcfg { 666b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 667b24aad44SBob Moore u8 reserved[8]; 668b24aad44SBob Moore }; 669b24aad44SBob Moore 670b24aad44SBob Moore /* Subtable */ 671b24aad44SBob Moore 672b24aad44SBob Moore struct acpi_mcfg_allocation { 673b24aad44SBob Moore u64 address; /* Base address, processor-relative */ 674b24aad44SBob Moore u16 pci_segment; /* PCI segment group number */ 675b24aad44SBob Moore u8 start_bus_number; /* Starting PCI Bus number */ 676b24aad44SBob Moore u8 end_bus_number; /* Final PCI Bus number */ 677b24aad44SBob Moore u32 reserved; 678b24aad44SBob Moore }; 679b24aad44SBob Moore 680b24aad44SBob Moore /******************************************************************************* 681b24aad44SBob Moore * 682b24aad44SBob Moore * SPCR - Serial Port Console Redirection table 6836e2d5ebdSBob Moore * Version 1 6846e2d5ebdSBob Moore * 6856e2d5ebdSBob Moore * Conforms to "Serial Port Console Redirection Table", 6866e2d5ebdSBob Moore * Version 1.00, January 11, 2002 687b24aad44SBob Moore * 688b24aad44SBob Moore ******************************************************************************/ 689b24aad44SBob Moore 690b24aad44SBob Moore struct acpi_table_spcr { 691b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 692b24aad44SBob Moore u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 693b24aad44SBob Moore u8 reserved[3]; 694b24aad44SBob Moore struct acpi_generic_address serial_port; 695b24aad44SBob Moore u8 interrupt_type; 696b24aad44SBob Moore u8 pc_interrupt; 697b24aad44SBob Moore u32 interrupt; 698b24aad44SBob Moore u8 baud_rate; 699b24aad44SBob Moore u8 parity; 700b24aad44SBob Moore u8 stop_bits; 701b24aad44SBob Moore u8 flow_control; 702b24aad44SBob Moore u8 terminal_type; 703b24aad44SBob Moore u8 reserved1; 704b24aad44SBob Moore u16 pci_device_id; 705b24aad44SBob Moore u16 pci_vendor_id; 706b24aad44SBob Moore u8 pci_bus; 707b24aad44SBob Moore u8 pci_device; 708b24aad44SBob Moore u8 pci_function; 709b24aad44SBob Moore u32 pci_flags; 710b24aad44SBob Moore u8 pci_segment; 711b24aad44SBob Moore u32 reserved2; 712b24aad44SBob Moore }; 713b24aad44SBob Moore 7146e2d5ebdSBob Moore /* Masks for pci_flags field above */ 7156e2d5ebdSBob Moore 7166e2d5ebdSBob Moore #define ACPI_SPCR_DO_NOT_DISABLE (1) 7176e2d5ebdSBob Moore 718b24aad44SBob Moore /******************************************************************************* 719b24aad44SBob Moore * 720b24aad44SBob Moore * SPMI - Server Platform Management Interface table 7216e2d5ebdSBob Moore * Version 5 7226e2d5ebdSBob Moore * 7236e2d5ebdSBob Moore * Conforms to "Intelligent Platform Management Interface Specification 7246e2d5ebdSBob Moore * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 7256e2d5ebdSBob Moore * June 12, 2009 markup. 726b24aad44SBob Moore * 727b24aad44SBob Moore ******************************************************************************/ 728b24aad44SBob Moore 729b24aad44SBob Moore struct acpi_table_spmi { 730b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 731b24aad44SBob Moore u8 interface_type; 7326e2d5ebdSBob Moore u8 reserved; /* Must be 1 */ 733b24aad44SBob Moore u16 spec_revision; /* Version of IPMI */ 734b24aad44SBob Moore u8 interrupt_type; 735b24aad44SBob Moore u8 gpe_number; /* GPE assigned */ 736b24aad44SBob Moore u8 reserved1; 737b24aad44SBob Moore u8 pci_device_flag; 738b24aad44SBob Moore u32 interrupt; 739b24aad44SBob Moore struct acpi_generic_address ipmi_register; 740b24aad44SBob Moore u8 pci_segment; 741b24aad44SBob Moore u8 pci_bus; 742b24aad44SBob Moore u8 pci_device; 743b24aad44SBob Moore u8 pci_function; 7446e2d5ebdSBob Moore u8 reserved2; 7456e2d5ebdSBob Moore }; 7466e2d5ebdSBob Moore 7476e2d5ebdSBob Moore /* Values for interface_type above */ 7486e2d5ebdSBob Moore 7496e2d5ebdSBob Moore enum acpi_spmi_interface_types { 7506e2d5ebdSBob Moore ACPI_SPMI_NOT_USED = 0, 7516e2d5ebdSBob Moore ACPI_SPMI_KEYBOARD = 1, 7526e2d5ebdSBob Moore ACPI_SPMI_SMI = 2, 7536e2d5ebdSBob Moore ACPI_SPMI_BLOCK_TRANSFER = 3, 7546e2d5ebdSBob Moore ACPI_SPMI_SMBUS = 4, 7556e2d5ebdSBob Moore ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 756b24aad44SBob Moore }; 757b24aad44SBob Moore 758b24aad44SBob Moore /******************************************************************************* 759b24aad44SBob Moore * 760b24aad44SBob Moore * TCPA - Trusted Computing Platform Alliance table 7616e2d5ebdSBob Moore * Version 1 7626e2d5ebdSBob Moore * 7636e2d5ebdSBob Moore * Conforms to "TCG PC Specific Implementation Specification", 7646e2d5ebdSBob Moore * Version 1.1, August 18, 2003 765b24aad44SBob Moore * 766b24aad44SBob Moore ******************************************************************************/ 767b24aad44SBob Moore 768b24aad44SBob Moore struct acpi_table_tcpa { 769b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 770b24aad44SBob Moore u16 reserved; 771b24aad44SBob Moore u32 max_log_length; /* Maximum length for the event log area */ 772b24aad44SBob Moore u64 log_address; /* Address of the event log area */ 773b24aad44SBob Moore }; 774b24aad44SBob Moore 775b24aad44SBob Moore /******************************************************************************* 776b24aad44SBob Moore * 777b24aad44SBob Moore * UEFI - UEFI Boot optimization Table 7786e2d5ebdSBob Moore * Version 1 7796e2d5ebdSBob Moore * 7806e2d5ebdSBob Moore * Conforms to "Unified Extensible Firmware Interface Specification", 7816e2d5ebdSBob Moore * Version 2.3, May 8, 2009 782b24aad44SBob Moore * 783b24aad44SBob Moore ******************************************************************************/ 784b24aad44SBob Moore 785b24aad44SBob Moore struct acpi_table_uefi { 786b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 787b24aad44SBob Moore u8 identifier[16]; /* UUID identifier */ 788b24aad44SBob Moore u16 data_offset; /* Offset of remaining data in table */ 789b24aad44SBob Moore }; 790b24aad44SBob Moore 791b24aad44SBob Moore /******************************************************************************* 792b24aad44SBob Moore * 7936e2d5ebdSBob Moore * WAET - Windows ACPI Emulated devices Table 7946e2d5ebdSBob Moore * Version 1 7956e2d5ebdSBob Moore * 7966e2d5ebdSBob Moore * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 7976e2d5ebdSBob Moore * 7986e2d5ebdSBob Moore ******************************************************************************/ 7996e2d5ebdSBob Moore 8006e2d5ebdSBob Moore struct acpi_table_waet { 8016e2d5ebdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8026e2d5ebdSBob Moore u32 flags; 8036e2d5ebdSBob Moore }; 8046e2d5ebdSBob Moore 8056e2d5ebdSBob Moore /* Masks for Flags field above */ 8066e2d5ebdSBob Moore 8076e2d5ebdSBob Moore #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 8086e2d5ebdSBob Moore #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 8096e2d5ebdSBob Moore 8106e2d5ebdSBob Moore /******************************************************************************* 8116e2d5ebdSBob Moore * 812b24aad44SBob Moore * WDAT - Watchdog Action Table 8136e2d5ebdSBob Moore * Version 1 8146e2d5ebdSBob Moore * 8156e2d5ebdSBob Moore * Conforms to "Hardware Watchdog Timers Design Specification", 8166e2d5ebdSBob Moore * Copyright 2006 Microsoft Corporation. 817b24aad44SBob Moore * 818b24aad44SBob Moore ******************************************************************************/ 819b24aad44SBob Moore 820b24aad44SBob Moore struct acpi_table_wdat { 821b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 822b24aad44SBob Moore u32 header_length; /* Watchdog Header Length */ 823b24aad44SBob Moore u16 pci_segment; /* PCI Segment number */ 824b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 825b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 826b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 827b24aad44SBob Moore u8 reserved[3]; 828b24aad44SBob Moore u32 timer_period; /* Period of one timer count (msec) */ 829b24aad44SBob Moore u32 max_count; /* Maximum counter value supported */ 830b24aad44SBob Moore u32 min_count; /* Minimum counter value */ 831b24aad44SBob Moore u8 flags; 832b24aad44SBob Moore u8 reserved2[3]; 833b24aad44SBob Moore u32 entries; /* Number of watchdog entries that follow */ 834b24aad44SBob Moore }; 835b24aad44SBob Moore 8366e2d5ebdSBob Moore /* Masks for Flags field above */ 8376e2d5ebdSBob Moore 8386e2d5ebdSBob Moore #define ACPI_WDAT_ENABLED (1) 8396e2d5ebdSBob Moore #define ACPI_WDAT_STOPPED 0x80 8406e2d5ebdSBob Moore 841b24aad44SBob Moore /* WDAT Instruction Entries (actions) */ 842b24aad44SBob Moore 843b24aad44SBob Moore struct acpi_wdat_entry { 8446e2d5ebdSBob Moore u8 action; 8456e2d5ebdSBob Moore u8 instruction; 8466e2d5ebdSBob Moore u16 reserved; 8476e2d5ebdSBob Moore struct acpi_generic_address register_region; 8486e2d5ebdSBob Moore u32 value; /* Value used with Read/Write register */ 8496e2d5ebdSBob Moore u32 mask; /* Bitmask required for this register instruction */ 850b24aad44SBob Moore }; 851b24aad44SBob Moore 852b24aad44SBob Moore /* Values for Action field above */ 853b24aad44SBob Moore 854b24aad44SBob Moore enum acpi_wdat_actions { 855b24aad44SBob Moore ACPI_WDAT_RESET = 1, 856b24aad44SBob Moore ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 857b24aad44SBob Moore ACPI_WDAT_GET_COUNTDOWN = 5, 858b24aad44SBob Moore ACPI_WDAT_SET_COUNTDOWN = 6, 859b24aad44SBob Moore ACPI_WDAT_GET_RUNNING_STATE = 8, 860b24aad44SBob Moore ACPI_WDAT_SET_RUNNING_STATE = 9, 861b24aad44SBob Moore ACPI_WDAT_GET_STOPPED_STATE = 10, 862b24aad44SBob Moore ACPI_WDAT_SET_STOPPED_STATE = 11, 863b24aad44SBob Moore ACPI_WDAT_GET_REBOOT = 16, 864b24aad44SBob Moore ACPI_WDAT_SET_REBOOT = 17, 865b24aad44SBob Moore ACPI_WDAT_GET_SHUTDOWN = 18, 866b24aad44SBob Moore ACPI_WDAT_SET_SHUTDOWN = 19, 867b24aad44SBob Moore ACPI_WDAT_GET_STATUS = 32, 868b24aad44SBob Moore ACPI_WDAT_SET_STATUS = 33, 869b24aad44SBob Moore ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 870b24aad44SBob Moore }; 871b24aad44SBob Moore 872b24aad44SBob Moore /* Values for Instruction field above */ 873b24aad44SBob Moore 874b24aad44SBob Moore enum acpi_wdat_instructions { 875b24aad44SBob Moore ACPI_WDAT_READ_VALUE = 0, 876b24aad44SBob Moore ACPI_WDAT_READ_COUNTDOWN = 1, 877b24aad44SBob Moore ACPI_WDAT_WRITE_VALUE = 2, 878b24aad44SBob Moore ACPI_WDAT_WRITE_COUNTDOWN = 3, 879b24aad44SBob Moore ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 880b24aad44SBob Moore ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 881b24aad44SBob Moore }; 882b24aad44SBob Moore 883b24aad44SBob Moore /******************************************************************************* 884b24aad44SBob Moore * 885b24aad44SBob Moore * WDRT - Watchdog Resource Table 8866e2d5ebdSBob Moore * Version 1 8876e2d5ebdSBob Moore * 8886e2d5ebdSBob Moore * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 8896e2d5ebdSBob Moore * Version 1.01, August 28, 2006 890b24aad44SBob Moore * 891b24aad44SBob Moore ******************************************************************************/ 892b24aad44SBob Moore 893b24aad44SBob Moore struct acpi_table_wdrt { 894b24aad44SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 8956e2d5ebdSBob Moore struct acpi_generic_address control_register; 8966e2d5ebdSBob Moore struct acpi_generic_address count_register; 8976e2d5ebdSBob Moore u16 pci_device_id; 8986e2d5ebdSBob Moore u16 pci_vendor_id; 899b24aad44SBob Moore u8 pci_bus; /* PCI Bus number */ 900b24aad44SBob Moore u8 pci_device; /* PCI Device number */ 901b24aad44SBob Moore u8 pci_function; /* PCI Function number */ 9026e2d5ebdSBob Moore u8 pci_segment; /* PCI Segment number */ 9036e2d5ebdSBob Moore u16 max_count; /* Maximum counter value supported */ 9046e2d5ebdSBob Moore u8 units; 905b24aad44SBob Moore }; 906b24aad44SBob Moore 907b24aad44SBob Moore /* Reset to default packing */ 908b24aad44SBob Moore 909b24aad44SBob Moore #pragma pack() 910b24aad44SBob Moore 911b24aad44SBob Moore #endif /* __ACTBL2_H__ */ 912