diff options
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/core/bus.c | 18 |
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); |