Commit ca9c6890 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

PM / Domains: Update documentation

Commit 4d27e9dc (PM: Make power
domain callbacks take precedence over subsystem ones) forgot to
update the device power management documentation to take changes
made by it into account.  Correct that mistake.
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 4d1518f5
...@@ -520,33 +520,20 @@ Support for power domains is provided through the pwr_domain field of struct ...@@ -520,33 +520,20 @@ Support for power domains is provided through the pwr_domain field of struct
device. This field is a pointer to an object of type struct dev_power_domain, device. This field is a pointer to an object of type struct dev_power_domain,
defined in include/linux/pm.h, providing a set of power management callbacks defined in include/linux/pm.h, providing a set of power management callbacks
analogous to the subsystem-level and device driver callbacks that are executed analogous to the subsystem-level and device driver callbacks that are executed
for the given device during all power transitions, in addition to the respective for the given device during all power transitions, instead of the respective
subsystem-level callbacks. Specifically, the power domain "suspend" callbacks subsystem-level callbacks. Specifically, if a device's pm_domain pointer is
(i.e. ->runtime_suspend(), ->suspend(), ->freeze(), ->poweroff(), etc.) are not NULL, the ->suspend() callback from the object pointed to by it will be
executed after the analogous subsystem-level callbacks, while the power domain executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and
"resume" callbacks (i.e. ->runtime_resume(), ->resume(), ->thaw(), ->restore, anlogously for all of the remaining callbacks. In other words, power management
etc.) are executed before the analogous subsystem-level callbacks. Error codes domain callbacks, if defined for the given device, always take precedence over
returned by the "suspend" and "resume" power domain callbacks are ignored. the callbacks provided by the device's subsystem (e.g. bus type).
Power domain ->runtime_idle() callback is executed before the subsystem-level The support for device power management domains is only relevant to platforms
->runtime_idle() callback and the result returned by it is not ignored. Namely, needing to use the same device driver power management callbacks in many
if it returns error code, the subsystem-level ->runtime_idle() callback will not different power domain configurations and wanting to avoid incorporating the
be called and the helper function rpm_idle() executing it will return error support for power domains into subsystem-level callbacks, for example by
code. This mechanism is intended to help platforms where saving device state modifying the platform bus type. Other platforms need not implement it or take
is a time consuming operation and should only be carried out if all devices it into account in any way.
in the power domain are idle, before turning off the shared power resource(s).
Namely, the power domain ->runtime_idle() callback may return error code until
the pm_runtime_idle() helper (or its asychronous version) has been called for
all devices in the power domain (it is recommended that the returned error code
be -EBUSY in those cases), preventing the subsystem-level ->runtime_idle()
callback from being run prematurely.
The support for device power domains is only relevant to platforms needing to
use the same subsystem-level (e.g. platform bus type) and device driver power
management callbacks in many different power domain configurations and wanting
to avoid incorporating the support for power domains into the subsystem-level
callbacks. The other platforms need not implement it or take it into account
in any way.
Device Low Power (suspend) States Device Low Power (suspend) States
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment