diff options
Diffstat (limited to 'lib_ppc/time.c')
| -rw-r--r-- | lib_ppc/time.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/lib_ppc/time.c b/lib_ppc/time.c index 51e8e8406..2649d5ffd 100644 --- a/lib_ppc/time.c +++ b/lib_ppc/time.c @@ -23,6 +23,9 @@  #include <common.h> +#ifndef CONFIG_WD_PERIOD +# define CONFIG_WD_PERIOD	(10 * 1000 * 1000)	/* 10 seconds default*/ +#endif  /* ------------------------------------------------------------------------- */ @@ -53,9 +56,14 @@ unsigned long usec2ticks(unsigned long usec)   */  void udelay(unsigned long usec)  { -	ulong ticks = usec2ticks (usec); +	ulong ticks, kv; -	wait_ticks (ticks); +	do { +		kv = usec > CONFIG_WD_PERIOD ? CONFIG_WD_PERIOD : usec; +		ticks = usec2ticks (kv); +		wait_ticks (ticks); +		usec -= kv; +	} while(usec);  }  /* ------------------------------------------------------------------------- */ |