[PATCH AUTOSEL 5.4 07/26] riscv: Fix kernel time_init()

Sasha Levin sashal at kernel.org
Tue Jan 19 20:26:44 EST 2021


From: Damien Le Moal <damien.lemoal at wdc.com>

[ Upstream commit 11f4c2e940e2f317c9d8fb5a79702f2a4a02ff98 ]

If of_clk_init() is not called in time_init(), clock providers defined
in the system device tree are not initialized, resulting in failures for
other devices to initialize due to missing clocks.
Similarly to other architectures and to the default kernel time_init()
implementation, call of_clk_init() before executing timer_probe() in
time_init().

Signed-off-by: Damien Le Moal <damien.lemoal at wdc.com>
Acked-by: Stephen Boyd <sboyd at kernel.org>
Reviewed-by: Palmer Dabbelt <palmerdabbelt at google.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt at google.com>
Signed-off-by: Sasha Levin <sashal at kernel.org>
---
 arch/riscv/kernel/time.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/riscv/kernel/time.c b/arch/riscv/kernel/time.c
index 6a53c02e9c734..8aa70b519e04f 100644
--- a/arch/riscv/kernel/time.c
+++ b/arch/riscv/kernel/time.c
@@ -4,6 +4,7 @@
  * Copyright (C) 2017 SiFive
  */
 
+#include <linux/of_clk.h>
 #include <linux/clocksource.h>
 #include <linux/delay.h>
 #include <asm/sbi.h>
@@ -24,5 +25,7 @@ void __init time_init(void)
 	riscv_timebase = prop;
 
 	lpj_fine = riscv_timebase / HZ;
+
+	of_clk_init(NULL);
 	timer_probe();
 }
-- 
2.27.0




More information about the linux-riscv mailing list