Otherwise we'll an error when booting a kernel with both
CONFIG_ARCH_OMAP2 and CONFIG_ARCH_OMAP3 compiled in:

Unhandled fault: imprecise external abort (0xc06) at 0x00000000
...

Note that the same problem may still exist when trying to boot
a kernel with 2420 and 2430 both compiled in. We currently cannot
test this as the clock framework needs updating to support booting
2420 and 2430 compiled in.

Signed-off-by: Tony Lindgren <[email protected]>
---
 arch/arm/mach-omap2/io.c           |   13 +++++++++----
 arch/arm/mach-omap2/powerdomains.h |   23 +++++++++++++++++------
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index ee13ca9..96e9ea8 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -320,21 +320,26 @@ static int __init _omap2_init_reprogram_sdrc(void)
 void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
                                 struct omap_sdrc_params *sdrc_cs1)
 {
+       struct powerdomain **pwrdm = NULL;
        struct omap_hwmod **hwmods = NULL;
 
-       if (cpu_is_omap2420())
+       if (cpu_is_omap2420()) {
+               pwrdm = powerdomains_omap2;
                hwmods = omap2420_hwmods;
-       else if (cpu_is_omap2430())
+       } else if (cpu_is_omap2430()) {
+               pwrdm = powerdomains_omap2;
                hwmods = omap2430_hwmods;
-       else if (cpu_is_omap34xx())
+       } else if (cpu_is_omap34xx()) {
+               pwrdm = powerdomains_omap3;
                hwmods = omap34xx_hwmods;
+       }
 
 #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
        /* The OPP tables have to be registered before a clk init */
        omap_hwmod_init(hwmods);
        omap2_mux_init();
        omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
-       pwrdm_init(powerdomains_omap);
+       pwrdm_init(pwrdm);
        clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
 #endif
        omap2_clk_init();
diff --git a/arch/arm/mach-omap2/powerdomains.h 
b/arch/arm/mach-omap2/powerdomains.h
index d5d753c..6fe7d0c 100644
--- a/arch/arm/mach-omap2/powerdomains.h
+++ b/arch/arm/mach-omap2/powerdomains.h
@@ -152,22 +152,33 @@ static struct powerdomain wkup_pwrdm = {
 
 
 /* As powerdomains are added or removed above, this list must also be changed 
*/
-static struct powerdomain *powerdomains_omap[] __initdata = {
+
+#ifdef CONFIG_ARCH_OMAP2
+static struct powerdomain *powerdomains_omap2[] __initdata = {
 
        &gfx_pwrdm,
        &wkup_pwrdm,
 
-#ifdef CONFIG_ARCH_OMAP2
        &dsp_pwrdm,
        &mpu_24xx_pwrdm,
        &core_24xx_pwrdm,
-#endif
 
 #ifdef CONFIG_ARCH_OMAP2430
        &mdm_pwrdm,
 #endif
 
+       NULL
+};
+#else
+#define powerdomains_omap2             NULL
+#endif
+
 #ifdef CONFIG_ARCH_OMAP3
+static struct powerdomain *powerdomains_omap3[] __initdata = {
+
+       &gfx_pwrdm,
+       &wkup_pwrdm,
+
        &iva2_pwrdm,
        &mpu_34xx_pwrdm,
        &neon_pwrdm,
@@ -184,10 +195,10 @@ static struct powerdomain *powerdomains_omap[] __initdata 
= {
        &dpll3_pwrdm,
        &dpll4_pwrdm,
        &dpll5_pwrdm,
-#endif
-
        NULL
 };
-
+#else
+#define powerdomains_omap3             NULL
+#endif
 
 #endif

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to