From 3d15bc6fb2e1fb23056f7466bbd2793fc6fd16ca Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Sun, 14 Jul 2013 18:01:09 +0000
Subject: [PATCH] ar71xx: fix maximum watchdog timeout

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 37315
---
 .../611-MIPS-ath79-wdt-timeout.patch          | 27 +++++++++++++++++++
 .../611-MIPS-ath79-wdt-timeout.patch          | 27 +++++++++++++++++++
 2 files changed, 54 insertions(+)
 create mode 100644 target/linux/ar71xx/patches-3.10/611-MIPS-ath79-wdt-timeout.patch
 create mode 100644 target/linux/ar71xx/patches-3.8/611-MIPS-ath79-wdt-timeout.patch

diff --git a/target/linux/ar71xx/patches-3.10/611-MIPS-ath79-wdt-timeout.patch b/target/linux/ar71xx/patches-3.10/611-MIPS-ath79-wdt-timeout.patch
new file mode 100644
index 0000000000..8a933ef378
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.10/611-MIPS-ath79-wdt-timeout.patch
@@ -0,0 +1,27 @@
+MIPS: ath79: fix maximum timeout
+
+If the userland tries to set a timeout higher than the max_timeout, then we should fallback to max_timeout.
+
+Signed-off-by: John Crispin <blogic@openwrt.org>
+
+Index: linux-3.8.13/drivers/watchdog/ath79_wdt.c
+===================================================================
+--- linux-3.8.13.orig/drivers/watchdog/ath79_wdt.c	2013-07-14 14:10:19.198826462 +0200
++++ linux-3.8.13/drivers/watchdog/ath79_wdt.c	2013-07-14 14:25:40.810848422 +0200
+@@ -103,10 +103,14 @@
+ 
+ static int ath79_wdt_set_timeout(int val)
+ {
+-	if (val < 1 || val > max_timeout)
++	if (val < 1)
+ 		return -EINVAL;
+ 
+-	timeout = val;
++	if (val > max_timeout)
++		timeout = max_timeout;
++	else
++		timeout = val;
++
+ 	ath79_wdt_keepalive();
+ 
+ 	return 0;
diff --git a/target/linux/ar71xx/patches-3.8/611-MIPS-ath79-wdt-timeout.patch b/target/linux/ar71xx/patches-3.8/611-MIPS-ath79-wdt-timeout.patch
new file mode 100644
index 0000000000..8a933ef378
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.8/611-MIPS-ath79-wdt-timeout.patch
@@ -0,0 +1,27 @@
+MIPS: ath79: fix maximum timeout
+
+If the userland tries to set a timeout higher than the max_timeout, then we should fallback to max_timeout.
+
+Signed-off-by: John Crispin <blogic@openwrt.org>
+
+Index: linux-3.8.13/drivers/watchdog/ath79_wdt.c
+===================================================================
+--- linux-3.8.13.orig/drivers/watchdog/ath79_wdt.c	2013-07-14 14:10:19.198826462 +0200
++++ linux-3.8.13/drivers/watchdog/ath79_wdt.c	2013-07-14 14:25:40.810848422 +0200
+@@ -103,10 +103,14 @@
+ 
+ static int ath79_wdt_set_timeout(int val)
+ {
+-	if (val < 1 || val > max_timeout)
++	if (val < 1)
+ 		return -EINVAL;
+ 
+-	timeout = val;
++	if (val > max_timeout)
++		timeout = max_timeout;
++	else
++		timeout = val;
++
+ 	ath79_wdt_keepalive();
+ 
+ 	return 0;
-- 
2.30.2