summaryrefslogtreecommitdiff
path: root/arch/arm/mach-davinci/spl.c
diff options
context:
space:
mode:
authorFabien Parent <fparent@baylibre.com>2017-01-09 10:06:36 (GMT)
committerTom Rini <trini@konsulko.com>2017-01-14 21:47:16 (GMT)
commitc0fa385c9b0d924c66e55467e867f37adc2c6630 (patch)
treeb6bdce26a521ae528367101be74b516b67c35c95 /arch/arm/mach-davinci/spl.c
parent208db781cad4c24f538658a9cb17e24fa43ca3c9 (diff)
downloadu-boot-c0fa385c9b0d924c66e55467e867f37adc2c6630.tar.xz
davinci: spl: use bootcfg to select boot device
Right now the SPL is trying to load u-boot based on defines, i.e. one has to define CONFIG_SPL_NAND_SIMPLE to boot from NAND, or CONFIG_SPL_SPI_LOAD to boot from SPI FLASH, etc... This prevent us from having a single SPL image that is able to boot from all media, and one need to build an image for each medium. This commit is replacing the #ifdef that select the boot medium by reading the value of the boot pins (via the BOOTCFG register). Now a single SPL image will be able to read from the boot pin to know which device should be used to load u-boot. Signed-off-by: Fabien Parent <fparent@baylibre.com> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'arch/arm/mach-davinci/spl.c')
-rw-r--r--arch/arm/mach-davinci/spl.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c
index 0aeaa7d..564c200 100644
--- a/arch/arm/mach-davinci/spl.c
+++ b/arch/arm/mach-davinci/spl.c
@@ -52,14 +52,27 @@ u32 spl_boot_mode(const u32 boot_device)
u32 spl_boot_device(void)
{
-#ifdef CONFIG_SPL_NAND_SIMPLE
- return BOOT_DEVICE_NAND;
-#elif defined(CONFIG_SPL_SPI_LOAD)
- return BOOT_DEVICE_SPI;
-#elif defined(CONFIG_SPL_MMC_LOAD)
- return BOOT_DEVICE_MMC1;
-#else
- puts("Unknown boot device\n");
- hang();
+ switch (davinci_syscfg_regs->bootcfg) {
+#ifdef CONFIG_SPL_NAND_SUPPORT
+ case DAVINCI_NAND8_BOOT:
+ case DAVINCI_NAND16_BOOT:
+ return BOOT_DEVICE_NAND;
#endif
+
+#ifdef CONFIG_SPL_MMC_SUPPORT
+ case DAVINCI_SD_OR_MMC_BOOT:
+ case DAVINCI_MMC_ONLY_BOOT:
+ return BOOT_DEVICE_MMC1;
+#endif
+
+#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT
+ case DAVINCI_SPI0_FLASH_BOOT:
+ case DAVINCI_SPI1_FLASH_BOOT:
+ return BOOT_DEVICE_SPI;
+#endif
+
+ default:
+ puts("Unknown boot device\n");
+ hang();
+ }
}