[U-Boot-Users] [PATCH 04/10 v2] [ARM] TQMA31: add new board with i.MX31 processor

Sascha Hauer s.hauer at pengutronix.de
Thu Jul 10 10:20:21 CEST 2008


On Thu, Jul 10, 2008 at 12:46:42AM +0200, Wolfgang Denk wrote:
> In message <4873845B.3020808 at tqs.de> you wrote:
> >
> > The TQMA31, as well as the mx32ads use the General Purpose Timer 1, 
> > which is feeded by a 32768 clock (possibly imx31_litekit and 
> > imx31_phycore with 32000 Hz? I don't know.). The prescale divider can 
> > only be an integer. 32768/1000 = non-integer.
> 
> I think other architectures hav / had similar issues. See for example
> the MIPS fixes that were added some time ago.
> 
> > Currently, I see only one way to solve this:
> > 1. Patch the common file cpu/arm1136/mx31/interrupts.c, function 
> > interrupt_init(), so that the prescaler divides by 33.
> > Alternatively, also make the divider a board specific define.
> > 2. Patch all mx31 board config header files with CFG_HZ 1000.
> > 3. All mx31 boards have to be tested.
> 
> Sounds like a plan.
> 
> > And while we are at the timers:
> > The udelay function is the next problem:
> > udelay cannot go below 1/(32768 Hz) = 30.5 micros
> > The current function inserts a theoretical nop if the requested usec 
> > value is below 1000. Therefore, IMHO, this timer is relatively 
> > imprecise, because the resulting delay is below 1 microsecond.
> > IMHO, this all because of that slow input clock.
> 
> How is this handled in Linux? I don't think they would let this go
> through?

Linux uses the high frequency timer, or better said, the same timer with
a high frequency input source.

Regards,
  Sascha

-- 
Pengutronix e.K. - Linux Solutions for Science and Industry
-----------------------------------------------------------
Kontakt-Informationen finden Sie im Header dieser Mail oder
auf der Webseite -> http://www.pengutronix.de/impressum/ <-




More information about the U-Boot mailing list