diff options
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/power/main.c | 9 | ||||
-rw-r--r-- | drivers/base/power/qos.c | 10 |
2 files changed, 9 insertions, 10 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index a3c1404c7933..2b7f77d3fcb0 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
@@ -513,6 +513,8 @@ static int device_resume_early(struct device *dev, pm_message_t state) | |||
513 | 513 | ||
514 | Out: | 514 | Out: |
515 | TRACE_RESUME(error); | 515 | TRACE_RESUME(error); |
516 | |||
517 | pm_runtime_enable(dev); | ||
516 | return error; | 518 | return error; |
517 | } | 519 | } |
518 | 520 | ||
@@ -589,8 +591,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) | |||
589 | if (!dev->power.is_suspended) | 591 | if (!dev->power.is_suspended) |
590 | goto Unlock; | 592 | goto Unlock; |
591 | 593 | ||
592 | pm_runtime_enable(dev); | ||
593 | |||
594 | if (dev->pm_domain) { | 594 | if (dev->pm_domain) { |
595 | info = "power domain "; | 595 | info = "power domain "; |
596 | callback = pm_op(&dev->pm_domain->ops, state); | 596 | callback = pm_op(&dev->pm_domain->ops, state); |
@@ -930,6 +930,8 @@ static int device_suspend_late(struct device *dev, pm_message_t state) | |||
930 | pm_callback_t callback = NULL; | 930 | pm_callback_t callback = NULL; |
931 | char *info = NULL; | 931 | char *info = NULL; |
932 | 932 | ||
933 | __pm_runtime_disable(dev, false); | ||
934 | |||
933 | if (dev->power.syscore) | 935 | if (dev->power.syscore) |
934 | return 0; | 936 | return 0; |
935 | 937 | ||
@@ -1133,11 +1135,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) | |||
1133 | 1135 | ||
1134 | Complete: | 1136 | Complete: |
1135 | complete_all(&dev->power.completion); | 1137 | complete_all(&dev->power.completion); |
1136 | |||
1137 | if (error) | 1138 | if (error) |
1138 | async_error = error; | 1139 | async_error = error; |
1139 | else if (dev->power.is_suspended) | ||
1140 | __pm_runtime_disable(dev, false); | ||
1141 | 1140 | ||
1142 | return error; | 1141 | return error; |
1143 | } | 1142 | } |
diff --git a/drivers/base/power/qos.c b/drivers/base/power/qos.c index ff46387f5308..d21349544ce5 100644 --- a/drivers/base/power/qos.c +++ b/drivers/base/power/qos.c | |||
@@ -542,19 +542,19 @@ int dev_pm_qos_add_ancestor_request(struct device *dev, | |||
542 | struct dev_pm_qos_request *req, s32 value) | 542 | struct dev_pm_qos_request *req, s32 value) |
543 | { | 543 | { |
544 | struct device *ancestor = dev->parent; | 544 | struct device *ancestor = dev->parent; |
545 | int error = -ENODEV; | 545 | int ret = -ENODEV; |
546 | 546 | ||
547 | while (ancestor && !ancestor->power.ignore_children) | 547 | while (ancestor && !ancestor->power.ignore_children) |
548 | ancestor = ancestor->parent; | 548 | ancestor = ancestor->parent; |
549 | 549 | ||
550 | if (ancestor) | 550 | if (ancestor) |
551 | error = dev_pm_qos_add_request(ancestor, req, | 551 | ret = dev_pm_qos_add_request(ancestor, req, |
552 | DEV_PM_QOS_LATENCY, value); | 552 | DEV_PM_QOS_LATENCY, value); |
553 | 553 | ||
554 | if (error < 0) | 554 | if (ret < 0) |
555 | req->dev = NULL; | 555 | req->dev = NULL; |
556 | 556 | ||
557 | return error; | 557 | return ret; |
558 | } | 558 | } |
559 | EXPORT_SYMBOL_GPL(dev_pm_qos_add_ancestor_request); | 559 | EXPORT_SYMBOL_GPL(dev_pm_qos_add_ancestor_request); |
560 | 560 | ||