ARM: AMx3xx: Allow arch specific code to use early DM
authorLokesh Vutla <lokeshvutla@ti.com>
Fri, 14 Oct 2016 05:05:23 +0000 (10:35 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 21 Nov 2016 14:49:58 +0000 (09:49 -0500)
Early system initialization is being done before initf_dm is being called
in U-Boot. Then system will fail to boot if any of the DM enabled driver
is being called in this system initialization code. So, rearrange the
code a bit so that DM enabled drivers can be called during early system
initialization. This is inspired by commit e850ed82bce8 ("ARM: OMAP4+: Allow
arch specific code to use early DM")

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/cpu/armv7/am33xx/board.c

index 68baded..1ba4ec5 100644 (file)
@@ -270,15 +270,11 @@ static void watchdog_disable(void)
                ;
 }
 
-#ifdef CONFIG_SPL_BUILD
-void board_init_f(ulong dummy)
+void s_init(void)
 {
-       board_early_init_f();
-       sdram_init();
 }
-#endif
 
-void s_init(void)
+void early_system_init(void)
 {
        /*
         * The ROM will only have set up sufficient pinmux to allow for the
@@ -297,4 +293,22 @@ void s_init(void)
        rtc32k_enable();
 #endif
 }
+
+#ifdef CONFIG_SPL_BUILD
+void board_init_f(ulong dummy)
+{
+       early_system_init();
+       board_early_init_f();
+       sdram_init();
+}
 #endif
+
+#endif
+
+int arch_cpu_init_dm(void)
+{
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+       early_system_init();
+#endif
+       return 0;
+}