summaryrefslogtreecommitdiff
path: root/include/sbi_utils
diff options
context:
space:
mode:
Diffstat (limited to 'include/sbi_utils')
-rw-r--r--include/sbi_utils/sys/clint.h23
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