diff --git a/arch/arm/mach-sc5xx/Kconfig b/arch/arm/mach-sc5xx/Kconfig index 0f4e63a355e2..7c213a647ad3 100644 --- a/arch/arm/mach-sc5xx/Kconfig +++ b/arch/arm/mach-sc5xx/Kconfig @@ -106,11 +106,13 @@ config TARGET_SC598_SOM_EZLITE bool prompt "SC598-SOM with SOMCRR-EZLITE" select ADI_CARRIER_SOMCRR_EZLITE + select BOARD_LATE_INIT config TARGET_SC598_SOM_EZKIT bool prompt "SC598-SOM with SOMCRR-EZKIT" select ADI_CARRIER_SOMCRR_EZKIT + select BOARD_LATE_INIT endchoice diff --git a/arch/arm/mach-sc5xx/soc.c b/arch/arm/mach-sc5xx/soc.c index 09978a5cf44d..407437f3cdcb 100644 --- a/arch/arm/mach-sc5xx/soc.c +++ b/arch/arm/mach-sc5xx/soc.c @@ -110,7 +110,7 @@ const char *sc5xx_get_boot_mode(u32 *bmode) *bmode = local_mode; - if (local_mode >= 0 && local_mode <= ARRAY_SIZE(bmodes)) + if (local_mode < ARRAY_SIZE(bmodes)) return bmodes[local_mode]; return "unknown"; } diff --git a/board/adi/common-sc598-som/sc598-som.c b/board/adi/common-sc598-som/sc598-som.c index 0e1ee828956a..c0aa9122d5fd 100644 --- a/board/adi/common-sc598-som/sc598-som.c +++ b/board/adi/common-sc598-som/sc598-som.c @@ -4,6 +4,7 @@ */ #include +#include #include #include #include @@ -32,3 +33,17 @@ int board_init(void) return 0; } + +int board_late_init(void) +{ + u32 bmode; + + sc5xx_get_boot_mode(&bmode); + + if (bmode == 1) + return env_set("bootcmd", "run spiboot"); + if (bmode == 6) + return env_set("bootcmd", "run emmcboot"); + + return 0; +}