From: Siva Durga Prasad Paladugu Date: Mon, 26 May 2014 05:45:36 +0000 (+0530) Subject: mmc: ultrascale_mmc: Add initial SD support X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0b77ffc5a72355df021aafdc576a226c937c34a0;p=thirdparty%2Fu-boot.git mmc: ultrascale_mmc: Add initial SD support Added initial SD support for xilinx ultrascale. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- diff --git a/arch/arm/include/asm/arch-ultrascale/hardware.h b/arch/arm/include/asm/arch-ultrascale/hardware.h index b6e55ab558c..04074a0a445 100644 --- a/arch/arm/include/asm/arch-ultrascale/hardware.h +++ b/arch/arm/include/asm/arch-ultrascale/hardware.h @@ -22,4 +22,7 @@ #define ZYNQ_QSPI_BASEADDR 0xFF00D000 +#define ZYNQ_SDHCI_BASEADDR0 0xFF014000 +#define ZYNQ_SDHCI_BASEADDR1 0xFF015000 + #endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-ultrascale/sys_proto.h b/arch/arm/include/asm/arch-ultrascale/sys_proto.h index 534eec2c027..11fbca459d4 100644 --- a/arch/arm/include/asm/arch-ultrascale/sys_proto.h +++ b/arch/arm/include/asm/arch-ultrascale/sys_proto.h @@ -13,5 +13,6 @@ static inline void zynq_slcr_gem_clk_setup(u32 gem_id, unsigned long clk_rate) { } +extern int zynq_sdhci_init(u32 regbase); #endif /* _ASM_ARCH_SYS_PROTO_H */ diff --git a/board/xilinx/ultrascale/ultrascale.c b/board/xilinx/ultrascale/ultrascale.c index b759b59bd7a..61539acd654 100644 --- a/board/xilinx/ultrascale/ultrascale.c +++ b/board/xilinx/ultrascale/ultrascale.c @@ -7,6 +7,7 @@ #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -55,3 +56,20 @@ int board_eth_init(bd_t *bis) #endif return ret; } + +#ifdef CONFIG_CMD_MMC +int board_mmc_init(bd_t *bd) +{ + int ret = 0; + +#if defined(CONFIG_ZYNQ_SDHCI) +# if defined(CONFIG_ZYNQ_SDHCI0) + ret = zynq_sdhci_init(ZYNQ_SDHCI_BASEADDR0); +# endif +# if defined(CONFIG_ZYNQ_SDHCI1) + ret |= zynq_sdhci_init(ZYNQ_SDHCI_BASEADDR1); +# endif +#endif + return ret; +} +#endif diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c index fdce2c2c10e..40df4aad3a0 100644 --- a/drivers/mmc/zynq_sdhci.c +++ b/drivers/mmc/zynq_sdhci.c @@ -12,6 +12,7 @@ #include #include #include +#include int zynq_sdhci_init(u32 regbase) { diff --git a/include/configs/xilinx_ultrascale.h b/include/configs/xilinx_ultrascale.h index 91189930ba4..634312010c6 100644 --- a/include/configs/xilinx_ultrascale.h +++ b/include/configs/xilinx_ultrascale.h @@ -59,6 +59,7 @@ #define CONFIG_ZYNQ_SERIAL #define CONFIG_ZYNQ_QSPI +#define CONFIG_ZYNQ_SDHCI0 #define CONFIG_CONS_INDEX 0 #define CONFIG_BAUDRATE 115200 @@ -106,6 +107,14 @@ # define CONFIG_CMD_SF #endif +#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 +#endif + /* Miscellaneous configurable options */ #define CONFIG_SYS_LOAD_ADDR 0x8000000 @@ -121,6 +130,7 @@ "fdt_high=0x10000000\0" \ "netboot=tftpboot 10000000 image.ub && bootm\0" \ "qspiboot=sf probe 0; sf read 10000000 0 1000000; bootm 10080000\0" \ + "sdboot=mmcinfo && fatload mmc 0:0 10000000 image.ub && bootm 10000000\0" \ "jtagboot=tftpboot 1000000 uImage && " \ "tftpboot 20000000 system.dtb && " \ "bootm 1000000 - 20000000\0"