Re: [PATCH 3/6] watchdog: da9062: reset board on watchdog timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/20/2017 12:43 AM, Michael Grzeschik wrote:
On Wed, Oct 18, 2017 at 02:28:10PM +0000, Steve Twiss wrote:
Hi Michael,

On 17 October 2017 16:30 Michael Grzeschik wrote:

To: linux-watchdog@xxxxxxxxxxxxxxx
Subject: [PATCH 3/6] watchdog: da9062: reset board on watchdog timeout

From: Stefan Christ <s.christ@xxxxxxxxx>

In the default fuse configuration the watchdog poweroffs the system
instead of resetting it on a watchdog timeout. This patch changes the
behavior. Now the board is reseted and reboots.

We call the chip's fuze configuration the "OTP" (one-time programming).


Note: This patch requires that the config register CONFIG_I is
configured as writable in the da9062 multi function device.

Signed-off-by: Stefan Christ <s.christ@xxxxxxxxx>
Signed-off-by: Christian Hemp <c.hemp@xxxxxxxxx>
---
  drivers/watchdog/da9062_wdt.c | 14 ++++++++++++++
  1 file changed, 14 insertions(+)

diff --git a/drivers/watchdog/da9062_wdt.c
b/drivers/watchdog/da9062_wdt.c
index 4349a02215489..b95719b349e5c 100644
--- a/drivers/watchdog/da9062_wdt.c
+++ b/drivers/watchdog/da9062_wdt.c
@@ -112,6 +112,20 @@ static int da9062_wdt_start(struct watchdog_device
*wdd)
  	unsigned int selector;
  	int ret;

+	/*
+	 * Use da9062's SHUTDOWN mode instead of POWERDOWN for watchdog reset.
+	 * On timeout the PMIC should reset the system, not powering it
+	 * off.
+	 */
+	ret = regmap_update_bits(wdt->hw->regmap,
+				 DA9062AA_CONFIG_I,
+				 DA9062AA_WATCHDOG_SD_MASK,
+				 DA9062AA_WATCHDOG_SD_MASK);
+	if (ret)
+		dev_err(wdt->hw->dev,
+			"failed to set wdt reset mode. Expect poweroff on watchdog reset: %d\n",
+			ret);
+

I am not quite understanding what you are trying to achieve.
It seems there could be be few different options here.

If the watchdog is running from power on and if the platform hangs early in the start-up
sequence, then waiting to set WATCHDOG_SD in the DA9062 watchdog driver could be
too late to modify the chip's behaviour. If the watchdog tripped early, the system might
already be in POWERDOWN instead of SHUTDOWN before this point.

Agreed.

If a software change to CONFIG_I is to be done, then this register could be modified very
early in the bootloader. If necessary, the Linux kernel driver can read the CONFIG_I register
and decide if it needs to modify its behaviour accordingly. In this case, write changes to
CONFIG_I would not be needed.

I will add that condition around it.

The trivial option (for software at least) could be a different OTP: to enforce
WATCHDOG_SD in the hardware.

That is one god point. I will have a look into that.

DA9062 Datasheet revision 3.4, 27-Jun-2017, page 59, Section 10.
A hyperlink to the latest datasheet can be found in the DA9062 binding file:
Documentation/devicetree/bindings/mfd/da9062.txt

On Page 59 of this document are only ordering informations.

It doesn't seem correct to make this a permanent change in the general Linux kernel driver.
At the very least, something like this sould be protected by a device tree boolean.

Agreed. I will think adopt your ideas.

Based on this exchange and since the CONFIG_I change is rejected, I'll drop this patch
from my queue for now.

Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux