[PATCH v4 0/2] Add Realtek Otto WDT support

From: Sander Vanheule
Date: Thu Nov 18 2021 - 11:30:04 EST

This watchdog timer is found on Realtek's Otto MIPS platforms, including the
RTL838x, RTL839x, and RTL930x series of ethernet switch SoCs. It has a number
of reset modes (SoC, CPU, software), and can provide pretimeout interrupts.

The timer has two timeout phases. Both phases have a maximum duration of 32
prescaled clock ticks, which is ca. 43s with a clock of 200MHz:
- Phase 1: During this phase, the WDT can be pinged to reset the timeout.
- Phase 2: Starts after phase 1 has timed out, and only serves to give the
system some time to clean up, or notify others that it's going to reset.
During this phase, pinging the WDT has no effect, and a reset is unavoidable.

The driver has been tested on a Zyxel GS1900-8 (RTL8380, mainline kernel and
OpenWrt), a Zyxel GS1900-48 (RTL8393, mainline), a Netgear GS110TPPv1
(RTL8381, mainline), and a Zyxel XGS1250-12 (RTL9203B, Openwrt).

Changes since v3:
Link: https://lore.kernel.org/all/cover.1636018117.git.sander@xxxxxxxxxxxxx/
- Improve clock initialisation

Changes since v2:
Link: https://lore.kernel.org/all/20211104085952.13572-1-sander@xxxxxxxxxxxxx/
- Fix off-by-one error in prescale assignment

Main changes since v1:
Link: https://lore.kernel.org/all/cover.1634131707.git.sander@xxxxxxxxxxxxx/
- Drop implementation of phase2 irq, since it is only triggered on system reset
- Drop redundant value checks and lock
- Add RTL930x compatibility

Sander Vanheule (2):
dt-bindings: watchdog: Realtek Otto WDT binding
watchdog: Add Realtek Otto watchdog timer

.../bindings/watchdog/realtek,otto-wdt.yaml | 91 +++++
drivers/watchdog/Kconfig | 13 +
drivers/watchdog/Makefile | 1 +
drivers/watchdog/realtek_otto_wdt.c | 384 ++++++++++++++++++
5 files changed, 496 insertions(+)
create mode 100644 Documentation/devicetree/bindings/watchdog/realtek,otto-wdt.yaml
create mode 100644 drivers/watchdog/realtek_otto_wdt.c