Message ID | 1570606667-16729-1-git-send-email-Anson.Huang@nxp.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 2c50a6b825b3463a7600d6e6acadba73211c3d2c |
Headers | show |
Series | watchdog: imx_sc_wdt: Pretimeout should follow SCU firmware format | expand |
On 10/9/19 12:37 AM, Anson Huang wrote: > 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> > --- > drivers/watchdog/imx_sc_wdt.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c > index 7ea5cf5..8ed89f0 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; > >
diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c index 7ea5cf5..8ed89f0 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;
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> --- drivers/watchdog/imx_sc_wdt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)