diff options
Diffstat (limited to 'drivers/base/power/runtime.c')
-rw-r--r-- | drivers/base/power/runtime.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 8c78443bca8f..c56efd756531 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c | |||
@@ -250,6 +250,9 @@ static int rpm_idle(struct device *dev, int rpmflags) | |||
250 | else | 250 | else |
251 | callback = NULL; | 251 | callback = NULL; |
252 | 252 | ||
253 | if (!callback && dev->driver && dev->driver->pm) | ||
254 | callback = dev->driver->pm->runtime_idle; | ||
255 | |||
253 | if (callback) | 256 | if (callback) |
254 | __rpm_callback(callback, dev); | 257 | __rpm_callback(callback, dev); |
255 | 258 | ||
@@ -413,6 +416,9 @@ static int rpm_suspend(struct device *dev, int rpmflags) | |||
413 | else | 416 | else |
414 | callback = NULL; | 417 | callback = NULL; |
415 | 418 | ||
419 | if (!callback && dev->driver && dev->driver->pm) | ||
420 | callback = dev->driver->pm->runtime_suspend; | ||
421 | |||
416 | retval = rpm_callback(callback, dev); | 422 | retval = rpm_callback(callback, dev); |
417 | if (retval) { | 423 | if (retval) { |
418 | __update_runtime_status(dev, RPM_ACTIVE); | 424 | __update_runtime_status(dev, RPM_ACTIVE); |
@@ -633,6 +639,9 @@ static int rpm_resume(struct device *dev, int rpmflags) | |||
633 | else | 639 | else |
634 | callback = NULL; | 640 | callback = NULL; |
635 | 641 | ||
642 | if (!callback && dev->driver && dev->driver->pm) | ||
643 | callback = dev->driver->pm->runtime_resume; | ||
644 | |||
636 | retval = rpm_callback(callback, dev); | 645 | retval = rpm_callback(callback, dev); |
637 | if (retval) { | 646 | if (retval) { |
638 | __update_runtime_status(dev, RPM_SUSPENDED); | 647 | __update_runtime_status(dev, RPM_SUSPENDED); |