fix npcm845 watchdog halt for reset function and expire function.
reset function is restart wdt.

Signed-off-by: Jim Liu <jjl...@nuvoton.com>

Changes for v2:
   - add commit message
   - fix no empty line problem
   - remove dts
---
 drivers/watchdog/npcm_wdt.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/watchdog/npcm_wdt.c b/drivers/watchdog/npcm_wdt.c
index e56aa0ebe1..22d7fc45dd 100644
--- a/drivers/watchdog/npcm_wdt.c
+++ b/drivers/watchdog/npcm_wdt.c
@@ -70,14 +70,21 @@ static int npcm_wdt_reset(struct udevice *dev)
 {
        struct npcm_wdt_priv *priv = dev_get_priv(dev);
 
-       writel(NPCM_WTR | NPCM_WTRE | NPCM_WTE, priv->regs);
+       u32 val;
+
+       val = readl(priv->regs);
+       writel(val | NPCM_WTR, priv->regs);
 
        return 0;
 }
 
 static int npcm_wdt_expire_now(struct udevice *dev, ulong flags)
 {
-       return npcm_wdt_reset(dev);
+       struct npcm_wdt_priv *priv = dev_get_priv(dev);
+
+       writel(NPCM_WTR | NPCM_WTRE | NPCM_WTE, priv->regs);
+
+       return 0;
 }
 
 static int npcm_wdt_of_to_plat(struct udevice *dev)
-- 
2.25.1

Reply via email to