diff mbox series

watchdog: bd9576: Drop "always-running" property

Message ID ZhPAt76yaJMersXf@fedora
State New
Headers show
Series watchdog: bd9576: Drop "always-running" property | expand

Commit Message

Matti Vaittinen April 8, 2024, 10:02 a.m. UTC
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/4fa3a64b-60fb-4e5e-8785-0f14da37eea2@roeck-us.net/

Drop the invalid "always-running" handling.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Reported-by: Guenter Roeck <linux@roeck-us.net>
Fixes: b237bcac557a ("wdt: Support wdt on ROHM BD9576MUF and BD9573MUF")
---
 drivers/watchdog/bd9576_wdt.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)


base-commit: 4cece764965020c22cff7665b18a012006359095

Comments

Guenter Roeck April 8, 2024, 12:27 p.m. UTC | #1
On Mon, Apr 08, 2024 at 01:02:31PM +0300, Matti Vaittinen wrote:
> 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/4fa3a64b-60fb-4e5e-8785-0f14da37eea2@roeck-us.net/
> 
> Drop the invalid "always-running" handling.
> 
> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Fixes: b237bcac557a ("wdt: Support wdt on ROHM BD9576MUF and BD9573MUF")

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

Guenter
diff mbox series

Patch

diff --git a/drivers/watchdog/bd9576_wdt.c b/drivers/watchdog/bd9576_wdt.c
index 4a20e07fbb69..f00ea1b4e40b 100644
--- a/drivers/watchdog/bd9576_wdt.c
+++ b/drivers/watchdog/bd9576_wdt.c
@@ -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);
 }