Skip to contentSkip to conversation

ARM: at91: sama5: Extend boot device autodetection

PATCH In review Marek Vasut 2 participants 4 messages May 14, 2016 – Jun 12, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: at91: sama5: Extend boot device autodetection

Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.

Cc Andreas Bie?mann <[email protected]>
Cc Wenyou Yang <[email protected]>
---
 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
arch/arm/mach-at91/Makefile +2 -2
index d2abf31..a908004 100644
@@ -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
 
arch/arm/mach-at91/include/mach/sama5_boot.h new file +25 -0
new file mode 100644
index 0000000..8911a44
@@ -0,0 +1,25 @@
+/*
+ * Boot mode definitions for the SAMA5Dx SoC
+ *
+ * Copyright (C) 2016 Marek Vasut <[email protected]>
+ *
+ * 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 */
arch/arm/mach-at91/include/mach/sama5d2.h +0 -12
index e6d498c..dd5a2a7 100644
@@ -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);
arch/arm/mach-at91/spl.c +12 -7
index 236c8ec..e626b66 100644
@@ -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);
 
Signature · 1 line
2.7.0
#1 lore raw

PATCH 1/1 ARM: at91: sama5: Extend boot device autodetection

Quoted 6 lines · Marek Vasut

Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.

Cc Andreas Bie?mann <[email protected]>
Cc Wenyou Yang <[email protected]>

with minor comment below ...

Quoted 14 lines
---
 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
arch/arm/mach-at91/spl.c +0 -0
index 236c8ec..e626b66 100644

arch/arm/mach-at91/spl.c void at91_disable_wdt(void) · line 26

Quoted 5 lines
arch/arm/mach-at91/spl.c +1 -1
@@ -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

Quoted 39 lines
arch/arm/mach-at91/spl.c +11 -6
+    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);
 
#2 lore raw

PATCH 1/1 ARM: at91: sama5: Extend boot device autodetection

Quoted 29 lines · Andreas Bie?mann
Quoted 6 lines · Marek Vasut

Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.

Cc Andreas Bie?mann <[email protected]>
Cc Wenyou Yang <[email protected]>

with minor comment below ...

Quoted 17 lines
---
 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
arch/arm/mach-at91/spl.c +0 -0
index 236c8ec..e626b66 100644
@@ -23,20 +23,22 @@ void at91_disable_wdt(void)
 }
 #endif
 
Quoted 4 lines

arch/arm/mach-at91/spl.c void at91_disable_wdt(void) · line 26

Quoted 2 lines
arch/arm/mach-at91/spl.c +1 -1
-#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!

Signature · 2 lines
Best regards,
Marek Vasut
#3 lore raw
In reply to Marek Vasut

Dear Marek Vasut,

Quoted 9 lines · Marek Vasut

Extend the boot device autodetection from SAMA5D2 only to the entire SAMA5Dx family of microcontrollers.

Cc Andreas Bie?mann <[email protected]>
Cc Wenyou Yang <[email protected]>
[minor compile fix for SAMA5D2]
Quoted 7 lines

---

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