31 Oct, 2013

1 commit

  • There are few special cases like exynos5440 which doesn't send POSTCHANGE
    notification from their ->target() routine and call some kind of bottom halves
    for doing this work, work/tasklet/etc.. From which they finally send POSTCHANGE
    notification.

    Its better if we distinguish them from other cpufreq drivers in some way so that
    core can handle them specially. So this patch introduces another flag:
    CPUFREQ_ASYNC_NOTIFICATION, which will be set by such drivers.

    This also changes exynos5440-cpufreq.c and powernow-k8 in order to set this
    flag.

    Acked-by: Amit Daniel Kachhap
    Acked-by: Kukjin Kim
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     

26 Oct, 2013

5 commits

  • Currently, the prototype of cpufreq_drivers target routines is:

    int target(struct cpufreq_policy *policy, unsigned int target_freq,
    unsigned int relation);

    And most of the drivers call cpufreq_frequency_table_target() to get a valid
    index of their frequency table which is closest to the target_freq. And they
    don't use target_freq and relation after that.

    So, it makes sense to just do this work in cpufreq core before calling
    cpufreq_frequency_table_target() and simply pass index instead. But this can be
    done only with drivers which expose their frequency table with cpufreq core. For
    others we need to stick with the old prototype of target() until those drivers
    are converted to expose frequency tables.

    This patch implements the new light weight prototype for target_index() routine.
    It looks like this:

    int target_index(struct cpufreq_policy *policy, unsigned int index);

    CPUFreq core will call cpufreq_frequency_table_target() before calling this
    routine and pass index to it. Because CPUFreq core now requires to call routines
    present in freq_table.c CONFIG_CPU_FREQ_TABLE must be enabled all the time.

    This also marks target() interface as deprecated. So, that new drivers avoid
    using it. And Documentation is updated accordingly.

    It also converts existing .target() to newly defined light weight
    .target_index() routine for many driver.

    Acked-by: Hans-Christian Egtvedt
    Acked-by: Jesper Nilsson
    Acked-by: Linus Walleij
    Acked-by: Russell King
    Acked-by: David S. Miller
    Tested-by: Andrew Lunn
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • Conflicts:
    drivers/cpufreq/omap-cpufreq.c

    Rafael J. Wysocki
     
  • Since Operating Performance Points (OPP) functions are specific
    to device specific power management, be specific and rename opp.h
    to pm_opp.h

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     
  • Since Operating Performance Points (OPP) data structures are specific
    to device specific power management, be specific and rename opp_* data
    structures in OPP library with dev_pm_opp_* equivalent.

    Affected structures are:
    struct opp
    enum opp_event

    Minor checkpatch warning resulting of this change was fixed as well.

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     
  • Since Operating Performance Points (OPP) functions are specific to
    device specific power management, be specific and rename opp_*
    accessors in OPP library with dev_pm_opp_* equivalent.

    Affected functions are:
    opp_get_voltage
    opp_get_freq
    opp_get_opp_count
    opp_find_freq_exact
    opp_find_freq_floor
    opp_find_freq_ceil
    opp_add
    opp_enable
    opp_disable
    opp_get_notifier
    opp_init_cpufreq_table
    opp_free_cpufreq_table

    Reported-by: Randy Dunlap
    Signed-off-by: Nishanth Menon
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Nishanth Menon
     

17 Oct, 2013

1 commit


16 Oct, 2013

3 commits


01 Oct, 2013

2 commits


25 Sep, 2013

1 commit


12 Aug, 2013

1 commit

  • This patch fixes the issue of un-necessary setting the clock controller
    when the new target frequency is same as the current one. This case usually
    occurs with governors like ondemand which passes the target frequency as the
    percentage of average frequency. This check is present in most of the cpufreq
    drivers.

    Cc: Viresh Kumar
    Cc: Rafael J. Wysocki
    Cc: Kukjin Kim
    Signed-off-by: Amit Daniel Kachhap
    Signed-off-by: Viresh Kumar

    Amit Daniel Kachhap
     

22 Apr, 2013

1 commit


10 Apr, 2013

1 commit

  • This patch adds dvfs support for exynos5440 SOC. This soc has 4 cores and
    they scale at same frequency. The nature of exynos5440 clock controller is
    different from previous exynos controllers so not using the common exynos
    cpufreq framework. The major difference being interrupt notification for
    frequency change. Also, OPP library is used for device tree parsing to get
    different parameters like frequency, voltage etc. Since the opp library sorts
    the frequency table in ascending order so they are again re-arranged in
    descending order. This will have one-to-one mapping with the clock controller
    state management logic.

    Signed-off-by: Amit Daniel Kachhap
    Acked-by: Kukjin Kim
    Signed-off-by: Rafael J. Wysocki

    Amit Daniel Kachhap