cpufreq: omap: use cpufreq_generic_init()
Use generic cpufreq_generic_init() routine instead of replicating the same code here. This also rearranges the code a bit to make it more sensible. Also removes some unnecessary checks. Cc: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
7bfd248356
commit
982bce112f
|
@ -160,50 +160,31 @@ static inline void freq_table_free(void)
|
||||||
|
|
||||||
static int omap_cpu_init(struct cpufreq_policy *policy)
|
static int omap_cpu_init(struct cpufreq_policy *policy)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result;
|
||||||
|
|
||||||
mpu_clk = clk_get(NULL, "cpufreq_ck");
|
mpu_clk = clk_get(NULL, "cpufreq_ck");
|
||||||
if (IS_ERR(mpu_clk))
|
if (IS_ERR(mpu_clk))
|
||||||
return PTR_ERR(mpu_clk);
|
return PTR_ERR(mpu_clk);
|
||||||
|
|
||||||
if (policy->cpu >= NR_CPUS) {
|
if (!freq_table) {
|
||||||
result = -EINVAL;
|
|
||||||
goto fail_ck;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!freq_table)
|
|
||||||
result = opp_init_cpufreq_table(mpu_dev, &freq_table);
|
result = opp_init_cpufreq_table(mpu_dev, &freq_table);
|
||||||
|
if (result) {
|
||||||
if (result) {
|
dev_err(mpu_dev,
|
||||||
dev_err(mpu_dev, "%s: cpu%d: failed creating freq table[%d]\n",
|
"%s: cpu%d: failed creating freq table[%d]\n",
|
||||||
__func__, policy->cpu, result);
|
__func__, policy->cpu, result);
|
||||||
goto fail_ck;
|
goto fail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_inc_return(&freq_table_users);
|
atomic_inc_return(&freq_table_users);
|
||||||
|
|
||||||
result = cpufreq_table_validate_and_show(policy, freq_table);
|
|
||||||
if (result)
|
|
||||||
goto fail_table;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* On OMAP SMP configuartion, both processors share the voltage
|
|
||||||
* and clock. So both CPUs needs to be scaled together and hence
|
|
||||||
* needs software co-ordination. Use cpufreq affected_cpus
|
|
||||||
* interface to handle this scenario. Additional is_smp() check
|
|
||||||
* is to keep SMP_ON_UP build working.
|
|
||||||
*/
|
|
||||||
if (is_smp())
|
|
||||||
cpumask_setall(policy->cpus);
|
|
||||||
|
|
||||||
/* FIXME: what's the actual transition time? */
|
/* FIXME: what's the actual transition time? */
|
||||||
policy->cpuinfo.transition_latency = 300 * 1000;
|
result = cpufreq_generic_init(policy, freq_table, 300 * 1000);
|
||||||
|
if (!result)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
fail_table:
|
|
||||||
freq_table_free();
|
freq_table_free();
|
||||||
fail_ck:
|
fail:
|
||||||
clk_put(mpu_clk);
|
clk_put(mpu_clk);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue