[U-Boot] [PATCH] ARM: at91: sama5: Extend boot device autodetection

Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.
Signed-off-by: Marek Vasut marex@denx.de Cc: Andreas Bießmann andreas.devel@googlemail.com Cc: Wenyou Yang wenyou.yang@atmel.com --- arch/arm/mach-at91/Makefile | 4 ++-- arch/arm/mach-at91/include/mach/sama5_boot.h | 25 +++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/sama5d2.h | 12 ------------ arch/arm/mach-at91/spl.c | 19 ++++++++++++------- 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 arch/arm/mach-at91/include/mach/sama5_boot.h
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index d2abf31..a908004 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile @@ -10,8 +10,8 @@ obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o obj-$(CONFIG_AT91SAM9N12) += mpddrc.o spl_at91.o obj-$(CONFIG_AT91SAM9X5) += mpddrc.o spl_at91.o obj-$(CONFIG_SAMA5D2) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o -obj-$(CONFIG_SAMA5D3) += mpddrc.o spl_atmel.o -obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o matrix.o atmel_sfr.o +obj-$(CONFIG_SAMA5D3) += bootparams_atmel.o mpddrc.o spl_atmel.o +obj-$(CONFIG_SAMA5D4) += bootparams_atmel.o mpddrc.o spl_atmel.o matrix.o atmel_sfr.o obj-y += spl.o endif
diff --git a/arch/arm/mach-at91/include/mach/sama5_boot.h b/arch/arm/mach-at91/include/mach/sama5_boot.h new file mode 100644 index 0000000..8911a44 --- /dev/null +++ b/arch/arm/mach-at91/include/mach/sama5_boot.h @@ -0,0 +1,25 @@ +/* + * Boot mode definitions for the SAMA5Dx SoC + * + * Copyright (C) 2016 Marek Vasut marex@denx.de + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __SAMA5_BOOT_H +#define __SAMA5_BOOT_H + +/* Boot modes stored by BootROM in r4 */ +#define ATMEL_SAMA5_BOOT_FROM_OFF 0 +#define ATMEL_SAMA5_BOOT_FROM_MASK 0xf +#define ATMEL_SAMA5_BOOT_FROM_SPI (0 << 0) +#define ATMEL_SAMA5_BOOT_FROM_MCI (1 << 0) +#define ATMEL_SAMA5_BOOT_FROM_SMC (2 << 0) +#define ATMEL_SAMA5_BOOT_FROM_TWI (3 << 0) +#define ATMEL_SAMA5_BOOT_FROM_QSPI (4 << 0) +#define ATMEL_SAMA5_BOOT_FROM_SAMBA (7 << 0) + +#define ATMEL_SAMA5_BOOT_DEV_ID_OFF 4 +#define ATMEL_SAMA5_BOOT_DEV_ID_MASK 0xf + +#endif /* __SAMA5_BOOT_H */ diff --git a/arch/arm/mach-at91/include/mach/sama5d2.h b/arch/arm/mach-at91/include/mach/sama5d2.h index e6d498c..dd5a2a7 100644 --- a/arch/arm/mach-at91/include/mach/sama5d2.h +++ b/arch/arm/mach-at91/include/mach/sama5d2.h @@ -225,18 +225,6 @@ /* No PMECC Galois table in ROM */ #define NO_GALOIS_TABLE_IN_ROM
-/* Boot modes stored by BootROM in r4 */ -#define ATMEL_SAMA5D2_BOOT_FROM_OFF 0 -#define ATMEL_SAMA5D2_BOOT_FROM_MASK 0xf -#define ATMEL_SAMA5D2_BOOT_FROM_SPI (0 << 0) -#define ATMEL_SAMA5D2_BOOT_FROM_MCI (1 << 0) -#define ATMEL_SAMA5D2_BOOT_FROM_SMC (2 << 0) -#define ATMEL_SAMA5D2_BOOT_FROM_TWI (3 << 0) -#define ATMEL_SAMA5D2_BOOT_FROM_QSPI (4 << 0) - -#define ATMEL_SAMA5D2_BOOT_DEV_ID_OFF 4 -#define ATMEL_SAMA5D2_BOOT_DEV_ID_MASK 0xf - #ifndef __ASSEMBLY__ unsigned int get_chip_id(void); unsigned int get_extension_chip_id(void); diff --git a/arch/arm/mach-at91/spl.c b/arch/arm/mach-at91/spl.c index 236c8ec..e626b66 100644 --- a/arch/arm/mach-at91/spl.c +++ b/arch/arm/mach-at91/spl.c @@ -23,20 +23,22 @@ void at91_disable_wdt(void) } #endif
-#if defined(CONFIG_SAMA5D2) +#if defined(CONFIG_SAMA5) || defined(CONFIG_SAMA5D3) || \ + defined(CONFIG_SAMA5D4) +#include <asm/arch/sama5_boot.h> struct { u32 r4; } bootrom_stash __attribute__((section(".data")));
u32 spl_boot_device(void) { - u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_FROM_OFF) & - ATMEL_SAMA5D2_BOOT_FROM_MASK; - u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_DEV_ID_OFF) & - ATMEL_SAMA5D2_BOOT_DEV_ID_MASK; + u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_FROM_OFF) & + ATMEL_SAMA5_BOOT_FROM_MASK; + u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_DEV_ID_OFF) & + ATMEL_SAMA5_BOOT_DEV_ID_MASK;
#if defined(CONFIG_SYS_USE_MMC) - if (dev == ATMEL_SAMA5D2_BOOT_FROM_MCI) { + if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) { if (off == 0) return BOOT_DEVICE_MMC1; if (off == 1) @@ -47,10 +49,13 @@ u32 spl_boot_device(void) #endif
#if defined(CONFIG_SYS_USE_SERIALFLASH) || defined(CONFIG_SYS_USE_SPIFLASH) - if (dev == ATMEL_SAMA5D2_BOOT_FROM_SPI) + if (dev == ATMEL_SAMA5_BOOT_FROM_SPI) return BOOT_DEVICE_SPI; #endif
+ if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA) + return BOOT_DEVICE_USB; + printf("ERROR: SMC/TWI/QSPI boot device not supported!\n" " Boot device %i, controller number %i\n", dev, off);

