On Tue, Sep 21, 2021 at 01:29:00PM +0300, Mika Westerberg wrote: > The watchdog core can handle pinging of the watchdog before userspace > opens the device. For this reason instead of stopping the timer, just > mark it as running and let the watchdog core take care of it. > > Cc: Malin Jonsson <malin.jonsson@xxxxxxxxxxxx> > Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > Changes from v1: > > - Only set the WDOG_HW_RUNNING flag. > > drivers/watchdog/iTCO_wdt.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c > index 643c6c2d0b72..a0e8ad3901a4 100644 > --- a/drivers/watchdog/iTCO_wdt.c > +++ b/drivers/watchdog/iTCO_wdt.c > @@ -430,6 +430,16 @@ static unsigned int iTCO_wdt_get_timeleft(struct watchdog_device *wd_dev) > return time_left; > } > > +static void iTCO_wdt_set_running(struct iTCO_wdt_private *p) > +{ > + u16 val; > + > + /* Bit 11: TCO Timer Halt -> 0 = The TCO timer is * enabled */ > + val = inw(TCO1_CNT(p)); > + if (!(val & BIT(11))) > + set_bit(WDOG_HW_RUNNING, &p->wddev.status); > +} > + > /* > * Kernel Interfaces > */ > @@ -572,8 +582,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev) > watchdog_set_drvdata(&p->wddev, p); > platform_set_drvdata(pdev, p); > > - /* Make sure the watchdog is not running */ > - iTCO_wdt_stop(&p->wddev); > + iTCO_wdt_set_running(p); > > /* Check that the heartbeat value is within it's range; > if not reset to the default */ > -- > 2.33.0 >