diff options
Diffstat (limited to 'target/linux/ar71xx/patches-3.10/104-watchdog-ath79-wdt-avoid-spurious-restarts-on-AR934x.patch')
-rw-r--r-- | target/linux/ar71xx/patches-3.10/104-watchdog-ath79-wdt-avoid-spurious-restarts-on-AR934x.patch | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/target/linux/ar71xx/patches-3.10/104-watchdog-ath79-wdt-avoid-spurious-restarts-on-AR934x.patch b/target/linux/ar71xx/patches-3.10/104-watchdog-ath79-wdt-avoid-spurious-restarts-on-AR934x.patch deleted file mode 100644 index c7bf066..0000000 --- a/target/linux/ar71xx/patches-3.10/104-watchdog-ath79-wdt-avoid-spurious-restarts-on-AR934x.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 2ff030d44672d745c5327b72463af43f5103e99b Mon Sep 17 00:00:00 2001 -From: Gabor Juhos <juhosg@openwrt.org> -Date: Tue, 25 Mar 2014 17:07:46 +0100 -Subject: [PATCH] watchdog: ath79-wdt: avoid spurious restarts on AR934x - -On some AR934x based systems, where the frequency of -the AHB bus is relatively high, the built-in watchdog -causes a spurious restart when it gets enabled. - -The possible cause of these restarts is that the timeout -value written into the TIMER register does not reaches -the hardware in time. - -Add an explicit delay into the ath79_wdt_enable function -to avoid the spurious restarts. - -Signed-off-by: Gabor Juhos <juhosg@openwrt.org> -Cc: <stable@vger.kernel.org> ---- - drivers/watchdog/ath79_wdt.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - ---- a/drivers/watchdog/ath79_wdt.c -+++ b/drivers/watchdog/ath79_wdt.c -@@ -20,6 +20,7 @@ - #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - - #include <linux/bitops.h> -+#include <linux/delay.h> - #include <linux/errno.h> - #include <linux/fs.h> - #include <linux/init.h> -@@ -91,6 +92,15 @@ static inline void ath79_wdt_keepalive(v - static inline void ath79_wdt_enable(void) - { - ath79_wdt_keepalive(); -+ -+ /* -+ * Updating the TIMER register requires a few microseconds -+ * on the AR934x SoCs at least. Use a small delay to ensure -+ * that the TIMER register is updated within the hardware -+ * before enabling the watchdog. -+ */ -+ udelay(2); -+ - ath79_wdt_wr(WDOG_REG_CTRL, WDOG_CTRL_ACTION_FCR); - /* flush write */ - ath79_wdt_rr(WDOG_REG_CTRL); |