diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2013-05-02 14:02:37 +0200 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2013-05-26 14:23:15 -0400 |
commit | 12d01d0b813b93e7bde1b5f468b5c85aa8b33590 (patch) | |
tree | fc53d379c37f5c5f156ba0f2b263ae057b35ca64 /drivers/mmc/core/bus.c | |
parent | 39b9431b0f371294dd2d1a492cf77f2f17390a1f (diff) | |
download | linux-stable-12d01d0b813b93e7bde1b5f468b5c85aa8b33590.tar.gz linux-stable-12d01d0b813b93e7bde1b5f468b5c85aa8b33590.tar.bz2 linux-stable-12d01d0b813b93e7bde1b5f468b5c85aa8b33590.zip |
mmc: core: Add bus_ops for runtime pm callbacks
SDIO is the only protocol that uses runtime pm for the card device
right now. To provide the option for sd and mmc to use runtime pm as
well the bus_ops callback are extended with two new functions. One for
runtime_suspend and one for runtime_resume.
This patch will also implement the callbacks for SDIO to make sure
existing functionality is maintained. It also prepares to move
away from using the mmc_power_restore_host API, since it is not
needed when using runtime PM.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core/bus.c')
-rw-r--r-- | drivers/mmc/core/bus.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c index e219c97a02a4..d9e8c2b7f4c5 100644 --- a/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c @@ -151,15 +151,25 @@ static int mmc_bus_resume(struct device *dev) static int mmc_runtime_suspend(struct device *dev) { struct mmc_card *card = mmc_dev_to_card(dev); + struct mmc_host *host = card->host; + int ret = 0; + + if (host->bus_ops->runtime_suspend) + ret = host->bus_ops->runtime_suspend(host); - return mmc_power_save_host(card->host); + return ret; } static int mmc_runtime_resume(struct device *dev) { struct mmc_card *card = mmc_dev_to_card(dev); + struct mmc_host *host = card->host; + int ret = 0; + + if (host->bus_ops->runtime_resume) + ret = host->bus_ops->runtime_resume(host); - return mmc_power_restore_host(card->host); + return ret; } static int mmc_runtime_idle(struct device *dev) |