From 3b0a393f36268115c2343d7d19450808c49bfc40 Mon Sep 17 00:00:00 2001 From: Aymen Zayet Date: Mon, 21 Nov 2011 19:16:18 +0100 Subject: [PATCH] sdhci: Fix missing runtime_pm get/put. BZ: 15061 make sure that card is powered on / off when required. Signed-off-by: Aymen Zayet Change-Id: I3c6183fa5ac85caf64f61048447ed2880c6c4828 Signed-off-by: Aymen Zayet Reviewed-on: http://android.intel.com:8080/25378 Reviewed-by: Champciaux, NicolasX Tested-by: Champciaux, NicolasX Reviewed-by: buildbot Tested-by: buildbot --- drivers/mmc/host/sdhci.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 085e037..637393c 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1696,6 +1696,7 @@ static int sdhci_check_ro(struct sdhci_host *host) { unsigned long flags; int is_readonly; + sdhci_runtime_pm_get(host); spin_lock_irqsave(&host->lock, flags); @@ -1709,6 +1710,7 @@ static int sdhci_check_ro(struct sdhci_host *host) spin_unlock_irqrestore(&host->lock, flags); + sdhci_runtime_pm_put(host); /* This quirk needs to be replaced by a callback-function later */ return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ? !is_readonly : is_readonly; @@ -1758,6 +1760,7 @@ static int sdhci_get_ro(struct mmc_host *mmc) static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable) { + sdhci_runtime_pm_get(host); if (host->flags & SDHCI_DEVICE_DEAD) goto out; @@ -1776,6 +1779,7 @@ static void sdhci_enable_sdio_irq_nolock(struct sdhci_host *host, int enable) sdhci_mask_irqs(host, SDHCI_INT_CARD_INT); out: mmiowb(); + sdhci_runtime_pm_put(host); } static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable) @@ -2940,6 +2944,8 @@ int sdhci_add_host(struct sdhci_host *host) mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; + mmc->caps |= MMC_CAP_POWER_OFF_CARD; + if (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12) host->flags |= SDHCI_AUTO_CMD12; -- 2.7.4