I experimented with the Synopsys DesignWare watchdog on an Odroid-M1S (RK3566). On current master, the watchdog is present in device-tree. After activating the relevant options in .config, U-Boot tried probing it but failed, aborting at a failing clk_enable(). Current next branch already has a patch for that in the driver (d62801d09441) and with that wdt query and servicing works.
However, a timeout or wdt expire causes a hung SoC. There are two possible "global resets" the watchdog may trigger, set in the CRU registers, as per the TRM. Default is the "second" reset. Unfortunately, the TRM is rather tight-lipped about what each one really does. Per experimentation: Setting it to the "first" global reset fixes the hang and makes the watchdog work as expected in U-Boot. This is the first patch. As the PX30 does the same thing in its arch_cpu_init(), I believe this to be the way to go but I am curious to hear if anybody has more technical insight on this. Second patch adds watchdog support (per wdt command) to the Odroid-M1S defconfig, which was my original goal. I didn't enable AUTOSTART and cyclic servicing to not break any existing systems. However, I tested both and they too work as expected with the reset fix. Andreas Zdziarstek (2): rockchip: rk3568: make the WDT trigger a first global reset rockchip: odroid-m1s: enable watchdog support arch/arm/mach-rockchip/rk3568/rk3568.c | 8 ++++++++ configs/odroid-m1s-rk3566_defconfig | 5 +++++ 2 files changed, 13 insertions(+) base-commit: 298d44464dc63a4f3f5489150acd7958f359f9bd -- 2.53.0

