Skip to content

Commit f43e6dd

Browse files
bijudasWim Van Sebroeck
authored andcommitted
watchdog: rzg2l_wdt: Use force reset for WDT reset
This patch uses the force reset(WDTRSTB) for triggering WDT reset for restart callback. This method(ie, Generate Reset (WDTRSTB) Signal on parity error)is faster compared to the overflow method for triggering watchdog reset. Overflow method: reboot: Restarting system Reboot failed -- System halted NOTICE: BL2: v2.5(release):v2.5/rzg2l-1.00-27-gf48f1440c Parity error method: reboot: Restarting system NOTICE: BL2: v2.5(release):v2.5/rzg2l-1.00-27-gf48f1440c Signed-off-by: Biju Das <[email protected]> Reviewed-by: Geert Uytterhoeven <[email protected]> Reviewed-by: Guenter Roeck <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Guenter Roeck <[email protected]> Signed-off-by: Wim Van Sebroeck <[email protected]>
1 parent baf1aac commit f43e6dd

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

drivers/watchdog/rzg2l_wdt.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
#define WDTSET 0x04
2222
#define WDTTIM 0x08
2323
#define WDTINT 0x0C
24+
#define PECR 0x10
25+
#define PEEN 0x14
2426
#define WDTCNT_WDTEN BIT(0)
2527
#define WDTINT_INTDISP BIT(0)
28+
#define PEEN_FORCE BIT(0)
2629

2730
#define WDT_DEFAULT_TIMEOUT 60U
2831

@@ -117,17 +120,14 @@ static int rzg2l_wdt_restart(struct watchdog_device *wdev,
117120
{
118121
struct rzg2l_wdt_priv *priv = watchdog_get_drvdata(wdev);
119122

120-
/* Reset the module before we modify any register */
121-
reset_control_reset(priv->rstc);
122-
123123
clk_prepare_enable(priv->pclk);
124124
clk_prepare_enable(priv->osc_clk);
125125

126-
/* smallest counter value to reboot soon */
127-
rzg2l_wdt_write(priv, WDTSET_COUNTER_VAL(1), WDTSET);
126+
/* Generate Reset (WDTRSTB) Signal on parity error */
127+
rzg2l_wdt_write(priv, 0, PECR);
128128

129-
/* Enable watchdog timer*/
130-
rzg2l_wdt_write(priv, WDTCNT_WDTEN, WDTCNT);
129+
/* Force parity error */
130+
rzg2l_wdt_write(priv, PEEN_FORCE, PEEN);
131131

132132
return 0;
133133
}

0 commit comments

Comments
 (0)