summaryrefslogtreecommitdiff
path: root/drivers/mmc/host/sdhci-pltfm.c
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2011-05-05 21:47:55 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:37:08 -0800
commit285af9765fa89abd47c7820ca5ce415efeb9329e (patch)
tree2fefcec9d82b18d13769fc421c49b2ba6badf6c2 /drivers/mmc/host/sdhci-pltfm.c
parent1b83c0bb641be978f0b03c170123063b99cfaf1b (diff)
mmc: host: sdhci-pltfm: Add suspend and resume hooks to sdhci platform
Change-Id: I062fbe91d8af14366a92af1a27e9dab49869905c Signed-off-by: Colin Cross <ccross@android.com>
Diffstat (limited to 'drivers/mmc/host/sdhci-pltfm.c')
-rw-r--r--drivers/mmc/host/sdhci-pltfm.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/drivers/mmc/host/sdhci-pltfm.c b/drivers/mmc/host/sdhci-pltfm.c
index 6414efeddca0..1179f1be4318 100644
--- a/drivers/mmc/host/sdhci-pltfm.c
+++ b/drivers/mmc/host/sdhci-pltfm.c
@@ -196,16 +196,42 @@ EXPORT_SYMBOL_GPL(sdhci_pltfm_unregister);
int sdhci_pltfm_suspend(struct platform_device *dev, pm_message_t state)
{
struct sdhci_host *host = platform_get_drvdata(dev);
+ int ret;
+
+ ret = sdhci_suspend_host(host, state);
+ if (ret) {
+ dev_err(&dev->dev, "suspend failed, error = %d\n", ret);
+ return ret;
+ }
- return sdhci_suspend_host(host, state);
+ if (host->ops && host->ops->suspend)
+ ret = host->ops->suspend(host, state);
+ if (ret) {
+ dev_err(&dev->dev, "suspend hook failed, error = %d\n", ret);
+ sdhci_resume_host(host);
+ }
+
+ return ret;
}
EXPORT_SYMBOL_GPL(sdhci_pltfm_suspend);
int sdhci_pltfm_resume(struct platform_device *dev)
{
struct sdhci_host *host = platform_get_drvdata(dev);
+ int ret = 0;
+
+ if (host->ops && host->ops->resume)
+ ret = host->ops->resume(host);
+ if (ret) {
+ dev_err(&dev->dev, "resume hook failed, error = %d\n", ret);
+ return ret;
+ }
- return sdhci_resume_host(host);
+ ret = sdhci_resume_host(host);
+ if (ret)
+ dev_err(&dev->dev, "resume failed, error = %d\n", ret);
+
+ return ret;
}
EXPORT_SYMBOL_GPL(sdhci_pltfm_resume);
#endif /* CONFIG_PM */