ARM: OMAP4+: Allow arch specfic code to use early DM

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>
This commit is contained in:
Lokesh Vutla 2016-03-07 14:49:54 +05:30 committed by Tom Rini
parent 29c20ba235
commit e850ed82bc
1 changed files with 21 additions and 9 deletions

View File

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