diff options
Diffstat (limited to 'include/sbi_utils')
-rw-r--r-- | include/sbi_utils/sys/clint.h | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/include/sbi_utils/sys/clint.h b/include/sbi_utils/sys/clint.h index a26f148..b07cf62 100644 --- a/include/sbi_utils/sys/clint.h +++ b/include/sbi_utils/sys/clint.h @@ -12,13 +12,30 @@ #include <sbi/sbi_types.h> +struct clint_data { + /* Public details */ + unsigned long addr; + u32 first_hartid; + u32 hart_count; + bool has_64bit_mmio; + /* Private details (initialized and used by CLINT library)*/ + u32 *ipi; + struct clint_data *time_delta_reference; + unsigned long time_delta_computed; + u64 time_delta; + u64 *time_val; + u64 *time_cmp; + u64 (*time_rd)(volatile u64 *addr); + void (*time_wr)(u64 value, volatile u64 *addr); +}; + void clint_ipi_send(u32 target_hart); void clint_ipi_clear(u32 target_hart); int clint_warm_ipi_init(void); -int clint_cold_ipi_init(unsigned long base, u32 hart_count); +int clint_cold_ipi_init(struct clint_data *clint); u64 clint_timer_value(void); @@ -28,7 +45,7 @@ void clint_timer_event_start(u64 next_event); int clint_warm_timer_init(void); -int clint_cold_timer_init(unsigned long base, u32 hart_count, - bool has_64bit_mmio); +int clint_cold_timer_init(struct clint_data *clint, + struct clint_data *reference); #endif |