arm: socfpga: spl: Add support for booting from SD/MMC

Add code and configuration options to support booting from RAW
SD/MMC card as well as for ext4/vfat filesystems. Enable support
for booting from SD/MMC card, but don't enable the filesystem
support just yet to retain compatibility with old SoCFPGA card
format.

Signed-off-by: Marek Vasut <marex@denx.de>
diff --git a/arch/arm/mach-socfpga/spl.c b/arch/arm/mach-socfpga/spl.c
index ea0ed1a..bacc845 100644
--- a/arch/arm/mach-socfpga/spl.c
+++ b/arch/arm/mach-socfpga/spl.c
@@ -31,9 +31,26 @@
 
 u32 spl_boot_device(void)
 {
+#ifdef CONFIG_SPL_MMC_SUPPORT
+	socfpga_per_reset(SOCFPGA_RESET(SDMMC), 0);
+	socfpga_per_reset(SOCFPGA_RESET(DMA), 0);
+	return BOOT_DEVICE_MMC1;
+#else
 	return BOOT_DEVICE_RAM;
+#endif
 }
 
+#ifdef CONFIG_SPL_MMC_SUPPORT
+u32 spl_boot_mode(void)
+{
+#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
+	return MMCSD_MODE_FS;
+#else
+	return MMCSD_MODE_RAW;
+#endif
+}
+#endif
+
 static void socfpga_nic301_slave_ns(void)
 {
 	writel(0x1, &nic301_regs->lwhps2fpgaregs);