diff options
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/power/main.c | 9 |
1 files changed, 4 insertions, 5 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 | } |
