Commit 25b286c02defa26b136818b17909789102225aa8

Authored by Sylvain Lemieux
Committed by Wim Van Sebroeck
1 parent 4ed5443d91

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: Sylvain Lemieux <slemieux@tycoint.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>

Showing 1 changed file with 10 additions and 3 deletions Side-by-side Diff

drivers/watchdog/pnx4008_wdt.c
... ... @@ -129,9 +129,16 @@
129 129 static int pnx4008_restart_handler(struct watchdog_device *wdd,
130 130 unsigned long mode, void *cmd)
131 131 {
132   - /* Instant assert of RESETOUT_N with pulse length 1mS */
133   - writel(13000, WDTIM_PULSE(wdt_base));
134   - writel(M_RES2 | RESFRC1 | RESFRC2, WDTIM_MCTRL(wdt_base));
  132 + if (mode == REBOOT_SOFT) {
  133 + /* Force match output active */
  134 + writel(EXT_MATCH0, WDTIM_EMR(wdt_base));
  135 + /* Internal reset on match output (RESOUT_N not asserted) */
  136 + writel(M_RES1, WDTIM_MCTRL(wdt_base));
  137 + } else {
  138 + /* Instant assert of RESETOUT_N with pulse length 1mS */
  139 + writel(13000, WDTIM_PULSE(wdt_base));
  140 + writel(M_RES2 | RESFRC1 | RESFRC2, WDTIM_MCTRL(wdt_base));
  141 + }
135 142  
136 143 /* Wait for watchdog to reset system */
137 144 mdelay(1000);