watchdog: bd9576: Drop "always-running" property
Matti Vaittinen
maintainerPATCH 1/1 watchdog: bd9576: Drop "always-running" property
The always-running (from linux,wdt-gpio.yaml) is abused by the BD9576 watchdog driver. It's defined meaning is "the watchdog is always running and can not be stopped". The BD9576 watchdog driver has implemented it as "start watchdog when loading the module and prevent it from being stopped".
Furthermore, the implementation does not set the WDOG_HW_RUNNING when enabling the watchdog due to the "always-running" at module loading. This will end up resulting a watchdog timeout if the device is not opened.
The culprit was pointed out by Guenter, discussion can be found from
https://lore.kernel.org/lkml/[email protected]/
Drop the invalid "always-running" handling.
--- drivers/watchdog/bd9576_wdt.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
drivers/watchdog/bd9576_wdt.c +1 -11
@@ -29,7 +29,6 @@ struct bd9576_wdt_priv {struct gpio_desc *gpiod_en;struct device *dev;struct regmap *regmap; -bool always_running;struct watchdog_device wdd; };
@@ -62,10 +61,7 @@ static int bd9576_wdt_stop(struct watchdog_device *wdd) {struct bd9576_wdt_priv *priv =watchdog_get_drvdata (wdd); -if (!priv->always_running) -bd9576_wdt_disable (priv); -else -set_bit (WDOG_HW_RUNNING , &wdd->status); +bd9576_wdt_disable (priv);return 0 ; }
@@ -264,9 +260,6 @@ static int bd9576_wdt_probe(struct platform_device *pdev)if (ret)return ret; - priv->always_running =device_property_read_bool (dev->parent, -"always-running" ); -watchdog_set_drvdata (&priv->wdd, priv); priv->wdd.info = &bd957x_wdt_ident;
@@ -281,9 +274,6 @@ static int bd9576_wdt_probe(struct platform_device *pdev)watchdog_stop_on_reboot (&priv->wdd); -if (priv->always_running) -bd9576_wdt_start (&priv->wdd); -return devm_watchdog_register_device (dev, &priv->wdd); }
base-commit: 4cece764965020c22cff7665b18a012006359095
Signature · 14 lines
2.43.2 -- Matti Vaittinen, Linux device drivers ROHM Semiconductors, Finland SWDC Kiviharjunlenkki 1E 90220 OULU FINLAND ~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~ Simon says - in Latin please. ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~ Thanks to Simon Glass for the translation =]
Quoted 11 lines · Matti Vaittinen
The always-running (from linux,wdt-gpio.yaml) is abused by the BD9576 watchdog driver. It's defined meaning is "the watchdog is always running and can not be stopped". The BD9576 watchdog driver has implemented it as "start watchdog when loading the module and prevent it from being stopped".
Furthermore, the implementation does not set the
WDOG_HW_RUNNINGwhen enabling the watchdog due to the "always-running" at module loading. This will end up resulting a watchdog timeout if the device is not opened.
Quoted 8 lines
The culprit was pointed out by Guenter, discussion can be found from
https://lore.kernel.org/lkml/[email protected]/Drop the invalid "always-running" handling.
Signed-off-by Matti Vaittinen <[email protected]>Reported-by Guenter Roeck <[email protected]>Fixes b237bcac557a ("wdt: Support wdt on ROHM BD9576MUF and BD9573MUF")
Guenter