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>
master
Philipp Tomsich 7 years ago
parent 4d9253fb76
commit b82bd1f8d4
  1. 5
      arch/arm/include/asm/arch-rockchip/bootrom.h
  2. 4
      arch/arm/mach-rockchip/bootrom.c
  3. 2
      arch/arm/mach-rockchip/rk3036-board-spl.c
  4. 4
      arch/arm/mach-rockchip/rk3188-board-spl.c
  5. 2
      arch/arm/mach-rockchip/rk322x-board-spl.c
  6. 4
      arch/arm/mach-rockchip/rk3288-board-spl.c
  7. 2
      arch/arm/mach-rockchip/rk3288-board-tpl.c
  8. 2
      arch/arm/mach-rockchip/rk3368-board-tpl.c
  9. 2
      arch/arm/mach-rockchip/rk3399-board-spl.c

@ -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…
Cancel
Save