Identity
| Part | Synopsys DesignWare watchdog timer |
| Role | System watchdog; reset SoC on software hang |
| Bus / address | MMIO 0xff848000 |
| GPIO / IRQ | one GIC SPI (pre-timeout warning) |
| Datasheet | DesignWare APB Watchdog Timer databook (vendor-restricted; register surface documented in the RK3399 TRM) |
| Pine64 wiki | PinePhone Pro main page |
| Schematic | on-SoC (no external schematic) |
Status — ● working
dwwdt0: <Synopsys Designware watchdog timer> attaches at boot.
The watchdog framework hooks watchdog(4) so userspace wdog(8)
sees it. We do not currently arm the watchdog by default — this is
a development tree, and an unintended reboot loop on a wedged kernel
would be worse than the current flat-line on a hang. The hardware
itself is exercised whenever a kernel panic dumps; pre-timeout IRQ
is wired but not consumed.
Driver
- Our tree: uses upstream FreeBSD
dwwdt(4)unmodified; no overlay needed. - Linux mainline:
drivers/watchdog/dw_wdt.c— reference. - FreeBSD upstream:
sys/dev/watchdog/dwwdt.c— works against the RK3399 device tree out of the box.
This is the simplest “just works” peripheral on the phone.
Open work
- Decide on a default-arm policy for production (24h max-timeout, kicked by a daemon) — currently disarmed.
- Surface pre-timeout IRQ as a
devdevent so user policy can react before reset. - Wire watchdog into the future S2RAM path so suspend doesn’t trip a reset.
Related
- Cross-driver audit 2026-04-30 — driver-by-driver status.
- Hardware reference — system peripherals manifest.