|
@@ -1830,6 +1830,9 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
|
|
struct sdhci_host *host = mmc_priv(mmc);
|
|
struct sdhci_host *host = mmc_priv(mmc);
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
|
|
+ if (enable)
|
|
|
|
+ pm_runtime_get_noresume(host->mmc->parent);
|
|
|
|
+
|
|
spin_lock_irqsave(&host->lock, flags);
|
|
spin_lock_irqsave(&host->lock, flags);
|
|
if (enable)
|
|
if (enable)
|
|
host->flags |= SDHCI_SDIO_IRQ_ENABLED;
|
|
host->flags |= SDHCI_SDIO_IRQ_ENABLED;
|
|
@@ -1838,6 +1841,9 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
|
|
|
|
|
|
sdhci_enable_sdio_irq_nolock(host, enable);
|
|
sdhci_enable_sdio_irq_nolock(host, enable);
|
|
spin_unlock_irqrestore(&host->lock, flags);
|
|
spin_unlock_irqrestore(&host->lock, flags);
|
|
|
|
+
|
|
|
|
+ if (!enable)
|
|
|
|
+ pm_runtime_put_noidle(host->mmc->parent);
|
|
}
|
|
}
|
|
|
|
|
|
static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
|
|
static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc,
|