* [PATCH 1/4] mfd: da9062: make register CONFIG_I writable
2026-09-23 11:17 [PATCH 0/4] da9062/da9061 watchdog timeout mode Primoz Fiser
@ 2026-09-23 11:17 ` Primoz Fiser
2026-09-23 11:25 ` sashiko-bot
2026-09-23 11:17 ` [PATCH 2/4] mfd: da9061: " Primoz Fiser
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Primoz Fiser @ 2026-09-23 11:17 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, Guenter Roeck
Cc: devicetree, imx, linux-arm-kernel, linux-kernel, mfd,
linux-watchdog, upstream, andrej.picej
From: Stefan Christ <s.christ@phytec.de>
Make the config register CONFIG_I writable to change the watchdog mode.
Signed-off-by: Stefan Christ <s.christ@phytec.de>
Signed-off-by: Andrej Picej <andrej.picej@norik.com>
Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
---
drivers/mfd/da9062-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c
index ad198183aff7..32dd24483ee0 100644
--- a/drivers/mfd/da9062-core.c
+++ b/drivers/mfd/da9062-core.c
@@ -531,7 +531,7 @@ static const struct regmap_range da9062_aa_writeable_ranges[] = {
regmap_reg_range(DA9062AA_VBUCK3_B, DA9062AA_VBUCK3_B),
regmap_reg_range(DA9062AA_VLDO1_B, DA9062AA_VLDO4_B),
regmap_reg_range(DA9062AA_BBAT_CONT, DA9062AA_BBAT_CONT),
- regmap_reg_range(DA9062AA_CONFIG_J, DA9062AA_CONFIG_J),
+ regmap_reg_range(DA9062AA_CONFIG_I, DA9062AA_CONFIG_J),
regmap_reg_range(DA9062AA_GP_ID_0, DA9062AA_GP_ID_19),
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 2/4] mfd: da9061: make register CONFIG_I writable
2026-09-23 11:17 [PATCH 0/4] da9062/da9061 watchdog timeout mode Primoz Fiser
2026-09-23 11:17 ` [PATCH 1/4] mfd: da9062: make register CONFIG_I writable Primoz Fiser
@ 2026-09-23 11:17 ` Primoz Fiser
2026-09-23 11:23 ` sashiko-bot
2026-09-23 11:17 ` [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout Primoz Fiser
2026-09-23 11:17 ` [PATCH 4/4] ARM: dts: imx6: phycore-som: set watchdog timeout mode to shutdown Primoz Fiser
3 siblings, 1 reply; 11+ messages in thread
From: Primoz Fiser @ 2026-09-23 11:17 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, Guenter Roeck
Cc: devicetree, imx, linux-arm-kernel, linux-kernel, mfd,
linux-watchdog, upstream, andrej.picej
From: Andrej Picej <andrej.picej@norik.com>
Make the config register CONFIG_I writable to change the watchdog mode.
Signed-off-by: Andrej Picej <andrej.picej@norik.com>
Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Tested-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
---
drivers/mfd/da9062-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c
index 32dd24483ee0..c987e533824d 100644
--- a/drivers/mfd/da9062-core.c
+++ b/drivers/mfd/da9062-core.c
@@ -427,7 +427,7 @@ static const struct regmap_range da9061_aa_writeable_ranges[] = {
regmap_reg_range(DA9062AA_VBUCK1_B, DA9062AA_VBUCK4_B),
regmap_reg_range(DA9062AA_VBUCK3_B, DA9062AA_VBUCK3_B),
regmap_reg_range(DA9062AA_VLDO1_B, DA9062AA_VLDO4_B),
- regmap_reg_range(DA9062AA_CONFIG_J, DA9062AA_CONFIG_J),
+ regmap_reg_range(DA9062AA_CONFIG_I, DA9062AA_CONFIG_J),
regmap_reg_range(DA9062AA_GP_ID_0, DA9062AA_GP_ID_19),
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH 2/4] mfd: da9061: make register CONFIG_I writable
2026-09-23 11:17 ` [PATCH 2/4] mfd: da9061: " Primoz Fiser
@ 2026-09-23 11:23 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-09-23 11:23 UTC (permalink / raw)
To: Primoz Fiser
Cc: mfd, linux-watchdog, imx, devicetree, conor+dt, lee, robh,
Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] mfd: commit message description is not capitalized
--
commit 5997b5e9bac966d2caba888fc1dfee5d188e81e0
Author: Andrej Picej <andrej.picej@norik.com>
mfd: da9061: make register CONFIG_I writable
This commit makes the configuration register CONFIG_I writable to allow
changing the watchdog mode.
> mfd: da9061: make register CONFIG_I writable
[Severity: Low]
This isn't a bug, but the MFD subsystem guidelines explicitly require the
description after the subsystem prefix to be capitalized. Should the commit
message title be updated to "mfd: da9061: Make register CONFIG_I writable"
to ensure it follows the standard Git history categorization for this
subsystem?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923111719.2032012-1-primoz.fiser@norik.com?part=2
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout
2026-09-23 11:17 [PATCH 0/4] da9062/da9061 watchdog timeout mode Primoz Fiser
2026-09-23 11:17 ` [PATCH 1/4] mfd: da9062: make register CONFIG_I writable Primoz Fiser
2026-09-23 11:17 ` [PATCH 2/4] mfd: da9061: " Primoz Fiser
@ 2026-09-23 11:17 ` Primoz Fiser
2026-09-23 11:25 ` sashiko-bot
2026-09-23 21:01 ` Guenter Roeck
2026-09-23 11:17 ` [PATCH 4/4] ARM: dts: imx6: phycore-som: set watchdog timeout mode to shutdown Primoz Fiser
3 siblings, 2 replies; 11+ messages in thread
From: Primoz Fiser @ 2026-09-23 11:17 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, Guenter Roeck
Cc: devicetree, imx, linux-arm-kernel, linux-kernel, mfd,
linux-watchdog, upstream, andrej.picej
From: Andrej Picej <andrej.picej@norik.com>
Implement a method to change watchdog timeout configuration based on DT
binding ("dlg,wdt-sd"). There is a possibility to change the behaviour
of watchdog reset. Setting WATCHDOG_SD bit enables SHUTDOWN mode, and
clearing it enables POWERDOWN mode on watchdog timeout.
If no DT binding is specified the WATCHDOG_SD bit stays in default
configuration, not breaking behaviour of devices which might depend on
default fuse configuration.
Note: This patch requires that the config register CONFIG_I is
configured as writable in the da9061/2 multi function device.
Signed-off-by: Andrej Picej <andrej.picej@norik.com>
Tested-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
---
drivers/watchdog/da9062_wdt.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
index 3d7bf2f351db..7ceef8cd7425 100644
--- a/drivers/watchdog/da9062_wdt.c
+++ b/drivers/watchdog/da9062_wdt.c
@@ -204,8 +204,11 @@ static int da9062_wdt_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
unsigned int timeout;
+ unsigned int mask;
struct da9062 *chip;
struct da9062_watchdog *wdt;
+ int ret;
+ u32 val;
chip = dev_get_drvdata(dev->parent);
if (!chip)
@@ -245,6 +248,30 @@ static int da9062_wdt_probe(struct platform_device *pdev)
set_bit(WDOG_HW_RUNNING, &wdt->wdtdev.status);
}
+ /*
+ * Configure what happens on watchdog timeout. Can be specified with
+ * "dlg,wdt-sd" dt-binding (0 -> POWERDOWN, 1 -> SHUTDOWN).
+ * If "dlg,wdt-sd" dt-binding is NOT set use the default.
+ */
+ ret = device_property_read_u32(dev, "dlg,wdt-sd", &val);
+ if (!ret) {
+ if (val)
+ /* Use da9062's SHUTDOWN mode */
+ mask = DA9062AA_WATCHDOG_SD_MASK;
+ else
+ /* Use da9062's POWERDOWN mode. */
+ mask = 0x0;
+
+ ret = regmap_update_bits(wdt->hw->regmap,
+ DA9062AA_CONFIG_I,
+ DA9062AA_WATCHDOG_SD_MASK,
+ mask);
+
+ if (ret)
+ dev_err(dev, "failed to set wdt reset mode: %d\n",
+ ret);
+ }
+
return devm_watchdog_register_device(dev, &wdt->wdtdev);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout
2026-09-23 11:17 ` [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout Primoz Fiser
@ 2026-09-23 11:25 ` sashiko-bot
2026-09-23 21:01 ` Guenter Roeck
1 sibling, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-09-23 11:25 UTC (permalink / raw)
To: Primoz Fiser
Cc: devicetree, mfd, lee, conor+dt, linux-watchdog, Frank.Li, imx,
robh
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] watchdog: da9062: ignored regmap_update_bits error during probe
--
commit bb521fc9765eec74ebb6a0d926ce1286dabd2490
Author: Andrej Picej <andrej.picej@norik.com>
watchdog: da9062: reset board on watchdog timeout
This commit introduces a method to change the watchdog timeout configuration
based on the "dlg,wdt-sd" DT binding in the da9062 watchdog driver. It allows
switching between SHUTDOWN mode and POWERDOWN mode on watchdog timeout. If
the DT binding is absent, it retains the default behavior.
> diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
> index 426962547df16..2a9da83493b38 100644
> --- a/drivers/watchdog/da9062_wdt.c
> +++ b/drivers/watchdog/da9062_wdt.c
[ ... ]
> @@ -245,6 +248,30 @@ static int da9062_wdt_probe(struct platform_device *pdev)
[ ... ]
> + ret = regmap_update_bits(wdt->hw->regmap,
> + DA9062AA_CONFIG_I,
> + DA9062AA_WATCHDOG_SD_MASK,
> + mask);
> +
> + if (ret)
> + dev_err(dev, "failed to set wdt reset mode: %d\n",
> + ret);
> + }
> +
> return devm_watchdog_register_device(dev, &wdt->wdtdev);
[Severity: Medium]
Is the regmap_update_bits() error code intentionally ignored here?
When the device tree contains the "dlg,wdt-sd" property, da9062_wdt_probe()
attempts to update the DA9062AA_CONFIG_I register. If this transaction fails
(for example, returning -EIO due to a hardware fault), the failure is logged
via dev_err(), but the error code in 'ret' is then discarded because execution
falls through to devm_watchdog_register_device().
This could leave the watchdog in an incorrect reset mode that conflicts with
the explicit configuration requested by the device tree. Should the function
return 'ret' early upon failure, instead of continuing probe?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923111719.2032012-1-primoz.fiser@norik.com?part=3
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout
2026-09-23 11:17 ` [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout Primoz Fiser
2026-09-23 11:25 ` sashiko-bot
@ 2026-09-23 21:01 ` Guenter Roeck
2026-09-23 21:03 ` Guenter Roeck
1 sibling, 1 reply; 11+ messages in thread
From: Guenter Roeck @ 2026-09-23 21:01 UTC (permalink / raw)
To: Primoz Fiser
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, devicetree, imx,
linux-arm-kernel, linux-kernel, mfd, linux-watchdog, upstream,
andrej.picej
On Wed, Sep 23, 2026 at 01:17:18PM +0200, Primoz Fiser wrote:
> From: Andrej Picej <andrej.picej@norik.com>
>
> Implement a method to change watchdog timeout configuration based on DT
> binding ("dlg,wdt-sd"). There is a possibility to change the behaviour
> of watchdog reset. Setting WATCHDOG_SD bit enables SHUTDOWN mode, and
> clearing it enables POWERDOWN mode on watchdog timeout.
>
> If no DT binding is specified the WATCHDOG_SD bit stays in default
> configuration, not breaking behaviour of devices which might depend on
> default fuse configuration.
>
> Note: This patch requires that the config register CONFIG_I is
> configured as writable in the da9061/2 multi function device.
>
Please reword to something like:
Implement a method to change watchdog timeout configuration based on the
"dlg,wdt-sd" devicetree property. Setting the WATCHDOG_SD bit enables
SHUTDOWN mode, and clearing it enables POWERDOWN mode on watchdog timeout.
If no devicetree property is specified, the WATCHDOG_SD bit stays in default
configuration, not breaking behaviour of devices which might depend on
default fuse configuration.
Specifically, "There is a possibility ..." should not be part of the
description at all, and "Note:" should not be part of the description
and be moved below "---".
> Signed-off-by: Andrej Picej <andrej.picej@norik.com>
> Tested-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
> Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
> Acked-by: Guenter Roeck <linux@roeck-us.net>
> Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
> ---
> drivers/watchdog/da9062_wdt.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
> index 3d7bf2f351db..7ceef8cd7425 100644
> --- a/drivers/watchdog/da9062_wdt.c
> +++ b/drivers/watchdog/da9062_wdt.c
> @@ -204,8 +204,11 @@ static int da9062_wdt_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> unsigned int timeout;
> + unsigned int mask;
> struct da9062 *chip;
> struct da9062_watchdog *wdt;
> + int ret;
> + u32 val;
>
> chip = dev_get_drvdata(dev->parent);
> if (!chip)
> @@ -245,6 +248,30 @@ static int da9062_wdt_probe(struct platform_device *pdev)
> set_bit(WDOG_HW_RUNNING, &wdt->wdtdev.status);
> }
>
> + /*
> + * Configure what happens on watchdog timeout. Can be specified with
> + * "dlg,wdt-sd" dt-binding (0 -> POWERDOWN, 1 -> SHUTDOWN).
> + * If "dlg,wdt-sd" dt-binding is NOT set use the default.
This is not really what he code below does.
It sets the mode to shutdown if val is != 0, not if it is 1.
> + */
> + ret = device_property_read_u32(dev, "dlg,wdt-sd", &val);
> + if (!ret) {
> + if (val)
> + /* Use da9062's SHUTDOWN mode */
> + mask = DA9062AA_WATCHDOG_SD_MASK;
> + else
> + /* Use da9062's POWERDOWN mode. */
> + mask = 0x0;
> +
> + ret = regmap_update_bits(wdt->hw->regmap,
> + DA9062AA_CONFIG_I,
> + DA9062AA_WATCHDOG_SD_MASK,
> + mask);
CHECK: Alignment should match open parenthesis
#157: FILE: drivers/watchdog/da9062_wdt.c:266:
+ ret = regmap_update_bits(wdt->hw->regmap,
+ DA9062AA_CONFIG_I,
Also, this does not require an additional variable.
ret = regmap_update_bits(wdt->hw->regmap,
DA9062AA_CONFIG_I,
DA9062AA_WATCHDOG_SD_MASK,
val ? DA9062AA_WATCHDOG_SD_MASK : 0);
> +
> + if (ret)
> + dev_err(dev, "failed to set wdt reset mode: %d\n",
> + ret);
return dev_err_probe(dev, ret,
"failed to set wdt reset mode\n");
Thanks,
Guenter
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout
2026-09-23 21:01 ` Guenter Roeck
@ 2026-09-23 21:03 ` Guenter Roeck
0 siblings, 0 replies; 11+ messages in thread
From: Guenter Roeck @ 2026-09-23 21:03 UTC (permalink / raw)
To: Primoz Fiser
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, devicetree, imx,
linux-arm-kernel, linux-kernel, mfd, linux-watchdog, upstream,
andrej.picej
On Wed, Sep 23, 2026 at 02:01:03PM -0700, Guenter Roeck wrote:
> On Wed, Sep 23, 2026 at 01:17:18PM +0200, Primoz Fiser wrote:
> > From: Andrej Picej <andrej.picej@norik.com>
> >
> > Implement a method to change watchdog timeout configuration based on DT
> > binding ("dlg,wdt-sd"). There is a possibility to change the behaviour
> > of watchdog reset. Setting WATCHDOG_SD bit enables SHUTDOWN mode, and
> > clearing it enables POWERDOWN mode on watchdog timeout.
> >
> > If no DT binding is specified the WATCHDOG_SD bit stays in default
> > configuration, not breaking behaviour of devices which might depend on
> > default fuse configuration.
> >
> > Note: This patch requires that the config register CONFIG_I is
> > configured as writable in the da9061/2 multi function device.
> >
>
> Please reword to something like:
>
> Implement a method to change watchdog timeout configuration based on the
> "dlg,wdt-sd" devicetree property. Setting the WATCHDOG_SD bit enables
> SHUTDOWN mode, and clearing it enables POWERDOWN mode on watchdog timeout.
>
> If no devicetree property is specified, the WATCHDOG_SD bit stays in default
> configuration, not breaking behaviour of devices which might depend on
> default fuse configuration.
>
> Specifically, "There is a possibility ..." should not be part of the
> description at all, and "Note:" should not be part of the description
> and be moved below "---".
>
Also, the subject is wrong. The patch does not "reset board on watchdog
timeout", it implements support for "dlg,wdt-sd".
Guenter
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/4] ARM: dts: imx6: phycore-som: set watchdog timeout mode to shutdown
2026-09-23 11:17 [PATCH 0/4] da9062/da9061 watchdog timeout mode Primoz Fiser
` (2 preceding siblings ...)
2026-09-23 11:17 ` [PATCH 3/4] watchdog: da9062: reset board on watchdog timeout Primoz Fiser
@ 2026-09-23 11:17 ` Primoz Fiser
2026-09-23 11:23 ` sashiko-bot
3 siblings, 1 reply; 11+ messages in thread
From: Primoz Fiser @ 2026-09-23 11:17 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Support Opensource, Lee Jones, Wim Van Sebroeck, Guenter Roeck
Cc: devicetree, imx, linux-arm-kernel, linux-kernel, mfd,
linux-watchdog, upstream, andrej.picej
From: Andrej Picej <andrej.picej@norik.com>
Enable system restart when the watchdog timeout occurs.
Signed-off-by: Andrej Picej <andrej.picej@norik.com>
Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
---
arch/arm/boot/dts/nxp/imx/imx6qdl-phytec-phycore-som.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/boot/dts/nxp/imx/imx6qdl-phytec-phycore-som.dtsi b/arch/arm/boot/dts/nxp/imx/imx6qdl-phytec-phycore-som.dtsi
index 85e278eb2016..ddbfecd591f5 100644
--- a/arch/arm/boot/dts/nxp/imx/imx6qdl-phytec-phycore-som.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/imx6qdl-phytec-phycore-som.dtsi
@@ -115,6 +115,7 @@ da9062_onkey: onkey {
watchdog {
compatible = "dlg,da9062-watchdog";
dlg,use-sw-pm;
+ dlg,wdt-sd = <1>;
};
thermal {
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread