[U-Boot] [PATCH] rockchip: Print a message when returning to the bootrom
Simon Glass
sjg at chromium.org
Wed Apr 5 02:04:53 UTC 2017
Hi,
On 4 April 2017 at 20:02, Simon Glass <sjg at chromium.org> wrote:
> At present if the return to bootrom fails (e.g. because you are not using
> the Rockchip's bootrom's pointer table in MMC) then the board prints
> SPL message and hangs. Print a message first if we can, to help in
> understanding what happened when it hangs.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
This is supposed to be an RFC, sorry. Please ignore the firefly
change. I tend to get his with this problem a lot so am thinking some
indication would be useful.
>
> arch/arm/include/asm/arch-rockchip/bootrom.h | 9 +++++++--
> arch/arm/mach-rockchip/Makefile | 2 ++
> arch/arm/mach-rockchip/bootrom.c | 16 ++++++++++++++++
> arch/arm/mach-rockchip/save_boot_param.S | 6 +++---
> configs/firefly-rk3288_defconfig | 2 +-
> 5 files changed, 29 insertions(+), 6 deletions(-)
> create mode 100644 arch/arm/mach-rockchip/bootrom.c
>
> diff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h
> index 79fb1a07ac..92eb8783a3 100644
> --- a/arch/arm/include/asm/arch-rockchip/bootrom.h
> +++ b/arch/arm/include/asm/arch-rockchip/bootrom.h
> @@ -13,10 +13,15 @@
> */
> extern u32 SAVE_SP_ADDR;
>
> -/*
> +/**
> * Hand control back to the bootrom to load another
> * boot stage.
> */
> -extern void back_to_bootrom(void);
> +void back_to_bootrom(void);
> +
> +/**
> + * Assembler component for the above (do not call this directly)
> + */
> +void _back_to_bootrom_s(void);
>
> #endif
> diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
> index 6b251c7e7e..5caecfb2c0 100644
> --- a/arch/arm/mach-rockchip/Makefile
> +++ b/arch/arm/mach-rockchip/Makefile
> @@ -4,6 +4,8 @@
> # SPDX-License-Identifier: GPL-2.0+
> #
>
> +obj-y += bootrom.o
> +
> ifdef CONFIG_TPL_BUILD
> obj-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board-tpl.o
> obj-$(CONFIG_ROCKCHIP_BROM_HELPER) += save_boot_param.o
> diff --git a/arch/arm/mach-rockchip/bootrom.c b/arch/arm/mach-rockchip/bootrom.c
> new file mode 100644
> index 0000000000..65f058460e
> --- /dev/null
> +++ b/arch/arm/mach-rockchip/bootrom.c
> @@ -0,0 +1,16 @@
> +/**
> + * Copyright (c) 2017 Google, Inc
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <asm/arch/bootrom.h>
> +
> +void back_to_bootrom(void)
> +{
> +#ifdef SPL_LIBGENERIC_SUPPORT
> + printf("Returning to boot ROM...");
> +#endif
> + _back_to_bootrom_s();
> +}
> diff --git a/arch/arm/mach-rockchip/save_boot_param.S b/arch/arm/mach-rockchip/save_boot_param.S
> index 85b407b4d3..5e6c8dba13 100644
> --- a/arch/arm/mach-rockchip/save_boot_param.S
> +++ b/arch/arm/mach-rockchip/save_boot_param.S
> @@ -23,10 +23,10 @@ ENTRY(save_boot_params)
> ENDPROC(save_boot_params)
>
>
> -.globl back_to_bootrom
> -ENTRY(back_to_bootrom)
> +.globl _back_to_bootrom_s
> +ENTRY(_back_to_bootrom_s)
> ldr r0, =SAVE_SP_ADDR
> ldr sp, [r0]
> mov r0, #0
> pop {r1-r12, pc}
> -ENDPROC(back_to_bootrom)
> +ENDPROC(_back_to_bootrom_s)
> diff --git a/configs/firefly-rk3288_defconfig b/configs/firefly-rk3288_defconfig
> index b0741d7bd9..f2e079a378 100644
> --- a/configs/firefly-rk3288_defconfig
> +++ b/configs/firefly-rk3288_defconfig
> @@ -2,7 +2,6 @@ CONFIG_ARM=y
> CONFIG_ARCH_ROCKCHIP=y
> CONFIG_SYS_MALLOC_F_LEN=0x2000
> CONFIG_ROCKCHIP_RK3288=y
> -CONFIG_ROCKCHIP_SPL_BACK_TO_BROM=y
> CONFIG_TARGET_FIREFLY_RK3288=y
> CONFIG_SPL_STACK_R_ADDR=0x80000
> CONFIG_DEFAULT_DEVICE_TREE="rk3288-firefly"
> @@ -74,3 +73,4 @@ CONFIG_CONSOLE_SCROLL_LINES=10
> CONFIG_USE_TINY_PRINTF=y
> CONFIG_CMD_DHRYSTONE=y
> CONFIG_ERRNO_STR=y
> +CONFIG_SPL_OF_PLATDATA=y
> --
> 2.12.2.715.g7642488e1d-goog
>
Regards,
Simon
More information about the U-Boot
mailing list