PM / runtime: Document autosuspend-helper side effects
Document the fact that the autosuspend delay and enable helpers may change the power.usage_count and resume or suspend a device depending on the values of power.autosuspend_delay and power.use_autosuspend. Note that this means that a driver must disable autosuspend before disabling runtime pm on probe errors and on driver unbind if the device is to be suspended upon return (as a negative delay may otherwise keep the device resumed). Signed-off-by: Johan Hovold <johan@kernel.org> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
72ec2e17f9
commit
bafdcde73b
|
@ -478,15 +478,23 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
|
||||||
- set the power.last_busy field to the current time
|
- set the power.last_busy field to the current time
|
||||||
|
|
||||||
void pm_runtime_use_autosuspend(struct device *dev);
|
void pm_runtime_use_autosuspend(struct device *dev);
|
||||||
- set the power.use_autosuspend flag, enabling autosuspend delays
|
- set the power.use_autosuspend flag, enabling autosuspend delays; call
|
||||||
|
pm_runtime_get_sync if the flag was previously cleared and
|
||||||
|
power.autosuspend_delay is negative
|
||||||
|
|
||||||
void pm_runtime_dont_use_autosuspend(struct device *dev);
|
void pm_runtime_dont_use_autosuspend(struct device *dev);
|
||||||
- clear the power.use_autosuspend flag, disabling autosuspend delays
|
- clear the power.use_autosuspend flag, disabling autosuspend delays;
|
||||||
|
decrement the device's usage counter if the flag was previously set and
|
||||||
|
power.autosuspend_delay is negative; call pm_runtime_idle
|
||||||
|
|
||||||
void pm_runtime_set_autosuspend_delay(struct device *dev, int delay);
|
void pm_runtime_set_autosuspend_delay(struct device *dev, int delay);
|
||||||
- set the power.autosuspend_delay value to 'delay' (expressed in
|
- set the power.autosuspend_delay value to 'delay' (expressed in
|
||||||
milliseconds); if 'delay' is negative then runtime suspends are
|
milliseconds); if 'delay' is negative then runtime suspends are
|
||||||
prevented
|
prevented; if power.use_autosuspend is set, pm_runtime_get_sync may be
|
||||||
|
called or the device's usage counter may be decremented and
|
||||||
|
pm_runtime_idle called depending on if power.autosuspend_delay is
|
||||||
|
changed to or from a negative value; if power.use_autosuspend is clear,
|
||||||
|
pm_runtime_idle is called
|
||||||
|
|
||||||
unsigned long pm_runtime_autosuspend_expiration(struct device *dev);
|
unsigned long pm_runtime_autosuspend_expiration(struct device *dev);
|
||||||
- calculate the time when the current autosuspend delay period will expire,
|
- calculate the time when the current autosuspend delay period will expire,
|
||||||
|
|
Loading…
Reference in New Issue