clocksource/cadence_ttc: Overhaul clocksource frequency adjustment
authorSoren Brinkmann <soren.brinkmann@xilinx.com>
Wed, 19 Feb 2014 23:14:42 +0000 (15:14 -0800)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Tue, 11 Mar 2014 22:10:03 +0000 (23:10 +0100)
commitb3e90722f6f53fa457a88146a877e34ea71d25ea
tree9a9bdf62adcb2384b17600b1aefa1e202e2f4b46
parent5f0ba3b462b2d36b3c28748863747fb1050f40d0
clocksource/cadence_ttc: Overhaul clocksource frequency adjustment

The currently used method adjusting the clocksource to a changing input
frequency does not work on kernels from 3.11 on.
The new approach is to keep the timer frequency as constant as possible.
I.e.
 - due to the TTC's prescaler limitations, allow frequency changes
   only if the frequency scales by a power of 2
 - adjust the counter's divider on the fly when a frequency change
   occurs

This limits cpufreq to scale by certain factors only.
But we may keep the time base somewhat constant, so that sleep() & co
keep working as expected, while supporting cpufreq.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Michal Simek <michal.simek@xilinx.com>
drivers/clocksource/cadence_ttc_timer.c