From 2e721094a70a52206af2e1bf1208d9a7131f6dad Mon Sep 17 00:00:00 2001 From: Yuri Tikhonov Date: Thu, 21 Feb 2008 14:23:42 +0100 Subject: lwmon5: enable hardware watchdog Some boards (e.g. lwmon5) may use rather small watchdog intervals, so causing it to reboot the board if U-Boot does a long busy-wait with udelay(). Thus, for these boards we have to restart WD more frequently. This patch splits the busy-wait udelay() into smaller, predefined, intervals, so that the watchdog timer may be resetted with the configurable (CONFIG_WD_PERIOD) interval. Signed-off-by: Yuri Tikhonov --- lib_ppc/time.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'lib_ppc/time.c') diff --git a/lib_ppc/time.c b/lib_ppc/time.c index 51e8e840..2649d5f 100644 --- a/lib_ppc/time.c +++ b/lib_ppc/time.c @@ -23,6 +23,9 @@ #include +#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); - - wait_ticks (ticks); + ulong ticks, kv; + + do { + kv = usec > CONFIG_WD_PERIOD ? CONFIG_WD_PERIOD : usec; + ticks = usec2ticks (kv); + wait_ticks (ticks); + usec -= kv; + } while(usec); } /* ------------------------------------------------------------------------- */ -- cgit v1.1