This allows -after reimplementation of board_mmc_init() function- to set up the base address of the eSDHC controller at runtime. This is useful on iMX515 board I have, where there are two controllers and on different revisions of the board, only one of them is used. The board revision can be detected on runtime.
Signed-off-by: Marek Vasut <marek.va...@gmail.com> --- arch/arm/cpu/armv7/mx5/soc.c | 2 +- arch/powerpc/cpu/mpc83xx/cpu.c | 2 +- arch/powerpc/cpu/mpc85xx/cpu.c | 2 +- board/freescale/mpc837xemds/mpc837xemds.c | 2 +- board/freescale/mpc837xerdb/mpc837xerdb.c | 2 +- board/freescale/mpc8569mds/mpc8569mds.c | 2 +- drivers/mmc/fsl_esdhc.c | 4 ++-- include/fsl_esdhc.h | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c index 7c7a565..4a73491 100644 --- a/arch/arm/cpu/armv7/mx5/soc.c +++ b/arch/arm/cpu/armv7/mx5/soc.c @@ -107,7 +107,7 @@ int cpu_eth_init(bd_t *bis) int cpu_mmc_init(bd_t *bis) { #ifdef CONFIG_FSL_ESDHC - return fsl_esdhc_mmc_init(bis); + return fsl_esdhc_mmc_init(bis, CONFIG_SYS_FSL_ESDHC_ADDR); #else return 0; #endif diff --git a/arch/powerpc/cpu/mpc83xx/cpu.c b/arch/powerpc/cpu/mpc83xx/cpu.c index 6635109..4739edd 100644 --- a/arch/powerpc/cpu/mpc83xx/cpu.c +++ b/arch/powerpc/cpu/mpc83xx/cpu.c @@ -234,7 +234,7 @@ int cpu_eth_init(bd_t *bis) int cpu_mmc_init(bd_t *bis) { #ifdef CONFIG_FSL_ESDHC - return fsl_esdhc_mmc_init(bis); + return fsl_esdhc_mmc_init(bis, CONFIG_SYS_FSL_ESDHC_ADDR); #else return 0; #endif diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c index fc5d951..7bc9147 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu.c +++ b/arch/powerpc/cpu/mpc85xx/cpu.c @@ -269,7 +269,7 @@ reset_85xx_watchdog(void) int cpu_mmc_init(bd_t *bis) { #ifdef CONFIG_FSL_ESDHC - return fsl_esdhc_mmc_init(bis); + return fsl_esdhc_mmc_init(bis, CONFIG_SYS_FSL_ESDHC_ADDR); #else return 0; #endif diff --git a/board/freescale/mpc837xemds/mpc837xemds.c b/board/freescale/mpc837xemds/mpc837xemds.c index 51dd692..41dce43 100644 --- a/board/freescale/mpc837xemds/mpc837xemds.c +++ b/board/freescale/mpc837xemds/mpc837xemds.c @@ -79,7 +79,7 @@ int board_mmc_init(bd_t *bd) clrsetbits_be32(&im->sysconf.sicrh, SICRH_GPIO2_E | SICRH_SPI, SICRH_GPIO2_E_SD | SICRH_SPI_SD); - return fsl_esdhc_mmc_init(bd); + return fsl_esdhc_mmc_init(bd, CONFIG_SYS_FSL_ESDHC_ADDR); } #endif diff --git a/board/freescale/mpc837xerdb/mpc837xerdb.c b/board/freescale/mpc837xerdb/mpc837xerdb.c index d636796..8c3cf7b 100644 --- a/board/freescale/mpc837xerdb/mpc837xerdb.c +++ b/board/freescale/mpc837xerdb/mpc837xerdb.c @@ -179,7 +179,7 @@ int board_mmc_init(bd_t *bd) clrsetbits_be32(&im->sysconf.sicrl, SICRL_USB_B, SICRL_USB_B_SD); clrsetbits_be32(&im->sysconf.sicrh, SICRH_SPI, SICRH_SPI_SD); - return fsl_esdhc_mmc_init(bd); + return fsl_esdhc_mmc_init(bd, CONFIG_SYS_FSL_ESDHC_ADDR); } #endif diff --git a/board/freescale/mpc8569mds/mpc8569mds.c b/board/freescale/mpc8569mds/mpc8569mds.c index 743e712..31e8f1f 100644 --- a/board/freescale/mpc8569mds/mpc8569mds.c +++ b/board/freescale/mpc8569mds/mpc8569mds.c @@ -485,7 +485,7 @@ int board_mmc_init(bd_t *bd) /* Mux I2C2 (and optionally UART0) signals to eSDHC. */ setbits_8(&bcsr[6], bcsr6); - return fsl_esdhc_mmc_init(bd); + return fsl_esdhc_mmc_init(bd, CONFIG_SYS_FSL_ESDHC_ADDR); } static void fdt_board_fixup_esdhc(void *blob, bd_t *bd) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index a368fe6..a078bce 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -484,13 +484,13 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg) return 0; } -int fsl_esdhc_mmc_init(bd_t *bis) +int fsl_esdhc_mmc_init(bd_t *bis, uint32_t base) { struct fsl_esdhc_cfg *cfg; cfg = malloc(sizeof(struct fsl_esdhc_cfg)); memset(cfg, 0, sizeof(struct fsl_esdhc_cfg)); - cfg->esdhc_base = CONFIG_SYS_FSL_ESDHC_ADDR; + cfg->esdhc_base = base; return fsl_esdhc_initialize(bis, cfg); } diff --git a/include/fsl_esdhc.h b/include/fsl_esdhc.h index 477bbd7..e78d25c 100644 --- a/include/fsl_esdhc.h +++ b/include/fsl_esdhc.h @@ -173,11 +173,11 @@ struct fsl_esdhc_cfg { #endif #ifdef CONFIG_FSL_ESDHC -int fsl_esdhc_mmc_init(bd_t *bis); +int fsl_esdhc_mmc_init(bd_t *bis, uint32_t base); int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg); void fdt_fixup_esdhc(void *blob, bd_t *bd); #else -static inline int fsl_esdhc_mmc_init(bd_t *bis) { return -ENOSYS; } +static inline int fsl_esdhc_mmc_init(bd_t *bis, uint32_t base) { return -ENOSYS; } static inline void fdt_fixup_esdhc(void *blob, bd_t *bd) {} #endif /* CONFIG_FSL_ESDHC */ -- 1.7.2.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot