Lines Matching refs:wdt

83 static int imx7ulp_wdt_wait_rcs(struct imx7ulp_wdt_device *wdt)
86 u32 val = readl(wdt->base + WDOG_CS);
93 readl_poll_timeout(wdt->base + WDOG_CS, val, val & WDOG_CS_RCS, 100,
98 if (wdt->post_rcs_wait)
104 static int _imx7ulp_wdt_enable(struct imx7ulp_wdt_device *wdt, bool enable)
106 u32 val = readl(wdt->base + WDOG_CS);
110 writel(UNLOCK, wdt->base + WDOG_CNT);
111 ret = imx7ulp_wdt_wait_ulk(wdt->base);
115 writel(val | WDOG_CS_EN, wdt->base + WDOG_CS);
117 writel(val & ~WDOG_CS_EN, wdt->base + WDOG_CS);
120 ret = imx7ulp_wdt_wait_rcs(wdt);
131 struct imx7ulp_wdt_device *wdt = watchdog_get_drvdata(wdog);
137 ret = _imx7ulp_wdt_enable(wdt, enable);
138 val = readl(wdt->base + WDOG_CS);
149 struct imx7ulp_wdt_device *wdt = watchdog_get_drvdata(wdog);
151 writel(REFRESH, wdt->base + WDOG_CNT);
166 static int _imx7ulp_wdt_set_timeout(struct imx7ulp_wdt_device *wdt,
172 writel(UNLOCK, wdt->base + WDOG_CNT);
173 ret = imx7ulp_wdt_wait_ulk(wdt->base);
176 writel(toval, wdt->base + WDOG_TOVAL);
178 ret = imx7ulp_wdt_wait_rcs(wdt);
189 struct imx7ulp_wdt_device *wdt = watchdog_get_drvdata(wdog);
190 u32 toval = wdt->hw->wdog_clock_rate * timeout;
196 ret = _imx7ulp_wdt_set_timeout(wdt, toval);
197 val = readl(wdt->base + WDOG_TOVAL);
210 struct imx7ulp_wdt_device *wdt = watchdog_get_drvdata(wdog);
217 ret = imx7ulp_wdt_set_timeout(&wdt->wdd, 1);
243 static int _imx7ulp_wdt_init(struct imx7ulp_wdt_device *wdt, unsigned int timeout, unsigned int cs)
250 val = readl(wdt->base + WDOG_CS);
252 writel(UNLOCK, wdt->base + WDOG_CNT);
256 writel_relaxed(UNLOCK_SEQ0, wdt->base + WDOG_CNT);
257 writel_relaxed(UNLOCK_SEQ1, wdt->base + WDOG_CNT);
261 ret = imx7ulp_wdt_wait_ulk(wdt->base);
266 writel(timeout, wdt->base + WDOG_TOVAL);
267 writel(cs, wdt->base + WDOG_CS);
269 ret = imx7ulp_wdt_wait_rcs(wdt);
278 static int imx7ulp_wdt_init(struct imx7ulp_wdt_device *wdt, unsigned int timeout)
287 if (wdt->hw->prescaler_enable)
290 if (wdt->ext_reset)
294 ret = _imx7ulp_wdt_init(wdt, timeout, val);
295 toval = readl(wdt->base + WDOG_TOVAL);
296 cs = readl(wdt->base + WDOG_CS);
334 "fsl,imx8ulp-wdt")) {
335 dev_info(dev, "imx8ulp wdt probe\n");
338 dev_info(dev, "imx7ulp wdt probe\n");
409 { .compatible = "fsl,imx8ulp-wdt", .data = &imx7ulp_wdt_hw, },
410 { .compatible = "fsl,imx7ulp-wdt", .data = &imx7ulp_wdt_hw, },
411 { .compatible = "fsl,imx93-wdt", .data = &imx93_wdt_hw, },
419 .name = "imx7ulp-wdt",