diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2014-01-09 10:08:43 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-01-16 20:00:44 -0500 |
commit | 652ed95d5fa6074b3c4ea245deb0691f1acb6656 (patch) | |
tree | 7b01079f3a582b0d6b08f541a8a344440bec8eae /drivers/cpufreq/dbx500-cpufreq.c | |
parent | 0ad04fb30db0341d0b1134e2f592d9146c9abb64 (diff) |
cpufreq: introduce cpufreq_generic_get() routine
CPUFreq drivers that use clock frameworks interface,i.e. clk_get_rate(),
to get CPUs clk rate, have similar sort of code used in most of them.
This patch adds a generic ->get() which will do the same thing for them.
All those drivers are required to now is to set .get to cpufreq_generic_get()
and set their clk pointer in policy->clk during ->init().
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq/dbx500-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/dbx500-cpufreq.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c index 21d9898e000c..412a78bb0c94 100644 --- a/drivers/cpufreq/dbx500-cpufreq.c +++ b/drivers/cpufreq/dbx500-cpufreq.c | |||
@@ -26,24 +26,9 @@ static int dbx500_cpufreq_target(struct cpufreq_policy *policy, | |||
26 | return clk_set_rate(armss_clk, freq_table[index].frequency * 1000); | 26 | return clk_set_rate(armss_clk, freq_table[index].frequency * 1000); |
27 | } | 27 | } |
28 | 28 | ||
29 | static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu) | ||
30 | { | ||
31 | int i = 0; | ||
32 | unsigned long freq = clk_get_rate(armss_clk) / 1000; | ||
33 | |||
34 | /* The value is rounded to closest frequency in the defined table. */ | ||
35 | while (freq_table[i + 1].frequency != CPUFREQ_TABLE_END) { | ||
36 | if (freq < freq_table[i].frequency + | ||
37 | (freq_table[i + 1].frequency - freq_table[i].frequency) / 2) | ||
38 | return freq_table[i].frequency; | ||
39 | i++; | ||
40 | } | ||
41 | |||
42 | return freq_table[i].frequency; | ||
43 | } | ||
44 | |||
45 | static int dbx500_cpufreq_init(struct cpufreq_policy *policy) | 29 | static int dbx500_cpufreq_init(struct cpufreq_policy *policy) |
46 | { | 30 | { |
31 | policy->clk = armss_clk; | ||
47 | return cpufreq_generic_init(policy, freq_table, 20 * 1000); | 32 | return cpufreq_generic_init(policy, freq_table, 20 * 1000); |
48 | } | 33 | } |
49 | 34 | ||
@@ -52,7 +37,7 @@ static struct cpufreq_driver dbx500_cpufreq_driver = { | |||
52 | CPUFREQ_NEED_INITIAL_FREQ_CHECK, | 37 | CPUFREQ_NEED_INITIAL_FREQ_CHECK, |
53 | .verify = cpufreq_generic_frequency_table_verify, | 38 | .verify = cpufreq_generic_frequency_table_verify, |
54 | .target_index = dbx500_cpufreq_target, | 39 | .target_index = dbx500_cpufreq_target, |
55 | .get = dbx500_cpufreq_getspeed, | 40 | .get = cpufreq_generic_get, |
56 | .init = dbx500_cpufreq_init, | 41 | .init = dbx500_cpufreq_init, |
57 | .name = "DBX500", | 42 | .name = "DBX500", |
58 | .attr = cpufreq_generic_attr, | 43 | .attr = cpufreq_generic_attr, |