watchdog: imx7ulp: Watchdog should continue running for wait/stop mode
authorAnson Huang <Anson.Huang@nxp.com>
Thu, 30 Jul 2020 23:03:33 +0000 (07:03 +0800)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Wed, 14 Oct 2020 13:02:26 +0000 (15:02 +0200)
When kernel idle, system will enter wait/stop mode, wdog should continue
running in this scenario, and the refresh thread can wake up system from
wait/stop mode.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/1596150213-31638-2-git-send-email-Anson.Huang@nxp.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/imx7ulp_wdt.c

index badfc0b..922b603 100644 (file)
@@ -22,6 +22,8 @@
 #define WDOG_CS_CLK            (LPO_CLK << LPO_CLK_SHIFT)
 #define WDOG_CS_EN             BIT(7)
 #define WDOG_CS_UPDATE         BIT(5)
+#define WDOG_CS_WAIT           BIT(1)
+#define WDOG_CS_STOP           BIT(0)
 
 #define WDOG_CNT       0x4
 #define WDOG_TOVAL     0x8
@@ -187,7 +189,8 @@ static int imx7ulp_wdt_init(void __iomem *base, unsigned int timeout)
        /* set an initial timeout value in TOVAL */
        writel(timeout, base + WDOG_TOVAL);
        /* enable 32bit command sequence and reconfigure */
-       val = WDOG_CS_CMD32EN | WDOG_CS_CLK | WDOG_CS_UPDATE;
+       val = WDOG_CS_CMD32EN | WDOG_CS_CLK | WDOG_CS_UPDATE |
+             WDOG_CS_WAIT | WDOG_CS_STOP;
        writel(val, base + WDOG_CS);
        imx7ulp_wdt_wait(base, WDOG_CS_RCS);