Re: [PATCH v3 2/4] watchdog: da9062: reset board on watchdog timeout

From: Andrej Picej
Date: Thu Dec 02 2021 - 03:34:40 EST




On 1. 12. 21 22:26, Guenter Roeck wrote:
On 12/1/21 12:15 AM, Andrej Picej wrote:
Implement a method to change watchdog timeout configuration based on DT
binding ("dlg,wdt-sd"). There is a possibility to change the bahaviour
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 da9062 multi function device.

Signed-off-by: Andrej Picej <andrej.picej@xxxxxxxxx>
---
Changes in v3:
  - no changes

Changes in v2:
  - don't force the "reset" for all da9062-watchdog users, instead add DT
    binding where the behavior can be selected
---
  drivers/watchdog/da9062_wdt.c | 25 +++++++++++++++++++++++++
  1 file changed, 25 insertions(+)

diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
index f02cbd530538..e342e9e50cb1 100644
--- a/drivers/watchdog/da9062_wdt.c
+++ b/drivers/watchdog/da9062_wdt.c
@@ -85,8 +85,33 @@ static int da9062_wdt_start(struct watchdog_device *wdd)
  {
      struct da9062_watchdog *wdt = watchdog_get_drvdata(wdd);
      unsigned int selector;
+    unsigned int mask;
+    u32 val;
      int ret;
+    /* 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.
+     */

Please use standard multi-line comments. This is not the networking
subsystem.

Also, if you think this code should be here and not in the probe function,
as suggested by Adam, please provide a rationale.


I will fix the multi-line comment, move this code to probe and
submit the changes in the next patch version.

Thanks,
Andrej