arm: mvebu: enable boot from NAND
authorSean Nyekjaer <sean.nyekjaer@prevas.dk>
Fri, 24 Nov 2017 13:01:47 +0000 (14:01 +0100)
committerStefan Roese <sr@denx.de>
Thu, 30 Nov 2017 07:30:27 +0000 (08:30 +0100)
Check if we are booting from NAND and let the bootrom
continue to load the rest of the bootloader

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Signed-off-by: Stefan Roese <sr@denx.de>
arch/arm/mach-mvebu/include/mach/soc.h
arch/arm/mach-mvebu/spl.c

index 4f81285..1a06a1e 100644 (file)
 #define BOOT_DEV_SEL_OFFS      4
 #define BOOT_DEV_SEL_MASK      (0x3f << BOOT_DEV_SEL_OFFS)
 
+#define BOOT_FROM_NAND         0x0A
 #define BOOT_FROM_UART         0x28
 #define BOOT_FROM_UART_ALT     0x3f
 #define BOOT_FROM_SPI          0x32
index 2fd6c62..d16a62d 100644 (file)
@@ -45,6 +45,10 @@ static u32 get_boot_device(void)
        boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
        debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
        switch (boot_device) {
+#if defined(CONFIG_ARMADA_38X)
+       case BOOT_FROM_NAND:
+               return BOOT_DEVICE_NAND;
+#endif
 #ifdef CONFIG_SPL_MMC_SUPPORT
        case BOOT_FROM_MMC:
        case BOOT_FROM_MMC_ALT:
@@ -128,7 +132,15 @@ void board_init_f(ulong dummy)
         * 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.
         */
-       if (get_boot_device() == BOOT_DEVICE_UART)
-               return_to_bootrom();
+       switch (get_boot_device()) {
+               case BOOT_DEVICE_UART:
+#if defined(CONFIG_ARMADA_38X)
+               case BOOT_DEVICE_NAND:
+#endif
+                       return_to_bootrom();
+       }
 }