Re: [PATCH v2] watchdog: make DesignWare watchdog allow users to set bigger timeout value

From: Guenter Roeck
Date: Fri Nov 22 2019 - 00:39:16 EST


On 11/21/19 2:35 AM, Wang, Peng 1. (NSB - CN/Hangzhou) wrote:
From aabaa4b709bd451e566c906e8d1dca48f92f9b12 Mon Sep 17 00:00:00 2001
From: Peng Wang <peng.1.wang@xxxxxxxxxxxxxxx>
Date: Wed, 20 Nov 2019 15:12:59 +0800
Subject: [PATCH] watchdog: make DesignWare watchdog allow users to set bigger
timeout value

watchdog_dev.c provides means to allow users to set bigger timeout value
than HW can support, make DesignWare watchdog align with this.

---

v2 -> v1:
- use top_s to compare with wdd->max_hw_heartbeat_ms
- update wdd->timeout in case it's greater than HW supports
- fix comments error

v1: initial version

Signed-off-by: Peng Wang <peng.1.wang@xxxxxxxxxxxxxxx>

Sigh. I should have paid closer attention. Signed-off-by: has to be ahead of ---,

and the change log after it. The above format messes up everything.

Also, please run checkpatch and fix the problems it reports.

Sorry for not noticing it earlier. Please fix the problems and resubmit.

Thanks,

Guenter

---
drivers/watchdog/dw_wdt.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c
index fef7c61..12c116e 100644
--- a/drivers/watchdog/dw_wdt.c
+++ b/drivers/watchdog/dw_wdt.c
@@ -114,7 +114,15 @@ static int dw_wdt_set_timeout(struct watchdog_device *wdd, unsigned int top_s)
writel(top_val | top_val << WDOG_TIMEOUT_RANGE_TOPINIT_SHIFT,
dw_wdt->regs + WDOG_TIMEOUT_RANGE_REG_OFFSET);
- wdd->timeout = dw_wdt_top_in_seconds(dw_wdt, top_val);
+ /*
+ * In case users set bigger timeout value than HW can support,
+ * kernel(watchdog_dev.c) helps to feed watchdog before
+ * wdd->max_hw_heartbeat_ms
+ */
+ if ( top_s * 1000 <= wdd->max_hw_heartbeat_ms )
+ wdd->timeout = dw_wdt_top_in_seconds(dw_wdt, top_val);
+ else
+ wdd->timeout = top_s;
return 0;
}