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>
This commit is contained in:
		
							parent
							
								
									d0c383e48d
								
							
						
					
					
						commit
						54ea4247d3
					
				| @ -241,33 +241,96 @@ struct acpi_s3pt_suspend { | ||||
| 
 | ||||
| /*******************************************************************************
 | ||||
|  * | ||||
|  * GTDT - Generic Timer Description Table (ACPI 5.0) | ||||
|  *        Version 1 | ||||
|  * GTDT - Generic Timer Description Table (ACPI 5.1) | ||||
|  *        Version 2 | ||||
|  * | ||||
|  ******************************************************************************/ | ||||
| 
 | ||||
| struct acpi_table_gtdt { | ||||
| 	struct acpi_table_header header;	/* Common ACPI table header */ | ||||
| 	u64 address; | ||||
| 	u32 flags; | ||||
| 	u32 secure_pl1_interrupt; | ||||
| 	u32 secure_pl1_flags; | ||||
| 	u32 non_secure_pl1_interrupt; | ||||
| 	u32 non_secure_pl1_flags; | ||||
| 	u64 counter_block_addresss; | ||||
| 	u32 reserved; | ||||
| 	u32 secure_el1_interrupt; | ||||
| 	u32 secure_el1_flags; | ||||
| 	u32 non_secure_el1_interrupt; | ||||
| 	u32 non_secure_el1_flags; | ||||
| 	u32 virtual_timer_interrupt; | ||||
| 	u32 virtual_timer_flags; | ||||
| 	u32 non_secure_pl2_interrupt; | ||||
| 	u32 non_secure_pl2_flags; | ||||
| 	u32 non_secure_el2_interrupt; | ||||
| 	u32 non_secure_el2_flags; | ||||
| 	u64 counter_read_block_address; | ||||
| 	u32 platform_timer_count; | ||||
| 	u32 platform_timer_offset; | ||||
| }; | ||||
| 
 | ||||
| /* Values for Flags field above */ | ||||
| /* Flag Definitions: Timer Block Physical Timers and Virtual timers */ | ||||
| 
 | ||||
| #define ACPI_GTDT_MAPPED_BLOCK_PRESENT      1 | ||||
| #define ACPI_GTDT_INTERRUPT_MODE        (1) | ||||
| #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1) | ||||
| #define ACPI_GTDT_ALWAYS_ON             (1<<2) | ||||
| 
 | ||||
| /* Values for all "TimerFlags" fields above */ | ||||
| /* Common GTDT subtable header */ | ||||
| 
 | ||||
| #define ACPI_GTDT_INTERRUPT_MODE            1 | ||||
| #define ACPI_GTDT_INTERRUPT_POLARITY        2 | ||||
| struct acpi_gtdt_header { | ||||
| 	u8 type; | ||||
| 	u16 length; | ||||
| }; | ||||
| 
 | ||||
| /* Values for GTDT subtable type above */ | ||||
| 
 | ||||
| enum acpi_gtdt_type { | ||||
| 	ACPI_GTDT_TYPE_TIMER_BLOCK = 0, | ||||
| 	ACPI_GTDT_TYPE_WATCHDOG = 1, | ||||
| 	ACPI_GTDT_TYPE_RESERVED = 2	/* 2 and greater are reserved */ | ||||
| }; | ||||
| 
 | ||||
| /* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */ | ||||
| 
 | ||||
| /* 0: Generic Timer Block */ | ||||
| 
 | ||||
| struct acpi_gtdt_timer_block { | ||||
| 	struct acpi_gtdt_header header; | ||||
| 	u8 reserved; | ||||
| 	u64 block_address; | ||||
| 	u32 timer_count; | ||||
| 	u32 timer_offset; | ||||
| }; | ||||
| 
 | ||||
| /* Timer Sub-Structure, one per timer */ | ||||
| 
 | ||||
| struct acpi_gtdt_timer_entry { | ||||
| 	u8 frame_number; | ||||
| 	u8 reserved[3]; | ||||
| 	u64 base_address; | ||||
| 	u64 el0_base_address; | ||||
| 	u32 timer_interrupt; | ||||
| 	u32 timer_flags; | ||||
| 	u32 virtual_timer_interrupt; | ||||
| 	u32 virtual_timer_flags; | ||||
| 	u32 common_flags; | ||||
| }; | ||||
| 
 | ||||
| /* Flag Definitions: common_flags above */ | ||||
| 
 | ||||
| #define ACPI_GTDT_GT_IS_SECURE_TIMER    (1) | ||||
| #define ACPI_GTDT_GT_ALWAYS_ON          (1<<1) | ||||
| 
 | ||||
| /* 1: SBSA Generic Watchdog Structure */ | ||||
| 
 | ||||
| struct acpi_gtdt_watchdog { | ||||
| 	struct acpi_gtdt_header header; | ||||
| 	u8 reserved; | ||||
| 	u64 refresh_frame_address; | ||||
| 	u64 control_frame_address; | ||||
| 	u32 timer_interrupt; | ||||
| 	u32 timer_flags; | ||||
| }; | ||||
| 
 | ||||
| /* Flag Definitions: timer_flags above */ | ||||
| 
 | ||||
| #define ACPI_GTDT_WATCHDOG_IRQ_MODE         (1) | ||||
| #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY     (1<<1) | ||||
| #define ACPI_GTDT_WATCHDOG_SECURE           (1<<2) | ||||
| 
 | ||||
| /*******************************************************************************
 | ||||
|  * | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user