| Bob Moore | a8357b0 | 2010-01-22 19:07:36 +0800 | [diff] [blame] | 1 | /****************************************************************************** | 
 | 2 |  * | 
 | 3 |  * Name: actbl2.h - ACPI Specification Revision 2.0 Tables | 
 | 4 |  * | 
 | 5 |  *****************************************************************************/ | 
 | 6 |  | 
 | 7 | /* | 
 | 8 |  * Copyright (C) 2000 - 2010, Intel Corp. | 
 | 9 |  * All rights reserved. | 
 | 10 |  * | 
 | 11 |  * Redistribution and use in source and binary forms, with or without | 
 | 12 |  * modification, are permitted provided that the following conditions | 
 | 13 |  * are met: | 
 | 14 |  * 1. Redistributions of source code must retain the above copyright | 
 | 15 |  *    notice, this list of conditions, and the following disclaimer, | 
 | 16 |  *    without modification. | 
 | 17 |  * 2. Redistributions in binary form must reproduce at minimum a disclaimer | 
 | 18 |  *    substantially similar to the "NO WARRANTY" disclaimer below | 
 | 19 |  *    ("Disclaimer") and any redistribution must be conditioned upon | 
 | 20 |  *    including a substantially similar Disclaimer requirement for further | 
 | 21 |  *    binary redistribution. | 
 | 22 |  * 3. Neither the names of the above-listed copyright holders nor the names | 
 | 23 |  *    of any contributors may be used to endorse or promote products derived | 
 | 24 |  *    from this software without specific prior written permission. | 
 | 25 |  * | 
 | 26 |  * Alternatively, this software may be distributed under the terms of the | 
 | 27 |  * GNU General Public License ("GPL") version 2 as published by the Free | 
 | 28 |  * Software Foundation. | 
 | 29 |  * | 
 | 30 |  * NO WARRANTY | 
 | 31 |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
 | 32 |  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
 | 33 |  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR | 
 | 34 |  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
 | 35 |  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
 | 36 |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 
 | 37 |  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 
 | 38 |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | 
 | 39 |  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING | 
 | 40 |  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
 | 41 |  * POSSIBILITY OF SUCH DAMAGES. | 
 | 42 |  */ | 
 | 43 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 44 | #ifndef __ACTBL2_H__ | 
 | 45 | #define __ACTBL2_H__ | 
 | 46 |  | 
 | 47 | /******************************************************************************* | 
 | 48 |  * | 
 | 49 |  * Additional ACPI Tables (2) | 
 | 50 |  * | 
 | 51 |  * These tables are not consumed directly by the ACPICA subsystem, but are | 
 | 52 |  * included here to support device drivers and the AML disassembler. | 
 | 53 |  * | 
 | 54 |  * The tables in this file are defined by third-party specifications, and are | 
 | 55 |  * not defined directly by the ACPI specification itself. | 
 | 56 |  * | 
 | 57 |  ******************************************************************************/ | 
 | 58 |  | 
 | 59 | /* | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 60 |  * Values for description table header signatures for tables defined in this | 
 | 61 |  * file. Useful because they make it more difficult to inadvertently type in | 
 | 62 |  * the wrong signature. | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 63 |  */ | 
 | 64 | #define ACPI_SIG_ASF            "ASF!"	/* Alert Standard Format table */ | 
 | 65 | #define ACPI_SIG_BOOT           "BOOT"	/* Simple Boot Flag Table */ | 
 | 66 | #define ACPI_SIG_DBGP           "DBGP"	/* Debug Port table */ | 
 | 67 | #define ACPI_SIG_DMAR           "DMAR"	/* DMA Remapping table */ | 
 | 68 | #define ACPI_SIG_HPET           "HPET"	/* High Precision Event Timer table */ | 
 | 69 | #define ACPI_SIG_IBFT           "IBFT"	/* i_sCSI Boot Firmware Table */ | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 70 | #define ACPI_SIG_IVRS           "IVRS"	/* I/O Virtualization Reporting Structure */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 71 | #define ACPI_SIG_MCFG           "MCFG"	/* PCI Memory Mapped Configuration table */ | 
| Bob Moore | 0e264f0 | 2010-03-03 16:30:35 +0800 | [diff] [blame] | 72 | #define ACPI_SIG_MCHI           "MCHI"	/* Management Controller Host Interface table */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 73 | #define ACPI_SIG_SLIC           "SLIC"	/* Software Licensing Description Table */ | 
 | 74 | #define ACPI_SIG_SPCR           "SPCR"	/* Serial Port Console Redirection table */ | 
 | 75 | #define ACPI_SIG_SPMI           "SPMI"	/* Server Platform Management Interface table */ | 
 | 76 | #define ACPI_SIG_TCPA           "TCPA"	/* Trusted Computing Platform Alliance table */ | 
 | 77 | #define ACPI_SIG_UEFI           "UEFI"	/* Uefi Boot Optimization Table */ | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 78 | #define ACPI_SIG_WAET           "WAET"	/* Windows ACPI Emulated devices Table */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 79 | #define ACPI_SIG_WDAT           "WDAT"	/* Watchdog Action Table */ | 
| Bob Moore | 9d8b5e7 | 2010-07-06 09:58:11 +0800 | [diff] [blame] | 80 | #define ACPI_SIG_WDDT           "WDDT"	/* Watchdog Timer Description Table */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 81 | #define ACPI_SIG_WDRT           "WDRT"	/* Watchdog Resource Table */ | 
 | 82 |  | 
