@@ -21,8 +21,11 @@
#define WDTSET 0x04
#define WDTTIM 0x08
#define WDTINT 0x0C
+#define PECR 0x10
+#define PEEN 0x14
#define WDTCNT_WDTEN BIT(0)
#define WDTINT_INTDISP BIT(0)
+#define PEEN_FORCE_RST BIT(0)
#define WDT_DEFAULT_TIMEOUT 60U
@@ -130,22 +133,12 @@ static int rzg2l_wdt_restart(struct watchdog_device *wdev,
unsigned long action, void *data)
{
struct rzg2l_wdt_priv *priv = watchdog_get_drvdata(wdev);
- int ret;
- /* Reset the module before we modify any register */
- ret = reset_control_reset(priv->rstc);
- if (ret) {
- dev_err(wdev->parent, "failed to reset");
- return ret;
- }
+ /* Generate Reset (WDTRSTB) Signal */
+ rzg2l_wdt_write(priv, 0, PECR);
- pm_runtime_get_sync(wdev->parent);
-
- /* smallest counter value to reboot soon */
- rzg2l_wdt_write(priv, WDTSET_COUNTER_VAL(1), WDTSET);
-
- /* Enable watchdog timer*/
- rzg2l_wdt_write(priv, WDTCNT_WDTEN, WDTCNT);
+ /* Force reset (WDTRSTB) */
+ rzg2l_wdt_write(priv, PEEN_FORCE_RST, PEEN);
return 0;
}
This patch fixes the message "Reboot failed -- System halted" by triggering WDT reset by enabling force reset(WDTRSTB). Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> --- drivers/watchdog/rzg2l_wdt.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-)