aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOhad Ben-Cohen <ohad@wizery.com>2010-10-02 07:54:09 -0400
committerChris Ball <cjb@laptop.org>2010-10-23 09:11:18 -0400
commit80fd933c44557c5261b80f8f8145b4fe071aeaf3 (patch)
tree0405f67e9d4318823256f350c9b53e3d55eee7df
parent516d5ccdc61178b9701af1adfa86a306d51fbad2 (diff)
mmc: sdio: use the generic runtime PM handlers
Assign the generic runtime PM handlers for SDIO. These handlers invoke the relevant SDIO function drivers' handlers, if exist, otherwise they just return success (so SDIO drivers don't have to define any runtime PM handlers unless they need to). Runtime PM is still disabled by default, so this patch alone has no immediate effect. Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com> Tested-by: Luciano Coelho <luciano.coelho@nokia.com> Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r--drivers/mmc/core/sdio_bus.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c
index 4a890dcb95ab..256a968774a0 100644
--- a/drivers/mmc/core/sdio_bus.c
+++ b/drivers/mmc/core/sdio_bus.c
@@ -14,6 +14,7 @@
14#include <linux/device.h> 14#include <linux/device.h>
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/slab.h> 16#include <linux/slab.h>
17#include <linux/pm_runtime.h>
17 18
18#include <linux/mmc/card.h> 19#include <linux/mmc/card.h>
19#include <linux/mmc/sdio_func.h> 20#include <linux/mmc/sdio_func.h>
@@ -154,6 +155,24 @@ static int sdio_bus_remove(struct device *dev)
154 return 0; 155 return 0;
155} 156}
156 157
158#ifdef CONFIG_PM_RUNTIME
159
160static const struct dev_pm_ops sdio_bus_pm_ops = {
161 SET_RUNTIME_PM_OPS(
162 pm_generic_runtime_suspend,
163 pm_generic_runtime_resume,
164 pm_generic_runtime_idle
165 )
166};
167
168#define SDIO_PM_OPS_PTR (&sdio_bus_pm_ops)
169
170#else /* !CONFIG_PM_RUNTIME */
171
172#define SDIO_PM_OPS_PTR NULL
173
174#endif /* !CONFIG_PM_RUNTIME */
175
157static struct bus_type sdio_bus_type = { 176static struct bus_type sdio_bus_type = {
158 .name = "sdio", 177 .name = "sdio",
159 .dev_attrs = sdio_dev_attrs, 178 .dev_attrs = sdio_dev_attrs,
@@ -161,6 +180,7 @@ static struct bus_type sdio_bus_type = {
161 .uevent = sdio_bus_uevent, 180 .uevent = sdio_bus_uevent,
162 .probe = sdio_bus_probe, 181 .probe = sdio_bus_probe,
163 .remove = sdio_bus_remove, 182 .remove = sdio_bus_remove,
183 .pm = SDIO_PM_OPS_PTR,
164}; 184};
165 185
166int sdio_register_bus(void) 186int sdio_register_bus(void)