Message ID | 1562656725-21468-1-git-send-email-eugen.hristev@microchip.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [RESEND] watchdog: sama5d4: fix WDD value to be always set to max | expand |
On 7/9/19 12:26 AM, Eugen.Hristev@microchip.com wrote: > From: Eugen Hristev <eugen.hristev@microchip.com> > > WDD value must be always set to max (0xFFF) otherwise the hardware > block will reset the board on the first ping of the watchdog. > > Reviewed-by: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com> This patch is already in -next as of today. Guenter > --- > drivers/watchdog/sama5d4_wdt.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/watchdog/sama5d4_wdt.c b/drivers/watchdog/sama5d4_wdt.c > index b8da1bf..5afe10c 100644 > --- a/drivers/watchdog/sama5d4_wdt.c > +++ b/drivers/watchdog/sama5d4_wdt.c > @@ -110,9 +110,7 @@ static int sama5d4_wdt_set_timeout(struct watchdog_device *wdd, > u32 value = WDT_SEC2TICKS(timeout); > > wdt->mr &= ~AT91_WDT_WDV; > - wdt->mr &= ~AT91_WDT_WDD; > wdt->mr |= AT91_WDT_SET_WDV(value); > - wdt->mr |= AT91_WDT_SET_WDD(value); > > /* > * WDDIS has to be 0 when updating WDD/WDV. The datasheet states: When > @@ -248,7 +246,7 @@ static int sama5d4_wdt_probe(struct platform_device *pdev) > > timeout = WDT_SEC2TICKS(wdd->timeout); > > - wdt->mr |= AT91_WDT_SET_WDD(timeout); > + wdt->mr |= AT91_WDT_SET_WDD(WDT_SEC2TICKS(MAX_WDT_TIMEOUT)); > wdt->mr |= AT91_WDT_SET_WDV(timeout); > > ret = sama5d4_wdt_init(wdt); >
diff --git a/drivers/watchdog/sama5d4_wdt.c b/drivers/watchdog/sama5d4_wdt.c index b8da1bf..5afe10c 100644 --- a/drivers/watchdog/sama5d4_wdt.c +++ b/drivers/watchdog/sama5d4_wdt.c @@ -110,9 +110,7 @@ static int sama5d4_wdt_set_timeout(struct watchdog_device *wdd, u32 value = WDT_SEC2TICKS(timeout); wdt->mr &= ~AT91_WDT_WDV; - wdt->mr &= ~AT91_WDT_WDD; wdt->mr |= AT91_WDT_SET_WDV(value); - wdt->mr |= AT91_WDT_SET_WDD(value); /* * WDDIS has to be 0 when updating WDD/WDV. The datasheet states: When @@ -248,7 +246,7 @@ static int sama5d4_wdt_probe(struct platform_device *pdev) timeout = WDT_SEC2TICKS(wdd->timeout); - wdt->mr |= AT91_WDT_SET_WDD(timeout); + wdt->mr |= AT91_WDT_SET_WDD(WDT_SEC2TICKS(MAX_WDT_TIMEOUT)); wdt->mr |= AT91_WDT_SET_WDV(timeout); ret = sama5d4_wdt_init(wdt);