summaryrefslogtreecommitdiff
path: root/board/st-ericsson/u8500/u8500_href.c
diff options
context:
space:
mode:
authorJohn Rigby <john.rigby@linaro.org>2012-07-31 08:59:31 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2012-09-01 14:58:20 +0200
commit10ed93dcddeede4e305235367c402fb99e063ef3 (patch)
treea7edb4d8b3aa5d9f4b07a87655ddc84341f2e53a /board/st-ericsson/u8500/u8500_href.c
parent75dfe964cbe01ec089e4e3d470a86835776fe248 (diff)
downloadu-boot-imx-10ed93dcddeede4e305235367c402fb99e063ef3.zip
u-boot-imx-10ed93dcddeede4e305235367c402fb99e063ef3.tar.gz
u-boot-imx-10ed93dcddeede4e305235367c402fb99e063ef3.tar.bz2
u8500: Separating mmc config parameters from driver
Configuration in vexpress and u8500.v1 is different from what is needed in u8500.v2. As such, card configuration specifics need to reside in the board file rather than the driver. Signed-off-by: John Rigby <john.rigby@linaro.org> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'board/st-ericsson/u8500/u8500_href.c')
-rw-r--r--board/st-ericsson/u8500/u8500_href.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/board/st-ericsson/u8500/u8500_href.c b/board/st-ericsson/u8500/u8500_href.c
index 3de80df..ec559e3 100644
--- a/board/st-ericsson/u8500/u8500_href.c
+++ b/board/st-ericsson/u8500/u8500_href.c
@@ -18,6 +18,7 @@
#include <config.h>
#include <common.h>
+#include <malloc.h>
#include <i2c.h>
#include <asm/types.h>
#include <asm/io.h>
@@ -374,12 +375,27 @@ static int u8500_mmci_board_init(void)
int board_mmc_init(bd_t *bd)
{
+ struct pl180_mmc_host *host;
+
if (u8500_mmci_board_init())
return -ENODEV;
- if (arm_pl180_mmci_init())
- return -ENODEV;
- return 0;
+ host = malloc(sizeof(struct pl180_mmc_host));
+ if (!host)
+ return -ENOMEM;
+ memset(host, 0, sizeof(*host));
+
+ strcpy(host->name, "MMC");
+ host->base = (struct sdi_registers *)CONFIG_ARM_PL180_MMCI_BASE;
+ host->pwr_init = INIT_PWR;
+ host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN;
+ host->voltages = VOLTAGE_WINDOW_MMC;
+ host->caps = 0;
+ host->clock_in = ARM_MCLK;
+ host->clock_min = ARM_MCLK / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
+ host->clock_max = CONFIG_ARM_PL180_MMCI_CLOCK_FREQ;
+
+ return arm_pl180_mmci_init(host);
}
#endif