Some MediaTek SoC like MT8516 need to enable additional clocks
for the GPT timer. Enable them if present.

Signed-off-by: Fabien Parent <[email protected]>
---
 drivers/clocksource/timer-mediatek.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/clocksource/timer-mediatek.c 
b/drivers/clocksource/timer-mediatek.c
index 9318edcd8963..42e2d2090484 100644
--- a/drivers/clocksource/timer-mediatek.c
+++ b/drivers/clocksource/timer-mediatek.c
@@ -9,6 +9,7 @@
 
 #define pr_fmt(fmt)    KBUILD_MODNAME ": " fmt
 
+#include <linux/clk.h>
 #include <linux/clockchips.h>
 #include <linux/clocksource.h>
 #include <linux/interrupt.h>
@@ -278,8 +279,19 @@ static int __init mtk_syst_init(struct device_node *node)
 
 static int __init mtk_gpt_init(struct device_node *node)
 {
+       struct clk *clk_13m, *clk_bus;
        int ret;
 
+       /* Optional clock*/
+       clk_13m = of_clk_get_by_name(node, "clk13m");
+       if (!IS_ERR(clk_13m))
+               clk_prepare_enable(clk_13m);
+
+       /* Optional clock*/
+       clk_bus = of_clk_get_by_name(node, "bus");
+       if (!IS_ERR(clk_bus))
+               clk_prepare_enable(clk_bus);
+
        to.clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
        to.clkevt.set_state_shutdown = mtk_gpt_clkevt_shutdown;
        to.clkevt.set_state_periodic = mtk_gpt_clkevt_set_periodic;
-- 
2.28.0

Reply via email to