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 --- a/drivers/mmc/omap.c +++ b/drivers/mmc/omap.c @@ -899,9 +899,16 @@ static void mmc_omap_set_ios(struct mmc_ 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);