diff options
Diffstat (limited to 'drivers/mmc/core/sdio_irq.c')
-rw-r--r-- | drivers/mmc/core/sdio_irq.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mmc/core/sdio_irq.c b/drivers/mmc/core/sdio_irq.c index 68f81b9ee0fb..f573e7f9f740 100644 --- a/drivers/mmc/core/sdio_irq.c +++ b/drivers/mmc/core/sdio_irq.c | |||
@@ -146,15 +146,21 @@ static int sdio_irq_thread(void *_host) | |||
146 | } | 146 | } |
147 | 147 | ||
148 | set_current_state(TASK_INTERRUPTIBLE); | 148 | set_current_state(TASK_INTERRUPTIBLE); |
149 | if (host->caps & MMC_CAP_SDIO_IRQ) | 149 | if (host->caps & MMC_CAP_SDIO_IRQ) { |
150 | mmc_host_clk_hold(host); | ||
150 | host->ops->enable_sdio_irq(host, 1); | 151 | host->ops->enable_sdio_irq(host, 1); |
152 | mmc_host_clk_release(host); | ||
153 | } | ||
151 | if (!kthread_should_stop()) | 154 | if (!kthread_should_stop()) |
152 | schedule_timeout(period); | 155 | schedule_timeout(period); |
153 | set_current_state(TASK_RUNNING); | 156 | set_current_state(TASK_RUNNING); |
154 | } while (!kthread_should_stop()); | 157 | } while (!kthread_should_stop()); |
155 | 158 | ||
156 | if (host->caps & MMC_CAP_SDIO_IRQ) | 159 | if (host->caps & MMC_CAP_SDIO_IRQ) { |
160 | mmc_host_clk_hold(host); | ||
157 | host->ops->enable_sdio_irq(host, 0); | 161 | host->ops->enable_sdio_irq(host, 0); |
162 | mmc_host_clk_release(host); | ||
163 | } | ||
158 | 164 | ||
159 | pr_debug("%s: IRQ thread exiting with code %d\n", | 165 | pr_debug("%s: IRQ thread exiting with code %d\n", |
160 | mmc_hostname(host), ret); | 166 | mmc_hostname(host), ret); |