]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/imx-common/spl.c
arm: socfpga: spl: Add support for booting from QSPI
[karo-tx-uboot.git] / arch / arm / imx-common / spl.c
index 9d3c31ab089a325a38146debb67021f36a4cdd53..1073b3503f35bed2aad1787739ecaadcd05be289 100644 (file)
 #include <asm/spl.h>
 #include <spl.h>
 
-#if defined(CONFIG_MX6)
-/* determine boot device from SRC_SBMR1 register (BOOT_CFG[4:1]) */
+#if defined(CONFIG_SOC_MX6)
+/* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */
 u32 spl_boot_device(void)
 {
        struct src *psrc = (struct src *)SRC_BASE_ADDR;
-       unsigned reg = readl(&psrc->sbmr1);
+       unsigned int gpr10_boot = readl(&psrc->gpr10) & (1 << 28);
+       unsigned reg = gpr10_boot ? readl(&psrc->gpr9) : readl(&psrc->sbmr1);
 
        /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
        switch ((reg & 0x000000FF) >> 4) {
@@ -67,8 +68,10 @@ u32 spl_boot_mode(void)
        /* for MMC return either RAW or FAT mode */
        case BOOT_DEVICE_MMC1:
        case BOOT_DEVICE_MMC2:
-#ifdef CONFIG_SPL_FAT_SUPPORT
+#if defined(CONFIG_SPL_FAT_SUPPORT)
                return MMCSD_MODE_FS;
+#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
+               return MMCSD_MODE_EMMCBOOT;
 #else
                return MMCSD_MODE_RAW;
 #endif