watchdog: armada_37xx: Fix compliance with kernel's driver
authorMarek Behún <marek.behun@nic.cz>
Mon, 17 Dec 2018 15:10:06 +0000 (16:10 +0100)
committerStefan Roese <sr@denx.de>
Mon, 21 Jan 2019 10:39:49 +0000 (11:39 +0100)
commit7b03e9969c411fac5ebeb86adc306d2c25ca2170
tree967826ac104eeb6660cd93b1017c4f10a97ee82a
parent6e8e1dcf7dc9e6c143fac601cc2d8d5180b67bba
watchdog: armada_37xx: Fix compliance with kernel's driver

The Armada 37xx watchdog driver was recently accepted for mainline
kernel by watchdog subsystem maintainer, but the driver works a little
different than the one in U-Boot. This patch fixes this.

In the previous implementation there was a tiny period of time when the
watchdog was disabled and the system was vulnerables - this was during
pinging, which was done by disabling, setting, and enabling the counter.

Now pinging is done without disabling the watchdog. We use 2 counters:
Counter 1 is the watchdog counter - on expiry, the system is reset.
Counter 0 is used to reset Counter 1 to start counting from the set
timeout again. So Counter 1 is set to be reset on Counter 0 expiry event
event and pinging is done by forcing an immediate expiry event on
Counter 0.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Signed-off-by: Stefan Roese <sr@denx.de>
drivers/watchdog/armada-37xx-wdt.c