|
@@ -57,6 +57,8 @@ enum arch_timer_spi_nr {
|
|
#define ARCH_TIMER_MEM_PHYS_ACCESS 2
|
|
#define ARCH_TIMER_MEM_PHYS_ACCESS 2
|
|
#define ARCH_TIMER_MEM_VIRT_ACCESS 3
|
|
#define ARCH_TIMER_MEM_VIRT_ACCESS 3
|
|
|
|
|
|
|
|
+#define ARCH_TIMER_MEM_MAX_FRAMES 8
|
|
|
|
+
|
|
#define ARCH_TIMER_USR_PCT_ACCESS_EN (1 << 0) /* physical counter */
|
|
#define ARCH_TIMER_USR_PCT_ACCESS_EN (1 << 0) /* physical counter */
|
|
#define ARCH_TIMER_USR_VCT_ACCESS_EN (1 << 1) /* virtual counter */
|
|
#define ARCH_TIMER_USR_VCT_ACCESS_EN (1 << 1) /* virtual counter */
|
|
#define ARCH_TIMER_VIRT_EVT_EN (1 << 2)
|
|
#define ARCH_TIMER_VIRT_EVT_EN (1 << 2)
|
|
@@ -72,6 +74,20 @@ struct arch_timer_kvm_info {
|
|
int virtual_irq;
|
|
int virtual_irq;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+struct arch_timer_mem_frame {
|
|
|
|
+ bool valid;
|
|
|
|
+ phys_addr_t cntbase;
|
|
|
|
+ size_t size;
|
|
|
|
+ int phys_irq;
|
|
|
|
+ int virt_irq;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct arch_timer_mem {
|
|
|
|
+ phys_addr_t cntctlbase;
|
|
|
|
+ size_t size;
|
|
|
|
+ struct arch_timer_mem_frame frame[ARCH_TIMER_MEM_MAX_FRAMES];
|
|
|
|
+};
|
|
|
|
+
|
|
#ifdef CONFIG_ARM_ARCH_TIMER
|
|
#ifdef CONFIG_ARM_ARCH_TIMER
|
|
|
|
|
|
extern u32 arch_timer_get_rate(void);
|
|
extern u32 arch_timer_get_rate(void);
|