diff options
| author | Tomasz Nowicki <tomasz.nowicki@linaro.org> | 2014-07-30 00:21:58 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-07-30 18:50:24 -0400 |
| commit | 54ea4247d389059674aaacad7af224459b135fb9 (patch) | |
| tree | 6b01d1f7d5bb5acf17103c5d4958b9ecdfc23738 /include/acpi | |
| parent | d0c383e48d1b6cdc39cf9cc2f082bbb6f3c28b89 (diff) | |
ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
New fields and new subtables. Tomasz Nowicki.
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/acpi')
| -rw-r--r-- | include/acpi/actbl3.h | 93 |
1 files changed, 78 insertions, 15 deletions
diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index c2295cc4a5c0..41ad9648ca52 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 | }; | ||
| 278 | |||
| 279 | /* Values for GTDT subtable type above */ | ||
| 280 | |||
| 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 | }; | ||
| 264 | 286 | ||
| 265 | #define ACPI_GTDT_MAPPED_BLOCK_PRESENT 1 | 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 | }; | ||
| 312 | |||
| 313 | /* Flag Definitions: common_flags above */ | ||
| 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 | }; | ||
| 266 | 328 | ||
| 267 | /* Values for all "TimerFlags" fields above */ | 329 | /* Flag Definitions: timer_flags above */ |
| 268 | 330 | ||
| 269 | #define ACPI_GTDT_INTERRUPT_MODE 1 | 331 | #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1) |
| 270 | #define ACPI_GTDT_INTERRUPT_POLARITY 2 | 332 | #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1) |
| 333 | #define ACPI_GTDT_WATCHDOG_SECURE (1<<2) | ||
| 271 | 334 | ||
| 272 | /******************************************************************************* | 335 | /******************************************************************************* |
| 273 | * | 336 | * |
