ARM: tegra: clock: Round rate before setting rate
authorColin Cross <ccross@android.com>
Sun, 13 Feb 2011 02:21:47 +0000 (18:21 -0800)
committerColin Cross <ccross@android.com>
Tue, 22 Feb 2011 19:22:34 +0000 (11:22 -0800)
commit421186e71000c067c2687baeffde62954a80cdcc
tree2db6e9735fbaa05bd731f5dc419f4194d850c62e
parent78f379b574dcbe656fa21ea72e95f8dff232e233
ARM: tegra: clock: Round rate before setting rate

Call the clock's round_rate op, if it exists, before calling
the set_rate op.  This will help later when dvfs is added,
dvfs needs to know what the final rate will be before the
frequency changes.

Also requires fixes to the round rate functions to ensure
calling round rate and then set rate will not cause the
frequency to be rounded down twice.  When picking clock
divider values, the clock framework picks the closest
frequency that is lower than the requested frequency.  If
the new frequency calculated from the divider value is
rounded down, and then passed to set_rate, it will get
rounded down again, possibly resulting in a frequency two
steps lower than the original requested frequency.

Fix the problem by rounding up when calculating the frequency
coming out of a clock divider, so if that frequency is
requested again, the same divider value will be picked.

Signed-off-by: Colin Cross <ccross@android.com>
Acked-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/tegra2_clocks.c