Message ID | 1375727232-17796-1-git-send-email-aaro.koskinen@iki.fi (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Mon, Aug 05, 2013 at 09:27:12PM +0300, Aaro Koskinen wrote: > Commit 42913c799 (MIPS: Loongson2: Use clk API instead of direct > dereferences) broke the cpufreq functionality on Loongson2 boards: > clk_set_rate() is called before the CPU frequency table is initialized, > and therefore will always fail. > > Fix by moving the clk_set_rate() after the table initialization. > Tested on Lemote FuLoong mini-PC. Seems to make sense. Rafael or Virish, this should go to Linus for 3.11. Do you want to funnel this through the cpufreq tree or shall I send this to Linus with the next batch of MIPS stuff? Ralf -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday, August 06, 2013 04:40:12 PM Ralf Baechle wrote: > On Mon, Aug 05, 2013 at 09:27:12PM +0300, Aaro Koskinen wrote: > > > Commit 42913c799 (MIPS: Loongson2: Use clk API instead of direct > > dereferences) broke the cpufreq functionality on Loongson2 boards: > > clk_set_rate() is called before the CPU frequency table is initialized, > > and therefore will always fail. > > > > Fix by moving the clk_set_rate() after the table initialization. > > Tested on Lemote FuLoong mini-PC. > > Seems to make sense. > > Rafael or Virish, this should go to Linus for 3.11. Do you want to funnel > this through the cpufreq tree or shall I send this to Linus with the > next batch of MIPS stuff? I've taken it already. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/cpufreq/loongson2_cpufreq.c b/drivers/cpufreq/loongson2_cpufreq.c index bb838b9..9536852 100644 --- a/drivers/cpufreq/loongson2_cpufreq.c +++ b/drivers/cpufreq/loongson2_cpufreq.c @@ -118,11 +118,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) clk_put(cpuclk); return -EINVAL; } - ret = clk_set_rate(cpuclk, rate); - if (ret) { - clk_put(cpuclk); - return ret; - } /* clock table init */ for (i = 2; @@ -130,6 +125,12 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) i++) loongson2_clockmod_table[i].frequency = (rate * i) / 8; + ret = clk_set_rate(cpuclk, rate); + if (ret) { + clk_put(cpuclk); + return ret; + } + policy->cur = loongson2_cpufreq_get(policy->cpu); cpufreq_frequency_table_get_attr(&loongson2_clockmod_table[0],