PM: runtime: Extend support for wakeirq for force_suspend|resume
A driver that makes use of pm_runtime_force_suspend|resume() to support system suspend/resume, currently needs to manage the wakeirq support itself. To avoid the boilerplate code in the driver's system suspend/resume callbacks in particular, let's extend pm_runtime_force_suspend|resume() to deal with the wakeirq. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
8873710660
commit
c46a0d5ae4
@ -1862,10 +1862,13 @@ int pm_runtime_force_suspend(struct device *dev)
|
||||
|
||||
callback = RPM_GET_CALLBACK(dev, runtime_suspend);
|
||||
|
||||
dev_pm_enable_wake_irq_check(dev, true);
|
||||
ret = callback ? callback(dev) : 0;
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
dev_pm_enable_wake_irq_complete(dev);
|
||||
|
||||
/*
|
||||
* If the device can stay in suspend after the system-wide transition
|
||||
* to the working state that will follow, drop the children counter of
|
||||
@ -1882,6 +1885,7 @@ int pm_runtime_force_suspend(struct device *dev)
|
||||
return 0;
|
||||
|
||||
err:
|
||||
dev_pm_disable_wake_irq_check(dev, true);
|
||||
pm_runtime_enable(dev);
|
||||
return ret;
|
||||
}
|
||||
@ -1915,9 +1919,11 @@ int pm_runtime_force_resume(struct device *dev)
|
||||
|
||||
callback = RPM_GET_CALLBACK(dev, runtime_resume);
|
||||
|
||||
dev_pm_disable_wake_irq_check(dev, false);
|
||||
ret = callback ? callback(dev) : 0;
|
||||
if (ret) {
|
||||
pm_runtime_set_suspended(dev);
|
||||
dev_pm_enable_wake_irq_check(dev, false);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user