arm: mvebu: fix boot from UART when in fallback mode
authorSean Nyekjaer <sean.nyekjaer@prevas.dk>
Fri, 24 Nov 2017 13:01:28 +0000 (14:01 +0100)
committerStefan Roese <sr@denx.de>
Thu, 30 Nov 2017 07:29:59 +0000 (08:29 +0100)
It's the first 8 bits of the bootrom error register that
contain the boot error/fallback error code. Let's check that
and continue to boot from UART.

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 1d302761f090f67ba71d498c619e6ba4471fdf75..4f81285bb58a9fbe664849ac0fb0e9e8e5ea3330 100644 (file)
 #define COMPHY_REFCLK_ALIGNMENT        (MVEBU_REGISTER(0x182f8))
 
 /* BootROM error register (also includes some status infos) */
+#if defined(CONFIG_ARMADA_38X)
+#define CONFIG_BOOTROM_ERR_REG (MVEBU_REGISTER(0x182d0))
+#define BOOTROM_ERR_MODE_OFFS  0
+#define BOOTROM_ERR_MODE_MASK  (0xf << BOOTROM_ERR_MODE_OFFS)
+#else
 #define CONFIG_BOOTROM_ERR_REG (MVEBU_REGISTER(0x182d0))
 #define BOOTROM_ERR_MODE_OFFS  28
 #define BOOTROM_ERR_MODE_MASK  (0xf << BOOTROM_ERR_MODE_OFFS)
 #define BOOTROM_ERR_MODE_UART  0x6
+#endif
 
 #if defined(CONFIG_ARMADA_375)
 /* SAR values for Armada 375 */
index a72a769f7c740eeb8c4fabf46964c0ba913f2e3d..2fd6c62589ae3ca2d99c029693ce939666d369c9 100644 (file)
@@ -26,7 +26,16 @@ static u32 get_boot_device(void)
        val = readl(CONFIG_BOOTROM_ERR_REG);
        boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS;
        debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device);
+#if defined(CONFIG_ARMADA_38X)
+       /*
+        * If the bootrom error register contains any else than zeros
+        * in the first 8 bits it's an error condition. And in that case
+        * try to boot from UART.
+        */
+       if (boot_device)
+#else
        if (boot_device == BOOTROM_ERR_MODE_UART)
+#endif
                return BOOT_DEVICE_UART;
 
        /*