[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251229145000.421426-2-nandor.han@gehealthcare.com>
Date: Mon, 29 Dec 2025 16:49:59 +0200
From: Nandor Han <nandor.han@...ealthcare.com>
To: wim@...ux-watchdog.org,
linux@...ck-us.net,
robh@...nel.org,
krzk+dt@...nel.org,
conor+dt@...nel.org,
shawnguo@...nel.org,
s.hauer@...gutronix.de
Cc: kernel@...gutronix.de,
festevam@...il.com,
nandor.han@...ealthcare.com,
linux-watchdog@...r.kernel.org,
devicetree@...r.kernel.org,
imx@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: [PATCH 1/2] watchdog: imx2_wdt: Allow to continue in low power mode
By default, the driver suspends the watchdog in low power modes (STOP
and DOZE). In some situations this is not desired.
Add the possibility to configure the continuation of the watchdog timer
in the above mentioned low power modes.
Note:
Please be advised that the difference between the variable name and the
device tree option has been intentionally selected to uphold the
prevailing driver functionality. This ensures that the watchdog remains
suspended by default in low power mode, while also facilitating a clear
and intelligible device tree option name.
Signed-off-by: Nandor Han <nandor.han@...ealthcare.com>
---
drivers/watchdog/imx2_wdt.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
index 4b3a192ee3e8..6e837cfc3c5a 100644
--- a/drivers/watchdog/imx2_wdt.c
+++ b/drivers/watchdog/imx2_wdt.c
@@ -71,6 +71,7 @@ struct imx2_wdt_device {
struct watchdog_device wdog;
const struct imx2_wdt_data *data;
bool ext_reset;
+ bool wdt_suspend_in_low_power;
bool clk_is_on;
bool no_ping;
bool sleep_wait;
@@ -135,7 +136,8 @@ static inline void imx2_wdt_setup(struct watchdog_device *wdog)
regmap_read(wdev->regmap, IMX2_WDT_WCR, &val);
/* Suspend timer in low power mode, write once-only */
- val |= IMX2_WDT_WCR_WDZST;
+ if (wdev->wdt_suspend_in_low_power)
+ val |= IMX2_WDT_WCR_WDZST;
/* Suspend timer in low power WAIT mode, write once-only */
if (wdev->sleep_wait)
val |= IMX2_WDT_WCR_WDW;
@@ -326,6 +328,9 @@ static int __init imx2_wdt_probe(struct platform_device *pdev)
wdev->ext_reset = of_property_read_bool(dev->of_node,
"fsl,ext-reset-output");
+ wdev->wdt_suspend_in_low_power = !of_property_read_bool(dev->of_node,
+ "fsl,wdt-continue-in-low-power");
+
if (of_property_read_bool(dev->of_node, "fsl,suspend-in-wait")) {
if (!wdev->data->wdw_supported) {
dev_err(dev, "suspend-in-wait not supported\n");
--
2.39.5
Powered by blists - more mailing lists