Commit 25b286c02defa26b136818b17909789102225aa8
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); |