From 0a37a25e5e5f94ac96430403754a0543dafa718b Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Thu, 1 Jul 2010 14:47:07 -0700 Subject: [PATCH] drivers: mmc: sdhci-tegra: Add suspend/resume processing Signed-off-by: Dmitry Shmidt --- drivers/mmc/host/sdhci-tegra.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 5e2a1f170dfc..3d7f6628bc44 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -177,12 +178,30 @@ static int tegra_sdhci_remove(struct platform_device *pdev) #ifdef CONFIG_PM static int tegra_sdhci_suspend(struct platform_device *pdev, pm_message_t state) { - return -1; + struct tegra_sdhci_host *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->sdhci->mmc; + int ret = 0; + + if (mmc->card && (mmc->card->type != MMC_TYPE_SDIO)) { + ret = sdhci_suspend_host(host->sdhci, state); + if (ret) + pr_err("%s: failed, error = %d\n", __func__, ret); + } + return ret; } static int tegra_sdhci_resume(struct platform_device *pdev) { - return -1; + struct tegra_sdhci_host *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->sdhci->mmc; + int ret = 0; + + if (mmc->card && (mmc->card->type != MMC_TYPE_SDIO)) { + ret = sdhci_resume_host(host->sdhci); + if (ret) + pr_err("%s: failed, error = %d\n", __func__, ret); + } + return ret; } #else #define tegra_sdhci_suspend NULL -- 2.34.1