[U-Boot] [PATCH] spl: pass args to board_return_to_bootrom
Kever Yang
kever.yang at rock-chips.com
Thu Aug 8 02:17:19 UTC 2019
On 2019/8/7 下午2:40, Peng Fan wrote:
> Pass spl_image and bootdev to board_return_bootrom.
> i.MX8MN needs the args to let ROM to load images
>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> Cc: Kever Yang <kever.yang at rock-chips.com>
> Signed-off-by: Peng Fan <peng.fan at nxp.com>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
>
> This is to prepare i.MX8MM ROMAPI support, and
> This is an updated version for https://patchwork.ozlabs.org/patch/1128834/,
> because there are changes in rockchip spl/tpl.
>
> Kever, Philipp
> Please help review again. Thanks.
>
> arch/arm/cpu/arm926ejs/spear/spl.c | 5 ++++-
> arch/arm/mach-rockchip/spl.c | 5 ++++-
> arch/arm/mach-rockchip/tpl.c | 5 ++++-
> common/spl/spl_bootrom.c | 7 ++++---
> include/spl.h | 3 ++-
> 5 files changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/spear/spl.c b/arch/arm/cpu/arm926ejs/spear/spl.c
> index fc332fb626..a919a455eb 100644
> --- a/arch/arm/cpu/arm926ejs/spear/spl.c
> +++ b/arch/arm/cpu/arm926ejs/spear/spl.c
> @@ -277,7 +277,8 @@ void board_init_f(ulong dummy)
> * BootROM code right after having initialized a few components like the DRAM).
> * The following function is called from SPL common code (board_init_r).
> */
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> + struct spl_boot_device *bootdev)
> {
> /*
> * Retrieve the BootROM's stack pointer and jump back to the start of
> @@ -294,4 +295,6 @@ void board_return_to_bootrom(void)
> "bl back_to_bootrom;"
> #endif
> );
> +
> + return 0;
> }
> diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
> index 33137cc5ef..92102b39e7 100644
> --- a/arch/arm/mach-rockchip/spl.c
> +++ b/arch/arm/mach-rockchip/spl.c
> @@ -14,9 +14,12 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> + struct spl_boot_device *bootdev)
> {
> back_to_bootrom(BROM_BOOT_NEXTSTAGE);
> +
> + return 0;
> }
>
> __weak const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
> diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c
> index 55f6e922d0..c3734cb070 100644
> --- a/arch/arm/mach-rockchip/tpl.c
> +++ b/arch/arm/mach-rockchip/tpl.c
> @@ -77,9 +77,12 @@ void board_init_f(ulong dummy)
> }
> }
>
> -void board_return_to_bootrom(void)
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> + struct spl_boot_device *bootdev)
> {
> back_to_bootrom(BROM_BOOT_NEXTSTAGE);
> +
> + return 0;
> }
>
> u32 spl_boot_device(void)
> diff --git a/common/spl/spl_bootrom.c b/common/spl/spl_bootrom.c
> index 076f5d8d93..0eefd39a51 100644
> --- a/common/spl/spl_bootrom.c
> +++ b/common/spl/spl_bootrom.c
> @@ -6,8 +6,10 @@
> #include <common.h>
> #include <spl.h>
>
> -__weak void board_return_to_bootrom(void)
> +__weak int board_return_to_bootrom(struct spl_image_info *spl_image,
> + struct spl_boot_device *bootdev)
> {
> + return 0;
> }
>
> static int spl_return_to_bootrom(struct spl_image_info *spl_image,
> @@ -19,8 +21,7 @@ static int spl_return_to_bootrom(struct spl_image_info *spl_image,
> * the ROM), it will implement board_return_to_bootrom() and
> * should not return from it.
> */
> - board_return_to_bootrom();
> - return false;
> + return board_return_to_bootrom(spl_image, bootdev);
> }
>
> SPL_LOAD_IMAGE_METHOD("BOOTROM", 0, BOOT_DEVICE_BOOTROM, spl_return_to_bootrom);
> diff --git a/include/spl.h b/include/spl.h
> index a90f971a23..f4a5461b4e 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -382,7 +382,8 @@ void spl_optee_entry(void *arg0, void *arg1, void *arg2, void *arg3);
> * stage wants to return to the ROM code to continue booting, boards
> * can implement 'board_return_to_bootrom'.
> */
> -void board_return_to_bootrom(void);
> +int board_return_to_bootrom(struct spl_image_info *spl_image,
> + struct spl_boot_device *bootdev);
>
> /**
> * board_spl_fit_post_load - allow process images after loading finished
More information about the U-Boot
mailing list