aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSamuel Holland <samuel.holland@sifive.com>2024-09-02 21:06:50 -0700
committerAnup Patel <anup@brainfault.org>2024-11-05 17:39:31 +0530
commit99b01ab610acf6ff7c3d0199f13f5b41322a22e2 (patch)
tree7472232fdd08fec61c0c644b802fb8fa3ad06cde /lib
parent450082874346bb25109877b7ac6a1754f089f538 (diff)
downloadopensbi-99b01ab610acf6ff7c3d0199f13f5b41322a22e2.zip
opensbi-99b01ab610acf6ff7c3d0199f13f5b41322a22e2.tar.gz
opensbi-99b01ab610acf6ff7c3d0199f13f5b41322a22e2.tar.bz2
platform: Drop timer warm init and exit hooks
Now that driver lifecycle is managed from within the SBI timer core, platforms need only to initialize the driver once during cold init. Remove the remaining platform hooks that are no longer used. Signed-off-by: Samuel Holland <samuel.holland@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/sbi_timer.c10
-rw-r--r--lib/utils/timer/fdt_timer.c31
-rw-r--r--lib/utils/timer/fdt_timer_mtimer.c2
-rw-r--r--lib/utils/timer/fdt_timer_plmt.c2
4 files changed, 5 insertions, 40 deletions
diff --git a/lib/sbi/sbi_timer.c b/lib/sbi/sbi_timer.c
index dee1ff1..86e0db5 100644
--- a/lib/sbi/sbi_timer.c
+++ b/lib/sbi/sbi_timer.c
@@ -192,6 +192,10 @@ int sbi_timer_init(struct sbi_scratch *scratch, bool cold_boot)
if (sbi_hart_has_extension(scratch, SBI_HART_EXT_ZICNTR))
get_time_val = get_ticks;
+
+ ret = sbi_platform_timer_init(plat);
+ if (ret)
+ return ret;
} else {
if (!time_delta_off)
return SBI_ENOMEM;
@@ -200,10 +204,6 @@ int sbi_timer_init(struct sbi_scratch *scratch, bool cold_boot)
time_delta = sbi_scratch_offset_ptr(scratch, time_delta_off);
*time_delta = 0;
- ret = sbi_platform_timer_init(plat, cold_boot);
- if (ret)
- return ret;
-
if (timer_dev && timer_dev->warm_init) {
ret = timer_dev->warm_init();
if (ret)
@@ -220,6 +220,4 @@ void sbi_timer_exit(struct sbi_scratch *scratch)
csr_clear(CSR_MIP, MIP_STIP);
csr_clear(CSR_MIE, MIP_MTIP);
-
- sbi_platform_timer_exit(sbi_platform_ptr(scratch));
}
diff --git a/lib/utils/timer/fdt_timer.c b/lib/utils/timer/fdt_timer.c
index aa0494e..37965f5 100644
--- a/lib/utils/timer/fdt_timer.c
+++ b/lib/utils/timer/fdt_timer.c
@@ -16,22 +16,7 @@
extern struct fdt_timer *fdt_timer_drivers[];
extern unsigned long fdt_timer_drivers_size;
-static struct fdt_timer *current_driver = NULL;
-
-void fdt_timer_exit(void)
-{
- if (current_driver && current_driver->exit)
- current_driver->exit();
-}
-
-static int fdt_timer_warm_init(void)
-{
- if (current_driver && current_driver->warm_init)
- return current_driver->warm_init();
- return 0;
-}
-
-static int fdt_timer_cold_init(void)
+int fdt_timer_init(void)
{
int pos, noff, rc;
struct fdt_timer *drv;
@@ -56,7 +41,6 @@ static int fdt_timer_cold_init(void)
continue;
if (rc)
return rc;
- current_driver = drv;
/*
* We will have multiple timer devices on multi-die or
@@ -71,16 +55,3 @@ static int fdt_timer_cold_init(void)
*/
return 0;
}
-
-int fdt_timer_init(bool cold_boot)
-{
- int rc;
-
- if (cold_boot) {
- rc = fdt_timer_cold_init();
- if (rc)
- return rc;
- }
-
- return fdt_timer_warm_init();
-}
diff --git a/lib/utils/timer/fdt_timer_mtimer.c b/lib/utils/timer/fdt_timer_mtimer.c
index eff5041..e752ddc 100644
--- a/lib/utils/timer/fdt_timer_mtimer.c
+++ b/lib/utils/timer/fdt_timer_mtimer.c
@@ -165,6 +165,4 @@ static const struct fdt_match timer_mtimer_match[] = {
struct fdt_timer fdt_timer_mtimer = {
.match_table = timer_mtimer_match,
.cold_init = timer_mtimer_cold_init,
- .warm_init = NULL,
- .exit = NULL,
};
diff --git a/lib/utils/timer/fdt_timer_plmt.c b/lib/utils/timer/fdt_timer_plmt.c
index 87e634b..459a119 100644
--- a/lib/utils/timer/fdt_timer_plmt.c
+++ b/lib/utils/timer/fdt_timer_plmt.c
@@ -46,6 +46,4 @@ static const struct fdt_match timer_plmt_match[] = {
struct fdt_timer fdt_timer_plmt = {
.match_table = timer_plmt_match,
.cold_init = fdt_plmt_cold_timer_init,
- .warm_init = NULL,
- .exit = NULL,
};