20 Nov, 2012

3 commits

  • Add GPL module license and remove the static build
    restrictions for building governors. This allows governors now
    to be loaded on a need basis and reloaded independently of kernel
    build

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Acked-by: MyungJoo Ham
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • Allow devfreq drivers to register a preferred governor name
    and when the devfreq governor loads itself at a later point
    required drivers are managed appropriately, at the time of
    unload of a devfreq governor, stop managing those drivers
    as well.

    Since the governor structures do not need to be exposed
    anymore, remove the definitions and make them static

    NOTE: devfreq_list_lock is now used to protect governor
    start and stop - as this allows us to protect governors and
    devfreq with the proper dependencies as needed.

    As part of this change, change the registration of exynos
    bus driver to request for ondemand using the governor name.

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    [Merge conflict resolved by MyungJoo Ham]
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     
  • With the new registration functions, governors can be now
    registered with devfreq framework.

    NOTE: generates 'discards qualifiers from pointer target type'
    build warnings, which the next patche in this series fixes

    Cc: Rajagopal Venkat
    Cc: MyungJoo Ham
    Cc: Kyungmin Park
    Cc: "Rafael J. Wysocki"
    Cc: Kevin Hilman
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org

    Signed-off-by: Nishanth Menon
    Acked-by: MyungJoo Ham
    Signed-off-by: MyungJoo Ham

    Nishanth Menon
     

15 Nov, 2012

1 commit

  • 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: Rajagopal Venkat
    Acked-by: MyungJoo Ham
    Signed-off-by: Rafael J. Wysocki

    Rajagopal Venkat
     

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
     

20 Jan, 2012

1 commit


02 Oct, 2011

1 commit

  • 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