[PATCH V4 38/62] SPEAr CPU freq: Adding support for CPU Freq framework

Russell King - ARM Linux linux at arm.linux.org.uk
Wed Jan 19 04:53:58 EST 2011


On Wed, Jan 19, 2011 at 03:09:42PM +0530, Shiraz Hashim wrote:
> On second thought it should always be there irrespective of failures
> as in our case it may happen that eventually CPU sets to a clock <=
> desired clock. So we would do following
> 
> cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
> ret = clk_set_rate(cpu_clk, freqs.new * 1000);
> if (ret)
>         pr_err("Could not change cpu clk rate\n");
> freqs.new = clk_get_rate(cpu_clk);
> cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);

It probably makes more sense to do:

	newfreq = clk_round_rate(cpu_clk, freqs.new * 1000);
	if (newfreq < 0) {
		pr_err("Invalid frequency blah blah\n");
		return newfreq;
	}

	freqs.new = newfreq / 1000;
	cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
	ret = clk_set_rate(cpu_clk, newfreq);
	if (ret) {
	        pr_err("Could not change cpu clk rate\n");
		freqs.new = clk_get_rate(cpu_clk) / 1000;
	}
	cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);

so that the prechange notifier gets the actual frequency to be switched
to too.  In theory clk_set_rate() should only fail if the new frequency
couldn't be set for some reason.



More information about the linux-arm-kernel mailing list