ARM: OMAP4+: Allow arch specfic code to use early DM
authorLokesh Vutla <lokeshvutla@ti.com>
Mon, 7 Mar 2016 09:19:54 +0000 (14:49 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 14 Mar 2016 23:18:48 +0000 (19:18 -0400)
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.

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

index 9e9376d..99634fd 100644 (file)
@@ -107,21 +107,26 @@ void __weak do_board_detect(void)
 {
 }
 
-/*
- * Routine: s_init
- * Description: Does early system init of watchdog, muxing,  andclocks
+void s_init(void)
+{
+}
+
+/**
+ * early_system_init - Does Early system initialization.
+ *
+ * Does early system init of watchdog, muxing,  andclocks
  * Watchdog disable is done always. For the rest what gets done
- * depends on the boot mode in which this function is executed
- *   1. s_init of SPL running from SRAM
- *   2. s_init of U-Boot running from FLASH
- *   3. s_init of U-Boot loaded to SDRAM by SPL
- *   4. s_init of U-Boot loaded to SDRAM by ROM code using the
+ * depends on the boot mode in which this function is executed when
+ *   1. SPL running from SRAM
+ *   2. U-Boot running from FLASH
+ *   3. U-Boot loaded to SDRAM by SPL
+ *   4. U-Boot loaded to SDRAM by ROM code using the
  *     Configuration Header feature
  * Please have a look at the respective functions to see what gets
  * done in each of these cases
  * This function is called with SRAM stack.
  */
-void s_init(void)
+void early_system_init(void)
 {
        init_omap_revision();
        hw_data_init();
@@ -145,6 +150,7 @@ void s_init(void)
 #ifdef CONFIG_SPL_BUILD
 void board_init_f(ulong dummy)
 {
+       early_system_init();
 #ifdef CONFIG_BOARD_EARLY_INIT_F
        board_early_init_f();
 #endif
@@ -153,6 +159,12 @@ void board_init_f(ulong dummy)
 }
 #endif
 
+int arch_cpu_init_dm(void)
+{
+       early_system_init();
+       return 0;
+}
+
 /*
  * Routine: wait_for_command_complete
  * Description: Wait for posting to finish on watchdog