From e224d1c722c113973b3bbc22d215bd59f927104e Mon Sep 17 00:00:00 2001 From: Venkat Gopalakrishnan Date: Mon, 12 Jan 2015 19:52:35 -0800 Subject: 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 --- drivers/mmc/host/sdhci.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'drivers') 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); -- cgit v1.2.3