[U-Boot] [PATCH] Blackfin: reset watchdog in udelay()

All arches apparently should reset the watchdog in their udelay loop as noted on the mailing list recently:
A comment in flash_status_check() suggests that udelay() is expected to reset the watchdog, but I can't find any architecture where it does.
If this is missing in other architectures, it should be fixed at the root cause, i. e. in udelay() or in the respective support routines.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- cpu/blackfin/interrupts.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/cpu/blackfin/interrupts.c b/cpu/blackfin/interrupts.c index bf6fb4b..7ab4cc4 100644 --- a/cpu/blackfin/interrupts.c +++ b/cpu/blackfin/interrupts.c @@ -70,6 +70,8 @@ void udelay(unsigned long usec) cclk = (CONFIG_CCLK_HZ);
while (usec > 1) { + WATCHDOG_RESET(); + /* * how many clock ticks to delay? * - request(in useconds) * clock_ticks(Hz) / useconds/second

All arches apparently should reset the watchdog in their udelay loop as noted on the mailing list recently:
A comment in flash_status_check() suggests that udelay() is expected to reset the watchdog, but I can't find any architecture where it does.
If this is missing in other architectures, it should be fixed at the root cause, i. e. in udelay() or in the respective support routines.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- v2 - blah, help if it actually compiled
cpu/blackfin/interrupts.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/cpu/blackfin/interrupts.c b/cpu/blackfin/interrupts.c index bf6fb4b..19456e5 100644 --- a/cpu/blackfin/interrupts.c +++ b/cpu/blackfin/interrupts.c @@ -20,6 +20,7 @@
#include <common.h> #include <config.h> +#include <watchdog.h> #include <asm/blackfin.h> #include "cpu.h"
@@ -70,6 +71,8 @@ void udelay(unsigned long usec) cclk = (CONFIG_CCLK_HZ);
while (usec > 1) { + WATCHDOG_RESET(); + /* * how many clock ticks to delay? * - request(in useconds) * clock_ticks(Hz) / useconds/second
participants (1)
-
Mike Frysinger