Lines Matching refs:wdog
66 struct watchdog_device wdog; member
111 static inline void imx2_wdt_setup(struct watchdog_device *wdog) in imx2_wdt_setup() argument
113 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_setup()
127 val |= WDOG_SEC_TO_COUNT(wdog->timeout); in imx2_wdt_setup()
145 static int imx2_wdt_ping(struct watchdog_device *wdog) in imx2_wdt_ping() argument
147 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_ping()
156 struct watchdog_device *wdog = (struct watchdog_device *)arg; in imx2_wdt_timer_ping() local
157 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_timer_ping()
160 imx2_wdt_ping(wdog); in imx2_wdt_timer_ping()
161 mod_timer(&wdev->timer, jiffies + wdog->timeout * HZ / 2); in imx2_wdt_timer_ping()
164 static int imx2_wdt_set_timeout(struct watchdog_device *wdog, in imx2_wdt_set_timeout() argument
167 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_set_timeout()
169 wdog->timeout = new_timeout; in imx2_wdt_set_timeout()
176 static int imx2_wdt_start(struct watchdog_device *wdog) in imx2_wdt_start() argument
178 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_start()
183 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_start()
185 imx2_wdt_setup(wdog); in imx2_wdt_start()
187 return imx2_wdt_ping(wdog); in imx2_wdt_start()
190 static int imx2_wdt_stop(struct watchdog_device *wdog) in imx2_wdt_stop() argument
196 imx2_wdt_timer_ping((unsigned long)wdog); in imx2_wdt_stop()
200 static inline void imx2_wdt_ping_if_active(struct watchdog_device *wdog) in imx2_wdt_ping_if_active() argument
202 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_ping_if_active()
205 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_ping_if_active()
206 imx2_wdt_timer_ping((unsigned long)wdog); in imx2_wdt_ping_if_active()
228 struct watchdog_device *wdog; in imx2_wdt_probe() local
256 wdog = &wdev->wdog; in imx2_wdt_probe()
257 wdog->info = &imx2_wdt_info; in imx2_wdt_probe()
258 wdog->ops = &imx2_wdt_ops; in imx2_wdt_probe()
259 wdog->min_timeout = 1; in imx2_wdt_probe()
260 wdog->max_timeout = IMX2_WDT_MAX_TIME; in imx2_wdt_probe()
261 wdog->parent = &pdev->dev; in imx2_wdt_probe()
268 wdog->bootstatus = val & IMX2_WDT_WRSR_TOUT ? WDIOF_CARDRESET : 0; in imx2_wdt_probe()
270 wdog->timeout = clamp_t(unsigned, timeout, 1, IMX2_WDT_MAX_TIME); in imx2_wdt_probe()
271 if (wdog->timeout != timeout) in imx2_wdt_probe()
273 timeout, wdog->timeout); in imx2_wdt_probe()
275 platform_set_drvdata(pdev, wdog); in imx2_wdt_probe()
276 watchdog_set_drvdata(wdog, wdev); in imx2_wdt_probe()
277 watchdog_set_nowayout(wdog, nowayout); in imx2_wdt_probe()
278 watchdog_init_timeout(wdog, timeout, &pdev->dev); in imx2_wdt_probe()
280 setup_timer(&wdev->timer, imx2_wdt_timer_ping, (unsigned long)wdog); in imx2_wdt_probe()
282 imx2_wdt_ping_if_active(wdog); in imx2_wdt_probe()
291 ret = watchdog_register_device(wdog); in imx2_wdt_probe()
304 wdog->timeout, nowayout); in imx2_wdt_probe()
315 struct watchdog_device *wdog = platform_get_drvdata(pdev); in imx2_wdt_remove() local
316 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_remove()
320 watchdog_unregister_device(wdog); in imx2_wdt_remove()
324 imx2_wdt_ping(wdog); in imx2_wdt_remove()
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()
341 imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME); in imx2_wdt_shutdown()
342 imx2_wdt_ping(wdog); in imx2_wdt_shutdown()
351 struct watchdog_device *wdog = dev_get_drvdata(dev); in imx2_wdt_suspend() local
352 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_suspend()
356 imx2_wdt_set_timeout(wdog, IMX2_WDT_MAX_TIME); in imx2_wdt_suspend()
357 imx2_wdt_ping(wdog); in imx2_wdt_suspend()
360 if (!watchdog_active(wdog)) in imx2_wdt_suspend()
372 struct watchdog_device *wdog = dev_get_drvdata(dev); in imx2_wdt_resume() local
373 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_resume()
380 if (watchdog_active(wdog) && !imx2_wdt_is_running(wdev)) { in imx2_wdt_resume()
386 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()
391 imx2_wdt_set_timeout(wdog, wdog->timeout); in imx2_wdt_resume()
392 imx2_wdt_ping(wdog); in imx2_wdt_resume()
397 if (!watchdog_active(wdog)) in imx2_wdt_resume()
399 jiffies + wdog->timeout * HZ / 2); in imx2_wdt_resume()