]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
mmc: Add support for Xilinx Zynq sdhci controller
authorMichal Simek <michal.simek@xilinx.com>
Mon, 22 Apr 2013 12:56:49 +0000 (14:56 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 25 Apr 2013 14:55:47 +0000 (16:55 +0200)
Add support for SD, MMC and eMMC card on Xilinx Zynq.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/include/asm/arch-zynq/hardware.h
arch/arm/include/asm/arch-zynq/sys_proto.h
board/xilinx/zynq/board.c
drivers/mmc/zynq_sdhci.c
include/configs/petalinux-auto-board.h.template
include/configs/zynq.h
include/configs/zynq_common.h

index a61eb2f59eb9b1b9550a467e6efbc27ffc7857dc..5bb9cff0391e893ef450f26d0eb97542dd77a6bc 100644 (file)
@@ -29,6 +29,8 @@
 #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 {
index 776c3b2748bcd97a6252a127715ef37619ecc34a..378baade010231ad6b3a92de8c1c78bedc8c6e37 100644 (file)
@@ -39,4 +39,7 @@ extern int zynq_slcr_get_mio_pin_status(const char *periph);
 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_ */
index 03b6bf9cc3d75c2e7905ac625793dc8270655ae5..119cde439ea8548cfe9f6786626b8fb4aca62683 100644 (file)
@@ -163,11 +163,11 @@ int board_mmc_init(bd_t *bd)
        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;
index a3b9dfa552b2bfafdd4be3c19e2036c3fbb968ba..9e37af45fc658eca8a836b63d2aaa0b92c9cbea8 100644 (file)
@@ -29,7 +29,7 @@ int zynq_sdhci_init(u32 regbase)
        }
 
        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);
 
index bdba0feb0f0ba633ad31b259318da8b1ee2b0ce7..9e15ad07091fe9bfdf3c708840a98af817a14b2d 100644 (file)
 # 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
index 3b23354bc8a3f2c411b77286641df067a6c07685..2ed88a72c4d0c6c9ec5c6cd58af6e285db5b9b24 100644 (file)
 #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 */
index 77df3eceb7d3d6c10e9af6e8e07bec183f2606a7..f19eac47a5f966806e48ded727f27823d6339182 100644 (file)
 #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