summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAisheng.Dong <b29396@freescale.com>2010-10-21 19:17:28 +0800
committerAlan Tull <alan.tull@freescale.com>2010-10-22 13:39:33 -0500
commitf6aec74e8b64117b12e8dba19dd2641d0ba915f9 (patch)
tree0c1bbe5d2da27ea5bba33ed6aac6339d25f713c4
parent51eb6d2533b6c326ca415212615850a835558269 (diff)
ENGR00132849-2 esdhc: do not use spin_lock when set power on/off
Do not use spin_lock when sets power on/off since pmic driver may sleep on this operation. Signed-off-by: Aisheng.Dong <b29396@freescale.com>
-rw-r--r--drivers/mmc/host/mx_sdhci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mmc/host/mx_sdhci.c b/drivers/mmc/host/mx_sdhci.c
index c522aa9c2d99..df31ac6aaee3 100644
--- a/drivers/mmc/host/mx_sdhci.c
+++ b/drivers/mmc/host/mx_sdhci.c
@@ -1025,6 +1025,7 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
sdhci_set_clock(host, ios->clock);
+ spin_unlock_irqrestore(&host->lock, flags);
if (ios->power_mode == MMC_POWER_OFF)
sdhci_set_power(host, -1);
else {
@@ -1039,6 +1040,7 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
}
}
+ spin_lock_irqsave(&host->lock, flags);
tmp = readl(host->ioaddr + SDHCI_HOST_CONTROL);
if ((ios->bus_width & ~MMC_BUS_WIDTH_DDR) == MMC_BUS_WIDTH_4) {