rockchip: back-to-bootrom: allow passing a cmd to the bootrom
The BROM supports forcing it to enter download-mode, if an appropriate result/cmd-word is returned to it. There already is a series to support this in review, so this prepares the (newly C-version) of the back-to-bootrom code to accept a cmd to passed on to the BROM. All the existing call-sites are adjusted to match the changed function signature. Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by: Andy Yan <andy.yan@rock-chips.com>
This commit is contained in:
parent
4d9253fb76
commit
b82bd1f8d4
@ -24,6 +24,9 @@ extern u32 SAVE_SP_ADDR;
|
||||
* download mode, ...).
|
||||
*
|
||||
* This function does not return.
|
||||
*
|
||||
* @brom_cmd: indicates how the bootrom should continue the boot
|
||||
* sequence (e.g. load the next stage)
|
||||
*/
|
||||
enum rockchip_bootrom_cmd {
|
||||
/*
|
||||
@ -35,7 +38,7 @@ enum rockchip_bootrom_cmd {
|
||||
BROM_BOOT_ENTER_DNL, /* have BROM enter download-mode */
|
||||
};
|
||||
|
||||
void back_to_bootrom(void);
|
||||
void back_to_bootrom(enum rockchip_bootrom_cmd brom_cmd);
|
||||
|
||||
/**
|
||||
* Boot-device identifiers as used by the BROM
|
||||
|
@ -15,12 +15,12 @@
|
||||
*/
|
||||
static jmp_buf brom_ctx __section(".data");
|
||||
|
||||
void back_to_bootrom(void)
|
||||
void back_to_bootrom(enum rockchip_bootrom_cmd brom_cmd)
|
||||
{
|
||||
#if CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT)
|
||||
puts("Returning to boot ROM...\n");
|
||||
#endif
|
||||
longjmp(brom_ctx, BROM_BOOT_NEXTSTAGE);
|
||||
longjmp(brom_ctx, brom_cmd);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -40,7 +40,7 @@ void board_init_f(ulong dummy)
|
||||
sdram_init();
|
||||
|
||||
/* return to maskrom */
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
}
|
||||
|
||||
/* Place Holders */
|
||||
|
@ -158,7 +158,7 @@ void board_init_f(ulong dummy)
|
||||
|
||||
setup_arm_clock();
|
||||
#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -219,7 +219,7 @@ void spl_board_init(void)
|
||||
|
||||
preloader_console_init();
|
||||
#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
#endif
|
||||
return;
|
||||
|
||||
|
@ -76,6 +76,6 @@ void board_init_f(ulong dummy)
|
||||
/* Disable the ddr secure region setting to make it non-secure */
|
||||
rk_clrreg(SGRF_DDR_CON0, 0x4000);
|
||||
#if defined(CONFIG_ROCKCHIP_SPL_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
#endif
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ void board_init_f(ulong dummy)
|
||||
#endif
|
||||
|
||||
#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM) && !defined(CONFIG_SPL_BOARD_INIT)
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -283,7 +283,7 @@ void spl_board_init(void)
|
||||
|
||||
preloader_console_init();
|
||||
#if CONFIG_IS_ENABLED(ROCKCHIP_BACK_TO_BROM)
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
#endif
|
||||
return;
|
||||
err:
|
||||
|
@ -69,7 +69,7 @@ void board_init_f(ulong dummy)
|
||||
|
||||
void board_return_to_bootrom(void)
|
||||
{
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
}
|
||||
|
||||
u32 spl_boot_device(void)
|
||||
|
@ -148,7 +148,7 @@ void board_init_f(ulong dummy)
|
||||
|
||||
void board_return_to_bootrom(void)
|
||||
{
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
}
|
||||
|
||||
u32 spl_boot_device(void)
|
||||
|
@ -23,7 +23,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
void board_return_to_bootrom(void)
|
||||
{
|
||||
back_to_bootrom();
|
||||
back_to_bootrom(BROM_BOOT_NEXTSTAGE);
|
||||
}
|
||||
|
||||
static const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
|
||||
|
Loading…
Reference in New Issue
Block a user