From 6ae860507e2b7c58d9b44b608c34a3a6acf7a2c9 Mon Sep 17 00:00:00 2001 From: Pavan Anamula Date: Thu, 29 Oct 2015 23:22:12 +0530 Subject: [PATCH] mmc: sdhci-msm: disable runtime pm and clock gating for SDIO Disable power management features for SDIO as the current code is not ready to enable it. Change-Id: I234ebf6cc46d2a3b70bf9ba3f94b4b1abc1acd44 Signed-off-by: Pavan Anamula --- drivers/mmc/core/host.c | 9 +++++++-- drivers/mmc/host/sdhci-msm.c | 13 +++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index fe1d90357653..c4bd0ecdf761 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -194,8 +194,13 @@ bool mmc_host_may_gate_card(struct mmc_card *card) * SDIO3.0 card allows the clock to be gated off so check if * that is the case or not. */ - if (mmc_card_sdio(card) && card->cccr.async_intr_sup) - return true; + if (mmc_card_sdio(card) && card->cccr.async_intr_sup) { + if (mmc_enable_qca6574_settings(card) || + mmc_enable_qca9377_settings(card)) + return false; + else + return true; + } /* * Don't gate SDIO cards! These need to be clocked at all times diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index f632cc11995e..4848c26f4a1f 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -4323,6 +4323,12 @@ static int sdhci_msm_runtime_suspend(struct device *dev) ktime_t start = ktime_get(); int ret; + if (host->mmc->card && mmc_card_sdio(host->mmc->card)) { + if (mmc_enable_qca6574_settings(host->mmc->card) || + mmc_enable_qca9377_settings(host->mmc->card)) + return 0; + } + disable_irq(host->irq); disable_irq(msm_host->pwr_irq); @@ -4355,6 +4361,13 @@ static int sdhci_msm_runtime_resume(struct device *dev) ktime_t start = ktime_get(); int ret; + if (host->mmc->card && mmc_card_sdio(host->mmc->card)) { + if (mmc_enable_qca6574_settings(host->mmc->card) || + mmc_enable_qca9377_settings(host->mmc->card)) + return 0; + } + + if (host->is_crypto_en) { ret = sdhci_msm_enable_controller_clock(host); if (ret) {