mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 13:27:06 +09:00
mmc: sdhci: Skip mmc suspend/resume ops for SDIO device,
enable/disable sdc irq instead of request/free, mask all sdc interrupts on suspend Change-Id: I3fb137363c6e639882b796aff8b80784c5256a71 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
This commit is contained in:
committed by
Colin Cross
parent
2cdc235bbe
commit
da2d1c69d6
@@ -24,6 +24,7 @@
|
||||
#include <linux/leds.h>
|
||||
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/card.h>
|
||||
|
||||
#include "sdhci.h"
|
||||
|
||||
@@ -1633,19 +1634,22 @@ out:
|
||||
|
||||
int sdhci_suspend_host(struct sdhci_host *host, pm_message_t state)
|
||||
{
|
||||
int ret;
|
||||
int ret = 0;
|
||||
struct mmc_host *mmc = host->mmc;
|
||||
|
||||
sdhci_disable_card_detection(host);
|
||||
|
||||
ret = mmc_suspend_host(host->mmc);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (mmc->card && (mmc->card->type != MMC_TYPE_SDIO))
|
||||
ret = mmc_suspend_host(host->mmc);
|
||||
|
||||
free_irq(host->irq, host);
|
||||
sdhci_mask_irqs(host, SDHCI_INT_ALL_MASK);
|
||||
|
||||
if (host->vmmc)
|
||||
ret = regulator_disable(host->vmmc);
|
||||
|
||||
if (host->irq)
|
||||
disable_irq(host->irq);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1653,7 +1657,8 @@ EXPORT_SYMBOL_GPL(sdhci_suspend_host);
|
||||
|
||||
int sdhci_resume_host(struct sdhci_host *host)
|
||||
{
|
||||
int ret;
|
||||
int ret = 0;
|
||||
struct mmc_host *mmc = host->mmc;
|
||||
|
||||
if (host->vmmc) {
|
||||
int ret = regulator_enable(host->vmmc);
|
||||
@@ -1667,15 +1672,15 @@ int sdhci_resume_host(struct sdhci_host *host)
|
||||
host->ops->enable_dma(host);
|
||||
}
|
||||
|
||||
ret = request_irq(host->irq, sdhci_irq, IRQF_SHARED,
|
||||
mmc_hostname(host->mmc), host);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (host->irq)
|
||||
enable_irq(host->irq);
|
||||
|
||||
sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER));
|
||||
mmiowb();
|
||||
|
||||
ret = mmc_resume_host(host->mmc);
|
||||
if (mmc->card && (mmc->card->type != MMC_TYPE_SDIO))
|
||||
ret = mmc_resume_host(host->mmc);
|
||||
|
||||
sdhci_enable_card_detection(host);
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user