diff options
author | Venkat Gopalakrishnan <venkatg@codeaurora.org> | 2015-01-12 19:52:35 -0800 |
---|---|---|
committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-31 15:26:04 -0700 |
commit | e224d1c722c113973b3bbc22d215bd59f927104e (patch) | |
tree | e5818a2fbde9c70c93edaf8c2d11a42f6d7d98b1 /drivers | |
parent | a14ad583988ef20b6504ce889ba18ed9dc363603 (diff) |
mmc: sdhci: Fix spinlock handling in sdhci_do_set_ios()
sdhci_update_clock() has been removed and host ops set_clock() is called
directly in various places. Release the host spinlock before calling
host ops set_clock().
Change-Id: Ia12917286a7d791e6a6ad826c0b7edd71c8694ae
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index a47105ae1554..e9d6472d7ccf 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1832,8 +1832,11 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); /* Re-enable SD Clock */ - if (ios->clock) + if (ios->clock) { + spin_unlock_irqrestore(&host->lock, flags); host->ops->set_clock(host, host->clock); + spin_lock_irqsave(&host->lock, flags); + } } /* Reset SD Clock Enable */ @@ -1860,8 +1863,11 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios) } /* Re-enable SD Clock */ - if (ios->clock) + if (ios->clock) { + spin_unlock_irqrestore(&host->lock, flags); host->ops->set_clock(host, host->clock); + spin_lock_irqsave(&host->lock, flags); + } } else sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); |