diff options
-rw-r--r-- | arch/arm/mach-rmobile/include/mach/boot0.h | 24 | ||||
-rw-r--r-- | board/renesas/porter/porter_spl.c | 21 | ||||
-rw-r--r-- | configs/porter_defconfig | 3 |
3 files changed, 48 insertions, 0 deletions
diff --git a/arch/arm/mach-rmobile/include/mach/boot0.h b/arch/arm/mach-rmobile/include/mach/boot0.h new file mode 100644 index 0000000000..3edd461cbf --- /dev/null +++ b/arch/arm/mach-rmobile/include/mach/boot0.h @@ -0,0 +1,24 @@ +/* + * Specialty padding for the RCar Gen2 TPL JTAG loading + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#ifndef __BOOT0_H +#define __BOOT0_H + +_start: + ARM_VECTORS + +#ifdef CONFIG_TPL_BUILD + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; + .word 0x0badc0d3; +#endif + +#endif /* __BOOT0_H */ diff --git a/board/renesas/porter/porter_spl.c b/board/renesas/porter/porter_spl.c index 533b0b41e9..f711aa9c35 100644 --- a/board/renesas/porter/porter_spl.c +++ b/board/renesas/porter/porter_spl.c @@ -463,6 +463,27 @@ void spl_board_init(void) void board_boot_order(u32 *spl_boot_list) { +#ifdef CONFIG_TPL_BUILD + const u32 jtag_magic = 0x1337c0de; + const u32 load_magic = 0xb33fc0de; + + /* + * If JTAG probe sets special word at 0xe6300020, then it must + * put U-Boot into RAM and TPL will start it from RAM. + */ + if (readl(CONFIG_TPL_TEXT_BASE + 0x20) == jtag_magic) { + printf("JTAG boot detected!\n"); + + while (readl(CONFIG_TPL_TEXT_BASE + 0x24) != load_magic) + ; + + spl_boot_list[0] = BOOT_DEVICE_RAM; + spl_boot_list[1] = BOOT_DEVICE_NONE; + + return; + } +#endif + /* Boot from SPI NOR with YMODEM UART fallback. */ spl_boot_list[0] = BOOT_DEVICE_SPI; spl_boot_list[1] = BOOT_DEVICE_UART; diff --git a/configs/porter_defconfig b/configs/porter_defconfig index a0e44df5f8..e4a2828ed4 100644 --- a/configs/porter_defconfig +++ b/configs/porter_defconfig @@ -1,4 +1,5 @@ CONFIG_ARM=y +CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y CONFIG_ARCH_RMOBILE=y CONFIG_SYS_TEXT_BASE=0x50000000 CONFIG_SPL_GPIO_SUPPORT=y @@ -29,6 +30,8 @@ CONFIG_SPL_YMODEM_SUPPORT=y CONFIG_TPL=y CONFIG_TPL_BOARD_INIT=y CONFIG_TPL_NEEDS_SEPARATE_TEXT_BASE=y +CONFIG_TPL_RAM_SUPPORT=y +CONFIG_TPL_RAM_DEVICE=y CONFIG_TPL_SERIAL_SUPPORT=y CONFIG_TPL_SPI_FLASH_SUPPORT=y CONFIG_TPL_SPI_LOAD=y |