• Home
  • Raw
  • Download

Lines Matching full:wdog

40 #define IMX2_WDT_WCR_WRE	BIT(3)		/* -> WDOG Reset Enable */
66 struct watchdog_device wdog; member
91 static int imx2_wdt_restart(struct watchdog_device *wdog, unsigned long action, in imx2_wdt_restart() argument
94 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_restart()
106 * Due to imx6q errata ERR004346 (WDOG: WDOG SRS bit requires to be in imx2_wdt_restart()
121 static inline void imx2_wdt_setup(struct watchdog_device *wdog) in imx2_wdt_setup() argument
123 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_setup()
132 /* Generate internal chip-level reset if WDOG times out */ in imx2_wdt_setup()
141 val |= WDOG_SEC_TO_COUNT(wdog->timeout); in imx2_wdt_setup()
159 static int imx2_wdt_ping(struct watchdog_device *wdog) in imx2_wdt_ping() argument
161 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_ping()
168 static void __imx2_wdt_set_timeout(struct watchdog_device *wdog, in __imx2_wdt_set_timeout() argument
171 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in __imx2_wdt_set_timeout()
177 static int imx2_wdt_set_timeout(struct watchdog_device *wdog, in imx2_wdt_set_timeout() argument
183 __imx2_wdt_set_timeout(wdog, actual); in imx2_wdt_set_timeout()
184 wdog->timeout = new_timeout; in imx2_wdt_set_timeout()
188 static int imx2_wdt_set_pretimeout(struct watchdog_device *wdog, in imx2_wdt_set_pretimeout() argument
191 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_set_pretimeout()
196 wdog->pretimeout = new_pretimeout; in imx2_wdt_set_pretimeout()
206 struct watchdog_device *wdog = wdog_arg; in imx2_wdt_isr() local
207 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_isr()
212 watchdog_notify_pretimeout(wdog); in imx2_wdt_isr()
217 static int imx2_wdt_start(struct watchdog_device *wdog) in imx2_wdt_start() argument
219 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_start()
222 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_start()
224 imx2_wdt_setup(wdog); in imx2_wdt_start()
226 set_bit(WDOG_HW_RUNNING, &wdog->status); in imx2_wdt_start()
228 return imx2_wdt_ping(wdog); in imx2_wdt_start()
256 struct watchdog_device *wdog; in imx2_wdt_probe() local
282 wdog = &wdev->wdog; in imx2_wdt_probe()
283 wdog->info = &imx2_wdt_info; in imx2_wdt_probe()
284 wdog->ops = &imx2_wdt_ops; in imx2_wdt_probe()
285 wdog->min_timeout = 1; in imx2_wdt_probe()
286 wdog->timeout = IMX2_WDT_DEFAULT_TIME; in imx2_wdt_probe()
287 wdog->max_hw_heartbeat_ms = IMX2_WDT_MAX_TIME * 1000; in imx2_wdt_probe()
288 wdog->parent = dev; in imx2_wdt_probe()
293 dev_name(dev), wdog)) in imx2_wdt_probe()
294 wdog->info = &imx2_wdt_pretimeout_info; in imx2_wdt_probe()
305 wdog->bootstatus = val & IMX2_WDT_WRSR_TOUT ? WDIOF_CARDRESET : 0; in imx2_wdt_probe()
309 platform_set_drvdata(pdev, wdog); in imx2_wdt_probe()
310 watchdog_set_drvdata(wdog, wdev); in imx2_wdt_probe()
311 watchdog_set_nowayout(wdog, nowayout); in imx2_wdt_probe()
312 watchdog_set_restart_priority(wdog, 128); in imx2_wdt_probe()
313 watchdog_init_timeout(wdog, timeout, dev); in imx2_wdt_probe()
316 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_probe()
317 set_bit(WDOG_HW_RUNNING, &wdog->status); in imx2_wdt_probe()
322 * down counter will pull down the #WDOG interrupt line for one clock in imx2_wdt_probe()
327 return devm_watchdog_register_device(dev, wdog); in imx2_wdt_probe()
332 struct watchdog_device *wdog = platform_get_drvdata(pdev); in imx2_wdt_shutdown() local
333 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_shutdown()
340 imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME); in imx2_wdt_shutdown()
341 imx2_wdt_ping(wdog); in imx2_wdt_shutdown()
349 struct watchdog_device *wdog = dev_get_drvdata(dev); in imx2_wdt_suspend() local
350 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_suspend()
355 * Don't update wdog->timeout, we'll restore the current value in imx2_wdt_suspend()
358 __imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME); in imx2_wdt_suspend()
359 imx2_wdt_ping(wdog); in imx2_wdt_suspend()
370 struct watchdog_device *wdog = dev_get_drvdata(dev); in imx2_wdt_resume() local
371 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_resume()
378 if (watchdog_active(wdog) && !imx2_wdt_is_running(wdev)) { in imx2_wdt_resume()
384 imx2_wdt_setup(wdog); in imx2_wdt_resume()
387 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_resume()
388 imx2_wdt_ping(wdog); in imx2_wdt_resume()