From: Tony Lindgren Date: Wed, 3 May 2006 10:59:07 +0000 (-0700) Subject: MMC: Fix MMC_POWER_UP on some OMAP boards X-Git-Tag: v2.6.17-omap1~91 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=e2607096a5fb9b67f8e1a7bafa824109b8da45d6;p=linux-2.6-omap-h63xx.git MMC: Fix MMC_POWER_UP on some OMAP boards MMC spec says that we must not enable clock prior to the power stabilizing. But at least omap16xx needs clock divisor configured during MMC_POWER_UP. Signed-off-by: Tony Lindgren --- diff --git a/drivers/mmc/omap.c b/drivers/mmc/omap.c index 7c8b6ceb934..51670cf1eed 100644 --- a/drivers/mmc/omap.c +++ b/drivers/mmc/omap.c @@ -899,9 +899,16 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) int dsor; int realclock, i; - realclock = ios->clock; + /* According to the MMC spec we must not enable clock prior to + * power stabilizing. But at least omap16xx needs clock dsor + * configured during MMC_POWER_UP. + */ + if ((ios->power_mode == MMC_POWER_UP) && (ios->clock == 0)) + realclock = mmc->f_min; + else + realclock = ios->clock; - if (ios->clock == 0) + if (realclock == 0) dsor = 0; else { int func_clk_rate = clk_get_rate(host->fclk);