24 May, 2012

1 commit

  • Pull power management updates from Rafael Wysocki:

    - Implementation of opportunistic suspend (autosleep) and user space
    interface for manipulating wakeup sources.

    - Hibernate updates from Bojan Smojver and Minho Ban.

    - Updates of the runtime PM core and generic PM domains framework
    related to PM QoS.

    - Assorted fixes.

    * tag 'pm-for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (25 commits)
    epoll: Fix user space breakage related to EPOLLWAKEUP
    PM / Domains: Make it possible to add devices to inactive domains
    PM / Hibernate: Use get_gendisk to verify partition if resume_file is integer format
    PM / Domains: Fix computation of maximum domain off time
    PM / Domains: Fix link checking when add subdomain
    PM / Sleep: User space wakeup sources garbage collector Kconfig option
    PM / Sleep: Make the limit of user space wakeup sources configurable
    PM / Documentation: suspend-and-cpuhotplug.txt: Fix typo
    PM / Domains: Cache device stop and domain power off governor results, v3
    PM / Domains: Make device removal more straightforward
    PM / Sleep: Fix a mistake in a conditional in autosleep_store()
    epoll: Add a flag, EPOLLWAKEUP, to prevent suspend while epoll events are ready
    PM / QoS: Create device constraints objects on notifier registration
    PM / Runtime: Remove device fields related to suspend time, v2
    PM / Domains: Rework default domain power off governor function, v2
    PM / Domains: Rework default device stop governor function, v2
    PM / Sleep: Add user space interface for manipulating wakeup sources, v3
    PM / Sleep: Add "prevent autosleep time" statistics to wakeup sources
    PM / Sleep: Implement opportunistic sleep, v2
    PM / Sleep: Add wakeup_source_activate and wakeup_source_deactivate tracepoints
    ...

    Linus Torvalds
     

02 May, 2012

1 commit

  • Performance and powersave governor's get_target_freq
    is not called if driver chooses one of these two governors.
    Add init function in governor profile to call update_devfreq
    which will call get_target_freq subsequently.

    Signed-off-by: Xiaoguang Chen
    Acked-by: MyungJoo Ham
    Signed-off-by: Rafael J. Wysocki

    Xiaoguang Chen
     

16 Apr, 2012

1 commit


28 Mar, 2012

1 commit

  • Pull "ARM: global cleanups" from Arnd Bergmann:
    "Quite a bit of code gets removed, and some stuff moved around, mostly
    the old samsung s3c24xx stuff. There should be no functional changes
    in this series otherwise. Some cleanups have dependencies on other
    arm-soc branches and will be sent in the second round.

    Signed-off-by: Arnd Bergmann "

    Fixed up trivial conflicts mainly due to #include's being changes on
    both sides.

    * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (121 commits)
    ep93xx: Remove unnecessary includes of ep93xx-regs.h
    ep93xx: Move EP93XX_SYSCON defines to SoC private header
    ep93xx: Move crunch code to mach-ep93xx directory
    ep93xx: Make syscon access functions private to SoC
    ep93xx: Configure GPIO ports in core code
    ep93xx: Move peripheral defines to local SoC header
    ep93xx: Convert the watchdog driver into a platform device.
    ep93xx: Use ioremap for backlight driver
    ep93xx: Move GPIO defines to gpio-ep93xx.h
    ep93xx: Don't use system controller defines in audio drivers
    ep93xx: Move PHYS_BASE defines to local SoC header file
    ARM: EXYNOS: Add clock register addresses for EXYNOS4X12 bus devfreq driver
    ARM: EXYNOS: add clock registers for exynos4x12-cpufreq
    PM / devfreq: update the name of EXYNOS clock registers that were omitted
    PM / devfreq: update the name of EXYNOS clock register
    ARM: EXYNOS: change the prefix S5P_ to EXYNOS4_ for clock
    ARM: EXYNOS: use static declaration on regarding clock
    ARM: EXYNOS: replace clock.c for other new EXYNOS SoCs
    ARM: OMAP2+: Fix build error after merge
    ARM: S3C24XX: remove call to s3c24xx_setup_clocks
    ...

    Linus Torvalds
     

18 Mar, 2012

1 commit

  • The semantics of "target frequency" given to devfreq driver from
    devfreq framework has always been interpretted as "at least" or GLB
    (greatest lower bound). However, the framework might want the
    device driver to limit its max frequency (LUB: least upper bound),
    especially if it is given by thermal framework (it's too hot).

    Thus, the target fuction should have another parameter to express
    whether the framework wants GLB or LUB. And, the additional parameter,
    "u32 flags", does it.

    With the update, devfreq_recommended_opp() is also updated.

    Signed-off-by: MyungJoo Ham
    Signed-off-by: Kyungmin Park
    Reviewed-by: Mike Turquette
    Signed-off-by: Rafael J. Wysocki

    MyungJoo Ham
     

11 Mar, 2012

2 commits


20 Jan, 2012

3 commits


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