On 05/16/2014 03:07 AM, Viresh Kumar wrote:
Tegra had always been switching to intermediate frequency (pll_p_clk) since ever. CPUFreq core has better support for handling notifications for these frequencies and so we can adapt Tegra's driver to it.
diff --git a/drivers/cpufreq/tegra-cpufreq.c b/drivers/cpufreq/tegra-cpufreq.c
+static int +tegra_target_intermediate(struct cpufreq_policy *policy, unsigned int frequency) +{
- return clk_set_parent(cpu_clk, pll_p_clk);
+}
I think you also need to move the following code from tegra_cpu_clk_set_rate() to the start of tegra_target_intermediate(). Otherwise, pll_x will turn off, which judging by the comment in tegra_cpu_clk_set_rate(), shouldn't be allowed to happen:
/* * Take an extra reference to the main pll so it doesn't turn * off when we move the cpu off of it */ clk_prepare_enable(pll_x_clk);
I'll go try this version anyway in a minute...