* [PATCH v3 0/4] Various fixes for the da9052 watchdog
@ 2025-03-26 8:29 Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Marcus Folkesson @ 2025-03-26 8:29 UTC (permalink / raw)
To: Support Opensource, Wim Van Sebroeck, Guenter Roeck
Cc: linux-watchdog, linux-kernel, Marcus Folkesson
Add support for the nowayout and timeout module parameters and treat
them in a standard way.
Respect twdmin, without this the watchdog timer will immediately assert
TWD_ERROR and power down to reset mode.
Do not stop the watchdog during probe. If the watchdog is enabled in the
bootloader, it should propably supposed to stay on.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
Changes in v3:
- Set WDOG_HW_RUNNING if the watchdog is left running.
- Link to v2: https://lore.kernel.org/r/20250325-da9052-fixes-v2-0-bfac3f07b4a4@gmail.com
Changes in v2:
- Fix warning found by kernel test robot
- Link to v1: https://lore.kernel.org/r/20250313-da9052-fixes-v1-0-379dc87af953@gmail.com
---
Marcus Folkesson (4):
watchdog: da9052_wdt: add support for nowayout
watchdog: da9052_wdt: use timeout value from external inputs
watchdog: da9052_wdt: do not disable wdt during probe
watchdog: da9052_wdt: respect TWDMIN
drivers/watchdog/da9052_wdt.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
---
base-commit: 0fed89a961ea851945d23cc35beb59d6e56c0964
change-id: 20250313-da9052-fixes-186674b34993
Best regards,
--
Marcus Folkesson <marcus.folkesson@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/4] watchdog: da9052_wdt: add support for nowayout
2025-03-26 8:29 [PATCH v3 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
@ 2025-03-26 8:29 ` Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 2/4] watchdog: da9052_wdt: use timeout value from external inputs Marcus Folkesson
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Marcus Folkesson @ 2025-03-26 8:29 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.
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
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] 6+ messages in thread
* [PATCH v3 2/4] watchdog: da9052_wdt: use timeout value from external inputs
2025-03-26 8:29 [PATCH v3 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
@ 2025-03-26 8:29 ` Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
3 siblings, 0 replies; 6+ messages in thread
From: Marcus Folkesson @ 2025-03-26 8:29 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.
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
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] 6+ messages in thread
* [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe
2025-03-26 8:29 [PATCH v3 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 2/4] watchdog: da9052_wdt: use timeout value from external inputs Marcus Folkesson
@ 2025-03-26 8:29 ` Marcus Folkesson
2025-03-26 13:51 ` Guenter Roeck
2025-03-26 8:29 ` [PATCH v3 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
3 siblings, 1 reply; 6+ messages in thread
From: Marcus Folkesson @ 2025-03-26 8:29 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 | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c
index fa9078d4c136a52f1193768fe93dc04189519679..5bef70cb74b36412b427f5cf7255f16b8eb00ac7 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -194,11 +194,15 @@ 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);
+ ret = da9052_reg_read(da9052, DA9052_CONTROL_D_REG);
+ if (ret < 0)
return ret;
+
+ /* Check if FW enabled the watchdog */
+ if (ret & DA9052_CONTROLD_TWDSCALE) {
+ /* Ensure proper initialization */
+ da9052_wdt_start(da9052_wdt);
+ set_bit(WDOG_HW_RUNNING, &da9052_wdt->status);
}
return devm_watchdog_register_device(dev, &driver_data->wdt);
--
2.48.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 4/4] watchdog: da9052_wdt: respect TWDMIN
2025-03-26 8:29 [PATCH v3 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
` (2 preceding siblings ...)
2025-03-26 8:29 ` [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
@ 2025-03-26 8:29 ` Marcus Folkesson
3 siblings, 0 replies; 6+ messages in thread
From: Marcus Folkesson @ 2025-03-26 8:29 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.
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
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 5bef70cb74b36412b427f5cf7255f16b8eb00ac7..afb7887c3a1e865d3c581c5ab77bb91a5533ff07 100644
--- a/drivers/watchdog/da9052_wdt.c
+++ b/drivers/watchdog/da9052_wdt.c
@@ -180,6 +180,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] 6+ messages in thread
* Re: [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe
2025-03-26 8:29 ` [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
@ 2025-03-26 13:51 ` Guenter Roeck
0 siblings, 0 replies; 6+ messages in thread
From: Guenter Roeck @ 2025-03-26 13:51 UTC (permalink / raw)
To: Marcus Folkesson, Support Opensource, Wim Van Sebroeck
Cc: linux-watchdog, linux-kernel
On 3/26/25 01:29, Marcus Folkesson wrote:
> 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>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-03-26 13:51 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-26 8:29 [PATCH v3 0/4] Various fixes for the da9052 watchdog Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 1/4] watchdog: da9052_wdt: add support for nowayout Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 2/4] watchdog: da9052_wdt: use timeout value from external inputs Marcus Folkesson
2025-03-26 8:29 ` [PATCH v3 3/4] watchdog: da9052_wdt: do not disable wdt during probe Marcus Folkesson
2025-03-26 13:51 ` Guenter Roeck
2025-03-26 8:29 ` [PATCH v3 4/4] watchdog: da9052_wdt: respect TWDMIN Marcus Folkesson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox