lkml.org 
[lkml]   [2010]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] PM / Runtime: Document power.runtime_auto and related functions
    Date
    From: Rafael J. Wysocki <rjw@sisk.pl>

    The power.runtime_auto device flag and the helper functions
    pm_runtime_allow() and pm_runtime_forbid() used to modify it are a
    part of the run-time power management framework and therefore they
    should be described in Documentation/power/runtime_pm.txt.

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    Documentation/power/runtime_pm.txt | 28 ++++++++++++++++++++++++++++
    1 file changed, 28 insertions(+)

    Index: linux-2.6/Documentation/power/runtime_pm.txt
    ===================================================================
    --- linux-2.6.orig/Documentation/power/runtime_pm.txt
    +++ linux-2.6/Documentation/power/runtime_pm.txt
    @@ -224,6 +224,12 @@ defined in include/linux/pm.h:
    RPM_SUSPENDED, which means that each device is initially regarded by the
    PM core as 'suspended', regardless of its real hardware status

    + unsigned int runtime_auto;
    + - if set, indicates that the user space has allowed the device driver to
    + power manage the device at run time via the /sys/devices/.../power/control
    + interface; it may only be modified with the help of the pm_runtime_allow()
    + and pm_runtime_forbid() helper functions
    +
    All of the above fields are members of the 'power' member of 'struct device'.

    4. Run-time PM Device Helper Functions
    @@ -329,6 +335,16 @@ drivers/base/power/runtime.c and include
    'power.runtime_error' is set or 'power.disable_depth' is greater than
    zero)

    + void pm_runtime_allow(struct device *dev);
    + - set the power.runtime_auto flag for the device and decrease its usage
    + counter (used by the /sys/devices/.../power/control interface to
    + effectively allow the device to be power managed at run time)
    +
    + void pm_runtime_forbid(struct device *dev);
    + - unset the power.runtime_auto flag for the device and increase its usage
    + counter (used by the /sys/devices/.../power/control interface to
    + effectively prevent the device from being power managed at run time)
    +
    It is safe to execute the following helper functions from interrupt context:

    pm_request_idle()
    @@ -382,6 +398,18 @@ may be desirable to suspend the device a
    finished, so the PM core uses pm_runtime_idle_sync() to invoke the
    subsystem-level idle callback for the device at that time.

    +The user space can effectively disallow the driver of the device to power manage
    +it at run time by changing the value of its /sys/devices/.../power/control
    +attribute to "on", which causes pm_runtime_forbid() to be called. In principle,
    +this mechanism may also be used by the driver to effectively turn off the
    +run-time power management of the device until the user space turns it on.
    +Namely, during the initialization the driver can make sure that the run-time PM
    +status of the device is 'active' and call pm_runtime_forbid(). It should be
    +noted, however, that if the user space has already intentionally changed the
    +value of /sys/devices/.../power/control to "auto" to allow the driver to power
    +manage the device at run time, the driver may confuse it by using
    +pm_runtime_forbid() this way.
    +
    6. Run-time PM and System Sleep

    Run-time PM and system sleep (i.e., system suspend and hibernation, also known


    \
     
     \ /
      Last update: 2010-01-28 00:13    [W:0.033 / U:30.000 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site