* [PATCH v2 1/4] watchdog: da9052_wdt: add support for nowayout
2025-03-25 7:27 [PATCH v2 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
@ 2025-03-25 7:27 ` Marcus Folkesson
2025-03-25 13:01 ` Guenter Roeck
2025-03-25 7:27 ` [PATCH v2 2/4] watchdog: da9052_wdt: use timeout value from external inputs Marcus Folkesson
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Marcus Folkesson @ 2025-03-25 7:27 UTC (permalink / raw)
To: Support Opensource, Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, linux-kernel, Marcus Folkesson
Add nowayout module parameter for not stopping the
watchdog when userspae application quits.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
drivers/watchdog/da9052_wdt.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index 77039f2f0be54273df1666fe40c413b6c89285a1..a8ff1e6a7903f6f139c5bb60d7d92ca39077ee04 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -30,6 +30,12 @@ struct da9052_wdt_data {
unsigned long jpast;
};
+static bool nowayout = WATCHDOG_NOWAYOUT;
+module_param(nowayout, bool, 0);
+MODULE_PARM_DESC(nowayout,
+ "Watchdog cannot be stopped once started (default="
+ __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+
static const struct {
u8 reg_val;
int time; /* Seconds */
@@ -172,6 +178,7 @@ static int da9052_wdt_probe(struct platform_device *pdev)
da9052_wdt->ops = &da9052_wdt_ops;
da9052_wdt->parent = dev;
watchdog_set_drvdata(da9052_wdt, driver_data);
+ watchdog_set_nowayout(da9052_wdt, nowayout);
if (da9052->fault_log & DA9052_FAULTLOG_TWDERROR)
da9052_wdt->bootstatus |= WDIOF_CARDRESET;
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/4] watchdog: da9052_wdt: use timeout value from external inputs
2025-03-25 7:27 [PATCH v2 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
2025-03-25 7:27 ` [PATCH v2 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
@ 2025-03-25 7:27 ` Marcus Folkesson
2025-03-25 13:01 ` Guenter Roeck
2025-03-25 7:27 ` [PATCH v2 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
2025-03-25 7:27 ` [PATCH v2 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
3 siblings, 1 reply; 9+ messages in thread
From: Marcus Folkesson @ 2025-03-25 7:27 UTC (permalink / raw)
To: Support Opensource, Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, linux-kernel, Marcus Folkesson
Introduce the `timeout` module parameter and pass it to
watchdog_init_timeout(). If the parameter is not set or contains an
invalid value, fallback on the `timeout-secs` devicetree property value.
If none of the above is valid, go for the old default value.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
drivers/watchdog/da9052_wdt.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index a8ff1e6a7903f6f139c5bb60d7d92ca39077ee04..fa9078d4c136a52f1193768fe93dc04189519679 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -36,6 +36,12 @@ MODULE_PARM_DESC(nowayout,
"Watchdog cannot be stopped once started (default="
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+static int timeout;
+module_param(timeout, int, 0);
+MODULE_PARM_DESC(timeout,
+ "Watchdog timeout in seconds. (default = "
+ __MODULE_STRING(WDT_DEFAULT_TIMEOUT) ")");
+
static const struct {
u8 reg_val;
int time; /* Seconds */
@@ -178,6 +184,7 @@ static int da9052_wdt_probe(struct platform_device *pdev)
da9052_wdt->ops = &da9052_wdt_ops;
da9052_wdt->parent = dev;
watchdog_set_drvdata(da9052_wdt, driver_data);
+ watchdog_init_timeout(da9052_wdt, timeout, dev);
watchdog_set_nowayout(da9052_wdt, nowayout);
if (da9052->fault_log & DA9052_FAULTLOG_TWDERROR)
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/4] watchdog: da9052_wdt: do not disable wdt during probe
2025-03-25 7:27 [PATCH v2 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
2025-03-25 7:27 ` [PATCH v2 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
2025-03-25 7:27 ` [PATCH v2 2/4] watchdog: da9052_wdt: use timeout value from external inputs Marcus Folkesson
@ 2025-03-25 7:27 ` Marcus Folkesson
2025-03-25 13:05 ` Guenter Roeck
2025-03-25 7:27 ` [PATCH v2 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
3 siblings, 1 reply; 9+ messages in thread
From: Marcus Folkesson @ 2025-03-25 7:27 UTC (permalink / raw)
To: Support Opensource, Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, linux-kernel, Marcus Folkesson
If the watchog is started by the bootloader, we do not want the watchdog
to be disabled.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
drivers/watchdog/da9052_wdt.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index fa9078d4c136a52f1193768fe93dc04189519679..b821006fca70480bf3b23a62bded4e66851a537e 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -170,7 +170,6 @@ static int da9052_wdt_probe(struct platform_device *pdev)
struct da9052 *da9052 = dev_get_drvdata(dev->parent);
struct da9052_wdt_data *driver_data;
struct watchdog_device *da9052_wdt;
- int ret;
driver_data = devm_kzalloc(dev, sizeof(*driver_data), GFP_KERNEL);
if (!driver_data)
@@ -194,13 +193,6 @@ static int da9052_wdt_probe(struct platform_device *pdev)
if (da9052->fault_log & DA9052_FAULTLOG_VDDFAULT)
da9052_wdt->bootstatus |= WDIOF_POWERUNDER;
- ret = da9052_reg_update(da9052, DA9052_CONTROL_D_REG,
- DA9052_CONTROLD_TWDSCALE, 0);
- if (ret < 0) {
- dev_err(dev, "Failed to disable watchdog bits, %d\n", ret);
- return ret;
- }
-
return devm_watchdog_register_device(dev, &driver_data->wdt);
}
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] watchdog: da9052_wdt: do not disable wdt during probe
2025-03-25 7:27 ` [PATCH v2 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
@ 2025-03-25 13:05 ` Guenter Roeck
0 siblings, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2025-03-25 13:05 UTC (permalink / raw)
To: Marcus Folkesson
Cc: Support Opensource, Wim Van Sebroeck, linux-watchdog,
linux-kernel
On Tue, Mar 25, 2025 at 08:27:14AM +0100, Marcus Folkesson wrote:
> If the watchog is started by the bootloader, we do not want the watchdog
> to be disabled.
>
If the watchdog is left running, the watchdog core should be notified
by setting WDOG_HW_RUNNING. Please see other drivers for examples.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 4/4] watchdog: da9052_wdt: respect TWDMIN
2025-03-25 7:27 [PATCH v2 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
` (2 preceding siblings ...)
2025-03-25 7:27 ` [PATCH v2 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
@ 2025-03-25 7:27 ` Marcus Folkesson
2025-03-25 13:05 ` Guenter Roeck
3 siblings, 1 reply; 9+ messages in thread
From: Marcus Folkesson @ 2025-03-25 7:27 UTC (permalink / raw)
To: Support Opensource, Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, linux-kernel, Marcus Folkesson
We have to wait at least the minimium time for the watchdog window
(TWDMIN) before writings to the wdt register after the
watchdog is activated.
Otherwise the chip will assert TWD_ERROR and power down to reset mode.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
drivers/watchdog/da9052_wdt.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index b821006fca70480bf3b23a62bded4e66851a537e..1e49cbae7eaec3015264dec891032a56f56e36cc 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -179,6 +179,7 @@ static int da9052_wdt_probe(struct platform_device *pdev)
da9052_wdt = &driver_data->wdt;
da9052_wdt->timeout = DA9052_DEF_TIMEOUT;
+ da9052_wdt->min_hw_heartbeat_ms = DA9052_TWDMIN;
da9052_wdt->info = &da9052_wdt_info;
da9052_wdt->ops = &da9052_wdt_ops;
da9052_wdt->parent = dev;
--
2.48.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 4/4] watchdog: da9052_wdt: respect TWDMIN
2025-03-25 7:27 ` [PATCH v2 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
@ 2025-03-25 13:05 ` Guenter Roeck
0 siblings, 0 replies; 9+ messages in thread
From: Guenter Roeck @ 2025-03-25 13:05 UTC (permalink / raw)
To: Marcus Folkesson
Cc: Support Opensource, Wim Van Sebroeck, linux-watchdog,
linux-kernel
On Tue, Mar 25, 2025 at 08:27:15AM +0100, Marcus Folkesson wrote:
> We have to wait at least the minimium time for the watchdog window
> (TWDMIN) before writings to the wdt register after the
> watchdog is activated.
> Otherwise the chip will assert TWD_ERROR and power down to reset mode.
>
> Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/watchdog/da9052_wdt.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
> index b821006fca70480bf3b23a62bded4e66851a537e..1e49cbae7eaec3015264dec891032a56f56e36cc 100644
> --- a/drivers/watchdog/da9052_wdt.c
> +++ b/drivers/watchdog/da9052_wdt.c
> @@ -179,6 +179,7 @@ static int da9052_wdt_probe(struct platform_device *pdev)
> da9052_wdt = &driver_data->wdt;
>
> da9052_wdt->timeout = DA9052_DEF_TIMEOUT;
> + da9052_wdt->min_hw_heartbeat_ms = DA9052_TWDMIN;
> da9052_wdt->info = &da9052_wdt_info;
> da9052_wdt->ops = &da9052_wdt_ops;
> da9052_wdt->parent = dev;
>
> --
> 2.48.1
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread