[U-Boot] [PATCH] lib/time - fix "usec_to_tick" calculation for hi freq system timers

Tom Rini trini at ti.com
Fri Dec 13 15:09:10 CET 2013


On Fri, Dec 13, 2013 at 08:07:51AM -0500, Tom Rini wrote:
> On Fri, Dec 13, 2013 at 07:01:07AM +0000, Alexey Brodkin wrote:
> 
> > Hi Tom,
> > 
> > On Mon, 2013-12-09 at 16:57 +0400, Alexey Brodkin wrote:
> > > Current implementation works fine if "usec * get_tbclk()" fits in 32
> > > bits. Otherwise result will be cut down to 32-bit.
> > > 
> > > Fix is obvious - first extend data type of either operand.
> > > 
> > > Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> > > 
> > > Cc: Rob Herring <rob.herring at calxeda.com>
> > > Cc: Mischa Jonker <mjonker at synopsys.com>
> > > ---
> > >  lib/time.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/lib/time.c b/lib/time.c
> > > index 09bb05a..80003c3 100644
> > > --- a/lib/time.c
> > > +++ b/lib/time.c
> > > @@ -71,7 +71,7 @@ unsigned long __weak notrace timer_get_us(void)
> > >  }
> > >  static unsigned long long usec_to_tick(unsigned long usec)
> > >  {
> > > -	uint64_t tick = usec * get_tbclk();
> > > +	uint64_t tick = (uint64_t)usec * get_tbclk();
> > >  	usec *= get_tbclk();
> > >  	do_div(tick, 1000000);
> > >  	return tick;
> > 
> > Any chance to get it applied?
> 
> Yes, it's on my TODO list shortly, thanks.

Please note that I'm taking http://patchwork.ozlabs.org/patch/297361/ as
the solution for this problem, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20131213/048b52ad/attachment.pgp>


More information about the U-Boot mailing list