diff options
| author | Bob Moore <robert.moore@intel.com> | 2009-07-26 22:53:00 -0400 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2009-08-28 19:40:38 -0400 |
| commit | 6e2d5ebd0d36199920676fdceaff4f4bfe66297b (patch) | |
| tree | 334c129986a3ae126378a001d871d3e4267db6ea /include/acpi | |
| parent | b24aad44438d5bc21cbbfb94a99d9bf710d8295b (diff) | |
ACPICA: ACPI 4: Update headers for new and changed ACPI tables.
Add IVRS,MSCT,UEFI,WAET,WDAT.
Updated several existing tables for ACPI 4.0-related changes.
Added document references for all tables not defined in ACPI spec.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'include/acpi')
| -rw-r--r-- | include/acpi/actbl.h | 30 | ||||
| -rw-r--r-- | include/acpi/actbl1.h | 339 | ||||
| -rw-r--r-- | include/acpi/actbl2.h | 339 |
3 files changed, 557 insertions, 151 deletions
diff --git a/include/acpi/actbl.h b/include/acpi/actbl.h index 55fcfc6725b2..1b6587952604 100644 --- a/include/acpi/actbl.h +++ b/include/acpi/actbl.h | |||
| @@ -58,8 +58,9 @@ | |||
| 58 | ******************************************************************************/ | 58 | ******************************************************************************/ |
| 59 | 59 | ||
| 60 | /* | 60 | /* |
| 61 | * Values for description table header signatures. Useful because they make | 61 | * Values for description table header signatures for tables defined in this |
| 62 | * it more difficult to inadvertently type in the wrong signature. | 62 | * file. Useful because they make it more difficult to inadvertently type in |
| 63 | * the wrong signature. | ||
| 63 | */ | 64 | */ |
| 64 | #define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ | 65 | #define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ |
| 65 | #define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ | 66 | #define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ |
| @@ -123,6 +124,7 @@ struct acpi_generic_address { | |||
| 123 | /******************************************************************************* | 124 | /******************************************************************************* |
| 124 | * | 125 | * |
| 125 | * RSDP - Root System Description Pointer (Signature is "RSD PTR ") | 126 | * RSDP - Root System Description Pointer (Signature is "RSD PTR ") |
| 127 | * Version 2 | ||
| 126 | * | 128 | * |
| 127 | ******************************************************************************/ | 129 | ******************************************************************************/ |
| 128 | 130 | ||
| @@ -143,6 +145,7 @@ struct acpi_table_rsdp { | |||
| 143 | /******************************************************************************* | 145 | /******************************************************************************* |
| 144 | * | 146 | * |
| 145 | * RSDT/XSDT - Root System Description Tables | 147 | * RSDT/XSDT - Root System Description Tables |
| 148 | * Version 1 (both) | ||
| 146 | * | 149 | * |
| 147 | ******************************************************************************/ | 150 | ******************************************************************************/ |
| 148 | 151 | ||
| @@ -176,23 +179,24 @@ struct acpi_table_facs { | |||
| 176 | u8 reserved1[24]; /* Reserved, must be zero */ | 179 | u8 reserved1[24]; /* Reserved, must be zero */ |
| 177 | }; | 180 | }; |
| 178 | 181 | ||
| 179 | /* global_lock flags */ | 182 | /* Masks for global_lock flag field above */ |
| 180 | 183 | ||
| 181 | #define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */ | 184 | #define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */ |
| 182 | #define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */ | 185 | #define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */ |
| 183 | 186 | ||
| 184 | /* Flags */ | 187 | /* Masks for Flags field above */ |
| 185 | 188 | ||
| 186 | #define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ | 189 | #define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ |
| 187 | #define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */ | 190 | #define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */ |
| 188 | 191 | ||
| 189 | /* ospm_flags */ | 192 | /* Masks for ospm_flags field above */ |
| 190 | 193 | ||
| 191 | #define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */ | 194 | #define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */ |
| 192 | 195 | ||
| 193 | /******************************************************************************* | 196 | /******************************************************************************* |
| 194 | * | 197 | * |
| 195 | * FADT - Fixed ACPI Description Table (Signature "FACP") | 198 | * FADT - Fixed ACPI Description Table (Signature "FACP") |
| 199 | * Version 4 | ||
| 196 | * | 200 | * |
| 197 | ******************************************************************************/ | 201 | ******************************************************************************/ |
| 198 | 202 | ||
| @@ -253,7 +257,7 @@ struct acpi_table_fadt { | |||
| 253 | struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ | 257 | struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ |
| 254 | }; | 258 | }; |
| 255 | 259 | ||
| 256 | /* FADT Boot Architecture Flags (boot_flags) */ | 260 | /* Masks for FADT Boot Architecture Flags (boot_flags) */ |
| 257 | 261 | ||
| 258 | #define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */ | 262 | #define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */ |
| 259 | #define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */ | 263 | #define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */ |
| @@ -263,7 +267,7 @@ struct acpi_table_fadt { | |||
| 263 | 267 | ||
| 264 | #define FADT2_REVISION_ID 3 | 268 | #define FADT2_REVISION_ID 3 |
| 265 | 269 | ||
| 266 | /* FADT flags */ | 270 | /* Masks for FADT flags */ |
| 267 | 271 | ||
| 268 | #define ACPI_FADT_WBINVD (1) /* 00: [V1] The wbinvd instruction works properly */ | 272 | #define ACPI_FADT_WBINVD (1) /* 00: [V1] The wbinvd instruction works properly */ |
| 269 | #define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] wbinvd flushes but does not invalidate caches */ | 273 | #define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] wbinvd flushes but does not invalidate caches */ |
| @@ -286,7 +290,7 @@ struct acpi_table_fadt { | |||
| 286 | #define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */ | 290 | #define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */ |
| 287 | #define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local x_aPICs must use physical dest mode (ACPI 3.0) */ | 291 | #define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local x_aPICs must use physical dest mode (ACPI 3.0) */ |
| 288 | 292 | ||
| 289 | /* FADT Prefered Power Management Profiles */ | 293 | /* Values for preferred_profile (Prefered Power Management Profiles) */ |
| 290 | 294 | ||
| 291 | enum acpi_prefered_pm_profiles { | 295 | enum acpi_prefered_pm_profiles { |
| 292 | PM_UNSPECIFIED = 0, | 296 | PM_UNSPECIFIED = 0, |
| @@ -304,14 +308,16 @@ enum acpi_prefered_pm_profiles { | |||
| 304 | 308 | ||
| 305 | #define ACPI_FADT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_table_fadt, f) | 309 | #define ACPI_FADT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_table_fadt, f) |
| 306 | 310 | ||
| 311 | /* | ||
| 312 | * Internal table-related structures | ||
| 313 | */ | ||
| 307 | union acpi_name_union { | 314 | union acpi_name_union { |
| 308 | u32 integer; | 315 | u32 integer; |
| 309 | char ascii[4]; | 316 | char ascii[4]; |
| 310 | }; | 317 | }; |
| 311 | 318 | ||
| 312 | /* | 319 | /* Internal ACPI Table Descriptor. One per ACPI table. */ |
| 313 | * Internal ACPI Table Descriptor. One per ACPI table | 320 | |
| 314 | */ | ||
| 315 | struct acpi_table_desc { | 321 | struct acpi_table_desc { |
| 316 | acpi_physical_address address; | 322 | acpi_physical_address address; |
| 317 | struct acpi_table_header *pointer; | 323 | struct acpi_table_header *pointer; |
| @@ -321,7 +327,7 @@ struct acpi_table_desc { | |||
| 321 | u8 flags; | 327 | u8 flags; |
| 322 | }; | 328 | }; |
| 323 | 329 | ||
| 324 | /* Flags for above */ | 330 | /* Masks for Flags field above */ |
| 325 | 331 | ||
| 326 | #define ACPI_TABLE_ORIGIN_UNKNOWN (0) | 332 | #define ACPI_TABLE_ORIGIN_UNKNOWN (0) |
| 327 | #define ACPI_TABLE_ORIGIN_MAPPED (1) | 333 | #define ACPI_TABLE_ORIGIN_MAPPED (1) |
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h index 582af1fcb8f5..0417f2abc44b 100644 --- a/include/acpi/actbl1.h +++ b/include/acpi/actbl1.h | |||
| @@ -56,8 +56,9 @@ | |||
| 56 | ******************************************************************************/ | 56 | ******************************************************************************/ |
| 57 | 57 | ||
| 58 | /* | 58 | /* |
| 59 | * Values for description table header signatures. Useful because they make | 59 | * Values for description table header signatures for tables defined in this |
| 60 | * it more difficult to inadvertently type in the wrong signature. | 60 | * file. Useful because they make it more difficult to inadvertently type in |
| 61 | * the wrong signature. | ||
| 61 | */ | 62 | */ |
| 62 | #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ | 63 | #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ |
| 63 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ | 64 | #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ |
| @@ -66,6 +67,7 @@ | |||
| 66 | #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ | 67 | #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ |
| 67 | #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ | 68 | #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ |
| 68 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ | 69 | #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ |
| 70 | #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ | ||
| 69 | #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ | 71 | #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ |
| 70 | #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ | 72 | #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ |
| 71 | #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ | 73 | #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ |
| @@ -82,14 +84,20 @@ | |||
| 82 | * portable, so do not use any other bitfield types. | 84 | * portable, so do not use any other bitfield types. |
| 83 | */ | 85 | */ |
| 84 | 86 | ||
| 85 | /* Common Subtable header (used in MADT, SRAT, etc.) */ | 87 | /******************************************************************************* |
| 88 | * | ||
| 89 | * Common subtable headers | ||
| 90 | * | ||
| 91 | ******************************************************************************/ | ||
| 92 | |||
| 93 | /* Generic subtable header (used in MADT, SRAT, etc.) */ | ||
| 86 | 94 | ||
| 87 | struct acpi_subtable_header { | 95 | struct acpi_subtable_header { |
| 88 | u8 type; | 96 | u8 type; |
| 89 | u8 length; | 97 | u8 length; |
| 90 | }; | 98 | }; |
| 91 | 99 | ||
| 92 | /* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ | 100 | /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ |
| 93 | 101 | ||
| 94 | struct acpi_whea_header { | 102 | struct acpi_whea_header { |
| 95 | u8 action; | 103 | u8 action; |
| @@ -103,7 +111,8 @@ struct acpi_whea_header { | |||
| 103 | 111 | ||
| 104 | /******************************************************************************* | 112 | /******************************************************************************* |
| 105 | * | 113 | * |
| 106 | * BERT - Boot Error Record Table | 114 | * BERT - Boot Error Record Table (ACPI 4.0) |
| 115 | * Version 1 | ||
| 107 | * | 116 | * |
| 108 | ******************************************************************************/ | 117 | ******************************************************************************/ |
| 109 | 118 | ||
| @@ -113,26 +122,43 @@ struct acpi_table_bert { | |||
| 113 | u64 address; /* Physical addresss of the error region */ | 122 | u64 address; /* Physical addresss of the error region */ |
| 114 | }; | 123 | }; |
| 115 | 124 | ||
| 116 | /* Boot Error Region */ | 125 | /* Boot Error Region (not a subtable, pointed to by Address field above) */ |
| 117 | 126 | ||
| 118 | struct acpi_bert_region { | 127 | struct acpi_bert_region { |
| 119 | u32 block_status; | 128 | u32 block_status; /* Type of error information */ |
| 120 | u32 raw_data_offset; | 129 | u32 raw_data_offset; /* Offset to raw error data */ |
| 121 | u32 raw_data_length; | 130 | u32 raw_data_length; /* Length of raw error data */ |
| 122 | u32 data_length; | 131 | u32 data_length; /* Length of generic error data */ |
| 123 | u32 error_severity; | 132 | u32 error_severity; /* Severity code */ |
| 124 | }; | 133 | }; |
| 125 | 134 | ||
| 126 | /* block_status Flags */ | 135 | /* Values for block_status flags above */ |
| 127 | 136 | ||
| 128 | #define ACPI_BERT_UNCORRECTABLE (1) | 137 | #define ACPI_BERT_UNCORRECTABLE (1) |
| 129 | #define ACPI_BERT_CORRECTABLE (2) | 138 | #define ACPI_BERT_CORRECTABLE (1<<1) |
| 130 | #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) | 139 | #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) |
| 131 | #define ACPI_BERT_MULTIPLE_CORRECTABLE (8) | 140 | #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) |
| 141 | #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ | ||
| 142 | |||
| 143 | /* Values for error_severity above */ | ||
| 144 | |||
| 145 | enum acpi_bert_error_severity { | ||
| 146 | ACPI_BERT_ERROR_CORRECTABLE = 0, | ||
| 147 | ACPI_BERT_ERROR_FATAL = 1, | ||
| 148 | ACPI_BERT_ERROR_CORRECTED = 2, | ||
| 149 | ACPI_BERT_ERROR_NONE = 3, | ||
| 150 | ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ | ||
| 151 | }; | ||
| 152 | |||
| 153 | /* | ||
| 154 | * Note: The generic error data that follows the error_severity field above | ||
| 155 | * uses the struct acpi_hest_generic_data defined under the HEST table below | ||
| 156 | */ | ||
| 132 | 157 | ||
| 133 | /******************************************************************************* | 158 | /******************************************************************************* |
| 134 | * | 159 | * |
| 135 | * CPEP - Corrected Platform Error Polling table | 160 | * CPEP - Corrected Platform Error Polling table (ACPI 4.0) |
| 161 | * Version 1 | ||
| 136 | * | 162 | * |
| 137 | ******************************************************************************/ | 163 | ******************************************************************************/ |
| 138 | 164 | ||
| @@ -144,8 +170,7 @@ struct acpi_table_cpep { | |||
| 144 | /* Subtable */ | 170 | /* Subtable */ |
| 145 | 171 | ||
| 146 | struct acpi_cpep_polling { | 172 | struct acpi_cpep_polling { |
| 147 | u8 type; | 173 | struct acpi_subtable_header header; |
| 148 | u8 length; | ||
| 149 | u8 id; /* Processor ID */ | 174 | u8 id; /* Processor ID */ |
| 150 | u8 eid; /* Processor EID */ | 175 | u8 eid; /* Processor EID */ |
| 151 | u32 interval; /* Polling interval (msec) */ | 176 | u32 interval; /* Polling interval (msec) */ |
| @@ -154,6 +179,7 @@ struct acpi_cpep_polling { | |||
| 154 | /******************************************************************************* | 179 | /******************************************************************************* |
| 155 | * | 180 | * |
| 156 | * ECDT - Embedded Controller Boot Resources Table | 181 | * ECDT - Embedded Controller Boot Resources Table |
| 182 | * Version 1 | ||
| 157 | * | 183 | * |
| 158 | ******************************************************************************/ | 184 | ******************************************************************************/ |
| 159 | 185 | ||
| @@ -168,14 +194,16 @@ struct acpi_table_ecdt { | |||
| 168 | 194 | ||
| 169 | /******************************************************************************* | 195 | /******************************************************************************* |
| 170 | * | 196 | * |
| 171 | * EINJ - Error Injection Table | 197 | * EINJ - Error Injection Table (ACPI 4.0) |
| 198 | * Version 1 | ||
| 172 | * | 199 | * |
| 173 | ******************************************************************************/ | 200 | ******************************************************************************/ |
| 174 | 201 | ||
| 175 | struct acpi_table_einj { | 202 | struct acpi_table_einj { |
| 176 | struct acpi_table_header header; /* Common ACPI table header */ | 203 | struct acpi_table_header header; /* Common ACPI table header */ |
| 177 | u32 header_length; | 204 | u32 header_length; |
| 178 | u32 reserved; | 205 | u8 flags; |
| 206 | u8 reserved[3]; | ||
| 179 | u32 entries; | 207 | u32 entries; |
| 180 | }; | 208 | }; |
| 181 | 209 | ||
| @@ -185,6 +213,10 @@ struct acpi_einj_entry { | |||
| 185 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | 213 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ |
| 186 | }; | 214 | }; |
| 187 | 215 | ||
| 216 | /* Masks for Flags field above */ | ||
| 217 | |||
| 218 | #define ACPI_EINJ_PRESERVE (1) | ||
| 219 | |||
| 188 | /* Values for Action field above */ | 220 | /* Values for Action field above */ |
| 189 | 221 | ||
| 190 | enum acpi_einj_actions { | 222 | enum acpi_einj_actions { |
| @@ -220,9 +252,34 @@ struct acpi_einj_trigger { | |||
| 220 | u32 entry_count; | 252 | u32 entry_count; |
| 221 | }; | 253 | }; |
| 222 | 254 | ||
| 255 | /* Command status return values */ | ||
| 256 | |||
| 257 | enum acpi_einj_command_status { | ||
| 258 | ACPI_EINJ_SUCCESS = 0, | ||
| 259 | ACPI_EINJ_FAILURE = 1, | ||
| 260 | ACPI_EINJ_INVALID_ACCESS = 2, | ||
| 261 | ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ | ||
| 262 | }; | ||
| 263 | |||
| 264 | /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ | ||
| 265 | |||
| 266 | #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) | ||
| 267 | #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) | ||
| 268 | #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) | ||
| 269 | #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) | ||
| 270 | #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) | ||
| 271 | #define ACPI_EINJ_MEMORY_FATAL (1<<5) | ||
| 272 | #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) | ||
| 273 | #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) | ||
| 274 | #define ACPI_EINJ_PCIX_FATAL (1<<8) | ||
| 275 | #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) | ||
| 276 | #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) | ||
| 277 | #define ACPI_EINJ_PLATFORM_FATAL (1<<11) | ||
| 278 | |||
| 223 | /******************************************************************************* | 279 | /******************************************************************************* |
| 224 | * | 280 | * |
| 225 | * ERST - Error Record Serialization Table | 281 | * ERST - Error Record Serialization Table (ACPI 4.0) |
| 282 | * Version 1 | ||
| 226 | * | 283 | * |
| 227 | ******************************************************************************/ | 284 | ******************************************************************************/ |
| 228 | 285 | ||
| @@ -239,19 +296,23 @@ struct acpi_erst_entry { | |||
| 239 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | 296 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ |
| 240 | }; | 297 | }; |
| 241 | 298 | ||
| 299 | /* Masks for Flags field above */ | ||
| 300 | |||
| 301 | #define ACPI_ERST_PRESERVE (1) | ||
| 302 | |||
| 242 | /* Values for Action field above */ | 303 | /* Values for Action field above */ |
| 243 | 304 | ||
| 244 | enum acpi_erst_actions { | 305 | enum acpi_erst_actions { |
| 245 | ACPI_ERST_BEGIN_WRITE_OPERATION = 0, | 306 | ACPI_ERST_BEGIN_WRITE = 0, |
| 246 | ACPI_ERST_BEGIN_READ_OPERATION = 1, | 307 | ACPI_ERST_BEGIN_READ = 1, |
| 247 | ACPI_ERST_BETGIN_CLEAR_OPERATION = 2, | 308 | ACPI_ERST_BEGIN_CLEAR = 2, |
| 248 | ACPI_ERST_END_OPERATION = 3, | 309 | ACPI_ERST_END = 3, |
| 249 | ACPI_ERST_SET_RECORD_OFFSET = 4, | 310 | ACPI_ERST_SET_RECORD_OFFSET = 4, |
| 250 | ACPI_ERST_EXECUTE_OPERATION = 5, | 311 | ACPI_ERST_EXECUTE_OPERATION = 5, |
| 251 | ACPI_ERST_CHECK_BUSY_STATUS = 6, | 312 | ACPI_ERST_CHECK_BUSY_STATUS = 6, |
| 252 | ACPI_ERST_GET_COMMAND_STATUS = 7, | 313 | ACPI_ERST_GET_COMMAND_STATUS = 7, |
| 253 | ACPI_ERST_GET_RECORD_IDENTIFIER = 8, | 314 | ACPI_ERST_GET_RECORD_ID = 8, |
| 254 | ACPI_ERST_SET_RECORD_IDENTIFIER = 9, | 315 | ACPI_ERST_SET_RECORD_ID = 9, |
| 255 | ACPI_ERST_GET_RECORD_COUNT = 10, | 316 | ACPI_ERST_GET_RECORD_COUNT = 10, |
| 256 | ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, | 317 | ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, |
| 257 | ACPI_ERST_NOT_USED = 12, | 318 | ACPI_ERST_NOT_USED = 12, |
| @@ -286,9 +347,29 @@ enum acpi_erst_instructions { | |||
| 286 | ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ | 347 | ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ |
| 287 | }; | 348 | }; |
| 288 | 349 | ||
| 350 | /* Command status return values */ | ||
| 351 | |||
| 352 | enum acpi_erst_command_status { | ||
| 353 | ACPI_ERST_SUCESS = 0, | ||
| 354 | ACPI_ERST_NO_SPACE = 1, | ||
| 355 | ACPI_ERST_NOT_AVAILABLE = 2, | ||
| 356 | ACPI_ERST_FAILURE = 3, | ||
| 357 | ACPI_ERST_RECORD_EMPTY = 4, | ||
| 358 | ACPI_ERST_NOT_FOUND = 5, | ||
| 359 | ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ | ||
| 360 | }; | ||
| 361 | |||
| 362 | /* Error Record Serialization Information */ | ||
| 363 | |||
| 364 | struct acpi_erst_info { | ||
| 365 | u16 signature; /* Should be "ER" */ | ||
| 366 | u8 data[48]; | ||
| 367 | }; | ||
| 368 | |||
| 289 | /******************************************************************************* | 369 | /******************************************************************************* |
| 290 | * | 370 | * |
| 291 | * HEST - Hardware Error Source Table | 371 | * HEST - Hardware Error Source Table (ACPI 4.0) |
| 372 | * Version 1 | ||
| 292 | * | 373 | * |
| 293 | ******************************************************************************/ | 374 | ******************************************************************************/ |
| 294 | 375 | ||
| @@ -301,70 +382,49 @@ struct acpi_table_hest { | |||
| 301 | 382 | ||
| 302 | struct acpi_hest_header { | 383 | struct acpi_hest_header { |
| 303 | u16 type; | 384 | u16 type; |
| 385 | u16 source_id; | ||
| 304 | }; | 386 | }; |
| 305 | 387 | ||
| 306 | /* Values for Type field above for subtables */ | 388 | /* Values for Type field above for subtables */ |
| 307 | 389 | ||
| 308 | enum acpi_hest_types { | 390 | enum acpi_hest_types { |
| 309 | ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, | 391 | ACPI_HEST_TYPE_IA32_CHECK = 0, |
| 310 | ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, | 392 | ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, |
| 311 | ACPI_HEST_TYPE_XPF_UNUSED = 2, | 393 | ACPI_HEST_TYPE_IA32_NMI = 2, |
| 312 | ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, | 394 | ACPI_HEST_TYPE_NOT_USED3 = 3, |
| 313 | ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, | 395 | ACPI_HEST_TYPE_NOT_USED4 = 4, |
| 314 | ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, | 396 | ACPI_HEST_TYPE_NOT_USED5 = 5, |
| 315 | ACPI_HEST_TYPE_AER_ROOT_PORT = 6, | 397 | ACPI_HEST_TYPE_AER_ROOT_PORT = 6, |
| 316 | ACPI_HEST_TYPE_AER_ENDPOINT = 7, | 398 | ACPI_HEST_TYPE_AER_ENDPOINT = 7, |
| 317 | ACPI_HEST_TYPE_AER_BRIDGE = 8, | 399 | ACPI_HEST_TYPE_AER_BRIDGE = 8, |
| 318 | ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, | 400 | ACPI_HEST_TYPE_GENERIC_ERROR = 9, |
| 319 | ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ | 401 | ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ |
| 320 | }; | 402 | }; |
| 321 | 403 | ||
| 322 | /* | 404 | /* |
| 323 | * HEST Sub-subtables | 405 | * HEST substructures contained in subtables |
| 324 | */ | 406 | */ |
| 325 | 407 | ||
| 326 | /* XPF Machine Check Error Bank */ | 408 | /* |
| 327 | 409 | * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and | |
| 328 | struct acpi_hest_xpf_error_bank { | 410 | * struct acpi_hest_ia_corrected structures. |
| 411 | */ | ||
| 412 | struct acpi_hest_ia_error_bank { | ||
| 329 | u8 bank_number; | 413 | u8 bank_number; |
| 330 | u8 clear_status_on_init; | 414 | u8 clear_status_on_init; |
| 331 | u8 status_format; | 415 | u8 status_format; |
| 332 | u8 config_write_enable; | 416 | u8 reserved; |
| 333 | u32 control_register; | 417 | u32 control_register; |
| 334 | u64 control_init_data; | 418 | u64 control_data; |
| 335 | u32 status_register; | 419 | u32 status_register; |
| 336 | u32 address_register; | 420 | u32 address_register; |
| 337 | u32 misc_register; | 421 | u32 misc_register; |
| 338 | }; | 422 | }; |
| 339 | 423 | ||
| 340 | /* Generic Error Status */ | 424 | /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ |
| 341 | |||
| 342 | struct acpi_hest_generic_status { | ||
| 343 | u32 block_status; | ||
| 344 | u32 raw_data_offset; | ||
| 345 | u32 raw_data_length; | ||
| 346 | u32 data_length; | ||
| 347 | u32 error_severity; | ||
| 348 | }; | ||
| 349 | |||
| 350 | /* Generic Error Data */ | ||
| 351 | |||
| 352 | struct acpi_hest_generic_data { | ||
| 353 | u8 section_type[16]; | ||
| 354 | u32 error_severity; | ||
| 355 | u16 revision; | ||
| 356 | u8 validation_bits; | ||
| 357 | u8 flags; | ||
| 358 | u32 error_data_length; | ||
| 359 | u8 fru_id[16]; | ||
| 360 | u8 fru_text[20]; | ||
| 361 | }; | ||
| 362 | |||
| 363 | /* Common HEST structure for PCI/AER types below (6,7,8) */ | ||
| 364 | 425 | ||
| 365 | struct acpi_hest_aer_common { | 426 | struct acpi_hest_aer_common { |
| 366 | u16 source_id; | 427 | u16 reserved1; |
| 367 | u16 config_write_enable; | ||
| 368 | u8 flags; | 428 | u8 flags; |
| 369 | u8 enabled; | 429 | u8 enabled; |
| 370 | u32 records_to_pre_allocate; | 430 | u32 records_to_pre_allocate; |
| @@ -373,13 +433,18 @@ struct acpi_hest_aer_common { | |||
| 373 | u16 device; | 433 | u16 device; |
| 374 | u16 function; | 434 | u16 function; |
| 375 | u16 device_control; | 435 | u16 device_control; |
| 376 | u16 reserved; | 436 | u16 reserved2; |
| 377 | u32 uncorrectable_error_mask; | 437 | u32 uncorrectable_error_mask; |
| 378 | u32 uncorrectable_error_severity; | 438 | u32 uncorrectable_error_severity; |
| 379 | u32 correctable_error_mask; | 439 | u32 correctable_error_mask; |
| 380 | u32 advanced_error_capabilities; | 440 | u32 advanced_error_capabilities; |
| 381 | }; | 441 | }; |
| 382 | 442 | ||
| 443 | /* Masks for HEST Flags fields */ | ||
| 444 | |||
| 445 | #define ACPI_HEST_FIRMWARE_FIRST (1) | ||
| 446 | #define ACPI_HEST_GLOBAL (1<<1) | ||
| 447 | |||
| 383 | /* Hardware Error Notification */ | 448 | /* Hardware Error Notification */ |
| 384 | 449 | ||
| 385 | struct acpi_hest_notify { | 450 | struct acpi_hest_notify { |
| @@ -405,71 +470,59 @@ enum acpi_hest_notify_types { | |||
| 405 | ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ | 470 | ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ |
| 406 | }; | 471 | }; |
| 407 | 472 | ||
| 473 | /* Values for config_write_enable bitfield above */ | ||
| 474 | |||
| 475 | #define ACPI_HEST_TYPE (1) | ||
| 476 | #define ACPI_HEST_POLL_INTERVAL (1<<1) | ||
| 477 | #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) | ||
| 478 | #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) | ||
| 479 | #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) | ||
| 480 | #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) | ||
| 481 | |||
| 408 | /* | 482 | /* |
| 409 | * HEST subtables | 483 | * HEST subtables |
| 410 | * | ||
| 411 | * From WHEA Design Document, 16 May 2007. | ||
| 412 | * Note: There is no subtable type 2 in this version of the document, | ||
| 413 | * and there are two different subtable type 3s. | ||
| 414 | */ | 484 | */ |
| 415 | 485 | ||
| 416 | /* 0: XPF Machine Check Exception */ | 486 | /* 0: IA32 Machine Check Exception */ |
| 417 | 487 | ||
| 418 | struct acpi_hest_xpf_machine_check { | 488 | struct acpi_hest_ia_machine_check { |
| 419 | struct acpi_hest_header header; | 489 | struct acpi_hest_header header; |
| 420 | u16 source_id; | 490 | u16 reserved1; |
| 421 | u16 config_write_enable; | ||
| 422 | u8 flags; | 491 | u8 flags; |
| 423 | u8 reserved1; | 492 | u8 enabled; |
| 424 | u32 records_to_pre_allocate; | 493 | u32 records_to_pre_allocate; |
| 425 | u32 max_sections_per_record; | 494 | u32 max_sections_per_record; |
| 426 | u64 global_capability_data; | 495 | u64 global_capability_data; |
| 427 | u64 global_control_data; | 496 | u64 global_control_data; |
| 428 | u8 num_hardware_banks; | 497 | u8 num_hardware_banks; |
| 429 | u8 reserved2[7]; | 498 | u8 reserved3[7]; |
| 430 | }; | 499 | }; |
| 431 | 500 | ||
| 432 | /* 1: XPF Corrected Machine Check */ | 501 | /* 1: IA32 Corrected Machine Check */ |
| 433 | 502 | ||
| 434 | struct acpi_table_hest_xpf_corrected { | 503 | struct acpi_table_hest_ia_corrected { |
| 435 | struct acpi_hest_header header; | 504 | struct acpi_hest_header header; |
| 436 | u16 source_id; | 505 | u16 reserved1; |
| 437 | u16 config_write_enable; | ||
| 438 | u8 flags; | 506 | u8 flags; |
| 439 | u8 enabled; | 507 | u8 enabled; |
| 440 | u32 records_to_pre_allocate; | 508 | u32 records_to_pre_allocate; |
| 441 | u32 max_sections_per_record; | 509 | u32 max_sections_per_record; |
| 442 | struct acpi_hest_notify notify; | 510 | struct acpi_hest_notify notify; |
| 443 | u8 num_hardware_banks; | 511 | u8 num_hardware_banks; |
| 444 | u8 reserved[3]; | 512 | u8 reserved2[3]; |
| 445 | }; | 513 | }; |
| 446 | 514 | ||
| 447 | /* 3: XPF Non-Maskable Interrupt */ | 515 | /* 2: IA32 Non-Maskable Interrupt */ |
| 448 | 516 | ||
| 449 | struct acpi_hest_xpf_nmi { | 517 | struct acpi_hest_ia_nmi { |
| 450 | struct acpi_hest_header header; | 518 | struct acpi_hest_header header; |
| 451 | u16 source_id; | ||
| 452 | u32 reserved; | 519 | u32 reserved; |
| 453 | u32 records_to_pre_allocate; | 520 | u32 records_to_pre_allocate; |
| 454 | u32 max_sections_per_record; | 521 | u32 max_sections_per_record; |
| 455 | u32 max_raw_data_length; | 522 | u32 max_raw_data_length; |
| 456 | }; | 523 | }; |
| 457 | 524 | ||
| 458 | /* 4: IPF Corrected Machine Check */ | 525 | /* 3,4,5: Not used */ |
| 459 | |||
| 460 | struct acpi_hest_ipf_corrected { | ||
| 461 | struct acpi_hest_header header; | ||
| 462 | u8 enabled; | ||
| 463 | u8 reserved; | ||
| 464 | }; | ||
| 465 | |||
| 466 | /* 5: IPF Corrected Platform Error */ | ||
| 467 | |||
| 468 | struct acpi_hest_ipf_corrected_platform { | ||
| 469 | struct acpi_hest_header header; | ||
| 470 | u8 enabled; | ||
| 471 | u8 reserved; | ||
| 472 | }; | ||
| 473 | 526 | ||
| 474 | /* 6: PCI Express Root Port AER */ | 527 | /* 6: PCI Express Root Port AER */ |
| 475 | 528 | ||
| @@ -491,30 +544,61 @@ struct acpi_hest_aer { | |||
| 491 | struct acpi_hest_aer_bridge { | 544 | struct acpi_hest_aer_bridge { |
| 492 | struct acpi_hest_header header; | 545 | struct acpi_hest_header header; |
| 493 | struct acpi_hest_aer_common aer; | 546 | struct acpi_hest_aer_common aer; |
| 494 | u32 secondary_uncorrectable_error_mask; | 547 | u32 second_uncorrectable_error_mask; |
| 495 | u32 secondary_uncorrectable_error_severity; | 548 | u32 second_uncorrectable_error_severity; |
| 496 | u32 secondary_advanced_capabilities; | 549 | u32 second_advanced_capabilities; |
| 497 | }; | 550 | }; |
| 498 | 551 | ||
| 499 | /* 9: Generic Hardware Error Source */ | 552 | /* 9: Generic Hardware Error Source */ |
| 500 | 553 | ||
| 501 | struct acpi_hest_generic { | 554 | struct acpi_hest_generic { |
| 502 | struct acpi_hest_header header; | 555 | struct acpi_hest_header header; |
| 503 | u16 source_id; | ||
| 504 | u16 related_source_id; | 556 | u16 related_source_id; |
| 505 | u8 config_write_enable; | 557 | u8 reserved; |
| 506 | u8 enabled; | 558 | u8 enabled; |
| 507 | u32 records_to_pre_allocate; | 559 | u32 records_to_pre_allocate; |
| 508 | u32 max_sections_per_record; | 560 | u32 max_sections_per_record; |
| 509 | u32 max_raw_data_length; | 561 | u32 max_raw_data_length; |
| 510 | struct acpi_generic_address error_status_address; | 562 | struct acpi_generic_address error_status_address; |
| 511 | struct acpi_hest_notify notify; | 563 | struct acpi_hest_notify notify; |
| 512 | u32 error_status_block_length; | 564 | u32 error_block_length; |
| 565 | }; | ||
| 566 | |||
| 567 | /* Generic Error Status block */ | ||
| 568 | |||
| 569 | struct acpi_hest_generic_status { | ||
| 570 | u32 block_status; | ||
| 571 | u32 raw_data_offset; | ||
| 572 | u32 raw_data_length; | ||
| 573 | u32 data_length; | ||
| 574 | u32 error_severity; | ||
| 575 | }; | ||
| 576 | |||
| 577 | /* Values for block_status flags above */ | ||
| 578 | |||
| 579 | #define ACPI_HEST_UNCORRECTABLE (1) | ||
| 580 | #define ACPI_HEST_CORRECTABLE (1<<1) | ||
| 581 | #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) | ||
| 582 | #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) | ||
| 583 | #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ | ||
| 584 | |||
| 585 | /* Generic Error Data entry */ | ||
| 586 | |||
| 587 | struct acpi_hest_generic_data { | ||
| 588 | u8 section_type[16]; | ||
| 589 | u32 error_severity; | ||
| 590 | u16 revision; | ||
| 591 | u8 validation_bits; | ||
| 592 | u8 flags; | ||
| 593 | u32 error_data_length; | ||
| 594 | u8 fru_id[16]; | ||
| 595 | u8 fru_text[20]; | ||
| 513 | }; | 596 | }; |
| 514 | 597 | ||
| 515 | /******************************************************************************* | 598 | /******************************************************************************* |
| 516 | * | 599 | * |
| 517 | * MADT - Multiple APIC Description Table | 600 | * MADT - Multiple APIC Description Table |
| 601 | * Version 3 | ||
| 518 | * | 602 | * |
| 519 | ******************************************************************************/ | 603 | ******************************************************************************/ |
| 520 | 604 | ||
| @@ -524,16 +608,16 @@ struct acpi_table_madt { | |||
| 524 | u32 flags; | 608 | u32 flags; |
| 525 | }; | 609 | }; |
| 526 | 610 | ||
| 527 | /* Flags */ | 611 | /* Masks for Flags field above */ |
| 528 | 612 | ||
| 529 | #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ | 613 | #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ |
| 530 | 614 | ||
| 531 | /* Values for PCATCompat flag */ | 615 | /* Values for PCATCompat flag */ |
| 532 | 616 | ||
| 533 | #define ACPI_MADT_DUAL_PIC 0 | 617 | #define ACPI_MADT_DUAL_PIC 0 |
| 534 | #define ACPI_MADT_MULTIPLE_APIC 1 | 618 | #define ACPI_MADT_MULTIPLE_APIC 1 |
| 535 | 619 | ||
| 536 | /* Values for subtable type in struct acpi_subtable_header */ | 620 | /* Values for MADT subtable type in struct acpi_subtable_header */ |
| 537 | 621 | ||
| 538 | enum acpi_madt_type { | 622 | enum acpi_madt_type { |
| 539 | ACPI_MADT_TYPE_LOCAL_APIC = 0, | 623 | ACPI_MADT_TYPE_LOCAL_APIC = 0, |
| @@ -644,7 +728,7 @@ struct acpi_madt_interrupt_source { | |||
| 644 | u32 flags; /* Interrupt Source Flags */ | 728 | u32 flags; /* Interrupt Source Flags */ |
| 645 | }; | 729 | }; |
| 646 | 730 | ||
| 647 | /* Flags field above */ | 731 | /* Masks for Flags field above */ |
| 648 | 732 | ||
| 649 | #define ACPI_MADT_CPEI_OVERRIDE (1) | 733 | #define ACPI_MADT_CPEI_OVERRIDE (1) |
| 650 | 734 | ||
| @@ -695,7 +779,34 @@ struct acpi_madt_local_x2apic_nmi { | |||
| 695 | 779 | ||
| 696 | /******************************************************************************* | 780 | /******************************************************************************* |
| 697 | * | 781 | * |
| 782 | * MSCT - Maximum System Characteristics Table (ACPI 4.0) | ||
| 783 | * Version 1 | ||
| 784 | * | ||
| 785 | ******************************************************************************/ | ||
| 786 | |||
| 787 | struct acpi_table_msct { | ||
| 788 | struct acpi_table_header header; /* Common ACPI table header */ | ||
| 789 | u32 proximity_offset; /* Location of proximity info struct(s) */ | ||
| 790 | u32 max_proximity_domains; /* Max number of proximity domains */ | ||
| 791 | u32 max_clock_domains; /* Max number of clock domains */ | ||
| 792 | u64 max_address; /* Max physical address in system */ | ||
| 793 | }; | ||
| 794 | |||
| 795 | /* Subtable - Maximum Proximity Domain Information. Version 1 */ | ||
| 796 | |||
| 797 | struct acpi_msct_proximity { | ||
| 798 | u8 revision; | ||
| 799 | u8 length; | ||
| 800 | u32 range_start; /* Start of domain range */ | ||
| 801 | u32 range_end; /* End of domain range */ | ||
| 802 | u32 processor_capacity; | ||
| 803 | u64 memory_capacity; /* In bytes */ | ||
| 804 | }; | ||
| 805 | |||
| 806 | /******************************************************************************* | ||
| 807 | * | ||
| 698 | * SBST - Smart Battery Specification Table | 808 | * SBST - Smart Battery Specification Table |
| 809 | * Version 1 | ||
| 699 | * | 810 | * |
| 700 | ******************************************************************************/ | 811 | ******************************************************************************/ |
| 701 | 812 | ||
| @@ -709,6 +820,7 @@ struct acpi_table_sbst { | |||
| 709 | /******************************************************************************* | 820 | /******************************************************************************* |
| 710 | * | 821 | * |
| 711 | * SLIT - System Locality Distance Information Table | 822 | * SLIT - System Locality Distance Information Table |
| 823 | * Version 1 | ||
| 712 | * | 824 | * |
| 713 | ******************************************************************************/ | 825 | ******************************************************************************/ |
| 714 | 826 | ||
| @@ -721,6 +833,7 @@ struct acpi_table_slit { | |||
| 721 | /******************************************************************************* | 833 | /******************************************************************************* |
| 722 | * | 834 | * |
| 723 | * SRAT - System Resource Affinity Table | 835 | * SRAT - System Resource Affinity Table |
| 836 | * Version 3 | ||
| 724 | * | 837 | * |
| 725 | ******************************************************************************/ | 838 | ******************************************************************************/ |
| 726 | 839 | ||
| @@ -755,6 +868,10 @@ struct acpi_srat_cpu_affinity { | |||
| 755 | u32 reserved; /* Reserved, must be zero */ | 868 | u32 reserved; /* Reserved, must be zero */ |
| 756 | }; | 869 | }; |
| 757 | 870 | ||
| 871 | /* Flags */ | ||
| 872 | |||
| 873 | #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ | ||
| 874 | |||
| 758 | /* 1: Memory Affinity */ | 875 | /* 1: Memory Affinity */ |
| 759 | 876 | ||
| 760 | struct acpi_srat_mem_affinity { | 877 | struct acpi_srat_mem_affinity { |
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index b271aba0e524..6f3dce9991e1 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h | |||
| @@ -14,8 +14,9 @@ | |||
| 14 | ******************************************************************************/ | 14 | ******************************************************************************/ |
| 15 | 15 | ||
| 16 | /* | 16 | /* |
| 17 | * Values for description table header signatures. Useful because they make | 17 | * Values for description table header signatures for tables defined in this |
| 18 | * it more difficult to inadvertently type in the wrong signature. | 18 | * file. Useful because they make it more difficult to inadvertently type in |
| 19 | * the wrong signature. | ||
| 19 | */ | 20 | */ |
| 20 | #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ | 21 | #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ |
| 21 | #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ | 22 | #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ |
| @@ -23,12 +24,14 @@ | |||
| 23 | #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ | 24 | #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ |
| 24 | #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ | 25 | #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ |
| 25 | #define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ | 26 | #define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ |
| 27 | #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ | ||
| 26 | #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ | 28 | #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ |
| 27 | #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ | 29 | #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ |
| 28 | #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ | 30 | #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ |
| 29 | #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ | 31 | #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ |
| 30 | #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ | 32 | #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ |
| 31 | #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ | 33 | #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ |
| 34 | #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ | ||
| 32 | #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ | 35 | #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ |
| 33 | #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ | 36 | #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ |
| 34 | 37 | ||
| @@ -47,6 +50,7 @@ | |||
| 47 | /******************************************************************************* | 50 | /******************************************************************************* |
| 48 | * | 51 | * |
| 49 | * ASF - Alert Standard Format table (Signature "ASF!") | 52 | * ASF - Alert Standard Format table (Signature "ASF!") |
| 53 | * Revision 0x10 | ||
| 50 | * | 54 | * |
| 51 | * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 | 55 | * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 |
| 52 | * | 56 | * |
| @@ -91,6 +95,10 @@ struct acpi_asf_info { | |||
| 91 | u8 reserved2[3]; | 95 | u8 reserved2[3]; |
| 92 | }; | 96 | }; |
| 93 | 97 | ||
| 98 | /* Masks for Flags field above */ | ||
| 99 | |||
| 100 | #define ACPI_ASF_SMBUS_PROTOCOLS (1) | ||
| 101 | |||
| 94 | /* 1: ASF Alerts */ | 102 | /* 1: ASF Alerts */ |
| 95 | 103 | ||
| 96 | struct acpi_asf_alert { | 104 | struct acpi_asf_alert { |
| @@ -156,6 +164,9 @@ struct acpi_asf_address { | |||
| 156 | /******************************************************************************* | 164 | /******************************************************************************* |
| 157 | * | 165 | * |
| 158 | * BOOT - Simple Boot Flag Table | 166 | * BOOT - Simple Boot Flag Table |
| 167 | * Version 1 | ||
| 168 | * | ||
| 169 | * Conforms to the "Simple Boot Flag Specification", Version 2.1 | ||
| 159 | * | 170 | * |
| 160 | ******************************************************************************/ | 171 | ******************************************************************************/ |
| 161 | 172 | ||
| @@ -168,6 +179,9 @@ struct acpi_table_boot { | |||
| 168 | /******************************************************************************* | 179 | /******************************************************************************* |
| 169 | * | 180 | * |
| 170 | * DBGP - Debug Port table | 181 | * DBGP - Debug Port table |
| 182 | * Version 1 | ||
| 183 | * | ||
| 184 | * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 | ||
| 171 | * | 185 | * |
| 172 | ******************************************************************************/ | 186 | ******************************************************************************/ |
| 173 | 187 | ||
| @@ -181,7 +195,10 @@ struct acpi_table_dbgp { | |||
| 181 | /******************************************************************************* | 195 | /******************************************************************************* |
| 182 | * | 196 | * |
| 183 | * DMAR - DMA Remapping table | 197 | * DMAR - DMA Remapping table |
| 184 | * From "Intel Virtualization Technology for Directed I/O", Sept. 2007 | 198 | * Version 1 |
| 199 | * | ||
| 200 | * Conforms to "Intel Virtualization Technology for Directed I/O", | ||
| 201 | * Version 1.2, Sept. 2008 | ||
| 185 | * | 202 | * |
| 186 | ******************************************************************************/ | 203 | ******************************************************************************/ |
| 187 | 204 | ||
| @@ -192,7 +209,7 @@ struct acpi_table_dmar { | |||
| 192 | u8 reserved[10]; | 209 | u8 reserved[10]; |
| 193 | }; | 210 | }; |
| 194 | 211 | ||
| 195 | /* Flags */ | 212 | /* Masks for Flags field above */ |
| 196 | 213 | ||
| 197 | #define ACPI_DMAR_INTR_REMAP (1) | 214 | #define ACPI_DMAR_INTR_REMAP (1) |
| 198 | 215 | ||
| @@ -209,9 +226,12 @@ enum acpi_dmar_type { | |||
| 209 | ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, | 226 | ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, |
| 210 | ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, | 227 | ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, |
| 211 | ACPI_DMAR_TYPE_ATSR = 2, | 228 | ACPI_DMAR_TYPE_ATSR = 2, |
| 212 | ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */ | 229 | ACPI_DMAR_HARDWARE_AFFINITY = 3, |
| 230 | ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ | ||
| 213 | }; | 231 | }; |
| 214 | 232 | ||
| 233 | /* DMAR Device Scope structure */ | ||
| 234 | |||
| 215 | struct acpi_dmar_device_scope { | 235 | struct acpi_dmar_device_scope { |
| 216 | u8 entry_type; | 236 | u8 entry_type; |
| 217 | u8 length; | 237 | u8 length; |
| @@ -250,7 +270,7 @@ struct acpi_dmar_hardware_unit { | |||
| 250 | u64 address; /* Register Base Address */ | 270 | u64 address; /* Register Base Address */ |
| 251 | }; | 271 | }; |
| 252 | 272 | ||
| 253 | /* Flags */ | 273 | /* Masks for Flags field above */ |
| 254 | 274 | ||
| 255 | #define ACPI_DMAR_INCLUDE_ALL (1) | 275 | #define ACPI_DMAR_INCLUDE_ALL (1) |
| 256 | 276 | ||
| @@ -264,7 +284,7 @@ struct acpi_dmar_reserved_memory { | |||
| 264 | u64 end_address; /* 4_k aligned limit address */ | 284 | u64 end_address; /* 4_k aligned limit address */ |
| 265 | }; | 285 | }; |
| 266 | 286 | ||
| 267 | /* Flags */ | 287 | /* Masks for Flags field above */ |
| 268 | 288 | ||
| 269 | #define ACPI_DMAR_ALLOW_ALL (1) | 289 | #define ACPI_DMAR_ALLOW_ALL (1) |
| 270 | 290 | ||
| @@ -277,13 +297,26 @@ struct acpi_dmar_atsr { | |||
| 277 | u16 segment; | 297 | u16 segment; |
| 278 | }; | 298 | }; |
| 279 | 299 | ||
| 280 | /* Flags */ | 300 | /* Masks for Flags field above */ |
| 281 | 301 | ||
| 282 | #define ACPI_DMAR_ALL_PORTS (1) | 302 | #define ACPI_DMAR_ALL_PORTS (1) |
| 283 | 303 | ||
| 304 | /* 3: Remapping Hardware Static Affinity Structure */ | ||
| 305 | |||
| 306 | struct acpi_dmar_rhsa { | ||
| 307 | struct acpi_dmar_header header; | ||
| 308 | u32 reserved; | ||
| 309 | u64 base_address; | ||
| 310 | u32 proximity_domain; | ||
| 311 | }; | ||
| 312 | |||
| 284 | /******************************************************************************* | 313 | /******************************************************************************* |
| 285 | * | 314 | * |
| 286 | * HPET - High Precision Event Timer table | 315 | * HPET - High Precision Event Timer table |
| 316 | * Version 1 | ||
| 317 | * | ||
| 318 | * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", | ||
| 319 | * Version 1.0a, October 2004 | ||
| 287 | * | 320 | * |
| 288 | ******************************************************************************/ | 321 | ******************************************************************************/ |
| 289 | 322 | ||
| @@ -296,17 +329,28 @@ struct acpi_table_hpet { | |||
| 296 | u8 flags; | 329 | u8 flags; |
| 297 | }; | 330 | }; |
| 298 | 331 | ||
| 299 | /*! Flags */ | 332 | /* Masks for Flags field above */ |
| 300 | 333 | ||
| 301 | #define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ | 334 | #define ACPI_HPET_PAGE_PROTECT_MASK (3) |
| 302 | #define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ | ||
| 303 | #define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ | ||
| 304 | 335 | ||
| 305 | /*! [End] no source code translation !*/ | 336 | /* Values for Page Protect flags */ |
| 337 | |||
| 338 | enum acpi_hpet_page_protect { | ||
| 339 | ACPI_HPET_NO_PAGE_PROTECT = 0, | ||
| 340 | ACPI_HPET_PAGE_PROTECT4 = 1, | ||
| 341 | ACPI_HPET_PAGE_PROTECT64 = 2 | ||
| 342 | }; | ||
| 306 | 343 | ||
| 307 | /******************************************************************************* | 344 | /******************************************************************************* |
| 308 | * | 345 | * |
| 309 | * IBFT - Boot Firmware Table | 346 | * IBFT - Boot Firmware Table |
| 347 | * Version 1 | ||
| 348 | * | ||
| 349 | * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b | ||
| 350 | * Specification", Version 1.01, March 1, 2007 | ||
| 351 | * | ||
| 352 | * Note: It appears that this table is not intended to appear in the RSDT/XSDT. | ||
| 353 | * Therefore, it is not currently supported by the disassembler. | ||
| 310 | * | 354 | * |
| 311 | ******************************************************************************/ | 355 | ******************************************************************************/ |
| 312 | 356 | ||
| @@ -396,7 +440,182 @@ struct acpi_ibft_target { | |||
| 396 | 440 | ||
| 397 | /******************************************************************************* | 441 | /******************************************************************************* |
| 398 | * | 442 | * |
| 443 | * IVRS - I/O Virtualization Reporting Structure | ||
| 444 | * Version 1 | ||
| 445 | * | ||
| 446 | * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", | ||
| 447 | * Revision 1.26, February 2009. | ||
| 448 | * | ||
| 449 | ******************************************************************************/ | ||
| 450 | |||
| 451 | struct acpi_table_ivrs { | ||
| 452 | struct acpi_table_header header; /* Common ACPI table header */ | ||
| 453 | u32 info; /* Common virtualization info */ | ||
| 454 | u64 reserved; | ||
| 455 | }; | ||
| 456 | |||
| 457 | /* Values for Info field above */ | ||
| 458 | |||
| 459 | #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ | ||
| 460 | #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ | ||
| 461 | #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ | ||
| 462 | |||
| 463 | /* IVRS subtable header */ | ||
| 464 | |||
| 465 | struct acpi_ivrs_header { | ||
| 466 | u8 type; /* Subtable type */ | ||
| 467 | u8 flags; | ||
| 468 | u16 length; /* Subtable length */ | ||
| 469 | u16 device_id; /* ID of IOMMU */ | ||
| 470 | }; | ||
| 471 | |||
| 472 | /* Values for subtable Type above */ | ||
| 473 | |||
| 474 | enum acpi_ivrs_type { | ||
| 475 | ACPI_IVRS_TYPE_HARDWARE = 0x10, | ||
| 476 | ACPI_IVRS_TYPE_MEMORY1 = 0x20, | ||
| 477 | ACPI_IVRS_TYPE_MEMORY2 = 0x21, | ||
| 478 | ACPI_IVRS_TYPE_MEMORY3 = 0x22 | ||
| 479 | }; | ||
| 480 | |||
| 481 | /* Masks for Flags field above for IVHD subtable */ | ||
| 482 | |||
| 483 | #define ACPI_IVHD_TT_ENABLE (1) | ||
| 484 | #define ACPI_IVHD_PASS_PW (1<<1) | ||
| 485 | #define ACPI_IVHD_RES_PASS_PW (1<<2) | ||
| 486 | #define ACPI_IVHD_ISOC (1<<3) | ||
| 487 | #define ACPI_IVHD_IOTLB (1<<4) | ||
| 488 | |||
| 489 | /* Masks for Flags field above for IVMD subtable */ | ||
| 490 | |||
| 491 | #define ACPI_IVMD_UNITY (1) | ||
| 492 | #define ACPI_IVMD_READ (1<<1) | ||
| 493 | #define ACPI_IVMD_WRITE (1<<2) | ||
| 494 | #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) | ||
| 495 | |||
| 496 | /* | ||
| 497 | * IVRS subtables, correspond to Type in struct acpi_ivrs_header | ||
| 498 | */ | ||
| 499 | |||
| 500 | /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ | ||
| 501 | |||
| 502 | struct acpi_ivrs_hardware { | ||
| 503 | struct acpi_ivrs_header header; | ||
| 504 | u16 capability_offset; /* Offset for IOMMU control fields */ | ||
| 505 | u64 base_address; /* IOMMU control registers */ | ||
| 506 | u16 pci_segment_group; | ||
| 507 | u16 info; /* MSI number and unit ID */ | ||
| 508 | u32 reserved; | ||
| 509 | }; | ||
| 510 | |||
| 511 | /* Masks for Info field above */ | ||
| 512 | |||
| 513 | #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ | ||
| 514 | #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, unit_iD */ | ||
| 515 | |||
| 516 | /* | ||
| 517 | * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. | ||
| 518 | * Upper two bits of the Type field are the (encoded) length of the structure. | ||
| 519 | * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries | ||
| 520 | * are reserved for future use but not defined. | ||
| 521 | */ | ||
| 522 | struct acpi_ivrs_de_header { | ||
| 523 | u8 type; | ||
| 524 | u16 id; | ||
| 525 | u8 data_setting; | ||
| 526 | }; | ||
| 527 | |||
| 528 | /* Length of device entry is in the top two bits of Type field above */ | ||
| 529 | |||
| 530 | #define ACPI_IVHD_ENTRY_LENGTH 0xC0 | ||
| 531 | |||
| 532 | /* Values for device entry Type field above */ | ||
| 533 | |||
| 534 | enum acpi_ivrs_device_entry_type { | ||
| 535 | /* 4-byte device entries, all use struct acpi_ivrs_device4 */ | ||
| 536 | |||
| 537 | ACPI_IVRS_TYPE_PAD4 = 0, | ||
| 538 | ACPI_IVRS_TYPE_ALL = 1, | ||
| 539 | ACPI_IVRS_TYPE_SELECT = 2, | ||
| 540 | ACPI_IVRS_TYPE_START = 3, | ||
| 541 | ACPI_IVRS_TYPE_END = 4, | ||
| 542 | |||
| 543 | /* 8-byte device entries */ | ||
| 544 | |||
| 545 | ACPI_IVRS_TYPE_PAD8 = 64, | ||
| 546 | ACPI_IVRS_TYPE_NOT_USED = 65, | ||
| 547 | ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses struct acpi_ivrs_device8a */ | ||
| 548 | ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses struct acpi_ivrs_device8a */ | ||
| 549 | ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses struct acpi_ivrs_device8b */ | ||
| 550 | ACPI_IVRS_TYPE_EXT_START = 71, /* Uses struct acpi_ivrs_device8b */ | ||
| 551 | ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses struct acpi_ivrs_device8c */ | ||
| 552 | }; | ||
| 553 | |||
| 554 | /* Values for Data field above */ | ||
| 555 | |||
| 556 | #define ACPI_IVHD_INIT_PASS (1) | ||
| 557 | #define ACPI_IVHD_EINT_PASS (1<<1) | ||
| 558 | #define ACPI_IVHD_NMI_PASS (1<<2) | ||
| 559 | #define ACPI_IVHD_SYSTEM_MGMT (3<<4) | ||
| 560 | #define ACPI_IVHD_LINT0_PASS (1<<6) | ||
| 561 | #define ACPI_IVHD_LINT1_PASS (1<<7) | ||
| 562 | |||
| 563 | /* Types 0-4: 4-byte device entry */ | ||
| 564 | |||
| 565 | struct acpi_ivrs_device4 { | ||
| 566 | struct acpi_ivrs_de_header header; | ||
| 567 | }; | ||
| 568 | |||
| 569 | /* Types 66-67: 8-byte device entry */ | ||
| 570 | |||
| 571 | struct acpi_ivrs_device8a { | ||
| 572 | struct acpi_ivrs_de_header header; | ||
| 573 | u8 reserved1; | ||
| 574 | u16 used_id; | ||
| 575 | u8 reserved2; | ||
| 576 | }; | ||
| 577 | |||
| 578 | /* Types 70-71: 8-byte device entry */ | ||
| 579 | |||
| 580 | struct acpi_ivrs_device8b { | ||
| 581 | struct acpi_ivrs_de_header header; | ||
| 582 | u32 extended_data; | ||
| 583 | }; | ||
| 584 | |||
| 585 | /* Values for extended_data above */ | ||
| 586 | |||
| 587 | #define ACPI_IVHD_ATS_DISABLED (1<<31) | ||
| 588 | |||
| 589 | /* Type 72: 8-byte device entry */ | ||
| 590 | |||
| 591 | struct acpi_ivrs_device8c { | ||
| 592 | struct acpi_ivrs_de_header header; | ||
| 593 | u8 handle; | ||
| 594 | u16 used_id; | ||
| 595 | u8 variety; | ||
| 596 | }; | ||
| 597 | |||
| 598 | /* Values for Variety field above */ | ||
| 599 | |||
| 600 | #define ACPI_IVHD_IOAPIC 1 | ||
| 601 | #define ACPI_IVHD_HPET 2 | ||
| 602 | |||
| 603 | /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ | ||
| 604 | |||
| 605 | struct acpi_ivrs_memory { | ||
| 606 | struct acpi_ivrs_header header; | ||
| 607 | u16 aux_data; | ||
| 608 | u64 reserved; | ||
| 609 | u64 start_address; | ||
| 610 | u64 memory_length; | ||
| 611 | }; | ||
| 612 | |||
| 613 | /******************************************************************************* | ||
| 614 | * | ||
| 399 | * MCFG - PCI Memory Mapped Configuration table and sub-table | 615 | * MCFG - PCI Memory Mapped Configuration table and sub-table |
| 616 | * Version 1 | ||
| 617 | * | ||
| 618 | * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 | ||
| 400 | * | 619 | * |
| 401 | ******************************************************************************/ | 620 | ******************************************************************************/ |
| 402 | 621 | ||
| @@ -418,6 +637,10 @@ struct acpi_mcfg_allocation { | |||
| 418 | /******************************************************************************* | 637 | /******************************************************************************* |
| 419 | * | 638 | * |
| 420 | * SPCR - Serial Port Console Redirection table | 639 | * SPCR - Serial Port Console Redirection table |
| 640 | * Version 1 | ||
| 641 | * | ||
| 642 | * Conforms to "Serial Port Console Redirection Table", | ||
| 643 | * Version 1.00, January 11, 2002 | ||
| 421 | * | 644 | * |
| 422 | ******************************************************************************/ | 645 | ******************************************************************************/ |
| 423 | 646 | ||
| @@ -445,16 +668,25 @@ struct acpi_table_spcr { | |||
| 445 | u32 reserved2; | 668 | u32 reserved2; |
| 446 | }; | 669 | }; |
| 447 | 670 | ||
| 671 | /* Masks for pci_flags field above */ | ||
| 672 | |||
| 673 | #define ACPI_SPCR_DO_NOT_DISABLE (1) | ||
| 674 | |||
| 448 | /******************************************************************************* | 675 | /******************************************************************************* |
| 449 | * | 676 | * |
| 450 | * SPMI - Server Platform Management Interface table | 677 | * SPMI - Server Platform Management Interface table |
| 678 | * Version 5 | ||
| 679 | * | ||
| 680 | * Conforms to "Intelligent Platform Management Interface Specification | ||
| 681 | * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with | ||
| 682 | * June 12, 2009 markup. | ||
| 451 | * | 683 | * |
| 452 | ******************************************************************************/ | 684 | ******************************************************************************/ |
| 453 | 685 | ||
| 454 | struct acpi_table_spmi { | 686 | struct acpi_table_spmi { |
| 455 | struct acpi_table_header header; /* Common ACPI table header */ | 687 | struct acpi_table_header header; /* Common ACPI table header */ |
| 456 | u8 reserved; | ||
| 457 | u8 interface_type; | 688 | u8 interface_type; |
| 689 | u8 reserved; /* Must be 1 */ | ||
| 458 | u16 spec_revision; /* Version of IPMI */ | 690 | u16 spec_revision; /* Version of IPMI */ |
| 459 | u8 interrupt_type; | 691 | u8 interrupt_type; |
| 460 | u8 gpe_number; /* GPE assigned */ | 692 | u8 gpe_number; /* GPE assigned */ |
| @@ -466,11 +698,27 @@ struct acpi_table_spmi { | |||
| 466 | u8 pci_bus; | 698 | u8 pci_bus; |
| 467 | u8 pci_device; | 699 | u8 pci_device; |
| 468 | u8 pci_function; | 700 | u8 pci_function; |
| 701 | u8 reserved2; | ||
| 702 | }; | ||
| 703 | |||
| 704 | /* Values for interface_type above */ | ||
| 705 | |||
| 706 | enum acpi_spmi_interface_types { | ||
| 707 | ACPI_SPMI_NOT_USED = 0, | ||
| 708 | ACPI_SPMI_KEYBOARD = 1, | ||
| 709 | ACPI_SPMI_SMI = 2, | ||
| 710 | ACPI_SPMI_BLOCK_TRANSFER = 3, | ||
| 711 | ACPI_SPMI_SMBUS = 4, | ||
| 712 | ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ | ||
| 469 | }; | 713 | }; |
| 470 | 714 | ||
| 471 | /******************************************************************************* | 715 | /******************************************************************************* |
| 472 | * | 716 | * |
| 473 | * TCPA - Trusted Computing Platform Alliance table | 717 | * TCPA - Trusted Computing Platform Alliance table |
| 718 | * Version 1 | ||
| 719 | * | ||
| 720 | * Conforms to "TCG PC Specific Implementation Specification", | ||
| 721 | * Version 1.1, August 18, 2003 | ||
| 474 | * | 722 | * |
| 475 | ******************************************************************************/ | 723 | ******************************************************************************/ |
| 476 | 724 | ||
| @@ -484,6 +732,10 @@ struct acpi_table_tcpa { | |||
| 484 | /******************************************************************************* | 732 | /******************************************************************************* |
| 485 | * | 733 | * |
| 486 | * UEFI - UEFI Boot optimization Table | 734 | * UEFI - UEFI Boot optimization Table |
| 735 | * Version 1 | ||
| 736 | * | ||
| 737 | * Conforms to "Unified Extensible Firmware Interface Specification", | ||
| 738 | * Version 2.3, May 8, 2009 | ||
| 487 | * | 739 | * |
| 488 | ******************************************************************************/ | 740 | ******************************************************************************/ |
| 489 | 741 | ||
| @@ -491,12 +743,34 @@ struct acpi_table_uefi { | |||
| 491 | struct acpi_table_header header; /* Common ACPI table header */ | 743 | struct acpi_table_header header; /* Common ACPI table header */ |
| 492 | u8 identifier[16]; /* UUID identifier */ | 744 | u8 identifier[16]; /* UUID identifier */ |
| 493 | u16 data_offset; /* Offset of remaining data in table */ | 745 | u16 data_offset; /* Offset of remaining data in table */ |
| 494 | u8 data; | ||
| 495 | }; | 746 | }; |
| 496 | 747 | ||
| 497 | /******************************************************************************* | 748 | /******************************************************************************* |
| 498 | * | 749 | * |
| 750 | * WAET - Windows ACPI Emulated devices Table | ||
| 751 | * Version 1 | ||
| 752 | * | ||
| 753 | * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 | ||
| 754 | * | ||
| 755 | ******************************************************************************/ | ||
| 756 | |||
| 757 | struct acpi_table_waet { | ||
| 758 | struct acpi_table_header header; /* Common ACPI table header */ | ||
| 759 | u32 flags; | ||
| 760 | }; | ||
| 761 | |||
| 762 | /* Masks for Flags field above */ | ||
| 763 | |||
| 764 | #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ | ||
| 765 | #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ | ||
| 766 | |||
| 767 | /******************************************************************************* | ||
| 768 | * | ||
| 499 | * WDAT - Watchdog Action Table | 769 | * WDAT - Watchdog Action Table |
| 770 | * Version 1 | ||
| 771 | * | ||
| 772 | * Conforms to "Hardware Watchdog Timers Design Specification", | ||
| 773 | * Copyright 2006 Microsoft Corporation. | ||
| 500 | * | 774 | * |
| 501 | ******************************************************************************/ | 775 | ******************************************************************************/ |
| 502 | 776 | ||
| @@ -516,10 +790,20 @@ struct acpi_table_wdat { | |||
| 516 | u32 entries; /* Number of watchdog entries that follow */ | 790 | u32 entries; /* Number of watchdog entries that follow */ |
| 517 | }; | 791 | }; |
| 518 | 792 | ||
| 793 | /* Masks for Flags field above */ | ||
| 794 | |||
| 795 | #define ACPI_WDAT_ENABLED (1) | ||
| 796 | #define ACPI_WDAT_STOPPED 0x80 | ||
| 797 | |||
| 519 | /* WDAT Instruction Entries (actions) */ | 798 | /* WDAT Instruction Entries (actions) */ |
| 520 | 799 | ||
| 521 | struct acpi_wdat_entry { | 800 | struct acpi_wdat_entry { |
| 522 | struct acpi_whea_header whea_header; /* Common header for WHEA tables */ | 801 | u8 action; |
| 802 | u8 instruction; | ||
| 803 | u16 reserved; | ||
| 804 | struct acpi_generic_address register_region; | ||
| 805 | u32 value; /* Value used with Read/Write register */ | ||
| 806 | u32 mask; /* Bitmask required for this register instruction */ | ||
| 523 | }; | 807 | }; |
| 524 | 808 | ||
| 525 | /* Values for Action field above */ | 809 | /* Values for Action field above */ |
| @@ -556,28 +840,27 @@ enum acpi_wdat_instructions { | |||
| 556 | /******************************************************************************* | 840 | /******************************************************************************* |
| 557 | * | 841 | * |
| 558 | * WDRT - Watchdog Resource Table | 842 | * WDRT - Watchdog Resource Table |
| 843 | * Version 1 | ||
| 844 | * | ||
| 845 | * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", | ||
| 846 | * Version 1.01, August 28, 2006 | ||
| 559 | * | 847 | * |
| 560 | ******************************************************************************/ | 848 | ******************************************************************************/ |
| 561 | 849 | ||
| 562 | struct acpi_table_wdrt { | 850 | struct acpi_table_wdrt { |
| 563 | struct acpi_table_header header; /* Common ACPI table header */ | 851 | struct acpi_table_header header; /* Common ACPI table header */ |
| 564 | u32 header_length; /* Watchdog Header Length */ | 852 | struct acpi_generic_address control_register; |
| 565 | u8 pci_segment; /* PCI Segment number */ | 853 | struct acpi_generic_address count_register; |
| 854 | u16 pci_device_id; | ||
| 855 | u16 pci_vendor_id; | ||
| 566 | u8 pci_bus; /* PCI Bus number */ | 856 | u8 pci_bus; /* PCI Bus number */ |
| 567 | u8 pci_device; /* PCI Device number */ | 857 | u8 pci_device; /* PCI Device number */ |
| 568 | u8 pci_function; /* PCI Function number */ | 858 | u8 pci_function; /* PCI Function number */ |
| 569 | u32 timer_period; /* Period of one timer count (msec) */ | 859 | u8 pci_segment; /* PCI Segment number */ |
| 570 | u32 max_count; /* Maximum counter value supported */ | 860 | u16 max_count; /* Maximum counter value supported */ |
| 571 | u32 min_count; /* Minimum counter value */ | 861 | u8 units; |
| 572 | u8 flags; | ||
| 573 | u8 reserved[3]; | ||
| 574 | u32 entries; /* Number of watchdog entries that follow */ | ||
| 575 | }; | 862 | }; |
| 576 | 863 | ||
| 577 | /* Flags */ | ||
| 578 | |||
| 579 | #define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ | ||
| 580 | |||
| 581 | /* Reset to default packing */ | 864 | /* Reset to default packing */ |
| 582 | 865 | ||
| 583 | #pragma pack() | 866 | #pragma pack() |
