
Hi,
On 4 April 2017 at 20:02, Simon Glass sjg@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@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