arm: socfpga: spl: Add support for booting from SD/MMC
authorMarek Vasut <marex@denx.de>
Thu, 9 Jul 2015 22:04:23 +0000 (00:04 +0200)
committerMarek Vasut <marex@denx.de>
Sat, 8 Aug 2015 12:14:08 +0000 (14:14 +0200)
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>
arch/arm/mach-socfpga/spl.c
configs/socfpga_arria5_defconfig
configs/socfpga_cyclone5_defconfig
configs/socfpga_socrates_defconfig
include/configs/socfpga_common.h

index ea0ed1a24d7fd18fbcc63658b52262f1f82f8508..bacc845cd4dc29f3c456b443ec0818eb1dc0dc83 100644 (file)
@@ -31,8 +31,25 @@ static struct nic301_registers *nic301_regs =
 
 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)
 {
index 4ba4b8c5f26b6c4f8a1d156d71cb697532e5cb69..245d53c17ce0b5c513490800875428a9ec96a0a2 100644 (file)
@@ -7,3 +7,5 @@ CONFIG_SPL=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_OF_CONTROL=y
 CONFIG_SPI_FLASH=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
index e101f767122402852cc0a164582aacc0686aedbd..00536ffc77ab376cb9a73f6ea494938737e99a90 100644 (file)
@@ -9,3 +9,5 @@ CONFIG_OF_CONTROL=y
 CONFIG_SPI_FLASH=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
index 63dda73dd21500ea769893a0c7060546c223c33b..11bbff1db4a9e2dfebf49af8bf15f93bf653c135 100644 (file)
@@ -6,7 +6,8 @@ CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_OF_CONTROL=y
-CONFIG_SPL_DISABLE_OF_CONTROL=y
 CONFIG_SPI_FLASH=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
index 1235aaafde728d382a1856006453756a819729c0..c1380807ec89d16fa6f0975a5c7896979e0844ad 100644 (file)
@@ -300,6 +300,20 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 #define CONFIG_SPL_WATCHDOG_SUPPORT
 #define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+
+/* SPL SDMMC boot support */
+#ifdef CONFIG_SPL_MMC_SUPPORT
+#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     2
+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME                "u-boot-dtb.img"
+#define CONFIG_SPL_LIBDISK_SUPPORT
+#else
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     3
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        0xa00 /* offset 2560 sect (1M+256k) */
+#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     800 /* 400 KB */
+#endif
+#endif
 
 /*
  * Stack setup