[U-Boot-Users] OCOTEA get_timer() bug

Andrew Wozniak awozniak at mc.com
Mon Mar 28 21:25:38 CEST 2005


I found this bug a while ago and have finally gotten around to looking 
at it because I needed its service.

In previous posts to this email list, Wolfgang had mentioned that the 
"time unit" returned by get_timer() is 1 msec.  Close examination of 
interrupt_init_cpu() at cpu/ppc4xx/interrupts.c suggests a timer 
interval setup of 10 msec!

A quick experiment via u-boot application, shows this to be true:

printf("...tic\n");
tic = get_timer(0);
udelay(2000000);     /* 2sec delay so that I can "see" it */
toc = get_timer(0);
printf("...toc\n %d %d\n", tic, toc);

run it:
...tic
...toc
1278 1478

therefore:
200 = delta
2sec/200 = 10msec time unit from get_timer()

I've tested the following and propose it as a fix, replace this:
   val = gd->bd->bi_intfreq/100;	 /* 10 msec */
with:
   val = gd->bd->bi_intfreq/1000; /* 1 msec */

I've also tested some of the network related functions to insure that no 
timeout conditions have appeared.

I want to post this patch but would prefer a code review from those that 
are more familiar with get_timer() use within the OCOTEA codebase.

Sorry for the long post, Andrew




More information about the U-Boot mailing list