diff --git a/arch/arm/mach-at91/spl.c b/arch/arm/mach-at91/spl.c
index 98f280cbf7732c460d291a1da0e64be08ecd57f0..e113336b7bfca467ea7049e4c5e0682584ae469f 100644
--- a/arch/arm/mach-at91/spl.c
+++ b/arch/arm/mach-at91/spl.c
@@ -39,12 +39,16 @@ u32 spl_boot_device(void)
 
 #if defined(CONFIG_SYS_USE_MMC)
 	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
 
@@ -53,6 +57,9 @@ u32 spl_boot_device(void)
 		return BOOT_DEVICE_SPI;
 #endif
 
+	if (dev == ATMEL_SAMA5_BOOT_FROM_SMC)
+		return BOOT_DEVICE_NAND;
+
 	if (dev == ATMEL_SAMA5_BOOT_FROM_SAMBA)
 		return BOOT_DEVICE_USB;