
On 08.07.21 19:30, Marek Behún wrote:
From: Pali Rohár pali@kernel.org
Current code uses hack in board_init_f() which calls return_to_bootrom() to skip U-Boot SPL code and return back to BootROM to load U-Boot via UART or from NAND.
This change migrates that hack from the board_init_f() function and changes it to return BOOT_DEVICE_BOOTROM instead of returning to BootROM directly, so that U-Boot's SPL framework is used for returning to BootROM.
Signed-off-by: Pali Rohár pali@kernel.org Reviewed-by: Marek Behún marek.behun@nic.cz
arch/arm/mach-mvebu/spl.c | 48 ++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c index 836eb18889..3551c9de42 100644 --- a/arch/arm/mach-mvebu/spl.c +++ b/arch/arm/mach-mvebu/spl.c @@ -76,7 +76,31 @@ static u32 get_boot_device(void)
u32 spl_boot_device(void) {
- return get_boot_device();
- u32 boot_device = get_boot_device();
- /*
* Return to the BootROM to continue the Marvell xmodem
* UART boot protocol. As initiated by the kwboot tool.
*
* This can only be done by the BootROM and not by the
* U-Boot SPL infrastructure, since the beginning of the
* image is already read and interpreted by the BootROM.
* SPL has no chance to receive this information. So we
* need to return to the BootROM to enable this xmodem
* UART download.
The comment needs some updates as the SPL infrastructure is now used. Could you please update it accordingly in v2?
Other than this:
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
*
* If booting from NAND lets let the BootROM load the
* rest of the bootloader.
*/
- switch (boot_device) {
case BOOT_DEVICE_UART:
+#if defined(CONFIG_ARMADA_38X)
case BOOT_DEVICE_NAND:
+#endif
return BOOT_DEVICE_BOOTROM;
default:
return boot_device;
} }
int board_return_to_bootrom(struct spl_image_info *spl_image,
@@ -147,26 +171,4 @@ void board_init_f(ulong dummy)
/* Update read timing control for PCIe */ mv_rtc_config();
- /*
* Return to the BootROM to continue the Marvell xmodem
* UART boot protocol. As initiated by the kwboot tool.
*
* This can only be done by the BootROM and not by the
* U-Boot SPL infrastructure, since the beginning of the
* image is already read and interpreted by the BootROM.
* SPL has no chance to receive this information. So we
* need to return to the BootROM to enable this xmodem
* UART download.
*
* If booting from NAND lets let the BootROM load the
* rest of the bootloader.
*/
- switch (get_boot_device()) {
case BOOT_DEVICE_UART:
-#if defined(CONFIG_ARMADA_38X)
case BOOT_DEVICE_NAND:
-#endif
return_to_bootrom();
- } }
Viele Grüße, Stefan