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 | |
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>
-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() |