[U-Boot-Users] [PATCH 3/7 v6] ARM: Add arm1176 core with S3C6400 SoC

Jens Gehrlein sew_s at tqs.de
Thu Aug 7 13:12:44 CEST 2008


Hi Guennadi,

Guennadi Liakhovetski schrieb:
> On Thu, 7 Aug 2008, Jens Gehrlein wrote:
> 
>> Hi Guennadi,
>>
>> Guennadi Liakhovetski schrieb:
>>
>>> diff --git a/cpu/arm1176/s3c64xx/interrupts.c
>>> b/cpu/arm1176/s3c64xx/interrupts.c
>> [snip]
>>> +void udelay(unsigned long usec)
>>> +{
>>> +	unsigned long long tmp;
>>> +	ulong tmo;
>>> +
>>> +	tmo = (usec + 9) / 10;
>>> +	tmp = get_ticks() + tmo;	/* get current timestamp */
>>> +
>>> +	while (get_ticks() < tmp)/* loop till event */
>>> +		 /*NOP*/;
>>> +}
>> I tried to follow the interrupt init function, but it's difficult.
>> What is the least possible delay with the udelay function?
>> I remember that i.mx31 udelay cannot currently be below 30 microsseconds due
>> to the low input clock. If someone uses udelay(1) in polling loops with
>> timeout, the actual duration is much more longer than assumed.
> 
> Actually, the "/ 10" and this comment
> 
> 	/*
> 	 * We use the following scheme for the timer:
> 	 * Prescaler is hard fixed at 167, divider at 1/4.
> 	 * This gives at PCLK frequency 66MHz approx. 10us ticks
> 	 * The timer is set to wrap after 100s, at 66MHz this obviously
> 	 * happens after 10,000,000 ticks. A long variable can thus
> 	 * keep values up to 40,000s, i.e., 11 hours. This should be
> 	 * enough for most uses:-) Possible optimizations: select a
> 	 * binary-friendly frequency, e.g., 1ms / 128. Also calculate
> 	 * the prescaler automatically for other PCLK frequencies.
> 	 */
> 
> shall make it clear, that the timer resolution is configured to 10us, 
> which is also the minimum udelay. The timer could also do better, but then 
> we get other disadvantages, e.g., shorter wrap-around time.

Okay. Thank you.
I think, it's very useful for a developer to know the limits of high 
resolution timers and to see it immediately, so he can consider it in 
his code.

Kind regards,
Jens




More information about the U-Boot mailing list