diff mbox series

[U-Boot] arm: mvebu: fix boot from UART when in fallback mode

Message ID 20171124130128.11435-1-sean.nyekjaer@prevas.dk
State Accepted
Commit e83e2b390038c9075642cb243a6292241beb8d73
Delegated to: Stefan Roese
Headers show
Series [U-Boot] arm: mvebu: fix boot from UART when in fallback mode | expand

Commit Message

Sean Nyekjær Nov. 24, 2017, 1:01 p.m. UTC
It's the first 8 bits of the bootrom error register that
contains the boot error/fallback error code. Lets check that
and continue to boot from UART.

Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
---
 arch/arm/mach-mvebu/include/mach/soc.h | 6 ++++++
 arch/arm/mach-mvebu/spl.c              | 9 +++++++++
 2 files changed, 15 insertions(+)

Comments

Andreas Färber Nov. 25, 2017, 3:21 p.m. UTC | #1
Am 24.11.2017 um 14:01 schrieb Sean Nyekjaer:
> It's the first 8 bits of the bootrom error register that
> contains the boot error/fallback error code. Lets check that

"bits ... contain"

"Let's"

> and continue to boot from UART.
> 
> Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
> ---
>  arch/arm/mach-mvebu/include/mach/soc.h | 6 ++++++
>  arch/arm/mach-mvebu/spl.c              | 9 +++++++++
>  2 files changed, 15 insertions(+)
> 
> diff --git a/arch/arm/mach-mvebu/include/mach/soc.h b/arch/arm/mach-mvebu/include/mach/soc.h
> index 1d302761f0..4f81285bb5 100644
> --- a/arch/arm/mach-mvebu/include/mach/soc.h
> +++ b/arch/arm/mach-mvebu/include/mach/soc.h
> @@ -111,10 +111,16 @@
>  #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 */
> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> index a72a769f7c..2fd6c62589 100644
> --- a/arch/arm/mach-mvebu/spl.c
> +++ b/arch/arm/mach-mvebu/spl.c
> @@ -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

"anything other than"

> +	 * 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;
>  
>  	/*

Regards,
Andreas
Stefan Roese Nov. 30, 2017, 12:29 p.m. UTC | #2
On 25.11.2017 16:21, Andreas Färber wrote:
> Am 24.11.2017 um 14:01 schrieb Sean Nyekjaer:
>> It's the first 8 bits of the bootrom error register that
>> contains the boot error/fallback error code. Lets check that
> 
> "bits ... contain"
> 
> "Let's"

Fixed up while applying.

Applied to u-boot-marvell/master.

Thanks,
Stefan
diff mbox series

Patch

diff --git a/arch/arm/mach-mvebu/include/mach/soc.h b/arch/arm/mach-mvebu/include/mach/soc.h
index 1d302761f0..4f81285bb5 100644
--- a/arch/arm/mach-mvebu/include/mach/soc.h
+++ b/arch/arm/mach-mvebu/include/mach/soc.h
@@ -111,10 +111,16 @@ 
 #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 */
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
index a72a769f7c..2fd6c62589 100644
--- a/arch/arm/mach-mvebu/spl.c
+++ b/arch/arm/mach-mvebu/spl.c
@@ -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;
 
 	/*