[U-Boot] [PATCH v2 1/2] arm: mvebu: fix boot from UART on ClearFog Base

The ClearFog Base boot from UART when setting the DIP switches to 01001. Unfortunately, the SPL code sometimes fails to detect the UART boot method at run-time. Add an alternative SAR UART boot value to fix this.
Note that this alternative value is not documented (Armada 38x Hardware Specifications, Table 48). But experimentations showed it on the ClearFog Base.
Signed-off-by: Baruch Siach baruch@tkos.co.il --- v2: put BOOT_FROM_UART_ALT under #ifdef to avoid build break for other mvebu variants --- arch/arm/mach-mvebu/include/mach/soc.h | 1 + arch/arm/mach-mvebu/spl.c | 3 +++ 2 files changed, 4 insertions(+)
diff --git a/arch/arm/mach-mvebu/include/mach/soc.h b/arch/arm/mach-mvebu/include/mach/soc.h index 0900e4008c12..44bac63b4447 100644 --- a/arch/arm/mach-mvebu/include/mach/soc.h +++ b/arch/arm/mach-mvebu/include/mach/soc.h @@ -139,6 +139,7 @@ #define BOOT_DEV_SEL_MASK (0x3f << BOOT_DEV_SEL_OFFS)
#define BOOT_FROM_UART 0x28 +#define BOOT_FROM_UART_ALT 0x3f #define BOOT_FROM_SPI 0x32 #define BOOT_FROM_MMC 0x30 #define BOOT_FROM_MMC_ALT 0x31 diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c index 3cf02a54cea2..a72a769f7c74 100644 --- a/arch/arm/mach-mvebu/spl.c +++ b/arch/arm/mach-mvebu/spl.c @@ -42,6 +42,9 @@ static u32 get_boot_device(void) return BOOT_DEVICE_MMC1; #endif case BOOT_FROM_UART: +#ifdef BOOT_FROM_UART_ALT + case BOOT_FROM_UART_ALT: +#endif return BOOT_DEVICE_UART; case BOOT_FROM_SPI: default:

Signed-off-by: Baruch Siach baruch@tkos.co.il --- board/solidrun/clearfog/README | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/board/solidrun/clearfog/README b/board/solidrun/clearfog/README index 2cfa5bfc8637..ef1e3bf42666 100644 --- a/board/solidrun/clearfog/README +++ b/board/solidrun/clearfog/README @@ -16,3 +16,23 @@ $ sudo dd if=u-boot-spl.kwb of=/dev/sdX bs=512 seek=1
Please use the correct device node for your setup instead of "/dev/sdX" here! + +Boot from UART: +--------------- + +Connect the on-board micro-USB (CF Pro: CON11, CF Base: CON5) +to your host. + +Set the SW1 DIP switches to UART boot (0: OFF, 1: ON): + + ClearFog Base: 01001 + ClearFog Pro: 11110 + +Run the following command to initiate U-Boot download: + + ./tools/kwboot -b u-boot-spl.kwb /dev/ttyUSBX + +Use the correct UART device node for /dev/ttyUSBX. + +When download finishes start your favorite terminal emulator +on /dev/ttyUSBX.

On 24.09.2017 14:50, Baruch Siach wrote:
Signed-off-by: Baruch Siach baruch@tkos.co.il
board/solidrun/clearfog/README | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
Applied to u-boot-marvell/master.
Thanks, Stefan

On 24.09.2017 14:50, Baruch Siach wrote:
The ClearFog Base boot from UART when setting the DIP switches to 01001. Unfortunately, the SPL code sometimes fails to detect the UART boot method at run-time. Add an alternative SAR UART boot value to fix this.
Note that this alternative value is not documented (Armada 38x Hardware Specifications, Table 48). But experimentations showed it on the ClearFog Base.
Signed-off-by: Baruch Siach baruch@tkos.co.il
v2: put BOOT_FROM_UART_ALT under #ifdef to avoid build break for other mvebu variants
Applied to u-boot-marvell/master.
Thanks, Stefan
participants (2)
-
Baruch Siach
-
Stefan Roese