[PATCH v3 0/2] watchdog: dw_wdt: fix reset line management
From: Artem Shimko
Date: Sat Oct 24 2026 - 08:14:52 EST
Hello,
This is v3 of the series fixing reset line management in the dw_wdt
driver.
Testing:
$ ls /dev/watchdog*
/dev/watchdog /dev/watchdog1 /dev/watchdog3
/dev/watchdog0 /dev/watchdog2
$ ls /sys/class/watchdog/
watchdog0 watchdog1 watchdog2 watchdog3
$ chmod +x watchdog-test
$ ./watchdog-test -f /dev/watchdog0 -i -s
watchdog_info:
identity: Synopsys DesignWare Watchdog
firmware_version: 0
Support/Status: Set timeout (in seconds)
Support/Status: Supports magic close char
Support/Status: Pretimeout (in seconds), get/set
Support/Status: Keep alive ping reply
Support/Status: Keep alive ping reply
$ echo mem > /sys/power/state
...
...
[ 1560.147058] PM: suspend exit
[ 1560.371470] usb 1-1: new high-speed USB device number 3 using xhci-hcd
[ 1561.031825] cdc_ncm 1-1:2.0: MAC-Address: a4:2a:95:e8:fc:e4
[ 1561.037736] cdc_ncm 1-1:2.0: setting rx_max = 16384
[ 1561.054408] cdc_ncm 1-1:2.0: setting tx_max = 16384
[ 1561.084713] cdc_ncm 1-1:2.0 eth0: register 'cdc_ncm' at usb-xhci-hcd.2.auto-1, CDC NCM (NO ZLP), a4:2a:95:e8:fc:e4
$ ./watchdog-test -f /dev/watchdog0 -i -s
watchdog_info:
identity: Synopsys DesignWare Watchdog
firmware_version: 0
Support/Status: Set timeout (in seconds)
Support/Status: Supports magic close char
Support/Status: Pretimeout (in seconds), get/set
Support/Status: Keep alive ping reply
Support/Status: Keep alive ping reply
$ ls /dev/watchdog*
/dev/watchdog /dev/watchdog1 /dev/watchdog3
/dev/watchdog0 /dev/watchdog2
$ echo 1 > /dev/watchdog0
$ cat /sys/kernel/debug/1e012000.wdt/registers | grep ccvr
ccvr = 0x09a7baab
$ cat /sys/kernel/debug/1e012000.wdt/registers | grep ccvr
ccvr = 0x0599dce0
$ cat /sys/kernel/debug/1e012000.wdt/registers | grep ccvr
ccvr = 0x01926467
$ [ 110.392536] watchdog0: pretimeout event
Thank you.
--
Best regards,
Artem
ChangeLog:
v1:
* https://lore.kernel.org/all/20260320135624.223863-1-a.shimko.dev@xxxxxxxxx/T/#t
v2:
* Reduced from 5 patches to 3: manual reset handling is replaced by
the devm _deasserted variant from the start, so the intermediate
states that could leak the deasserted reset line are gone and every
commit is self-contained.
* https://lore.kernel.org/all/20261022134354.534642-1-a.shimko.dev@xxxxxxxxx/T/#t
v3:
* Squashed the last two commits.
* Add error check for reset_control_assert() in dw_wdt_suspend()
Artem Shimko (2):
watchdog: dw_wdt: use
devm_reset_control_get_optional_shared_deasserted
watchdog: dw_wdt: manage reset line during system suspend/resume
drivers/watchdog/dw_wdt.c | 40 +++++++++++++++++++++++----------------
1 file changed, 24 insertions(+), 16 deletions(-)
--
2.43.0