ARM: ux500: use machine specific hook for late init
authorShawn Guo <shawn.guo@linaro.org>
Wed, 2 May 2012 09:10:07 +0000 (17:10 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Tue, 8 May 2012 12:36:38 +0000 (20:36 +0800)
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/clock.c
arch/arm/mach-ux500/clock.h
arch/arm/mach-ux500/cpu.c
arch/arm/mach-ux500/include/mach/setup.h

index 77d03c1fbd04551982dd97dcf055ef520ca664ea..348ebd959399fd226cceafab4d5deb92f64c12cb 100644 (file)
@@ -722,6 +722,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = mop500_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
@@ -731,6 +732,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = hrefv60_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
@@ -741,6 +743,7 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = snowball_init_machine,
+       .init_late      = ux500_init_late,
 MACHINE_END
 
 #ifdef CONFIG_MACH_UX500_DT
@@ -830,6 +833,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)")
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = u8500_init_machine,
+       .init_late      = ux500_init_late,
        .dt_compat      = u8500_dt_board_compat,
 MACHINE_END
 #endif
index ec35f0aa5665a99d23f11c73ec552ab6e83f3aca..ce00f5ee14baff459f8dc81b272f750510360eff 100644 (file)
@@ -633,7 +633,7 @@ static int clk_debugfs_register(struct clk *c)
        return 0;
 }
 
-static int __init clk_debugfs_init(void)
+int __init clk_debugfs_init(void)
 {
        struct clk *c;
        struct dentry *d;
@@ -655,7 +655,6 @@ err_out:
        return err;
 }
 
-late_initcall(clk_debugfs_init);
 #endif /* defined(CONFIG_DEBUG_FS) */
 
 unsigned long clk_smp_twd_rate = 500000000;
@@ -694,12 +693,11 @@ static struct notifier_block clk_twd_cpufreq_nb = {
        .notifier_call = clk_twd_cpufreq_transition,
 };
 
-static int clk_init_smp_twd_cpufreq(void)
+int clk_init_smp_twd_cpufreq(void)
 {
        return cpufreq_register_notifier(&clk_twd_cpufreq_nb,
                                  CPUFREQ_TRANSITION_NOTIFIER);
 }
-late_initcall(clk_init_smp_twd_cpufreq);
 
 #endif
 
index d776ada08dbf1062b0cb8d5733a31c00dcc7a78b..65d27a13f46d5073abbe4e7cc201ee4493247c74 100644 (file)
@@ -150,3 +150,15 @@ struct clk clk_##_name = {                                         \
 
 int __init clk_db8500_ed_fixup(void);
 int __init clk_init(void);
+
+#ifdef CONFIG_DEBUG_FS
+int clk_debugfs_init(void);
+#else
+static inline int clk_debugfs_init(void) { return 0; }
+#endif
+
+#ifdef CONFIG_CPU_FREQ
+int clk_init_smp_twd_cpufreq(void);
+#else
+static inline int clk_init_smp_twd_cpufreq(void) { return 0; }
+#endif
index d11f3892a27dffe6a596a5c279ecdd355b44f280..9856c5788815e083d7899cb5fb25a67eba46c463 100644 (file)
@@ -67,6 +67,12 @@ void __init ux500_init_irq(void)
        clk_init();
 }
 
+void __init ux500_init_late(void)
+{
+       clk_debugfs_init();
+       clk_init_smp_twd_cpufreq();
+}
+
 static const char * __init ux500_get_machine(void)
 {
        return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber());
index 3dc00ffa7bfa5d54772dc5201757b1c3ff12bc27..7b5d865ac591ea6b5c93edacc734358dcb320d81 100644 (file)
@@ -22,6 +22,7 @@ extern struct device * __init u5500_init_devices(void);
 extern struct device * __init u8500_init_devices(void);
 
 extern void __init ux500_init_irq(void);
+extern void __init ux500_init_late(void);
 
 extern void __init u5500_sdi_init(struct device *parent);