[U-Boot] [PATCH] Fix bootdelay timeout calculation when SYS_HZ!=1000

Jon Hunter jon-hunter at ti.com
Thu Mar 21 19:07:18 CET 2013


On 03/21/2013 10:28 AM, Tom Rini wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 03/21/2013 11:25 AM, Jon Hunter wrote:
>>
>> On 03/21/2013 09:41 AM, Tom Rini wrote:
>>> On Thu, Mar 21, 2013 at 03:35:40PM +0100, Wolfgang Denk wrote:
>>>> Dear Tom,
>>>>
>>>> In message <514B1036.3090400 at ti.com> you wrote:
>>>>>
>>>>>> A system with CONFIG_SYS_HZ != 1000 is _broken_.
>>>>>
>>>>> So, RPi is going higher, and Jon hit this on I suspect
>>>>> omap2420h4 which is also higher (after mathing that all out).
>>>>> If we no longer support CONFIG_SYS_HZ != 1000 we need to make
>>>>> that clear (and explain why).
>>>>
>>>> It has never been supported, so this is not a case of "no
>>>> longer". There are several longish threads (about the timer
>>>> code, especially on ARM) in the archives.
>>>
>>> OK, then we need to do something about these platforms today.
>>> I'm guessing RPi can just be tuned down to 1000 but for
>>> omap2420h4 it's an interesting value and I don't know about the
>>> platform well enough to say what we'd need to do to adapt it.
>>> Jon?
>>
>> For OMAP2420, we have a choice of using either a 12MHz or 32kHz
>> clock to drive the timer. With the 32kHz clock we can get close to
>> 1000Hz tick but we cannot get it dead on. That's why OMAP has been
>> using 128Hz tick in the kernel as opposed to 100Hz tick in the
>> kernel for years (although that was changed recently).
> 
> The rest of the OMAP/related platforsm in U-Boot accept that as "good"
> enough I guess since they've been setting to 1000 for a while / since
> they went in (depending on the platform in particular).  So if you
> have time to whack 2420 over and give it some quick testing I'd
> appreciate it.  Thanks!

Looks like the OMAP timers are running faster than 1000Hz but the timer
tick rate is being normalised to 1000Hz by dividing the actual timer
rate by SYS_HZ. I see ...

	readl(&timer_base->tcrr) / (TIMER_CLOCK / CONFIG_SYS_HZ);

We could do the same for OMAP2420. In fact we could move
arch/arm/cpu/armv7/omap-common/timer.c to arch/arm/omap-common/timer.c
and use this for OMAP2420. The legacy OMAP2420 code is very similar to this.

Jon




More information about the U-Boot mailing list