diff options
author | Fabien Parent <fparent@baylibre.com> | 2017-01-09 11:06:36 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-01-14 16:47:16 -0500 |
commit | c0fa385c9b0d924c66e55467e867f37adc2c6630 (patch) | |
tree | b6bdce26a521ae528367101be74b516b67c35c95 /arch/arm/mach-davinci/spl.c | |
parent | 208db781cad4c24f538658a9cb17e24fa43ca3c9 (diff) |
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.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c index 0aeaa7d8b7..564c2008e0 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(); + } } |