Add support for SD, MMC and eMMC card on Xilinx Zynq.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
#define ZYNQ_SCUTIMER_BASEADDR 0xF8F00600
#define ZYNQ_GEM_BASEADDR0 0xE000B000
#define ZYNQ_GEM_BASEADDR1 0xE000C000
+#define ZYNQ_SDHCI_BASEADDR0 0xE0100000
+#define ZYNQ_SDHCI_BASEADDR1 0xE0101000
/* Reflect slcr offsets */
struct slcr_regs {
extern int zynq_nand_init(struct nand_chip *nand_chip);
extern int zynq_sdhci_init(u32 regbase);
+/* Driver extern functions */
+extern int zynq_sdhci_init(u32 regbase);
+
#endif /* _SYS_PROTO_H_ */
int ret = 0;
#if defined(CONFIG_ZYNQ_SDHCI)
-# if defined(CONFIG_ZYNQ_SDHCI_BASEADDR0)
- ret = zynq_sdhci_init(CONFIG_ZYNQ_SDHCI_BASEADDR0);
+# if defined(CONFIG_ZYNQ_SDHCI0)
+ ret = zynq_sdhci_init(ZYNQ_SDHCI_BASEADDR0);
# endif
-# if defined(CONFIG_ZYNQ_SDHCI_BASEADDR1)
- ret |= zynq_sdhci_init(CONFIG_ZYNQ_SDHCI_BASEADDR1);
+# if defined(CONFIG_ZYNQ_SDHCI1)
+ ret |= zynq_sdhci_init(ZYNQ_SDHCI_BASEADDR1);
# endif
#endif
return ret;
}
host->name = "zynq_sdhci";
- host->ioaddr = (void *) regbase;
+ host->ioaddr = (void *)regbase;
host->quirks = SDHCI_QUIRK_NO_CD | SDHCI_QUIRK_WAIT_SEND_CMD;
host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
# define CONFIG_GENERIC_MMC
# define CONFIG_SDHCI
# define CONFIG_ZYNQ_SDHCI
-# define CONFIG_ZYNQ_SDHCI_BASEADDR0 XILINX_PS7_SDIO_BASEADDR
+# if (XILINX_PS7_SDIO_BASEADDR == CONFIG_ZYNQ_SDHCI_BASEADDR0)
+# define CONFIG_ZYNQ_SDHCI0
+# else
+# define CONFIG_ZYNQ_SDHCI1
+# endif
# define CONFIG_CMD_MMC
# define CONFIG_CMD_FAT
# define CONFIG_CMD_EXT2
#define CONFIG_ZYNQ_GEM0
#define CONFIG_ZYNQ_GEM_PHY_ADDR0 7
+#define CONFIG_ZYNQ_SDHCI
+#define CONFIG_ZYNQ_SDHCI0
+
+/* MMC */
+#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1)
+# define CONFIG_MMC
+# define CONFIG_GENERIC_MMC
+# define CONFIG_SDHCI
+# define CONFIG_ZYNQ_SDHCI
+# define CONFIG_CMD_MMC
+# define CONFIG_CMD_FAT
+# define CONFIG_SUPPORT_VFAT
+# define CONFIG_CMD_EXT2
+# define CONFIG_DOS_PARTITION
+#endif
+
#if defined(CONFIG_ZYNQ_DCC)
# define CONFIG_ARM_DCC
# define CONFIG_CPU_V6 /* Required by CONFIG_ARM_DCC */
#endif
/* MMC */
-#ifdef CONFIG_ZYNQ_SDHCI0
-# define CONFIG_ZYNQ_SDHCI_BASEADDR0 0xE0100000
-#endif
-
-#ifdef CONFIG_ZYNQ_SDHCI1
-# define CONFIG_ZYNQ_SDHCI_BASEADDR1 0xE0101000
-#endif
-
#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1)
# define CONFIG_MMC
# define CONFIG_GENERIC_MMC