Commit 6a77a1e6 authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki

cpufreq: pxa: call cpufreq_frequency_table_get_attr()

This exposes frequency table of driver to cpufreq core and is required for core
to guess what the index for a target frequency is, when it calls
cpufreq_frequency_table_target(). And so this driver needs to expose it.

Cc: Eric Miao <eric.y.miao@gmail.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 27047a60
...@@ -453,20 +453,31 @@ static int pxa_cpufreq_init(struct cpufreq_policy *policy) ...@@ -453,20 +453,31 @@ static int pxa_cpufreq_init(struct cpufreq_policy *policy)
find_freq_tables(&pxa255_freq_table, &pxa255_freqs); find_freq_tables(&pxa255_freq_table, &pxa255_freqs);
pr_info("PXA255 cpufreq using %s frequency table\n", pr_info("PXA255 cpufreq using %s frequency table\n",
pxa255_turbo_table ? "turbo" : "run"); pxa255_turbo_table ? "turbo" : "run");
cpufreq_frequency_table_cpuinfo(policy, pxa255_freq_table); cpufreq_frequency_table_cpuinfo(policy, pxa255_freq_table);
cpufreq_frequency_table_get_attr(pxa255_freq_table, policy->cpu);
} }
else if (cpu_is_pxa27x()) else if (cpu_is_pxa27x()) {
cpufreq_frequency_table_cpuinfo(policy, pxa27x_freq_table); cpufreq_frequency_table_cpuinfo(policy, pxa27x_freq_table);
cpufreq_frequency_table_get_attr(pxa27x_freq_table, policy->cpu);
}
printk(KERN_INFO "PXA CPU frequency change support initialized\n"); printk(KERN_INFO "PXA CPU frequency change support initialized\n");
return 0; return 0;
} }
static int pxa_cpufreq_exit(struct cpufreq_policy *policy)
{
cpufreq_frequency_table_put_attr(policy->cpu);
return 0;
}
static struct cpufreq_driver pxa_cpufreq_driver = { static struct cpufreq_driver pxa_cpufreq_driver = {
.verify = pxa_verify_policy, .verify = pxa_verify_policy,
.target = pxa_set_target, .target = pxa_set_target,
.init = pxa_cpufreq_init, .init = pxa_cpufreq_init,
.exit = pxa_cpufreq_exit,
.get = pxa_cpufreq_get, .get = pxa_cpufreq_get,
.name = "PXA2xx", .name = "PXA2xx",
}; };
......
...@@ -91,7 +91,7 @@ static int setup_freqs_table(struct cpufreq_policy *policy, ...@@ -91,7 +91,7 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
struct pxa3xx_freq_info *freqs, int num) struct pxa3xx_freq_info *freqs, int num)
{ {
struct cpufreq_frequency_table *table; struct cpufreq_frequency_table *table;
int i; int i, ret;
table = kzalloc((num + 1) * sizeof(*table), GFP_KERNEL); table = kzalloc((num + 1) * sizeof(*table), GFP_KERNEL);
if (table == NULL) if (table == NULL)
...@@ -108,7 +108,11 @@ static int setup_freqs_table(struct cpufreq_policy *policy, ...@@ -108,7 +108,11 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
pxa3xx_freqs_num = num; pxa3xx_freqs_num = num;
pxa3xx_freqs_table = table; pxa3xx_freqs_table = table;
return cpufreq_frequency_table_cpuinfo(policy, table); ret = cpufreq_frequency_table_cpuinfo(policy, table);
if (!ret)
cpufreq_frequency_table_get_attr(table, policy->cpu);
return ret;
} }
static void __update_core_freq(struct pxa3xx_freq_info *info) static void __update_core_freq(struct pxa3xx_freq_info *info)
...@@ -229,10 +233,17 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy) ...@@ -229,10 +233,17 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)
return 0; return 0;
} }
static int pxa3xx_cpufreq_exit(struct cpufreq_policy *policy)
{
cpufreq_frequency_table_put_attr(policy->cpu);
return 0;
}
static struct cpufreq_driver pxa3xx_cpufreq_driver = { static struct cpufreq_driver pxa3xx_cpufreq_driver = {
.verify = pxa3xx_cpufreq_verify, .verify = pxa3xx_cpufreq_verify,
.target = pxa3xx_cpufreq_set, .target = pxa3xx_cpufreq_set,
.init = pxa3xx_cpufreq_init, .init = pxa3xx_cpufreq_init,
.exit = pxa3xx_cpufreq_exit,
.get = pxa3xx_cpufreq_get, .get = pxa3xx_cpufreq_get,
.name = "pxa3xx-cpufreq", .name = "pxa3xx-cpufreq",
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment