summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-at91/include/mach/sama5d2.h
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2016-04-22 21:56:21 +0200
committerAndreas Bießmann <andreas@biessmann.org>2016-05-24 08:08:37 +0200
commitbb0c63a5f3b05770e8cb6171be57ca69995bd447 (patch)
treeb5cfe93f0e4932dfb757a9df66deecc8804227d8 /arch/arm/mach-at91/include/mach/sama5d2.h
parent12328f25f257c347c79562ebc7f66c1a0f48bc2b (diff)
downloadtalos-obmc-uboot-bb0c63a5f3b05770e8cb6171be57ca69995bd447.tar.gz
talos-obmc-uboot-bb0c63a5f3b05770e8cb6171be57ca69995bd447.zip
ARM: sama5d2: Implement boot device autodetection
Implement support for saving ARM register R4 early during boot using save_boot_params . Implement support for decoding the stored register R4 value in spl_boot_device() to obtain boot device from which the SoC booted. This way, the SPL will always load U-Boot from the same device from which the SPL itself booted instead of using hard-coded boot device. This functionality is useful for example when booting sama5d2-xplained from SD card, where by default the SPL would try loading the U-Boot from eMMC and fail. This is because eMMC is on SDHCI0 (BOOT_DEVICE_MMC1), while SD slot is on SDHCI1 (BOOT_DEVICE_MMC2) and the SPL was hard-wired to always boot from BOOT_DEVICE_MMC1. 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>
Diffstat (limited to 'arch/arm/mach-at91/include/mach/sama5d2.h')
-rw-r--r--arch/arm/mach-at91/include/mach/sama5d2.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/include/mach/sama5d2.h b/arch/arm/mach-at91/include/mach/sama5d2.h
index 25c85411e5..ee841da971 100644
--- a/arch/arm/mach-at91/include/mach/sama5d2.h
+++ b/arch/arm/mach-at91/include/mach/sama5d2.h
@@ -230,6 +230,18 @@
/* 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);
OpenPOWER on IntegriCloud