summaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/imx_sc_wdt.c
diff options
context:
space:
mode:
authorAnson Huang <Anson.Huang@nxp.com>2019-10-09 09:37:47 +0200
committerWim Van Sebroeck <wim@linux-watchdog.org>2019-11-05 16:58:12 +0100
commit2c50a6b825b3463a7600d6e6acadba73211c3d2c (patch)
treeafb9fd63cd062d11ff8729c09abb5f9c725fbc01 /drivers/watchdog/imx_sc_wdt.c
parentwatchdog: meson: Fix the wrong value of left time (diff)
downloadlinux-2c50a6b825b3463a7600d6e6acadba73211c3d2c.tar.xz
linux-2c50a6b825b3463a7600d6e6acadba73211c3d2c.zip
watchdog: imx_sc_wdt: Pretimeout should follow SCU firmware format
SCU firmware calculates pretimeout based on current time stamp instead of watchdog timeout stamp, need to convert the pretimeout to SCU firmware's timeout value. Fixes: 15f7d7fc5542 ("watchdog: imx_sc: Add pretimeout support") Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Diffstat (limited to 'drivers/watchdog/imx_sc_wdt.c')
-rw-r--r--drivers/watchdog/imx_sc_wdt.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c
index 7ea5cf54e94a..8ed89f032ebf 100644
--- a/drivers/watchdog/imx_sc_wdt.c
+++ b/drivers/watchdog/imx_sc_wdt.c
@@ -99,8 +99,14 @@ static int imx_sc_wdt_set_pretimeout(struct watchdog_device *wdog,
{
struct arm_smccc_res res;
+ /*
+ * SCU firmware calculates pretimeout based on current time
+ * stamp instead of watchdog timeout stamp, need to convert
+ * the pretimeout to SCU firmware's timeout value.
+ */
arm_smccc_smc(IMX_SIP_TIMER, IMX_SIP_TIMER_SET_PRETIME_WDOG,
- pretimeout * 1000, 0, 0, 0, 0, 0, &res);
+ (wdog->timeout - pretimeout) * 1000, 0, 0, 0,
+ 0, 0, &res);
if (res.a0)
return -EACCES;