ARM: OMAP: Avoid cpu_is_omapxxxx usage until map_io is done
authorTony Lindgren <tony@atomide.com>
Wed, 5 Oct 2011 01:26:28 +0000 (18:26 -0700)
committerTony Lindgren <tony@atomide.com>
Wed, 19 Oct 2011 23:34:10 +0000 (16:34 -0700)
This way we don't need to initialize SoC detection early
and can start using generic map_io.

Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/mach-omap2/io.c
arch/arm/plat-omap/include/plat/common.h

index 4a5d75f11610750f39662697ace8b2a34a8ea67b..4c25742ebf6dc126f0f721bd043f73450f143b36 100644 (file)
@@ -444,11 +444,6 @@ static struct platform_device keys_gpio = {
        },
 };
 
-static void __init omap3_beagle_init_early(void)
-{
-       omap2_init_common_infrastructure();
-}
-
 static struct platform_device *omap3_beagle_devices[] __initdata = {
        &leds_gpio,
        &keys_gpio,
@@ -555,7 +550,7 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
        .boot_params    = 0x80000100,
        .reserve        = omap_reserve,
        .map_io         = omap3_map_io,
-       .init_early     = omap3_beagle_init_early,
+       .init_early     = omap3_init_early,
        .init_irq       = omap3_init_irq,
        .init_machine   = omap3_beagle_init,
        .timer          = &omap3_secure_timer,
index 15f91c42be66da8d1a09ac3f7def84101a5c1b45..e8123d010307b13911f95de4c52ba9b48923f4e2 100644 (file)
@@ -248,9 +248,6 @@ static void __init _omap2_map_common_io(void)
         */
        local_flush_tlb_all();
        flush_cache_all();
-
-       omap2_check_revision();
-       omap_sram_init();
 }
 
 #ifdef CONFIG_SOC_OMAP2420
@@ -337,33 +334,15 @@ static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data)
 /* See irq.c, omap4-common.c and entry-macro.S */
 void __iomem *omap_irq_base;
 
-void __init omap2_init_common_infrastructure(void)
+static void __init omap_common_init_early(void)
 {
-       u8 postsetup_state;
+       omap2_check_revision();
+       omap_sram_init();
+}
 
-       if (cpu_is_omap242x()) {
-               omap2xxx_voltagedomains_init();
-               omap242x_powerdomains_init();
-               omap242x_clockdomains_init();
-               omap2420_hwmod_init();
-       } else if (cpu_is_omap243x()) {
-               omap2xxx_voltagedomains_init();
-               omap243x_powerdomains_init();
-               omap243x_clockdomains_init();
-               omap2430_hwmod_init();
-       } else if (cpu_is_omap34xx()) {
-               omap3xxx_voltagedomains_init();
-               omap3xxx_powerdomains_init();
-               omap3xxx_clockdomains_init();
-               omap3xxx_hwmod_init();
-       } else if (cpu_is_omap44xx()) {
-               omap44xx_voltagedomains_init();
-               omap44xx_powerdomains_init();
-               omap44xx_clockdomains_init();
-               omap44xx_hwmod_init();
-       } else {
-               pr_err("Could not init hwmod data - unknown SoC\n");
-        }
+static void __init omap_hwmod_init_postsetup(void)
+{
+       u8 postsetup_state;
 
        /* Set the default postsetup state for all hwmods */
 #ifdef CONFIG_PM_RUNTIME
@@ -392,57 +371,79 @@ void __init omap2_init_common_infrastructure(void)
                                     &postsetup_state);
 
        omap_pm_if_early_init();
-
-       if (cpu_is_omap2420())
-               omap2420_clk_init();
-       else if (cpu_is_omap2430())
-               omap2430_clk_init();
-       else if (cpu_is_omap34xx())
-               omap3xxx_clk_init();
-       else if (cpu_is_omap44xx())
-               omap4xxx_clk_init();
-       else
-               pr_err("Could not init clock framework - unknown SoC\n");
 }
 
 void __init omap2420_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap_common_init_early();
+       omap2xxx_voltagedomains_init();
+       omap242x_powerdomains_init();
+       omap242x_clockdomains_init();
+       omap2420_hwmod_init();
+       omap_hwmod_init_postsetup();
+       omap2420_clk_init();
 }
 
 void __init omap2430_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap_common_init_early();
+       omap2xxx_voltagedomains_init();
+       omap243x_powerdomains_init();
+       omap243x_clockdomains_init();
+       omap2430_hwmod_init();
+       omap_hwmod_init_postsetup();
+       omap2430_clk_init();
+}
+
+/*
+ * Currently only board-omap3beagle.c should call this because of the
+ * same machine_id for 34xx and 36xx beagle.. Will get fixed with DT.
+ */
+void __init omap3_init_early(void)
+{
+       omap_common_init_early();
+       omap3xxx_voltagedomains_init();
+       omap3xxx_powerdomains_init();
+       omap3xxx_clockdomains_init();
+       omap3xxx_hwmod_init();
+       omap_hwmod_init_postsetup();
+       omap3xxx_clk_init();
 }
 
 void __init omap3430_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap3_init_early();
 }
 
 void __init omap35xx_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap3_init_early();
 }
 
 void __init omap3630_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap3_init_early();
 }
 
 void __init am35xx_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap3_init_early();
 }
 
 void __init ti816x_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap3_init_early();
 }
 
 void __init omap4430_init_early(void)
 {
-       omap2_init_common_infrastructure();
+       omap_common_init_early();
+       omap44xx_voltagedomains_init();
+       omap44xx_powerdomains_init();
+       omap44xx_clockdomains_init();
+       omap44xx_hwmod_init();
+       omap_hwmod_init_postsetup();
+       omap4xxx_clk_init();
 }
 
 void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
index abda2c7e499b2f50f8b9c7fb659ff2e04ec5a0e7..5eac3553f96d626b163bd6456614ff88a4166cf0 100644 (file)
@@ -50,6 +50,7 @@ void omap2430_init_early(void);
 void omap3430_init_early(void);
 void omap35xx_init_early(void);
 void omap3630_init_early(void);
+void omap3_init_early(void);   /* Do not use this one */
 void am35xx_init_early(void);
 void ti816x_init_early(void);
 void omap4430_init_early(void);