On 14.05.16 23:43, Marek Vasut wrote:
Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.
Signed-off-by: Marek Vasut marex@denx.de Cc: Andreas Bießmann andreas.devel@googlemail.com Cc: Wenyou Yang wenyou.yang@atmel.com
Reviewed-by: Andreas Bießmann andreas@biessmann.org
with minor comment below ...
arch/arm/mach-at91/Makefile | 4 ++-- arch/arm/mach-at91/include/mach/sama5_boot.h | 25 +++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/sama5d2.h | 12 ------------ arch/arm/mach-at91/spl.c | 19 ++++++++++++------- 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 arch/arm/mach-at91/include/mach/sama5_boot.h
diff --git a/arch/arm/mach-at91/spl.c b/arch/arm/mach-at91/spl.c index 236c8ec..e626b66 100644 --- a/arch/arm/mach-at91/spl.c +++ b/arch/arm/mach-at91/spl.c @@ -23,20 +23,22 @@ void at91_disable_wdt(void) } #endif
-#if defined(CONFIG_SAMA5D2) +#if defined(CONFIG_SAMA5) || defined(CONFIG_SAMA5D3) || \
we should stay with CONFIG_SAMA5D2 here ... will fix it while applying
- defined(CONFIG_SAMA5D4)
+#include <asm/arch/sama5_boot.h> struct { u32 r4; } bootrom_stash __attribute__((section(".data")));
u32 spl_boot_device(void) {
- u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_FROM_OFF) &
ATMEL_SAMA5D2_BOOT_FROM_MASK;
- u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5D2_BOOT_DEV_ID_OFF) &
ATMEL_SAMA5D2_BOOT_DEV_ID_MASK;
- u32 dev = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_FROM_OFF) &
ATMEL_SAMA5_BOOT_FROM_MASK;
- u32 off = (bootrom_stash.r4 >> ATMEL_SAMA5_BOOT_DEV_ID_OFF) &
ATMEL_SAMA5_BOOT_DEV_ID_MASK;
#if defined(CONFIG_SYS_USE_MMC)
- if (dev == ATMEL_SAMA5D2_BOOT_FROM_MCI) {
- if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) { if (off == 0) return BOOT_DEVICE_MMC1; if (off == 1)
@@ -47,10 +49,13 @@ u32 spl_boot_device(void) #endif
#if defined(CONFIG_SYS_USE_SERIALFLASH) || defined(CONFIG_SYS_USE_SPIFLASH)
- if (dev == ATMEL_SAMA5D2_BOOT_FROM_SPI)
- if (dev == ATMEL_SAMA5_BOOT_FROM_SPI) return BOOT_DEVICE_SPI;
#endif
- if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA)
return BOOT_DEVICE_USB;
- printf("ERROR: SMC/TWI/QSPI boot device not supported!\n" " Boot device %i, controller number %i\n", dev, off);

On 06/12/2016 10:13 PM, Andreas Bießmann wrote:
On 14.05.16 23:43, Marek Vasut wrote:
Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.
Signed-off-by: Marek Vasut marex@denx.de Cc: Andreas Bießmann andreas.devel@googlemail.com Cc: Wenyou Yang wenyou.yang@atmel.com
Reviewed-by: Andreas Bießmann andreas@biessmann.org
with minor comment below ...
arch/arm/mach-at91/Makefile | 4 ++-- arch/arm/mach-at91/include/mach/sama5_boot.h | 25 +++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/sama5d2.h | 12 ------------ arch/arm/mach-at91/spl.c | 19 ++++++++++++------- 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 arch/arm/mach-at91/include/mach/sama5_boot.h
diff --git a/arch/arm/mach-at91/spl.c b/arch/arm/mach-at91/spl.c index 236c8ec..e626b66 100644 --- a/arch/arm/mach-at91/spl.c +++ b/arch/arm/mach-at91/spl.c @@ -23,20 +23,22 @@ void at91_disable_wdt(void) } #endif
-#if defined(CONFIG_SAMA5D2) +#if defined(CONFIG_SAMA5) || defined(CONFIG_SAMA5D3) || \
we should stay with CONFIG_SAMA5D2 here ... will fix it while applying
Gah, thanks!

Dear Marek Vasut,
Marek Vasut marex@denx.de writes:
Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.
Signed-off-by: Marek Vasut marex@denx.de Cc: Andreas Bießmann andreas.devel@googlemail.com Cc: Wenyou Yang wenyou.yang@atmel.com Reviewed-by: Andreas Bießmann andreas@biessmann.org [minor compile fix for SAMA5D2] Signed-off-by: Andreas Bießmann andreas@biessmann.org
arch/arm/mach-at91/Makefile | 4 ++-- arch/arm/mach-at91/include/mach/sama5_boot.h | 25 +++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/sama5d2.h | 12 ------------ arch/arm/mach-at91/spl.c | 19 ++++++++++++------- 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 arch/arm/mach-at91/include/mach/sama5_boot.h
applied to u-boot-atmel/master, thanks!
Best regards, Andreas Bießmann
participants (2)
-
Andreas Bießmann
-
Marek Vasut