diff options
-rw-r--r-- | drivers/mmc/core/sdio_bus.c | 20 |
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 | |||
160 | static 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 | |||
157 | static struct bus_type sdio_bus_type = { | 176 | static 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 | ||
166 | int sdio_register_bus(void) | 186 | int sdio_register_bus(void) |