aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2013-10-22 04:53:02 -0400
committerMike Turquette <mturquette@linaro.org>2014-01-17 15:37:14 -0500
commitcfa9667d4ac9da8b3ba2269f934ecd69ae504d39 (patch)
treea7a31a4d74bc84bdc6aeb4e1b86705eeaf0d73db
parent943a63a41f8542eed31c902d840e9ca2753a592f (diff)
ARM: OMAP2+: io: use new clock init API
clk_init is now separated to a common function which gets called for all SoC:s, which initializes the DT clocks and calls the SoC specific clock init. Signed-off-by: Tero Kristo <t-kristo@ti.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r--arch/arm/mach-omap2/common.h2
-rw-r--r--arch/arm/mach-omap2/io.c32
-rw-r--r--arch/arm/mach-omap2/timer.c6
3 files changed, 26 insertions, 14 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index e30ef6797c63..5ccf36d3e2d3 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -305,7 +305,7 @@ struct omap_hwmod;
305extern int omap_dss_reset(struct omap_hwmod *); 305extern int omap_dss_reset(struct omap_hwmod *);
306 306
307/* SoC specific clock initializer */ 307/* SoC specific clock initializer */
308extern int (*omap_clk_init)(void); 308int omap_clk_init(void);
309 309
310#endif /* __ASSEMBLER__ */ 310#endif /* __ASSEMBLER__ */
311#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ 311#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 3d9b3fcb1266..8517a62a97f0 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -55,10 +55,10 @@
55#include "prm44xx.h" 55#include "prm44xx.h"
56 56
57/* 57/*
58 * omap_clk_init: points to a function that does the SoC-specific 58 * omap_clk_soc_init: points to a function that does the SoC-specific
59 * clock initializations 59 * clock initializations
60 */ 60 */
61int (*omap_clk_init)(void); 61static int (*omap_clk_soc_init)(void);
62 62
63/* 63/*
64 * The machine specific code may provide the extra mapping besides the 64 * The machine specific code may provide the extra mapping besides the
@@ -419,7 +419,7 @@ void __init omap2420_init_early(void)
419 omap242x_clockdomains_init(); 419 omap242x_clockdomains_init();
420 omap2420_hwmod_init(); 420 omap2420_hwmod_init();
421 omap_hwmod_init_postsetup(); 421 omap_hwmod_init_postsetup();
422 omap_clk_init = omap2420_clk_init; 422 omap_clk_soc_init = omap2420_clk_init;
423} 423}
424 424
425void __init omap2420_init_late(void) 425void __init omap2420_init_late(void)
@@ -448,7 +448,7 @@ void __init omap2430_init_early(void)
448 omap243x_clockdomains_init(); 448 omap243x_clockdomains_init();
449 omap2430_hwmod_init(); 449 omap2430_hwmod_init();
450 omap_hwmod_init_postsetup(); 450 omap_hwmod_init_postsetup();
451 omap_clk_init = omap2430_clk_init; 451 omap_clk_soc_init = omap2430_clk_init;
452} 452}
453 453
454void __init omap2430_init_late(void) 454void __init omap2430_init_late(void)
@@ -482,7 +482,7 @@ void __init omap3_init_early(void)
482 omap3xxx_clockdomains_init(); 482 omap3xxx_clockdomains_init();
483 omap3xxx_hwmod_init(); 483 omap3xxx_hwmod_init();
484 omap_hwmod_init_postsetup(); 484 omap_hwmod_init_postsetup();
485 omap_clk_init = omap3xxx_clk_init; 485 omap_clk_soc_init = omap3xxx_clk_init;
486} 486}
487 487
488void __init omap3430_init_early(void) 488void __init omap3430_init_early(void)
@@ -520,7 +520,7 @@ void __init ti81xx_init_early(void)
520 omap3xxx_clockdomains_init(); 520 omap3xxx_clockdomains_init();
521 omap3xxx_hwmod_init(); 521 omap3xxx_hwmod_init();
522 omap_hwmod_init_postsetup(); 522 omap_hwmod_init_postsetup();
523 omap_clk_init = omap3xxx_clk_init; 523 omap_clk_soc_init = omap3xxx_clk_init;
524} 524}
525 525
526void __init omap3_init_late(void) 526void __init omap3_init_late(void)
@@ -581,7 +581,7 @@ void __init am33xx_init_early(void)
581 am33xx_clockdomains_init(); 581 am33xx_clockdomains_init();
582 am33xx_hwmod_init(); 582 am33xx_hwmod_init();
583 omap_hwmod_init_postsetup(); 583 omap_hwmod_init_postsetup();
584 omap_clk_init = am33xx_clk_init; 584 omap_clk_soc_init = am33xx_clk_init;
585} 585}
586 586
587void __init am33xx_init_late(void) 587void __init am33xx_init_late(void)
@@ -635,7 +635,7 @@ void __init omap4430_init_early(void)
635 omap44xx_clockdomains_init(); 635 omap44xx_clockdomains_init();
636 omap44xx_hwmod_init(); 636 omap44xx_hwmod_init();
637 omap_hwmod_init_postsetup(); 637 omap_hwmod_init_postsetup();
638 omap_clk_init = omap4xxx_clk_init; 638 omap_clk_soc_init = omap4xxx_clk_init;
639} 639}
640 640
641void __init omap4430_init_late(void) 641void __init omap4430_init_late(void)
@@ -666,7 +666,7 @@ void __init omap5_init_early(void)
666 omap54xx_clockdomains_init(); 666 omap54xx_clockdomains_init();
667 omap54xx_hwmod_init(); 667 omap54xx_hwmod_init();
668 omap_hwmod_init_postsetup(); 668 omap_hwmod_init_postsetup();
669 omap_clk_init = omap5xxx_dt_clk_init; 669 omap_clk_soc_init = omap5xxx_dt_clk_init;
670} 670}
671 671
672void __init omap5_init_late(void) 672void __init omap5_init_late(void)
@@ -711,3 +711,17 @@ void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
711 _omap2_init_reprogram_sdrc(); 711 _omap2_init_reprogram_sdrc();
712 } 712 }
713} 713}
714
715int __init omap_clk_init(void)
716{
717 int ret = 0;
718
719 if (!omap_clk_soc_init)
720 return 0;
721
722 ret = of_prcm_init();
723 if (!ret)
724 ret = omap_clk_soc_init();
725
726 return ret;
727}
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 3ca81e0ada5e..60e5fc93b114 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -570,8 +570,7 @@ static inline void __init realtime_counter_init(void)
570 clksrc_nr, clksrc_src, clksrc_prop) \ 570 clksrc_nr, clksrc_src, clksrc_prop) \
571void __init omap##name##_gptimer_timer_init(void) \ 571void __init omap##name##_gptimer_timer_init(void) \
572{ \ 572{ \
573 if (omap_clk_init) \ 573 omap_clk_init(); \
574 omap_clk_init(); \
575 omap_dmtimer_init(); \ 574 omap_dmtimer_init(); \
576 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 575 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
577 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \ 576 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \
@@ -582,8 +581,7 @@ void __init omap##name##_gptimer_timer_init(void) \
582 clksrc_nr, clksrc_src, clksrc_prop) \ 581 clksrc_nr, clksrc_src, clksrc_prop) \
583void __init omap##name##_sync32k_timer_init(void) \ 582void __init omap##name##_sync32k_timer_init(void) \
584{ \ 583{ \
585 if (omap_clk_init) \ 584 omap_clk_init(); \
586 omap_clk_init(); \
587 omap_dmtimer_init(); \ 585 omap_dmtimer_init(); \
588 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 586 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
589 /* Enable the use of clocksource="gp_timer" kernel parameter */ \ 587 /* Enable the use of clocksource="gp_timer" kernel parameter */ \