From: Paul Walmsley Date: Sat, 26 Feb 2011 01:22:08 +0000 (-0700) Subject: MMC: omap_hsmmc: enable interface clock before calling mmc_host_enable() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a05dcdb98011a53d150d699ef8243754e2c9a61c;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git MMC: omap_hsmmc: enable interface clock before calling mmc_host_enable() The code path entered via mmc_host_enable() can include register accesses to the HSMMC IP block. For this to work, both the device interface clock and functional clock need to be enabled before mmc_host_enable() is called. However, omap_hsmmc_probe() calls mmc_host_enable() before enabling the device interface clock. Fix by calling mmc_host_enable() after the device interface clock is enabled. Signed-off-by: Paul Walmsley Cc: Madhusudhan Chikkature Rajashekar Cc: Adrian Hunter Cc: Kishore Kadiyala Cc: Tero Kristo Acked-by: Madhusudhan Chikkature Rajashekar --- diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 078fdf11af03..0cf0d89e4183 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -2101,14 +2101,14 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) /* we start off in DISABLED state */ host->dpm_state = DISABLED; - if (mmc_host_enable(host->mmc) != 0) { + if (clk_enable(host->iclk) != 0) { clk_put(host->iclk); clk_put(host->fclk); goto err1; } - if (clk_enable(host->iclk) != 0) { - mmc_host_disable(host->mmc); + if (mmc_host_enable(host->mmc) != 0) { + clk_disable(host->iclk); clk_put(host->iclk); clk_put(host->fclk); goto err1;