aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-12-17 18:34:42 -0500
committerRafael J. Wysocki <rjw@sisk.pl>2011-12-21 16:03:32 -0500
commit90363ddf0a1a4dccfbb8d0c10b8f488bc7fa69f8 (patch)
treed64b594caef2df2cd9e165089e277d09e2b089d6
parent8114ab763b2d297c8af49bf380a093d76e929692 (diff)
PM: Drop generic_subsys_pm_ops
Since the PM core is now going to execute driver callbacks directly if the corresponding subsystem callbacks are not present, forward-only subsystem callbacks (i.e. such that only execute the corresponding driver callbacks) are not necessary any more. Thus it is possible to remove generic_subsys_pm_ops, because the only callback in there that is not forward-only, .runtime_idle, is not really used by the only user of generic_subsys_pm_ops, which is vio_bus_type. However, the generic callback routines themselves cannot be removed from generic_ops.c, because they are used individually by a number of subsystems. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
-rw-r--r--arch/powerpc/kernel/vio.c1
-rw-r--r--drivers/base/power/generic_ops.c25
-rw-r--r--include/linux/pm.h13
3 files changed, 0 insertions, 39 deletions
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index f65af61996bd..8b086299ba25 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -1406,7 +1406,6 @@ static struct bus_type vio_bus_type = {
1406 .match = vio_bus_match, 1406 .match = vio_bus_match,
1407 .probe = vio_bus_probe, 1407 .probe = vio_bus_probe,
1408 .remove = vio_bus_remove, 1408 .remove = vio_bus_remove,
1409 .pm = GENERIC_SUBSYS_PM_OPS,
1410}; 1409};
1411 1410
1412/** 1411/**
diff --git a/drivers/base/power/generic_ops.c b/drivers/base/power/generic_ops.c
index 5a5b154bc1e9..10bdd793f0bd 100644
--- a/drivers/base/power/generic_ops.c
+++ b/drivers/base/power/generic_ops.c
@@ -276,28 +276,3 @@ void pm_generic_complete(struct device *dev)
276 pm_runtime_idle(dev); 276 pm_runtime_idle(dev);
277} 277}
278#endif /* CONFIG_PM_SLEEP */ 278#endif /* CONFIG_PM_SLEEP */
279
280struct dev_pm_ops generic_subsys_pm_ops = {
281#ifdef CONFIG_PM_SLEEP
282 .prepare = pm_generic_prepare,
283 .suspend = pm_generic_suspend,
284 .suspend_noirq = pm_generic_suspend_noirq,
285 .resume = pm_generic_resume,
286 .resume_noirq = pm_generic_resume_noirq,
287 .freeze = pm_generic_freeze,
288 .freeze_noirq = pm_generic_freeze_noirq,
289 .thaw = pm_generic_thaw,
290 .thaw_noirq = pm_generic_thaw_noirq,
291 .poweroff = pm_generic_poweroff,
292 .poweroff_noirq = pm_generic_poweroff_noirq,
293 .restore = pm_generic_restore,
294 .restore_noirq = pm_generic_restore_noirq,
295 .complete = pm_generic_complete,
296#endif
297#ifdef CONFIG_PM_RUNTIME
298 .runtime_suspend = pm_generic_runtime_suspend,
299 .runtime_resume = pm_generic_runtime_resume,
300 .runtime_idle = pm_generic_runtime_idle,
301#endif
302};
303EXPORT_SYMBOL_GPL(generic_subsys_pm_ops);
diff --git a/include/linux/pm.h b/include/linux/pm.h
index 3f3ed83a9aa5..21e04dd72a84 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -300,19 +300,6 @@ const struct dev_pm_ops name = { \
300 SET_RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \ 300 SET_RUNTIME_PM_OPS(suspend_fn, resume_fn, idle_fn) \
301} 301}
302 302
303/*
304 * Use this for subsystems (bus types, device types, device classes) that don't
305 * need any special suspend/resume handling in addition to invoking the PM
306 * callbacks provided by device drivers supporting both the system sleep PM and
307 * runtime PM, make the pm member point to generic_subsys_pm_ops.
308 */
309#ifdef CONFIG_PM
310extern struct dev_pm_ops generic_subsys_pm_ops;
311#define GENERIC_SUBSYS_PM_OPS (&generic_subsys_pm_ops)
312#else
313#define GENERIC_SUBSYS_PM_OPS NULL
314#endif
315
316/** 303/**
317 * PM_EVENT_ messages 304 * PM_EVENT_ messages
318 * 305 *