| Bob Moore | 4461cf5 | 2010-05-31 09:22:12 +0800 | [diff] [blame] | 83 | #ifdef ACPI_UNDEFINED_TABLES | 
 | 84 | /* | 
 | 85 |  * These tables have been seen in the field, but no definition has been found | 
 | 86 |  */ | 
 | 87 | #define ACPI_SIG_ATKG           "ATKG" | 
 | 88 | #define ACPI_SIG_GSCI           "GSCI"	/* GMCH SCI table */ | 
 | 89 | #define ACPI_SIG_IEIT           "IEIT" | 
 | 90 | #endif | 
 | 91 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 92 | /* | 
 | 93 |  * All tables must be byte-packed to match the ACPI specification, since | 
 | 94 |  * the tables are provided by the system BIOS. | 
 | 95 |  */ | 
 | 96 | #pragma pack(1) | 
 | 97 |  | 
 | 98 | /* | 
 | 99 |  * Note about bitfields: The u8 type is used for bitfields in ACPI tables. | 
 | 100 |  * This is the only type that is even remotely portable. Anything else is not | 
 | 101 |  * portable, so do not use any other bitfield types. | 
 | 102 |  */ | 
 | 103 |  | 
 | 104 | /******************************************************************************* | 
 | 105 |  * | 
 | 106 |  * ASF - Alert Standard Format table (Signature "ASF!") | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 107 |  *       Revision 0x10 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 108 |  * | 
 | 109 |  * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 | 
 | 110 |  * | 
 | 111 |  ******************************************************************************/ | 
 | 112 |  | 
 | 113 | struct acpi_table_asf { | 
 | 114 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 115 | }; | 
 | 116 |  | 
 | 117 | /* ASF subtable header */ | 
 | 118 |  | 
 | 119 | struct acpi_asf_header { | 
 | 120 | 	u8 type; | 
 | 121 | 	u8 reserved; | 
 | 122 | 	u16 length; | 
 | 123 | }; | 
 | 124 |  | 
 | 125 | /* Values for Type field above */ | 
 | 126 |  | 
 | 127 | enum acpi_asf_type { | 
 | 128 | 	ACPI_ASF_TYPE_INFO = 0, | 
 | 129 | 	ACPI_ASF_TYPE_ALERT = 1, | 
 | 130 | 	ACPI_ASF_TYPE_CONTROL = 2, | 
 | 131 | 	ACPI_ASF_TYPE_BOOT = 3, | 
 | 132 | 	ACPI_ASF_TYPE_ADDRESS = 4, | 
 | 133 | 	ACPI_ASF_TYPE_RESERVED = 5 | 
 | 134 | }; | 
 | 135 |  | 
 | 136 | /* | 
 | 137 |  * ASF subtables | 
 | 138 |  */ | 
 | 139 |  | 
 | 140 | /* 0: ASF Information */ | 
 | 141 |  | 
 | 142 | struct acpi_asf_info { | 
 | 143 | 	struct acpi_asf_header header; | 
 | 144 | 	u8 min_reset_value; | 
 | 145 | 	u8 min_poll_interval; | 
 | 146 | 	u16 system_id; | 
 | 147 | 	u32 mfg_id; | 
 | 148 | 	u8 flags; | 
 | 149 | 	u8 reserved2[3]; | 
 | 150 | }; | 
 | 151 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 152 | /* Masks for Flags field above */ | 
 | 153 |  | 
 | 154 | #define ACPI_ASF_SMBUS_PROTOCOLS    (1) | 
 | 155 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 156 | /* 1: ASF Alerts */ | 
 | 157 |  | 
 | 158 | struct acpi_asf_alert { | 
 | 159 | 	struct acpi_asf_header header; | 
 | 160 | 	u8 assert_mask; | 
 | 161 | 	u8 deassert_mask; | 
 | 162 | 	u8 alerts; | 
 | 163 | 	u8 data_length; | 
 | 164 | }; | 
 | 165 |  | 
 | 166 | struct acpi_asf_alert_data { | 
 | 167 | 	u8 address; | 
 | 168 | 	u8 command; | 
 | 169 | 	u8 mask; | 
 | 170 | 	u8 value; | 
 | 171 | 	u8 sensor_type; | 
 | 172 | 	u8 type; | 
 | 173 | 	u8 offset; | 
 | 174 | 	u8 source_type; | 
 | 175 | 	u8 severity; | 
 | 176 | 	u8 sensor_number; | 
 | 177 | 	u8 entity; | 
 | 178 | 	u8 instance; | 
 | 179 | }; | 
 | 180 |  | 
 | 181 | /* 2: ASF Remote Control */ | 
 | 182 |  | 
 | 183 | struct acpi_asf_remote { | 
 | 184 | 	struct acpi_asf_header header; | 
 | 185 | 	u8 controls; | 
 | 186 | 	u8 data_length; | 
 | 187 | 	u16 reserved2; | 
 | 188 | }; | 
 | 189 |  | 
 | 190 | struct acpi_asf_control_data { | 
 | 191 | 	u8 function; | 
 | 192 | 	u8 address; | 
 | 193 | 	u8 command; | 
 | 194 | 	u8 value; | 
 | 195 | }; | 
 | 196 |  | 
 | 197 | /* 3: ASF RMCP Boot Options */ | 
 | 198 |  | 
 | 199 | struct acpi_asf_rmcp { | 
 | 200 | 	struct acpi_asf_header header; | 
 | 201 | 	u8 capabilities[7]; | 
 | 202 | 	u8 completion_code; | 
 | 203 | 	u32 enterprise_id; | 
 | 204 | 	u8 command; | 
 | 205 | 	u16 parameter; | 
 | 206 | 	u16 boot_options; | 
 | 207 | 	u16 oem_parameters; | 
 | 208 | }; | 
 | 209 |  | 
 | 210 | /* 4: ASF Address */ | 
 | 211 |  | 
 | 212 | struct acpi_asf_address { | 
 | 213 | 	struct acpi_asf_header header; | 
 | 214 | 	u8 eprom_address; | 
 | 215 | 	u8 devices; | 
 | 216 | }; | 
 | 217 |  | 
 | 218 | /******************************************************************************* | 
 | 219 |  * | 
 | 220 |  * BOOT - Simple Boot Flag Table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 221 |  *        Version 1 | 
 | 222 |  * | 
 | 223 |  * Conforms to the "Simple Boot Flag Specification", Version 2.1 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 224 |  * | 
 | 225 |  ******************************************************************************/ | 
 | 226 |  | 
 | 227 | struct acpi_table_boot { | 
 | 228 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 229 | 	u8 cmos_index;		/* Index in CMOS RAM for the boot register */ | 
 | 230 | 	u8 reserved[3]; | 
 | 231 | }; | 
 | 232 |  | 
 | 233 | /******************************************************************************* | 
 | 234 |  * | 
 | 235 |  * DBGP - Debug Port table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 236 |  *        Version 1 | 
 | 237 |  * | 
 | 238 |  * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 239 |  * | 
 | 240 |  ******************************************************************************/ | 
 | 241 |  | 
 | 242 | struct acpi_table_dbgp { | 
 | 243 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 244 | 	u8 type;		/* 0=full 16550, 1=subset of 16550 */ | 
 | 245 | 	u8 reserved[3]; | 
 | 246 | 	struct acpi_generic_address debug_port; | 
 | 247 | }; | 
 | 248 |  | 
 | 249 | /******************************************************************************* | 
 | 250 |  * | 
 | 251 |  * DMAR - DMA Remapping table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 252 |  *        Version 1 | 
 | 253 |  * | 
 | 254 |  * Conforms to "Intel Virtualization Technology for Directed I/O", | 
 | 255 |  * Version 1.2, Sept. 2008 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 256 |  * | 
 | 257 |  ******************************************************************************/ | 
 | 258 |  | 
 | 259 | struct acpi_table_dmar { | 
 | 260 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 261 | 	u8 width;		/* Host Address Width */ | 
 | 262 | 	u8 flags; | 
 | 263 | 	u8 reserved[10]; | 
 | 264 | }; | 
 | 265 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 266 | /* Masks for Flags field above */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 267 |  | 
 | 268 | #define ACPI_DMAR_INTR_REMAP        (1) | 
 | 269 |  | 
 | 270 | /* DMAR subtable header */ | 
 | 271 |  | 
 | 272 | struct acpi_dmar_header { | 
 | 273 | 	u16 type; | 
 | 274 | 	u16 length; | 
 | 275 | }; | 
 | 276 |  | 
 | 277 | /* Values for subtable type in struct acpi_dmar_header */ | 
 | 278 |  | 
 | 279 | enum acpi_dmar_type { | 
 | 280 | 	ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, | 
 | 281 | 	ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, | 
 | 282 | 	ACPI_DMAR_TYPE_ATSR = 2, | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 283 | 	ACPI_DMAR_HARDWARE_AFFINITY = 3, | 
 | 284 | 	ACPI_DMAR_TYPE_RESERVED = 4	/* 4 and greater are reserved */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 285 | }; | 
 | 286 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 287 | /* DMAR Device Scope structure */ | 
 | 288 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 289 | struct acpi_dmar_device_scope { | 
 | 290 | 	u8 entry_type; | 
 | 291 | 	u8 length; | 
 | 292 | 	u16 reserved; | 
 | 293 | 	u8 enumeration_id; | 
 | 294 | 	u8 bus; | 
 | 295 | }; | 
 | 296 |  | 
 | 297 | /* Values for entry_type in struct acpi_dmar_device_scope */ | 
 | 298 |  | 
 | 299 | enum acpi_dmar_scope_type { | 
 | 300 | 	ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, | 
 | 301 | 	ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, | 
 | 302 | 	ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, | 
 | 303 | 	ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, | 
 | 304 | 	ACPI_DMAR_SCOPE_TYPE_HPET = 4, | 
 | 305 | 	ACPI_DMAR_SCOPE_TYPE_RESERVED = 5	/* 5 and greater are reserved */ | 
 | 306 | }; | 
 | 307 |  | 
 | 308 | struct acpi_dmar_pci_path { | 
 | 309 | 	u8 dev; | 
 | 310 | 	u8 fn; | 
 | 311 | }; | 
 | 312 |  | 
 | 313 | /* | 
 | 314 |  * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header | 
 | 315 |  */ | 
 | 316 |  | 
 | 317 | /* 0: Hardware Unit Definition */ | 
 | 318 |  | 
 | 319 | struct acpi_dmar_hardware_unit { | 
 | 320 | 	struct acpi_dmar_header header; | 
 | 321 | 	u8 flags; | 
 | 322 | 	u8 reserved; | 
 | 323 | 	u16 segment; | 
 | 324 | 	u64 address;		/* Register Base Address */ | 
 | 325 | }; | 
 | 326 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 327 | /* Masks for Flags field above */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 328 |  | 
 | 329 | #define ACPI_DMAR_INCLUDE_ALL       (1) | 
 | 330 |  | 
 | 331 | /* 1: Reserved Memory Defininition */ | 
 | 332 |  | 
 | 333 | struct acpi_dmar_reserved_memory { | 
 | 334 | 	struct acpi_dmar_header header; | 
 | 335 | 	u16 reserved; | 
 | 336 | 	u16 segment; | 
 | 337 | 	u64 base_address;	/* 4_k aligned base address */ | 
 | 338 | 	u64 end_address;	/* 4_k aligned limit address */ | 
 | 339 | }; | 
 | 340 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 341 | /* Masks for Flags field above */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 342 |  | 
 | 343 | #define ACPI_DMAR_ALLOW_ALL         (1) | 
 | 344 |  | 
 | 345 | /* 2: Root Port ATS Capability Reporting Structure */ | 
 | 346 |  | 
 | 347 | struct acpi_dmar_atsr { | 
 | 348 | 	struct acpi_dmar_header header; | 
 | 349 | 	u8 flags; | 
 | 350 | 	u8 reserved; | 
 | 351 | 	u16 segment; | 
 | 352 | }; | 
 | 353 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 354 | /* Masks for Flags field above */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 355 |  | 
 | 356 | #define ACPI_DMAR_ALL_PORTS         (1) | 
 | 357 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 358 | /* 3: Remapping Hardware Static Affinity Structure */ | 
 | 359 |  | 
 | 360 | struct acpi_dmar_rhsa { | 
 | 361 | 	struct acpi_dmar_header header; | 
 | 362 | 	u32 reserved; | 
 | 363 | 	u64 base_address; | 
 | 364 | 	u32 proximity_domain; | 
 | 365 | }; | 
 | 366 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 367 | /******************************************************************************* | 
 | 368 |  * | 
 | 369 |  * HPET - High Precision Event Timer table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 370 |  *        Version 1 | 
 | 371 |  * | 
 | 372 |  * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", | 
 | 373 |  * Version 1.0a, October 2004 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 374 |  * | 
 | 375 |  ******************************************************************************/ | 
 | 376 |  | 
 | 377 | struct acpi_table_hpet { | 
 | 378 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 379 | 	u32 id;			/* Hardware ID of event timer block */ | 
 | 380 | 	struct acpi_generic_address address;	/* Address of event timer block */ | 
 | 381 | 	u8 sequence;		/* HPET sequence number */ | 
 | 382 | 	u16 minimum_tick;	/* Main counter min tick, periodic mode */ | 
 | 383 | 	u8 flags; | 
 | 384 | }; | 
 | 385 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 386 | /* Masks for Flags field above */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 387 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 388 | #define ACPI_HPET_PAGE_PROTECT_MASK (3) | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 389 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 390 | /* Values for Page Protect flags */ | 
 | 391 |  | 
 | 392 | enum acpi_hpet_page_protect { | 
 | 393 | 	ACPI_HPET_NO_PAGE_PROTECT = 0, | 
 | 394 | 	ACPI_HPET_PAGE_PROTECT4 = 1, | 
 | 395 | 	ACPI_HPET_PAGE_PROTECT64 = 2 | 
 | 396 | }; | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 397 |  | 
 | 398 | /******************************************************************************* | 
 | 399 |  * | 
 | 400 |  * IBFT - Boot Firmware Table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 401 |  *        Version 1 | 
 | 402 |  * | 
 | 403 |  * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b | 
 | 404 |  * Specification", Version 1.01, March 1, 2007 | 
 | 405 |  * | 
 | 406 |  * Note: It appears that this table is not intended to appear in the RSDT/XSDT. | 
 | 407 |  * Therefore, it is not currently supported by the disassembler. | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 408 |  * | 
 | 409 |  ******************************************************************************/ | 
 | 410 |  | 
 | 411 | struct acpi_table_ibft { | 
 | 412 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 413 | 	u8 reserved[12]; | 
 | 414 | }; | 
 | 415 |  | 
 | 416 | /* IBFT common subtable header */ | 
 | 417 |  | 
 | 418 | struct acpi_ibft_header { | 
 | 419 | 	u8 type; | 
 | 420 | 	u8 version; | 
 | 421 | 	u16 length; | 
 | 422 | 	u8 index; | 
 | 423 | 	u8 flags; | 
 | 424 | }; | 
 | 425 |  | 
 | 426 | /* Values for Type field above */ | 
 | 427 |  | 
 | 428 | enum acpi_ibft_type { | 
 | 429 | 	ACPI_IBFT_TYPE_NOT_USED = 0, | 
 | 430 | 	ACPI_IBFT_TYPE_CONTROL = 1, | 
 | 431 | 	ACPI_IBFT_TYPE_INITIATOR = 2, | 
 | 432 | 	ACPI_IBFT_TYPE_NIC = 3, | 
 | 433 | 	ACPI_IBFT_TYPE_TARGET = 4, | 
 | 434 | 	ACPI_IBFT_TYPE_EXTENSIONS = 5, | 
 | 435 | 	ACPI_IBFT_TYPE_RESERVED = 6	/* 6 and greater are reserved */ | 
 | 436 | }; | 
 | 437 |  | 
 | 438 | /* IBFT subtables */ | 
 | 439 |  | 
 | 440 | struct acpi_ibft_control { | 
 | 441 | 	struct acpi_ibft_header header; | 
 | 442 | 	u16 extensions; | 
 | 443 | 	u16 initiator_offset; | 
 | 444 | 	u16 nic0_offset; | 
 | 445 | 	u16 target0_offset; | 
 | 446 | 	u16 nic1_offset; | 
 | 447 | 	u16 target1_offset; | 
 | 448 | }; | 
 | 449 |  | 
 | 450 | struct acpi_ibft_initiator { | 
 | 451 | 	struct acpi_ibft_header header; | 
 | 452 | 	u8 sns_server[16]; | 
 | 453 | 	u8 slp_server[16]; | 
 | 454 | 	u8 primary_server[16]; | 
 | 455 | 	u8 secondary_server[16]; | 
 | 456 | 	u16 name_length; | 
 | 457 | 	u16 name_offset; | 
 | 458 | }; | 
 | 459 |  | 
 | 460 | struct acpi_ibft_nic { | 
 | 461 | 	struct acpi_ibft_header header; | 
 | 462 | 	u8 ip_address[16]; | 
 | 463 | 	u8 subnet_mask_prefix; | 
 | 464 | 	u8 origin; | 
 | 465 | 	u8 gateway[16]; | 
 | 466 | 	u8 primary_dns[16]; | 
 | 467 | 	u8 secondary_dns[16]; | 
 | 468 | 	u8 dhcp[16]; | 
 | 469 | 	u16 vlan; | 
 | 470 | 	u8 mac_address[6]; | 
 | 471 | 	u16 pci_address; | 
 | 472 | 	u16 name_length; | 
 | 473 | 	u16 name_offset; | 
 | 474 | }; | 
 | 475 |  | 
 | 476 | struct acpi_ibft_target { | 
 | 477 | 	struct acpi_ibft_header header; | 
 | 478 | 	u8 target_ip_address[16]; | 
 | 479 | 	u16 target_ip_socket; | 
 | 480 | 	u8 target_boot_lun[8]; | 
 | 481 | 	u8 chap_type; | 
 | 482 | 	u8 nic_association; | 
 | 483 | 	u16 target_name_length; | 
 | 484 | 	u16 target_name_offset; | 
 | 485 | 	u16 chap_name_length; | 
 | 486 | 	u16 chap_name_offset; | 
 | 487 | 	u16 chap_secret_length; | 
 | 488 | 	u16 chap_secret_offset; | 
 | 489 | 	u16 reverse_chap_name_length; | 
 | 490 | 	u16 reverse_chap_name_offset; | 
 | 491 | 	u16 reverse_chap_secret_length; | 
 | 492 | 	u16 reverse_chap_secret_offset; | 
 | 493 | }; | 
 | 494 |  | 
 | 495 | /******************************************************************************* | 
 | 496 |  * | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 497 |  * IVRS - I/O Virtualization Reporting Structure | 
 | 498 |  *        Version 1 | 
 | 499 |  * | 
 | 500 |  * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", | 
 | 501 |  * Revision 1.26, February 2009. | 
 | 502 |  * | 
 | 503 |  ******************************************************************************/ | 
 | 504 |  | 
 | 505 | struct acpi_table_ivrs { | 
 | 506 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 507 | 	u32 info;		/* Common virtualization info */ | 
 | 508 | 	u64 reserved; | 
 | 509 | }; | 
 | 510 |  | 
 | 511 | /* Values for Info field above */ | 
 | 512 |  | 
 | 513 | #define ACPI_IVRS_PHYSICAL_SIZE     0x00007F00	/* 7 bits, physical address size */ | 
 | 514 | #define ACPI_IVRS_VIRTUAL_SIZE      0x003F8000	/* 7 bits, virtual address size */ | 
 | 515 | #define ACPI_IVRS_ATS_RESERVED      0x00400000	/* ATS address translation range reserved */ | 
 | 516 |  | 
 | 517 | /* IVRS subtable header */ | 
 | 518 |  | 
 | 519 | struct acpi_ivrs_header { | 
 | 520 | 	u8 type;		/* Subtable type */ | 
 | 521 | 	u8 flags; | 
 | 522 | 	u16 length;		/* Subtable length */ | 
 | 523 | 	u16 device_id;		/* ID of IOMMU */ | 
 | 524 | }; | 
 | 525 |  | 
 | 526 | /* Values for subtable Type above */ | 
 | 527 |  | 
 | 528 | enum acpi_ivrs_type { | 
 | 529 | 	ACPI_IVRS_TYPE_HARDWARE = 0x10, | 
 | 530 | 	ACPI_IVRS_TYPE_MEMORY1 = 0x20, | 
 | 531 | 	ACPI_IVRS_TYPE_MEMORY2 = 0x21, | 
 | 532 | 	ACPI_IVRS_TYPE_MEMORY3 = 0x22 | 
 | 533 | }; | 
 | 534 |  | 
 | 535 | /* Masks for Flags field above for IVHD subtable */ | 
 | 536 |  | 
 | 537 | #define ACPI_IVHD_TT_ENABLE         (1) | 
 | 538 | #define ACPI_IVHD_PASS_PW           (1<<1) | 
 | 539 | #define ACPI_IVHD_RES_PASS_PW       (1<<2) | 
 | 540 | #define ACPI_IVHD_ISOC              (1<<3) | 
 | 541 | #define ACPI_IVHD_IOTLB             (1<<4) | 
 | 542 |  | 
 | 543 | /* Masks for Flags field above for IVMD subtable */ | 
 | 544 |  | 
 | 545 | #define ACPI_IVMD_UNITY             (1) | 
 | 546 | #define ACPI_IVMD_READ              (1<<1) | 
 | 547 | #define ACPI_IVMD_WRITE             (1<<2) | 
 | 548 | #define ACPI_IVMD_EXCLUSION_RANGE   (1<<3) | 
 | 549 |  | 
 | 550 | /* | 
 | 551 |  * IVRS subtables, correspond to Type in struct acpi_ivrs_header | 
 | 552 |  */ | 
 | 553 |  | 
 | 554 | /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ | 
 | 555 |  | 
 | 556 | struct acpi_ivrs_hardware { | 
 | 557 | 	struct acpi_ivrs_header header; | 
 | 558 | 	u16 capability_offset;	/* Offset for IOMMU control fields */ | 
 | 559 | 	u64 base_address;	/* IOMMU control registers */ | 
 | 560 | 	u16 pci_segment_group; | 
 | 561 | 	u16 info;		/* MSI number and unit ID */ | 
 | 562 | 	u32 reserved; | 
 | 563 | }; | 
 | 564 |  | 
 | 565 | /* Masks for Info field above */ | 
 | 566 |  | 
 | 567 | #define ACPI_IVHD_MSI_NUMBER_MASK   0x001F	/* 5 bits, MSI message number */ | 
 | 568 | #define ACPI_IVHD_UNIT_ID_MASK      0x1F00	/* 5 bits, unit_iD */ | 
 | 569 |  | 
 | 570 | /* | 
 | 571 |  * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. | 
 | 572 |  * Upper two bits of the Type field are the (encoded) length of the structure. | 
 | 573 |  * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries | 
 | 574 |  * are reserved for future use but not defined. | 
 | 575 |  */ | 
 | 576 | struct acpi_ivrs_de_header { | 
 | 577 | 	u8 type; | 
 | 578 | 	u16 id; | 
 | 579 | 	u8 data_setting; | 
 | 580 | }; | 
 | 581 |  | 
 | 582 | /* Length of device entry is in the top two bits of Type field above */ | 
 | 583 |  | 
 | 584 | #define ACPI_IVHD_ENTRY_LENGTH      0xC0 | 
 | 585 |  | 
 | 586 | /* Values for device entry Type field above */ | 
 | 587 |  | 
 | 588 | enum acpi_ivrs_device_entry_type { | 
 | 589 | 	/* 4-byte device entries, all use struct acpi_ivrs_device4 */ | 
 | 590 |  | 
 | 591 | 	ACPI_IVRS_TYPE_PAD4 = 0, | 
 | 592 | 	ACPI_IVRS_TYPE_ALL = 1, | 
 | 593 | 	ACPI_IVRS_TYPE_SELECT = 2, | 
 | 594 | 	ACPI_IVRS_TYPE_START = 3, | 
 | 595 | 	ACPI_IVRS_TYPE_END = 4, | 
 | 596 |  | 
 | 597 | 	/* 8-byte device entries */ | 
 | 598 |  | 
 | 599 | 	ACPI_IVRS_TYPE_PAD8 = 64, | 
 | 600 | 	ACPI_IVRS_TYPE_NOT_USED = 65, | 
 | 601 | 	ACPI_IVRS_TYPE_ALIAS_SELECT = 66,	/* Uses struct acpi_ivrs_device8a */ | 
 | 602 | 	ACPI_IVRS_TYPE_ALIAS_START = 67,	/* Uses struct acpi_ivrs_device8a */ | 
 | 603 | 	ACPI_IVRS_TYPE_EXT_SELECT = 70,	/* Uses struct acpi_ivrs_device8b */ | 
 | 604 | 	ACPI_IVRS_TYPE_EXT_START = 71,	/* Uses struct acpi_ivrs_device8b */ | 
 | 605 | 	ACPI_IVRS_TYPE_SPECIAL = 72	/* Uses struct acpi_ivrs_device8c */ | 
 | 606 | }; | 
 | 607 |  | 
 | 608 | /* Values for Data field above */ | 
 | 609 |  | 
 | 610 | #define ACPI_IVHD_INIT_PASS         (1) | 
 | 611 | #define ACPI_IVHD_EINT_PASS         (1<<1) | 
 | 612 | #define ACPI_IVHD_NMI_PASS          (1<<2) | 
 | 613 | #define ACPI_IVHD_SYSTEM_MGMT       (3<<4) | 
 | 614 | #define ACPI_IVHD_LINT0_PASS        (1<<6) | 
 | 615 | #define ACPI_IVHD_LINT1_PASS        (1<<7) | 
 | 616 |  | 
 | 617 | /* Types 0-4: 4-byte device entry */ | 
 | 618 |  | 
 | 619 | struct acpi_ivrs_device4 { | 
 | 620 | 	struct acpi_ivrs_de_header header; | 
 | 621 | }; | 
 | 622 |  | 
 | 623 | /* Types 66-67: 8-byte device entry */ | 
 | 624 |  | 
 | 625 | struct acpi_ivrs_device8a { | 
 | 626 | 	struct acpi_ivrs_de_header header; | 
 | 627 | 	u8 reserved1; | 
 | 628 | 	u16 used_id; | 
 | 629 | 	u8 reserved2; | 
 | 630 | }; | 
 | 631 |  | 
 | 632 | /* Types 70-71: 8-byte device entry */ | 
 | 633 |  | 
 | 634 | struct acpi_ivrs_device8b { | 
 | 635 | 	struct acpi_ivrs_de_header header; | 
 | 636 | 	u32 extended_data; | 
 | 637 | }; | 
 | 638 |  | 
 | 639 | /* Values for extended_data above */ | 
 | 640 |  | 
 | 641 | #define ACPI_IVHD_ATS_DISABLED      (1<<31) | 
 | 642 |  | 
 | 643 | /* Type 72: 8-byte device entry */ | 
 | 644 |  | 
 | 645 | struct acpi_ivrs_device8c { | 
 | 646 | 	struct acpi_ivrs_de_header header; | 
 | 647 | 	u8 handle; | 
 | 648 | 	u16 used_id; | 
 | 649 | 	u8 variety; | 
 | 650 | }; | 
 | 651 |  | 
 | 652 | /* Values for Variety field above */ | 
 | 653 |  | 
 | 654 | #define ACPI_IVHD_IOAPIC            1 | 
 | 655 | #define ACPI_IVHD_HPET              2 | 
 | 656 |  | 
 | 657 | /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ | 
 | 658 |  | 
 | 659 | struct acpi_ivrs_memory { | 
 | 660 | 	struct acpi_ivrs_header header; | 
 | 661 | 	u16 aux_data; | 
 | 662 | 	u64 reserved; | 
 | 663 | 	u64 start_address; | 
 | 664 | 	u64 memory_length; | 
 | 665 | }; | 
 | 666 |  | 
 | 667 | /******************************************************************************* | 
 | 668 |  * | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 669 |  * MCFG - PCI Memory Mapped Configuration table and sub-table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 670 |  *        Version 1 | 
 | 671 |  * | 
 | 672 |  * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 673 |  * | 
 | 674 |  ******************************************************************************/ | 
 | 675 |  | 
 | 676 | struct acpi_table_mcfg { | 
 | 677 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 678 | 	u8 reserved[8]; | 
 | 679 | }; | 
 | 680 |  | 
 | 681 | /* Subtable */ | 
 | 682 |  | 
 | 683 | struct acpi_mcfg_allocation { | 
 | 684 | 	u64 address;		/* Base address, processor-relative */ | 
 | 685 | 	u16 pci_segment;	/* PCI segment group number */ | 
 | 686 | 	u8 start_bus_number;	/* Starting PCI Bus number */ | 
 | 687 | 	u8 end_bus_number;	/* Final PCI Bus number */ | 
 | 688 | 	u32 reserved; | 
 | 689 | }; | 
 | 690 |  | 
 | 691 | /******************************************************************************* | 
 | 692 |  * | 
| Bob Moore | 0e264f0 | 2010-03-03 16:30:35 +0800 | [diff] [blame] | 693 |  * MCHI - Management Controller Host Interface Table | 
 | 694 |  *        Version 1 | 
 | 695 |  * | 
 | 696 |  * Conforms to "Management Component Transport Protocol (MCTP) Host | 
 | 697 |  * Interface Specification", Revision 1.0.0a, October 13, 2009 | 
 | 698 |  * | 
 | 699 |  ******************************************************************************/ | 
 | 700 |  | 
 | 701 | struct acpi_table_mchi { | 
 | 702 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 703 | 	u8 interface_type; | 
 | 704 | 	u8 protocol; | 
 | 705 | 	u64 protocol_data; | 
 | 706 | 	u8 interrupt_type; | 
 | 707 | 	u8 gpe; | 
 | 708 | 	u8 pci_device_flag; | 
 | 709 | 	u32 global_interrupt; | 
 | 710 | 	struct acpi_generic_address control_register; | 
 | 711 | 	u8 pci_segment; | 
 | 712 | 	u8 pci_bus; | 
 | 713 | 	u8 pci_device; | 
 | 714 | 	u8 pci_function; | 
 | 715 | }; | 
 | 716 |  | 
 | 717 | /******************************************************************************* | 
 | 718 |  * | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 719 |  * SPCR - Serial Port Console Redirection table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 720 |  *        Version 1 | 
 | 721 |  * | 
 | 722 |  * Conforms to "Serial Port Console Redirection Table", | 
 | 723 |  * Version 1.00, January 11, 2002 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 724 |  * | 
 | 725 |  ******************************************************************************/ | 
 | 726 |  | 
 | 727 | struct acpi_table_spcr { | 
 | 728 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 729 | 	u8 interface_type;	/* 0=full 16550, 1=subset of 16550 */ | 
 | 730 | 	u8 reserved[3]; | 
 | 731 | 	struct acpi_generic_address serial_port; | 
 | 732 | 	u8 interrupt_type; | 
 | 733 | 	u8 pc_interrupt; | 
 | 734 | 	u32 interrupt; | 
 | 735 | 	u8 baud_rate; | 
 | 736 | 	u8 parity; | 
 | 737 | 	u8 stop_bits; | 
 | 738 | 	u8 flow_control; | 
 | 739 | 	u8 terminal_type; | 
 | 740 | 	u8 reserved1; | 
 | 741 | 	u16 pci_device_id; | 
 | 742 | 	u16 pci_vendor_id; | 
 | 743 | 	u8 pci_bus; | 
 | 744 | 	u8 pci_device; | 
 | 745 | 	u8 pci_function; | 
 | 746 | 	u32 pci_flags; | 
 | 747 | 	u8 pci_segment; | 
 | 748 | 	u32 reserved2; | 
 | 749 | }; | 
 | 750 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 751 | /* Masks for pci_flags field above */ | 
 | 752 |  | 
 | 753 | #define ACPI_SPCR_DO_NOT_DISABLE    (1) | 
 | 754 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 755 | /******************************************************************************* | 
 | 756 |  * | 
 | 757 |  * SPMI - Server Platform Management Interface table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 758 |  *        Version 5 | 
 | 759 |  * | 
 | 760 |  * Conforms to "Intelligent Platform Management Interface Specification | 
 | 761 |  * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with | 
 | 762 |  * June 12, 2009 markup. | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 763 |  * | 
 | 764 |  ******************************************************************************/ | 
 | 765 |  | 
 | 766 | struct acpi_table_spmi { | 
 | 767 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 768 | 	u8 interface_type; | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 769 | 	u8 reserved;		/* Must be 1 */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 770 | 	u16 spec_revision;	/* Version of IPMI */ | 
 | 771 | 	u8 interrupt_type; | 
 | 772 | 	u8 gpe_number;		/* GPE assigned */ | 
 | 773 | 	u8 reserved1; | 
 | 774 | 	u8 pci_device_flag; | 
 | 775 | 	u32 interrupt; | 
 | 776 | 	struct acpi_generic_address ipmi_register; | 
 | 777 | 	u8 pci_segment; | 
 | 778 | 	u8 pci_bus; | 
 | 779 | 	u8 pci_device; | 
 | 780 | 	u8 pci_function; | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 781 | 	u8 reserved2; | 
 | 782 | }; | 
 | 783 |  | 
 | 784 | /* Values for interface_type above */ | 
 | 785 |  | 
 | 786 | enum acpi_spmi_interface_types { | 
 | 787 | 	ACPI_SPMI_NOT_USED = 0, | 
 | 788 | 	ACPI_SPMI_KEYBOARD = 1, | 
 | 789 | 	ACPI_SPMI_SMI = 2, | 
 | 790 | 	ACPI_SPMI_BLOCK_TRANSFER = 3, | 
 | 791 | 	ACPI_SPMI_SMBUS = 4, | 
 | 792 | 	ACPI_SPMI_RESERVED = 5	/* 5 and above are reserved */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 793 | }; | 
 | 794 |  | 
 | 795 | /******************************************************************************* | 
 | 796 |  * | 
 | 797 |  * TCPA - Trusted Computing Platform Alliance table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 798 |  *        Version 1 | 
 | 799 |  * | 
 | 800 |  * Conforms to "TCG PC Specific Implementation Specification", | 
 | 801 |  * Version 1.1, August 18, 2003 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 802 |  * | 
 | 803 |  ******************************************************************************/ | 
 | 804 |  | 
 | 805 | struct acpi_table_tcpa { | 
 | 806 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 807 | 	u16 reserved; | 
 | 808 | 	u32 max_log_length;	/* Maximum length for the event log area */ | 
 | 809 | 	u64 log_address;	/* Address of the event log area */ | 
 | 810 | }; | 
 | 811 |  | 
 | 812 | /******************************************************************************* | 
 | 813 |  * | 
 | 814 |  * UEFI - UEFI Boot optimization Table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 815 |  *        Version 1 | 
 | 816 |  * | 
 | 817 |  * Conforms to "Unified Extensible Firmware Interface Specification", | 
 | 818 |  * Version 2.3, May 8, 2009 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 819 |  * | 
 | 820 |  ******************************************************************************/ | 
 | 821 |  | 
 | 822 | struct acpi_table_uefi { | 
 | 823 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 824 | 	u8 identifier[16];	/* UUID identifier */ | 
 | 825 | 	u16 data_offset;	/* Offset of remaining data in table */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 826 | }; | 
 | 827 |  | 
 | 828 | /******************************************************************************* | 
 | 829 |  * | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 830 |  * WAET - Windows ACPI Emulated devices Table | 
 | 831 |  *        Version 1 | 
 | 832 |  * | 
 | 833 |  * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 | 
 | 834 |  * | 
 | 835 |  ******************************************************************************/ | 
 | 836 |  | 
 | 837 | struct acpi_table_waet { | 
 | 838 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 839 | 	u32 flags; | 
 | 840 | }; | 
 | 841 |  | 
 | 842 | /* Masks for Flags field above */ | 
 | 843 |  | 
 | 844 | #define ACPI_WAET_RTC_NO_ACK        (1)	/* RTC requires no int acknowledge */ | 
 | 845 | #define ACPI_WAET_TIMER_ONE_READ    (1<<1)	/* PM timer requires only one read */ | 
 | 846 |  | 
 | 847 | /******************************************************************************* | 
 | 848 |  * | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 849 |  * WDAT - Watchdog Action Table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 850 |  *        Version 1 | 
 | 851 |  * | 
 | 852 |  * Conforms to "Hardware Watchdog Timers Design Specification", | 
 | 853 |  * Copyright 2006 Microsoft Corporation. | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 854 |  * | 
 | 855 |  ******************************************************************************/ | 
 | 856 |  | 
 | 857 | struct acpi_table_wdat { | 
 | 858 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 859 | 	u32 header_length;	/* Watchdog Header Length */ | 
 | 860 | 	u16 pci_segment;	/* PCI Segment number */ | 
 | 861 | 	u8 pci_bus;		/* PCI Bus number */ | 
 | 862 | 	u8 pci_device;		/* PCI Device number */ | 
 | 863 | 	u8 pci_function;	/* PCI Function number */ | 
 | 864 | 	u8 reserved[3]; | 
 | 865 | 	u32 timer_period;	/* Period of one timer count (msec) */ | 
 | 866 | 	u32 max_count;		/* Maximum counter value supported */ | 
 | 867 | 	u32 min_count;		/* Minimum counter value */ | 
 | 868 | 	u8 flags; | 
 | 869 | 	u8 reserved2[3]; | 
 | 870 | 	u32 entries;		/* Number of watchdog entries that follow */ | 
 | 871 | }; | 
 | 872 |  | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 873 | /* Masks for Flags field above */ | 
 | 874 |  | 
 | 875 | #define ACPI_WDAT_ENABLED           (1) | 
 | 876 | #define ACPI_WDAT_STOPPED           0x80 | 
 | 877 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 878 | /* WDAT Instruction Entries (actions) */ | 
 | 879 |  | 
 | 880 | struct acpi_wdat_entry { | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 881 | 	u8 action; | 
 | 882 | 	u8 instruction; | 
 | 883 | 	u16 reserved; | 
 | 884 | 	struct acpi_generic_address register_region; | 
 | 885 | 	u32 value;		/* Value used with Read/Write register */ | 
 | 886 | 	u32 mask;		/* Bitmask required for this register instruction */ | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 887 | }; | 
 | 888 |  | 
 | 889 | /* Values for Action field above */ | 
 | 890 |  | 
 | 891 | enum acpi_wdat_actions { | 
 | 892 | 	ACPI_WDAT_RESET = 1, | 
 | 893 | 	ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, | 
 | 894 | 	ACPI_WDAT_GET_COUNTDOWN = 5, | 
 | 895 | 	ACPI_WDAT_SET_COUNTDOWN = 6, | 
 | 896 | 	ACPI_WDAT_GET_RUNNING_STATE = 8, | 
 | 897 | 	ACPI_WDAT_SET_RUNNING_STATE = 9, | 
 | 898 | 	ACPI_WDAT_GET_STOPPED_STATE = 10, | 
 | 899 | 	ACPI_WDAT_SET_STOPPED_STATE = 11, | 
 | 900 | 	ACPI_WDAT_GET_REBOOT = 16, | 
 | 901 | 	ACPI_WDAT_SET_REBOOT = 17, | 
 | 902 | 	ACPI_WDAT_GET_SHUTDOWN = 18, | 
 | 903 | 	ACPI_WDAT_SET_SHUTDOWN = 19, | 
 | 904 | 	ACPI_WDAT_GET_STATUS = 32, | 
 | 905 | 	ACPI_WDAT_SET_STATUS = 33, | 
 | 906 | 	ACPI_WDAT_ACTION_RESERVED = 34	/* 34 and greater are reserved */ | 
 | 907 | }; | 
 | 908 |  | 
 | 909 | /* Values for Instruction field above */ | 
 | 910 |  | 
 | 911 | enum acpi_wdat_instructions { | 
 | 912 | 	ACPI_WDAT_READ_VALUE = 0, | 
 | 913 | 	ACPI_WDAT_READ_COUNTDOWN = 1, | 
 | 914 | 	ACPI_WDAT_WRITE_VALUE = 2, | 
 | 915 | 	ACPI_WDAT_WRITE_COUNTDOWN = 3, | 
 | 916 | 	ACPI_WDAT_INSTRUCTION_RESERVED = 4,	/* 4 and greater are reserved */ | 
 | 917 | 	ACPI_WDAT_PRESERVE_REGISTER = 0x80	/* Except for this value */ | 
 | 918 | }; | 
 | 919 |  | 
 | 920 | /******************************************************************************* | 
 | 921 |  * | 
| Bob Moore | 9d8b5e7 | 2010-07-06 09:58:11 +0800 | [diff] [blame] | 922 |  * WDDT - Watchdog Descriptor Table | 
 | 923 |  *        Version 1 | 
 | 924 |  * | 
 | 925 |  * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", | 
 | 926 |  * Version 001, September 2002 | 
 | 927 |  * | 
 | 928 |  ******************************************************************************/ | 
 | 929 |  | 
 | 930 | struct acpi_table_wddt { | 
 | 931 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
 | 932 | 	u16 spec_version; | 
 | 933 | 	u16 table_version; | 
 | 934 | 	u16 pci_vendor_id; | 
 | 935 | 	struct acpi_generic_address address; | 
 | 936 | 	u16 max_count;		/* Maximum counter value supported */ | 
 | 937 | 	u16 min_count;		/* Minimum counter value supported */ | 
 | 938 | 	u16 period; | 
 | 939 | 	u16 status; | 
 | 940 | 	u16 capability; | 
 | 941 | }; | 
 | 942 |  | 
 | 943 | /* Flags for Status field above */ | 
 | 944 |  | 
 | 945 | #define ACPI_WDDT_AVAILABLE     (1) | 
 | 946 | #define ACPI_WDDT_ACTIVE        (1<<1) | 
 | 947 | #define ACPI_WDDT_TCO_OS_OWNED  (1<<2) | 
 | 948 | #define ACPI_WDDT_USER_RESET    (1<<11) | 
 | 949 | #define ACPI_WDDT_WDT_RESET     (1<<12) | 
 | 950 | #define ACPI_WDDT_POWER_FAIL    (1<<13) | 
 | 951 | #define ACPI_WDDT_UNKNOWN_RESET (1<<14) | 
 | 952 |  | 
 | 953 | /* Flags for Capability field above */ | 
 | 954 |  | 
 | 955 | #define ACPI_WDDT_AUTO_RESET    (1) | 
 | 956 | #define ACPI_WDDT_ALERT_SUPPORT (1<<1) | 
 | 957 |  | 
 | 958 | /******************************************************************************* | 
 | 959 |  * | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 960 |  * WDRT - Watchdog Resource Table | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 961 |  *        Version 1 | 
 | 962 |  * | 
 | 963 |  * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", | 
 | 964 |  * Version 1.01, August 28, 2006 | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 965 |  * | 
 | 966 |  ******************************************************************************/ | 
 | 967 |  | 
 | 968 | struct acpi_table_wdrt { | 
 | 969 | 	struct acpi_table_header header;	/* Common ACPI table header */ | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 970 | 	struct acpi_generic_address control_register; | 
 | 971 | 	struct acpi_generic_address count_register; | 
 | 972 | 	u16 pci_device_id; | 
 | 973 | 	u16 pci_vendor_id; | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 974 | 	u8 pci_bus;		/* PCI Bus number */ | 
 | 975 | 	u8 pci_device;		/* PCI Device number */ | 
 | 976 | 	u8 pci_function;	/* PCI Function number */ | 
| Bob Moore | 6e2d5eb | 2009-07-27 10:53:00 +0800 | [diff] [blame] | 977 | 	u8 pci_segment;		/* PCI Segment number */ | 
 | 978 | 	u16 max_count;		/* Maximum counter value supported */ | 
 | 979 | 	u8 units; | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 980 | }; | 
 | 981 |  | 
| Bob Moore | b24aad4 | 2009-07-24 13:30:17 +0800 | [diff] [blame] | 982 | /* Reset to default packing */ | 
 | 983 |  | 
 | 984 | #pragma pack() | 
 | 985 |  | 
 | 986 | #endif				/* __ACTBL2_H__ */ |