summaryrefslogtreecommitdiffstats
path: root/drivers/mci/omap_hsmmc.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-02-08 15:49:14 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-02-09 12:40:11 +0100
commit0f9892cce8792b2d44b07ba8431c2876290e1ac1 (patch)
treed4efdfdf3a4a10849e0abcbdedbe78b5c421f4af /drivers/mci/omap_hsmmc.c
parent74b83f91198c8dd81ba3afac2b83f10723bd39b5 (diff)
downloadbarebox-0f9892cce8792b2d44b07ba8431c2876290e1ac1.tar.gz
barebox-0f9892cce8792b2d44b07ba8431c2876290e1ac1.tar.xz
mci core: replace discrete ios values with struct ios
As we'll need more arguments to set_ios over time put them in a struct mci_ios like the kernel does. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci/omap_hsmmc.c')
-rw-r--r--drivers/mci/omap_hsmmc.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/mci/omap_hsmmc.c b/drivers/mci/omap_hsmmc.c
index e671bbea73..e629fba324 100644
--- a/drivers/mci/omap_hsmmc.c
+++ b/drivers/mci/omap_hsmmc.c
@@ -511,7 +511,7 @@ static int mmc_send_cmd(struct mci_host *mci, struct mci_cmd *cmd,
}
static void mmc_set_ios(struct mci_host *mci, struct device_d *dev,
- unsigned bus_width, unsigned clock)
+ struct mci_ios *ios)
{
struct omap_hsmmc *hsmmc = to_hsmmc(mci);
struct hsmmc *mmc_base = hsmmc->base;
@@ -519,33 +519,34 @@ static void mmc_set_ios(struct mci_host *mci, struct device_d *dev,
uint64_t start;
/* configue bus width */
- switch (bus_width) {
- case 8:
+ switch (ios->bus_width) {
+ case MMC_BUS_WIDTH_8:
writel(readl(&mmc_base->con) | DTW_8_BITMODE,
&mmc_base->con);
break;
- case 4:
+ case MMC_BUS_WIDTH_4:
writel(readl(&mmc_base->con) & ~DTW_8_BITMODE,
&mmc_base->con);
writel(readl(&mmc_base->hctl) | DTW_4_BITMODE,
&mmc_base->hctl);
break;
- case 1:
- default:
+ case MMC_BUS_WIDTH_1:
writel(readl(&mmc_base->con) & ~DTW_8_BITMODE,
&mmc_base->con);
writel(readl(&mmc_base->hctl) & ~DTW_4_BITMODE,
&mmc_base->hctl);
break;
+ default:
+ return;
}
/* configure clock with 96Mhz system clock.
*/
- if (clock != 0) {
- dsor = (MMC_CLOCK_REFERENCE * 1000000 / clock);
- if ((MMC_CLOCK_REFERENCE * 1000000) / dsor > clock)
+ if (ios->clock != 0) {
+ dsor = (MMC_CLOCK_REFERENCE * 1000000 / ios->clock);
+ if ((MMC_CLOCK_REFERENCE * 1000000) / dsor > ios->clock)
dsor++;
}