On 05/04/2018 10:11 PM, Guenter Roeck wrote: > On 05/03/2018 11:05 PM, Jongsung Kim wrote: >> Add restart handler for SP805 watchdog so that the driver can be >> used to reboot the system. >> >> Signed-off-by: Jongsung Kim <neidhard.kim@xxxxxxx> >> Cc: Guenter Roeck <linux@xxxxxxxxxxxx> > > Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > >> --- > > For future patches: change log goes here, please. > > Thanks, > Guenter Thank you for your review and kind comments. JS > >> drivers/watchdog/sp805_wdt.c | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c >> index 03805bc..9849db0 100644 >> --- a/drivers/watchdog/sp805_wdt.c >> +++ b/drivers/watchdog/sp805_wdt.c >> @@ -121,6 +121,18 @@ static unsigned int wdt_timeleft(struct watchdog_device *wdd) >> return div_u64(load, rate); >> } >> +static int >> +wdt_restart(struct watchdog_device *wdd, unsigned long mode, void *cmd) >> +{ >> + struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); >> + >> + writel_relaxed(0, wdt->base + WDTCONTROL); >> + writel_relaxed(0, wdt->base + WDTLOAD); >> + writel_relaxed(INT_ENABLE | RESET_ENABLE, wdt->base + WDTCONTROL); >> + >> + return 0; >> +} >> + >> static int wdt_config(struct watchdog_device *wdd, bool ping) >> { >> struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); >> @@ -197,6 +209,7 @@ static const struct watchdog_ops wdt_ops = { >> .ping = wdt_ping, >> .set_timeout = wdt_setload, >> .get_timeleft = wdt_timeleft, >> + .restart = wdt_restart, >> }; >> static int >> @@ -230,6 +243,7 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) >> spin_lock_init(&wdt->lock); >> watchdog_set_nowayout(&wdt->wdd, nowayout); >> watchdog_set_drvdata(&wdt->wdd, wdt); >> + watchdog_set_restart_priority(&wdt->wdd, 128); >> wdt_setload(&wdt->wdd, DEFAULT_TIMEOUT); >> ret = watchdog_register_device(&wdt->wdd); >> > > -- To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html