holding the spin_lock with all interrupts disabled
is not good form when doing mdelay.
set_ios calls routines need to delay for power to
stabalize or for chip issues when quirks are defined.

disable only our interupt and spin_lock on the chip
instead of spin_lock with all interrupts disabled.

Signed-off-by: Philip Rakity <[email protected]>
Signed-off-by: Mark F. Brown <[email protected]>
---
 drivers/mmc/host/sdhci.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 627c8cf..49394a2 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1205,12 +1205,12 @@ static void sdhci_request(struct mmc_host *mmc, struct 
mmc_request *mrq)
 static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 {
        struct sdhci_host *host;
-       unsigned long flags;
        u8 ctrl;
 
        host = mmc_priv(mmc);
 
-       spin_lock_irqsave(&host->lock, flags);
+       disable_irq(host->irq);
+       spin_lock(&host->lock);
 
        if (host->flags & SDHCI_DEVICE_DEAD)
                goto out;
@@ -1286,7 +1286,8 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct 
mmc_ios *ios)
 
 out:
        mmiowb();
-       spin_unlock_irqrestore(&host->lock, flags);
+       spin_unlock(&host->lock);
+       enable_irq(host->irq);
 }
 
 static int sdhci_get_ro(struct mmc_host *mmc)
-- 
1.7.0.4


--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to