Merge tag 'u-boot-amlogic-20181207' of git://git.denx.de/u-boot-amlogic
[oweals/u-boot.git] / arch / arm / mach-at91 / spl.c
index c4ed224d03dffa9ef0f19172cba33ca6fea9e496..6da6d41be2ecffc5cbe99b46e80a538e046f1683 100644 (file)
@@ -1,8 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2013 Atmel Corporation
  *                   Bo Shen <voice.shen@atmel.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -12,9 +11,7 @@
 #include <asm/arch/clk.h>
 #include <spl.h>
 
-#if defined(CONFIG_AT91SAM9_WATCHDOG)
-void at91_disable_wdt(void) { }
-#else
+#if !defined(CONFIG_WDT_AT91)
 void at91_disable_wdt(void)
 {
        struct at91_wdt *wdt = (struct at91_wdt *)ATMEL_BASE_WDT;
@@ -23,33 +20,49 @@ void at91_disable_wdt(void)
 }
 #endif
 
-#if defined(CONFIG_SAMA5D2)
+#if defined(CONFIG_SAMA5D2) || 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 defined(CONFIG_SYS_USE_MMC) || defined(CONFIG_SD_BOOT)
+       if (dev == ATMEL_SAMA5_BOOT_FROM_MCI) {
+#if defined(CONFIG_SPL_OF_CONTROL)
+               return BOOT_DEVICE_MMC1;
+#else
                if (off == 0)
                        return BOOT_DEVICE_MMC1;
                if (off == 1)
                        return BOOT_DEVICE_MMC2;
                printf("ERROR: MMC controller %i not present!\n", dev);
                hang();
+#endif
        }
 #endif
 
-#if defined(CONFIG_SYS_USE_SERIALFLASH) || defined(CONFIG_SYS_USE_SPIFLASH)
-       if (dev == ATMEL_SAMA5D2_BOOT_FROM_SPI)
+#if defined(CONFIG_SYS_USE_SERIALFLASH) || \
+       defined(CONFIG_SYS_USE_SPIFLASH) || \
+       defined(CONFIG_SPI_BOOT)
+       if (dev == ATMEL_SAMA5_BOOT_FROM_SPI)
                return BOOT_DEVICE_SPI;
 #endif
+       if (dev == ATMEL_SAMA5_BOOT_FROM_QSPI)
+               return BOOT_DEVICE_SPI;
+
+       if (dev == ATMEL_SAMA5_BOOT_FROM_SMC)
+               return BOOT_DEVICE_NAND;
+
+       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);
@@ -59,28 +72,15 @@ u32 spl_boot_device(void)
 #else
 u32 spl_boot_device(void)
 {
-#ifdef CONFIG_SYS_USE_MMC
+#if defined(CONFIG_SYS_USE_MMC) || defined(CONFIG_SD_BOOT)
        return BOOT_DEVICE_MMC1;
-#elif CONFIG_SYS_USE_NANDFLASH
+#elif defined(CONFIG_SYS_USE_NANDFLASH) || defined(CONFIG_NAND_BOOT)
        return BOOT_DEVICE_NAND;
-#elif CONFIG_SYS_USE_SERIALFLASH || CONFIG_SYS_USE_SPIFLASH
+#elif defined(CONFIG_SYS_USE_SERIALFLASH) || \
+       defined(CONFIG_SYS_USE_SPIFLASH) || \
+       defined(CONFIG_SPI_BOOT)
        return BOOT_DEVICE_SPI;
 #endif
        return BOOT_DEVICE_NONE;
 }
 #endif
-
-u32 spl_boot_mode(void)
-{
-       switch (spl_boot_device()) {
-#ifdef CONFIG_SYS_USE_MMC
-       case BOOT_DEVICE_MMC1:
-       case BOOT_DEVICE_MMC2:
-               return MMCSD_MODE_FS;
-               break;
-#endif
-       case BOOT_DEVICE_NONE:
-       default:
-               hang();
-       }
-}