summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens2012-12-05 18:46:06 +0100
committerJohn W. Linville2012-12-06 20:58:57 +0100
commit7280b51a29f8e6cc7d449d565182d1e1b6183907 (patch)
tree65237eab1130bbb286b98f3827c15346f7583533
parentssb: add methods for watchdog driver (diff)
downloadkernel-qcow2-linux-7280b51a29f8e6cc7d449d565182d1e1b6183907.tar.gz
kernel-qcow2-linux-7280b51a29f8e6cc7d449d565182d1e1b6183907.tar.xz
kernel-qcow2-linux-7280b51a29f8e6cc7d449d565182d1e1b6183907.zip
ssb: extif: add check for max value before setting watchdog register
Prevent the watchdog register on the extif core to be set to a too high value. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/ssb/driver_extif.c5
-rw-r--r--include/linux/ssb/ssb_driver_extif.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/ssb/driver_extif.c b/drivers/ssb/driver_extif.c
index dc47f30e9cf7..0aa4c2a85774 100644
--- a/drivers/ssb/driver_extif.c
+++ b/drivers/ssb/driver_extif.c
@@ -112,9 +112,10 @@ void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
*m = extif_read32(extif, SSB_EXTIF_CLOCK_SB);
}
-void ssb_extif_watchdog_timer_set(struct ssb_extif *extif,
- u32 ticks)
+void ssb_extif_watchdog_timer_set(struct ssb_extif *extif, u32 ticks)
{
+ if (ticks > SSB_EXTIF_WATCHDOG_MAX_TIMER)
+ ticks = SSB_EXTIF_WATCHDOG_MAX_TIMER;
extif_write32(extif, SSB_EXTIF_WATCHDOG, ticks);
}
diff --git a/include/linux/ssb/ssb_driver_extif.h b/include/linux/ssb/ssb_driver_extif.h
index 2604efa7dc4d..b618188939d2 100644
--- a/include/linux/ssb/ssb_driver_extif.h
+++ b/include/linux/ssb/ssb_driver_extif.h
@@ -152,6 +152,7 @@
/* watchdog */
#define SSB_EXTIF_WATCHDOG_CLK 48000000 /* Hz */
+#define SSB_EXTIF_WATCHDOG_MAX_TIMER ((1 << 28) - 1)
#ifdef CONFIG_SSB_DRIVER_EXTIF