summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Zyngier <maz@misterjones.org>2010-04-09 16:43:33 (GMT)
committerWim Van Sebroeck <wim@iguana.be>2010-04-16 12:26:27 (GMT)
commitb1183e064a3f95d27351b2d2c811b50bf4d770a4 (patch)
tree92a201265d64d2318ec1a60f166fc472d0380526
parent0fb06571bbb5c72b4663c20f721323260ea802bf (diff)
downloadlinux-fsl-qoriq-b1183e064a3f95d27351b2d2c811b50bf4d770a4.tar.xz
[WATCHDOG] max63xx: be careful when disabling the watchdog
When shutting down the watchdog timer, special care must be taken not to overwrite other bits in the register, as it may be shared with other peripherals. For example, on the Arcom Vulcan, the register is shared between the watchdog and the PCI reset line... Signed-off-by: Marc Zyngier <maz@misterjones.org> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r--drivers/watchdog/max63xx_wdt.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/watchdog/max63xx_wdt.c b/drivers/watchdog/max63xx_wdt.c
index 75f3a83..3053ff0 100644
--- a/drivers/watchdog/max63xx_wdt.c
+++ b/drivers/watchdog/max63xx_wdt.c
@@ -154,9 +154,14 @@ static void max63xx_wdt_enable(struct max63xx_timeout *entry)
static void max63xx_wdt_disable(void)
{
+ u8 val;
+
spin_lock(&io_lock);
- __raw_writeb(3, wdt_base);
+ val = __raw_readb(wdt_base);
+ val &= ~MAX6369_WDSET;
+ val |= 3;
+ __raw_writeb(val, wdt_base);
spin_unlock(&io_lock);