1. 30 1月, 2015 2 次提交
    • C
      devfreq: Fix build break of devfreq-event class · e6ee3192
      Chanwoo Choi 提交于
      This patch fixes the build break of the exynos-ppmu driver because Makefile
      in drivers/devfreq don't include the entry of devfreq-event.c driver.
      
      The original patch[1] includes the entry to build devfreq-event.c without
      the build break. This build break is generated in the process of merging the
      patch.
      [1] https://lkml.org/lkml/2015/1/25/579
      - [PATCH v10 1/7] devfreq: event: Add new devfreq_event class to provide basic
                        data for devfreq governor
      
      CC      init/version.o
      LD      init/built-in.o
      drivers/built-in.o: In function `exynos_ppmu_probe':
      binder.c:(.text+0x4447ec): undefined reference to `devm_devfreq_event_add_edev'
      make: *** [vmlinux] Error 1
      
      Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
      Cc: MyungJoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: NChanwoo Choi <cw00.choi@samsung.com>
      e6ee3192
    • C
      PM / devfreq: event: Add devfreq_event class · f262f28c
      Chanwoo Choi 提交于
      This patch adds a new class in devfreq, devfreq_event, which provides
      raw data (e.g., memory bus utilization, GPU utilization) for devfreq
      governors.
      
      - devfreq_event device : Provides raw data for a governor of a devfreq device
      - devfreq device       : Monitors device state and changes frequency/voltage
      			of the device using the raw data from its
      			devfreq_event device.
      
      A devfreq device dertermines performance states (normally the frequency
      and the voltage vlues) based on the results its designtated devfreq governor:
      e.g., ondemand, performance, powersave.
      
      In order to give such results required by a devfreq device, the devfreq
      governor requires data that indicates the performance requirement given
      to the devfreq device. The conventional (previous) implementatino of
      devfreq subsystem requires a devfreq device driver to implement its own
      mechanism to acquire performance requirement for its governor. However,
      there had been issues with such requirements:
      
      1. Although performance requirement of such devices is usually acquired
       from common devices (PMU/PPMU), we do not have any abstract structure to
       represent them properly.
      2. Such performance requirement devices (PMU/PPMU) are actual hardware
       pieces that may be represented by Device Tree directly while devfreq device
       itself is a virtual entity that are not considered to be represented by
       Device Tree according to Device Tree folks.
      
      In order to address such issues, a devferq_event device (represented by
      this patch) provides a template for device drivers representing
      performance monitoring unit, which gives the basic or raw data for
      preformance requirement, which in turn, is required by devfreq governors.
      
      The following description explains the feature of two kind of devfreq class:
      - devfreq class (existing)
       : devfreq consumer device use raw data from devfreq_event device for
         determining proper current system state and change voltage/frequency
         dynamically using various governors.
      
      - devfreq_event class (new)
       : Provide measured raw data to devfreq device for governor
      
      Cc: MyungJoo Ham <myungjoo.ham@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: NChanwoo Choi <cw00.choi@samsung.com>
      [Commit message rewritten & conflict resolved by MyungJoo]
      Signed-off-by: NMyungJoo Ham <myungjoo.ham@samsung.com>
      f262f28c
  2. 29 1月, 2015 1 次提交
  3. 03 6月, 2013 2 次提交
  4. 20 12月, 2011 1 次提交
    • M
      PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412. · 7b405038
      MyungJoo Ham 提交于
      Exynos4-bus device devfreq driver add DVFS capability for
      Exynos4210/4212/4412-Bus (memory). The driver monitors PPMU counters of memory
      controllers and adjusts operating frequencies and voltages with OPP.
      For Exynos4210, vdd_int is controlled. For exynos4412/4212, vdd_mif and
      vdd_int are controlled.
      
      Dependency (CONFIG_EXYNOS_ASV):
      Exynos4 ASV driver has been posted in the mailing list; however, it
      si not yet upstreamed. Although the current revision of Exynos4 ASV
      patch does not contain "CONFIG_EXYNOS_ASV", we have added the symbol
      to hide the dependent from compilers for now. As soon as Exynos4 ASV
      drivers are merged, the #ifdef statement will be removed or the
      name will be changed.
      
      However, enabling ASV is essential in most Exynos4 chips to reduce
      the power consumption of Exynos4210 because without ASV, this Devfreq
      driver assumes the worst case scenario, which consumes more power.
      Signed-off-by: NMyungJoo Ham <myungjoo.ham@samsung.com>
      Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
      
      ---
      Changes from v1
      - Support 4212 and 4412 as well as 4210.
      7b405038
  5. 02 10月, 2011 2 次提交
    • M
      PM / devfreq: Add basic governors · ce26c5bb
      MyungJoo Ham 提交于
      Four cpufreq-like governors are provided as examples.
      
      powersave: use the lowest frequency possible. The user (device) should
      set the polling_ms as 0 because polling is useless for this governor.
      
      performance: use the highest freqeuncy possible. The user (device)
      should set the polling_ms as 0 because polling is useless for this
      governor.
      
      userspace: use the user specified frequency stored at
      devfreq.user_set_freq. With sysfs support in the following patch, a user
      may set the value with the sysfs interface.
      
      simple_ondemand: simplified version of cpufreq's ondemand governor.
      
      When a user updates OPP entries (enable/disable/add), OPP framework
      automatically notifies devfreq to update operating frequency
      accordingly. Thus, devfreq users (device drivers) do not need to update
      devfreq manually with OPP entry updates or set polling_ms for powersave
      , performance, userspace, or any other "static" governors.
      
      Note that these are given only as basic examples for governors and any
      devices with devfreq may implement their own governors with the drivers
      and use them.
      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>
      ce26c5bb
    • 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