ramips: Switch Teltonika RUT5xx to kernel GPIO-line watchdog driver
authorSven Eckelmann <sven@narfation.org>
Mon, 31 Jan 2022 13:39:52 +0000 (14:39 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 3 Feb 2022 21:27:15 +0000 (22:27 +0100)
The commit 04e91631e050 ("om-watchdog: add support for Teltonika RUT5xx
(ramips)") used the deprecated om-watchdog daemon to handle the GPIO-line
connected watchdog on the Teltonika RUT5xx.

But this daemon has massive problems since commit 30f61a34b4cf
("base-files: always use staged sysupgrade"). The process will always be
stopped on sysupgrades. If the sysupgrade takes slightly longer, the
watchdog is not triggered at the correct time and thus the sysupgrade will
interrupted hard by the watchdog sysupgrade. And this hard interrupt can
easily brick the device when there is no fallback (dual-boot, ...).

Signed-off-by: Sven Eckelmann <sven@narfation.org>
target/linux/ramips/dts/rt3050_teltonika_rut5xx.dts
target/linux/ramips/image/rt305x.mk
target/linux/ramips/rt305x/config-5.10

index cfdb4d6b4b70257e2a2a86292a45a7e4f1b772ab..6be2590a0cda2e33d3875b87c7cb1f29e2ffc49a 100644 (file)
                        linux,code = <KEY_RESTART>;
                };
        };
+
+       watchdog {
+               compatible = "linux,wdt-gpio";
+               gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+               hw_algo = "toggle";
+               /* hw_margin_ms is actually 280s but driver limits it to 60s */
+               hw_margin_ms = <60000>;
+               always-running;
+       };
 };
 
 &spi0 {
index e817c12e7669d4b769c8745194f09a755f2e1fb2..d8ea1d567367c71883f29651451a33eda96fd626 100644 (file)
@@ -990,7 +990,6 @@ define Device/teltonika_rut5xx
   IMAGE_SIZE := 16064k
   DEVICE_VENDOR := Teltonika
   DEVICE_MODEL := RUT5XX
-  DEVICE_PACKAGES := om-watchdog
   SUPPORTED_DEVICES += rut5xx
 endef
 TARGET_DEVICES += teltonika_rut5xx
index b62c44198891f8f55eb5f9d0425a6fcd7f324fe9..31dbec907e72ff0ef49a7f4be6f5ea369cc5e065 100644 (file)
@@ -60,6 +60,8 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_RALINK=y
+CONFIG_GPIO_WATCHDOG=y
+# CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set
 CONFIG_HANDLE_DOMAIN_IRQ=y
 CONFIG_HARDWARE_WATCHPOINTS=y
 CONFIG_HAS_DMA=y