diff options
author | Ingo van Lil <inguin@gmx.de> | 2009-11-24 16:09:21 +0300 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2009-12-05 03:08:53 +0300 |
commit | 3eb90bad651fab39cffba750ec4421a9c01d60e7 (patch) | |
tree | 63b21148a041603db252203a422dc465e862e016 /lib_ppc | |
parent | 1c409bc7101a24ecd47a13a4e851845d66dc23ce (diff) | |
download | u-boot-3eb90bad651fab39cffba750ec4421a9c01d60e7.tar.xz |
Generic udelay() with watchdog support
According to the PPC reference implementation the udelay() function is
responsible for resetting the watchdog timer as frequently as needed.
Most other architectures do not meet that requirement, so long-running
operations might result in a watchdog reset.
This patch adds a generic udelay() function which takes care of
resetting the watchdog before calling an architecture-specific
__udelay().
Signed-off-by: Ingo van Lil <inguin@gmx.de>
Diffstat (limited to 'lib_ppc')
-rw-r--r-- | lib_ppc/time.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/lib_ppc/time.c b/lib_ppc/time.c index 173ffab3e8..29099612db 100644 --- a/lib_ppc/time.c +++ b/lib_ppc/time.c @@ -23,10 +23,6 @@ #include <common.h> -#ifndef CONFIG_WD_PERIOD -# define CONFIG_WD_PERIOD (10 * 1000 * 1000) /* 10 seconds default*/ -#endif - /* ------------------------------------------------------------------------- */ /* @@ -54,16 +50,10 @@ unsigned long usec2ticks(unsigned long usec) * microseconds to wait) into a number of time base ticks; then we * watch the time base until it has incremented by that amount. */ -void udelay(unsigned long usec) +void __udelay(unsigned long usec) { - ulong ticks, kv; - - do { - kv = usec > CONFIG_WD_PERIOD ? CONFIG_WD_PERIOD : usec; - ticks = usec2ticks (kv); - wait_ticks (ticks); - usec -= kv; - } while(usec); + ulong ticks = usec2ticks (usec); + wait_ticks (ticks); } /* ------------------------------------------------------------------------- */ |