summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/core/bus.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
index 704bf66..c7efd21 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
@@ -146,7 +146,7 @@ static int mmc_bus_suspend(struct device *dev)
struct mmc_driver *drv = to_mmc_driver(dev->driver);
struct mmc_card *card = mmc_dev_to_card(dev);
struct mmc_host *host = card->host;
- int ret;
+ int ret = -ENODEV;
if (dev->driver && drv->suspend) {
ret = drv->suspend(card);
@@ -154,7 +154,9 @@ static int mmc_bus_suspend(struct device *dev)
return ret;
}
- ret = host->bus_ops->suspend(host);
+ if (host->bus_ops->suspend)
+ ret = host->bus_ops->suspend(host);
+
return ret;
}
@@ -163,12 +165,14 @@ static int mmc_bus_resume(struct device *dev)
struct mmc_driver *drv = to_mmc_driver(dev->driver);
struct mmc_card *card = mmc_dev_to_card(dev);
struct mmc_host *host = card->host;
- int ret;
+ int ret = -ENODEV;
- ret = host->bus_ops->resume(host);
- if (ret)
- pr_warn("%s: error %d during resume (card was removed?)\n",
- mmc_hostname(host), ret);
+ if (host->bus_ops->resume) {
+ ret = host->bus_ops->resume(host);
+ if (ret)
+ pr_warn("%s: error %d during resume (card was removed?)\n",
+ mmc_hostname(host), ret);
+ }
if (dev->driver && drv->resume)
ret = drv->resume(card);