summaryrefslogtreecommitdiffstats
path: root/drivers/clocksource/time-armada-370-xp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clocksource/time-armada-370-xp.c')
-rw-r--r--drivers/clocksource/time-armada-370-xp.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c
index 0451e62fac7a..3a0704b0d739 100644
--- a/drivers/clocksource/time-armada-370-xp.c
+++ b/drivers/clocksource/time-armada-370-xp.c
@@ -293,6 +293,7 @@ static void __init armada_xp_timer_init(struct device_node *np)
293 293
294 /* The 25Mhz fixed clock is mandatory, and must always be available */ 294 /* The 25Mhz fixed clock is mandatory, and must always be available */
295 BUG_ON(IS_ERR(clk)); 295 BUG_ON(IS_ERR(clk));
296 clk_prepare_enable(clk);
296 timer_clk = clk_get_rate(clk); 297 timer_clk = clk_get_rate(clk);
297 298
298 armada_370_xp_timer_common_init(np); 299 armada_370_xp_timer_common_init(np);
@@ -300,11 +301,40 @@ static void __init armada_xp_timer_init(struct device_node *np)
300CLOCKSOURCE_OF_DECLARE(armada_xp, "marvell,armada-xp-timer", 301CLOCKSOURCE_OF_DECLARE(armada_xp, "marvell,armada-xp-timer",
301 armada_xp_timer_init); 302 armada_xp_timer_init);
302 303
304static void __init armada_375_timer_init(struct device_node *np)
305{
306 struct clk *clk;
307
308 clk = of_clk_get_by_name(np, "fixed");
309 if (!IS_ERR(clk)) {
310 clk_prepare_enable(clk);
311 timer_clk = clk_get_rate(clk);
312 } else {
313
314 /*
315 * This fallback is required in order to retain proper
316 * devicetree backwards compatibility.
317 */
318 clk = of_clk_get(np, 0);
319
320 /* Must have at least a clock */
321 BUG_ON(IS_ERR(clk));
322 clk_prepare_enable(clk);
323 timer_clk = clk_get_rate(clk) / TIMER_DIVIDER;
324 timer25Mhz = false;
325 }
326
327 armada_370_xp_timer_common_init(np);
328}
329CLOCKSOURCE_OF_DECLARE(armada_375, "marvell,armada-375-timer",
330 armada_375_timer_init);
331
303static void __init armada_370_timer_init(struct device_node *np) 332static void __init armada_370_timer_init(struct device_node *np)
304{ 333{
305 struct clk *clk = of_clk_get(np, 0); 334 struct clk *clk = of_clk_get(np, 0);
306 335
307 BUG_ON(IS_ERR(clk)); 336 BUG_ON(IS_ERR(clk));
337 clk_prepare_enable(clk);
308 timer_clk = clk_get_rate(clk) / TIMER_DIVIDER; 338 timer_clk = clk_get_rate(clk) / TIMER_DIVIDER;
309 timer25Mhz = false; 339 timer25Mhz = false;
310 340