21 Dec, 2011

1 commit

  • …msung into pm-devfreq

    * 'devfreq-for-next' of git://git.infradead.org/users/kmpark/linux-samsung: (765 commits)
    PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.
    pci: Fix hotplug of Express Module with pci bridges
    i2c-eg20t: correct the driver init order of pch_i2c_probe()
    I2C: OMAP: fix FIFO usage for OMAP4
    i2c-s3c2410: Fix return code of s3c24xx_i2c_parse_dt_gpio
    i2c: i2c-s3c2410: Add a cpu_relax() to busy wait for bus idle
    Linux 3.2-rc6
    Revert "drm/i915: fix infinite recursion on unbind due to ilk vt-d w/a"
    btrfs: lower the dirty balance poll interval
    drm/i915/dp: Dither down to 6bpc if it makes the mode fit
    drm/i915: enable semaphores on per-device defaults
    drm/i915: don't set unpin_work if vblank_get fails
    drm/i915: By default, enable RC6 on IVB and SNB when reasonable
    iommu: Export intel_iommu_enabled to signal when iommu is in use
    drm/i915/sdvo: Include LVDS panels for the IS_DIGITAL check
    drm/i915: prevent division by zero when asking for chipset power
    drm/i915: add PCH info to i915_capabilities
    drm/i915: set the right SDVO transcoder for CPT
    drm/i915: no-lvds quirk for ASUS AT5NM10T-I
    sched: Fix select_idle_sibling() regression in selecting an idle SMT sibling
    ...

    Rafael J. Wysocki
     

20 Dec, 2011

1 commit

  • 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: MyungJoo Ham
    Signed-off-by: Kyungmin Park

    ---
    Changes from v1
    - Support 4212 and 4412 as well as 4210.

    MyungJoo Ham
     

24 Nov, 2011

1 commit


15 Nov, 2011

2 commits


10 Nov, 2011

1 commit


02 Oct, 2011

3 commits

  • 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: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mike Turquette
    Acked-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    MyungJoo Ham
     
  • Device specific sysfs interface /sys/devices/.../power/devfreq_*
    - governor R: name of governor
    - cur_freq R: current frequency
    - polling_interval R: polling interval in ms given with devfreq profile
    W: update polling interval.
    - central_polling R: 1 if polling is managed by devfreq framework

    Signed-off-by: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mike Turquette
    Acked-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki
    --
    Documentation/ABI/testing/sysfs-class-devfreq | 44 ++++++++++++++++
    drivers/devfreq/devfreq.c | 69 ++++++++++++++++++++++++++
    2 files changed, 113 insertions(+)
    create mode 100644 Documentation/ABI/testing/sysfs-class-devfreq

    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: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mike Turquette
    Acked-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    MyungJoo Ham