Commit 25b286c0 authored by Sylvain Lemieux's avatar Sylvain Lemieux Committed by Wim Van Sebroeck

watchdog: pnx4008: add support for soft reset

Add support for explicit soft reset using the reboot mode.

The default reboot mode behavior is unchanged;
you can overwrite the default reboot type in the board specific file
"DT_MACHINE_START" definition using the "reboot_mode" parameter.
Signed-off-by: default avatarSylvain Lemieux <slemieux@tycoint.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 4ed5443d
...@@ -129,9 +129,16 @@ static int pnx4008_wdt_set_timeout(struct watchdog_device *wdd, ...@@ -129,9 +129,16 @@ static int pnx4008_wdt_set_timeout(struct watchdog_device *wdd,
static int pnx4008_restart_handler(struct watchdog_device *wdd, static int pnx4008_restart_handler(struct watchdog_device *wdd,
unsigned long mode, void *cmd) unsigned long mode, void *cmd)
{ {
/* Instant assert of RESETOUT_N with pulse length 1mS */ if (mode == REBOOT_SOFT) {
writel(13000, WDTIM_PULSE(wdt_base)); /* Force match output active */
writel(M_RES2 | RESFRC1 | RESFRC2, WDTIM_MCTRL(wdt_base)); writel(EXT_MATCH0, WDTIM_EMR(wdt_base));
/* Internal reset on match output (RESOUT_N not asserted) */
writel(M_RES1, WDTIM_MCTRL(wdt_base));
} else {
/* Instant assert of RESETOUT_N with pulse length 1mS */
writel(13000, WDTIM_PULSE(wdt_base));
writel(M_RES2 | RESFRC1 | RESFRC2, WDTIM_MCTRL(wdt_base));
}
/* Wait for watchdog to reset system */ /* Wait for watchdog to reset system */
mdelay(1000); mdelay(1000);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment