diff options
author | Pali Rohár <pali@kernel.org> | 2021-07-23 11:14:26 +0200 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2021-07-31 09:49:32 +0200 |
commit | abbf2179b251493b09c08d90e46ca0de950b3410 (patch) | |
tree | bb9c1ac19d9bb06d883c892068f636a3a8647595 /arch/arm/mach-mvebu/spl.c | |
parent | 9d0225b7fa1571ebe62f7c59ae140fd8df77a34d (diff) | |
download | u-boot-abbf2179b251493b09c08d90e46ca0de950b3410.zip u-boot-abbf2179b251493b09c08d90e46ca0de950b3410.tar.gz u-boot-abbf2179b251493b09c08d90e46ca0de950b3410.tar.bz2 |
arm: mvebu: Use U-Boot's SPL BootROM framework for booting from NAND/UART
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>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Chris Packham <judge.packham@gmail.com>
Tested-by: Chris Packham <judge.packham@gmail.com>
Diffstat (limited to 'arch/arm/mach-mvebu/spl.c')
-rw-r--r-- | arch/arm/mach-mvebu/spl.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c index 836eb18..5c3d959 100644 --- a/arch/arm/mach-mvebu/spl.c +++ b/arch/arm/mach-mvebu/spl.c @@ -76,7 +76,30 @@ 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 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. Use SPL infrastructure to return to BootROM. + * + * 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 +170,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(); - } } |