On 08.07.21 19:30, Marek Behún wrote:
From: Pali Rohár <p...@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 <p...@kernel.org>
Reviewed-by: Marek Behún <marek.be...@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 <s...@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

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de

Reply via email to