On Wed, Jul 31, 2019 at 11:09 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > > On Wed, Jul 31, 2019 at 10:42:51AM -0700, Andrey Smirnov wrote: > > Reprogramming bootloader on watchdog MCU will result in reported > > default timeout value of "0". That in turn will be unnecesarily > > unnecessarily > > > rejected by the driver as invalid device (-ENODEV). Simplify probe to > > just read stored timeout value, clamp it to an acceptable range and > > program the value unconditionally to fix the above. > > > > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > > Cc: Chris Healy <cphealy@xxxxxxxxx> > > Cc: Guenter Roeck <linux@xxxxxxxxxxxx> > > Cc: Rick Ramstetter <rick@xxxxxxxxxxxxxxx> > > Cc: linux-watchdog@xxxxxxxxxxxxxxx > > Cc: linux-kernel@xxxxxxxxxxxxxxx > > --- > > drivers/watchdog/ziirave_wdt.c | 22 +++++++++------------- > > 1 file changed, 9 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/watchdog/ziirave_wdt.c b/drivers/watchdog/ziirave_wdt.c > > index 89ce6982ba53..33c8d2eadada 100644 > > --- a/drivers/watchdog/ziirave_wdt.c > > +++ b/drivers/watchdog/ziirave_wdt.c > > @@ -667,22 +667,18 @@ static int ziirave_wdt_probe(struct i2c_client *client, > > return val; > > } > > > > - if (val < ZIIRAVE_TIMEOUT_MIN) > > - return -ENODEV; > > - > > - w_priv->wdd.timeout = val; > > - } else { > > - ret = ziirave_wdt_set_timeout(&w_priv->wdd, > > - w_priv->wdd.timeout); > > - if (ret) { > > - dev_err(&client->dev, "Failed to set timeout\n"); > > - return ret; > > - } > > + w_priv->wdd.timeout = clamp(val, ZIIRAVE_TIMEOUT_MIN, > > + ZIIRAVE_TIMEOUT_MAX); > > Are you sure ? Effectively that will set the timeout to the minimum, > ie three seconds. It might be better to define and set some default. > Your call, of course. > It doesn't really matter in my use-case (set timeout is a no-op), but it sounds like a better approach, so I'll change it in v2. Thanks, Andrey Smirnov