[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