diff options
author | Tero Kristo <t-kristo@ti.com> | 2013-10-22 04:53:02 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2014-01-17 15:37:14 -0500 |
commit | cfa9667d4ac9da8b3ba2269f934ecd69ae504d39 (patch) | |
tree | a7a31a4d74bc84bdc6aeb4e1b86705eeaf0d73db | |
parent | 943a63a41f8542eed31c902d840e9ca2753a592f (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.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/io.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-omap2/timer.c | 6 |
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; | |||
305 | extern int omap_dss_reset(struct omap_hwmod *); | 305 | extern int omap_dss_reset(struct omap_hwmod *); |
306 | 306 | ||
307 | /* SoC specific clock initializer */ | 307 | /* SoC specific clock initializer */ |
308 | extern int (*omap_clk_init)(void); | 308 | int 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 | */ |
61 | int (*omap_clk_init)(void); | 61 | static 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 | ||
425 | void __init omap2420_init_late(void) | 425 | void __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 | ||
454 | void __init omap2430_init_late(void) | 454 | void __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 | ||
488 | void __init omap3430_init_early(void) | 488 | void __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 | ||
526 | void __init omap3_init_late(void) | 526 | void __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 | ||
587 | void __init am33xx_init_late(void) | 587 | void __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 | ||
641 | void __init omap4430_init_late(void) | 641 | void __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 | ||
672 | void __init omap5_init_late(void) | 672 | void __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 | |||
715 | int __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) \ |
571 | void __init omap##name##_gptimer_timer_init(void) \ | 571 | void __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) \ |
583 | void __init omap##name##_sync32k_timer_init(void) \ | 582 | void __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 */ \ |