diff options
Diffstat (limited to 'include/acpi/actbl3.h')
-rw-r--r-- | include/acpi/actbl3.h | 118 |
1 files changed, 102 insertions, 16 deletions
diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index c2295cc4a5c0..787bcc814463 100644 --- a/include/acpi/actbl3.h +++ b/include/acpi/actbl3.h | |||
@@ -241,33 +241,96 @@ struct acpi_s3pt_suspend { | |||
241 | 241 | ||
242 | /******************************************************************************* | 242 | /******************************************************************************* |
243 | * | 243 | * |
244 | * GTDT - Generic Timer Description Table (ACPI 5.0) | 244 | * GTDT - Generic Timer Description Table (ACPI 5.1) |
245 | * Version 1 | 245 | * Version 2 |
246 | * | 246 | * |
247 | ******************************************************************************/ | 247 | ******************************************************************************/ |
248 | 248 | ||
249 | struct acpi_table_gtdt { | 249 | struct acpi_table_gtdt { |
250 | struct acpi_table_header header; /* Common ACPI table header */ | 250 | struct acpi_table_header header; /* Common ACPI table header */ |
251 | u64 address; | 251 | u64 counter_block_addresss; |
252 | u32 flags; | 252 | u32 reserved; |
253 | u32 secure_pl1_interrupt; | 253 | u32 secure_el1_interrupt; |
254 | u32 secure_pl1_flags; | 254 | u32 secure_el1_flags; |
255 | u32 non_secure_pl1_interrupt; | 255 | u32 non_secure_el1_interrupt; |
256 | u32 non_secure_pl1_flags; | 256 | u32 non_secure_el1_flags; |
257 | u32 virtual_timer_interrupt; | 257 | u32 virtual_timer_interrupt; |
258 | u32 virtual_timer_flags; | 258 | u32 virtual_timer_flags; |
259 | u32 non_secure_pl2_interrupt; | 259 | u32 non_secure_el2_interrupt; |
260 | u32 non_secure_pl2_flags; | 260 | u32 non_secure_el2_flags; |
261 | u64 counter_read_block_address; | ||
262 | u32 platform_timer_count; | ||
263 | u32 platform_timer_offset; | ||
261 | }; | 264 | }; |
262 | 265 | ||
263 | /* Values for Flags field above */ | 266 | /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ |
267 | |||
268 | #define ACPI_GTDT_INTERRUPT_MODE (1) | ||
269 | #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1) | ||
270 | #define ACPI_GTDT_ALWAYS_ON (1<<2) | ||
271 | |||
272 | /* Common GTDT subtable header */ | ||
273 | |||
274 | struct acpi_gtdt_header { | ||
275 | u8 type; | ||
276 | u16 length; | ||
277 | }; | ||
264 | 278 | ||
265 | #define ACPI_GTDT_MAPPED_BLOCK_PRESENT 1 | 279 | /* Values for GTDT subtable type above */ |
266 | 280 | ||
267 | /* Values for all "TimerFlags" fields above */ | 281 | enum acpi_gtdt_type { |
282 | ACPI_GTDT_TYPE_TIMER_BLOCK = 0, | ||
283 | ACPI_GTDT_TYPE_WATCHDOG = 1, | ||
284 | ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ | ||
285 | }; | ||
286 | |||
287 | /* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */ | ||
288 | |||
289 | /* 0: Generic Timer Block */ | ||
290 | |||
291 | struct acpi_gtdt_timer_block { | ||
292 | struct acpi_gtdt_header header; | ||
293 | u8 reserved; | ||
294 | u64 block_address; | ||
295 | u32 timer_count; | ||
296 | u32 timer_offset; | ||
297 | }; | ||
298 | |||
299 | /* Timer Sub-Structure, one per timer */ | ||
300 | |||
301 | struct acpi_gtdt_timer_entry { | ||
302 | u8 frame_number; | ||
303 | u8 reserved[3]; | ||
304 | u64 base_address; | ||
305 | u64 el0_base_address; | ||
306 | u32 timer_interrupt; | ||
307 | u32 timer_flags; | ||
308 | u32 virtual_timer_interrupt; | ||
309 | u32 virtual_timer_flags; | ||
310 | u32 common_flags; | ||
311 | }; | ||
268 | 312 | ||
269 | #define ACPI_GTDT_INTERRUPT_MODE 1 | 313 | /* Flag Definitions: common_flags above */ |
270 | #define ACPI_GTDT_INTERRUPT_POLARITY 2 | 314 | |
315 | #define ACPI_GTDT_GT_IS_SECURE_TIMER (1) | ||
316 | #define ACPI_GTDT_GT_ALWAYS_ON (1<<1) | ||
317 | |||
318 | /* 1: SBSA Generic Watchdog Structure */ | ||
319 | |||
320 | struct acpi_gtdt_watchdog { | ||
321 | struct acpi_gtdt_header header; | ||
322 | u8 reserved; | ||
323 | u64 refresh_frame_address; | ||
324 | u64 control_frame_address; | ||
325 | u32 timer_interrupt; | ||
326 | u32 timer_flags; | ||
327 | }; | ||
328 | |||
329 | /* Flag Definitions: timer_flags above */ | ||
330 | |||
331 | #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) | ||
332 | #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) | ||
333 | #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) | ||
271 | 334 | ||
272 | /******************************************************************************* | 335 | /******************************************************************************* |
273 | * | 336 | * |
@@ -385,7 +448,8 @@ struct acpi_table_pcct { | |||
385 | 448 | ||
386 | enum acpi_pcct_type { | 449 | enum acpi_pcct_type { |
387 | ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, | 450 | ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, |
388 | ACPI_PCCT_TYPE_RESERVED = 1 /* 1 and greater are reserved */ | 451 | ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1, |
452 | ACPI_PCCT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ | ||
389 | }; | 453 | }; |
390 | 454 | ||
391 | /* | 455 | /* |
@@ -407,6 +471,28 @@ struct acpi_pcct_subspace { | |||
407 | u16 min_turnaround_time; | 471 | u16 min_turnaround_time; |
408 | }; | 472 | }; |
409 | 473 | ||
474 | /* 1: HW-reduced Communications Subspace (ACPI 5.1) */ | ||
475 | |||
476 | struct acpi_pcct_hw_reduced { | ||
477 | struct acpi_subtable_header header; | ||
478 | u32 doorbell_interrupt; | ||
479 | u8 flags; | ||
480 | u8 reserved; | ||
481 | u64 base_address; | ||
482 | u64 length; | ||
483 | struct acpi_generic_address doorbell_register; | ||
484 | u64 preserve_mask; | ||
485 | u64 write_mask; | ||
486 | u32 latency; | ||
487 | u32 max_access_rate; | ||
488 | u16 min_turnaround_time; | ||
489 | }; | ||
490 | |||
491 | /* Values for doorbell flags above */ | ||
492 | |||
493 | #define ACPI_PCCT_INTERRUPT_POLARITY (1) | ||
494 | #define ACPI_PCCT_INTERRUPT_MODE (1<<1) | ||
495 | |||
410 | /* | 496 | /* |
411 | * PCC memory structures (not part of the ACPI table) | 497 | * PCC memory structures (not part of the ACPI table) |
412 | */ | 498 | */ |