[PATCH] [ARM] twd: Allow twd rescaling to match cpu frequency

Colin Cross ccross at android.com
Tue Nov 16 22:55:59 EST 2010


On Fri, Nov 12, 2010 at 5:05 AM, Harald Gustafsson
<harald.gustafsson at ericsson.com> wrote:
>> > Don't forget the other patches to make this work:
>> >
>> > [ARM] twd: Always calibrate local timer [ARM] twd: Fix updating
>> > control register in set_mode [ARM] twd: Fix prescaler
>> getting cleared
>> > by set_mode
>>
>> ... which have never been posted to this mailing list, so no
>> one here knows of them.
>
> They are on the tegra branch git also authored by Colin. So I would suggest that Colin make all the changes into a new patch.
>
> http://android.git.kernel.org/?p=kernel%2Ftegra.git&a=search&h=refs%2Fheads%2Flinux-tegra-2.6.35&st=commit&s=twd
>
> /Harald

I'm not happy with the current implementation, which is why it hasn't
been posted.  I'm planning to rewrite it with cpufreq notifiers, but
that brings us back to the periphclk divider problem discussed in
http://comments.gmane.org/gmane.linux.ports.arm.kernel/91827

If the frequency is going to change, using clk_get_rate on periphclk
is not sufficient, because the clock will not have been updated when
the prechange cpufreq notifier is called.  If the cpu frequency is
increasing, the twd divider must be recalculated before the frequency
changes to avoid timers expiring early.  Either the clock used by the
twd driver must be updated before prechange notifiers and after
postchange notifiers, which is difficult to fit in to all the
different implementations of the clock api, or the twd driver needs to
know the ratio between the cpu frequency and the periphclk frequency.



More information about the linux-arm-kernel mailing list