1. 15 11月, 2012 1 次提交
    • R
      PM / devfreq: Core updates to support devices which can idle · 7e6fdd4b
      Rajagopal Venkat 提交于
      Prepare devfreq core framework to support devices which
      can idle. When device idleness is detected perhaps through
      runtime-pm, need some mechanism to suspend devfreq load
      monitoring and resume back when device is online. Present
      code continues monitoring unless device is removed from
      devfreq core.
      
      This patch introduces following design changes,
      
       - use per device work instead of global work to monitor device
         load. This enables suspend/resume of device devfreq and
         reduces monitoring code complexity.
       - decouple delayed work based load monitoring logic from core
         by introducing helpers functions to be used by governors. This
         provides flexibility for governors either to use delayed work
         based monitoring functions or to implement their own mechanism.
       - devfreq core interacts with governors via events to perform
         specific actions. These events include start/stop devfreq.
         This sets ground for adding suspend/resume events.
      
      The devfreq apis are not modified and are kept intact.
      Signed-off-by: NRajagopal Venkat <rajagopal.venkat@linaro.org>
      Acked-by: NMyungJoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      7e6fdd4b
  2. 02 10月, 2011 1 次提交
    • M
      PM: Introduce devfreq: generic DVFS framework with device-specific OPPs · a3c98b8b
      MyungJoo Ham 提交于
      With OPPs, a device may have multiple operable frequency and voltage
      sets. However, there can be multiple possible operable sets and a system
      will need to choose one from them. In order to reduce the power
      consumption (by reducing frequency and voltage) without affecting the
      performance too much, a Dynamic Voltage and Frequency Scaling (DVFS)
      scheme may be used.
      
      This patch introduces the DVFS capability to non-CPU devices with OPPs.
      DVFS is a techique whereby the frequency and supplied voltage of a
      device is adjusted on-the-fly. DVFS usually sets the frequency as low
      as possible with given conditions (such as QoS assurance) and adjusts
      voltage according to the chosen frequency in order to reduce power
      consumption and heat dissipation.
      
      The generic DVFS for devices, devfreq, may appear quite similar with
      /drivers/cpufreq.  However, cpufreq does not allow to have multiple
      devices registered and is not suitable to have multiple heterogenous
      devices with different (but simple) governors.
      
      Normally, DVFS mechanism controls frequency based on the demand for
      the device, and then, chooses voltage based on the chosen frequency.
      devfreq also controls the frequency based on the governor's frequency
      recommendation and let OPP pick up the pair of frequency and voltage
      based on the recommended frequency. Then, the chosen OPP is passed to
      device driver's "target" callback.
      
      When PM QoS is going to be used with the devfreq device, the device
      driver should enable OPPs that are appropriate with the current PM QoS
      requests. In order to do so, the device driver may call opp_enable and
      opp_disable at the notifier callback of PM QoS so that PM QoS's
      update_target() call enables the appropriate OPPs. Note that at least
      one of OPPs should be enabled at any time; be careful when there is a
      transition.
      Signed-off-by: NMyungJoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
      Reviewed-by: NMike Turquette <mturquette@ti.com>
      Acked-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      a3c98b8b