aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)