diff options
-rw-r--r-- | arch/arm/include/asm/arch-vf610/imx-regs.h | 8 | ||||
-rw-r--r-- | board/toradex/colibri_vf/colibri_vf.c | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch-vf610/imx-regs.h b/arch/arm/include/asm/arch-vf610/imx-regs.h index 6c7c2d83db1..2341e9d3425 100644 --- a/arch/arm/include/asm/arch-vf610/imx-regs.h +++ b/arch/arm/include/asm/arch-vf610/imx-regs.h @@ -261,6 +261,14 @@ /* Slow Clock Source Controller Module (SCSC) */ #define SCSC_SOSC_CTR_SOSC_EN (0x1) +/* System Reset Controller (SRC) */ +#define SRC_SBMR2_BMOD_MASK (0x3 << 24) +#define SRC_SBMR2_BMOD_SHIFT 24 +#define SRC_SBMR2_BMOD_FUSES 0x0 +#define SRC_SBMR2_BMOD_SERIAL 0x1 +#define SRC_SBMR2_BMOD_RCON 0x2 + + #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) #include <asm/types.h> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c index 3be74e0d675..a977f64c9ff 100644 --- a/board/toradex/colibri_vf/colibri_vf.c +++ b/board/toradex/colibri_vf/colibri_vf.c @@ -252,6 +252,8 @@ int board_early_init_f(void) #ifdef CONFIG_BOARD_LATE_INIT int board_late_init(void) { + struct src *src = (struct src *)SRC_BASE_ADDR; + /* Default memory arguments */ if (!getenv("memargs")) { switch (gd->ram_size) { @@ -268,6 +270,12 @@ int board_late_init(void) } } + if (((src->sbmr2 & SRC_SBMR2_BMOD_MASK) >> SRC_SBMR2_BMOD_SHIFT) + == SRC_SBMR2_BMOD_SERIAL) { + printf("Serial Downloader recovery mode, disable autoboot\n"); + setenv("bootdelay", "-1"); + } + return 0; } #endif /* CONFIG_BOARD_LATE_INIT */ |