Lines Matching refs:wdt_dev
72 struct watchdog_device wdt_dev; member
223 static int mtk_wdt_restart(struct watchdog_device *wdt_dev, in mtk_wdt_restart() argument
226 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_restart()
239 static int mtk_wdt_ping(struct watchdog_device *wdt_dev) in mtk_wdt_ping() argument
241 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_ping()
249 static int mtk_wdt_set_timeout(struct watchdog_device *wdt_dev, in mtk_wdt_set_timeout() argument
252 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_set_timeout()
256 wdt_dev->timeout = timeout; in mtk_wdt_set_timeout()
261 if (wdt_dev->pretimeout) in mtk_wdt_set_timeout()
262 wdt_dev->pretimeout = timeout / 2; in mtk_wdt_set_timeout()
268 reg = WDT_LENGTH_TIMEOUT((timeout - wdt_dev->pretimeout) << 6) in mtk_wdt_set_timeout()
272 mtk_wdt_ping(wdt_dev); in mtk_wdt_set_timeout()
277 static void mtk_wdt_init(struct watchdog_device *wdt_dev) in mtk_wdt_init() argument
279 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_init()
285 set_bit(WDOG_HW_RUNNING, &wdt_dev->status); in mtk_wdt_init()
286 mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout); in mtk_wdt_init()
290 static int mtk_wdt_stop(struct watchdog_device *wdt_dev) in mtk_wdt_stop() argument
292 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_stop()
304 static int mtk_wdt_start(struct watchdog_device *wdt_dev) in mtk_wdt_start() argument
307 struct mtk_wdt_dev *mtk_wdt = watchdog_get_drvdata(wdt_dev); in mtk_wdt_start()
311 ret = mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout); in mtk_wdt_start()
316 if (wdt_dev->pretimeout) in mtk_wdt_start()
407 &mtk_wdt->wdt_dev); in mtk_wdt_probe()
411 mtk_wdt->wdt_dev.info = &mtk_wdt_pt_info; in mtk_wdt_probe()
412 mtk_wdt->wdt_dev.pretimeout = WDT_MAX_TIMEOUT / 2; in mtk_wdt_probe()
417 mtk_wdt->wdt_dev.info = &mtk_wdt_info; in mtk_wdt_probe()
420 mtk_wdt->wdt_dev.ops = &mtk_wdt_ops; in mtk_wdt_probe()
421 mtk_wdt->wdt_dev.timeout = WDT_MAX_TIMEOUT; in mtk_wdt_probe()
422 mtk_wdt->wdt_dev.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT * 1000; in mtk_wdt_probe()
423 mtk_wdt->wdt_dev.min_timeout = WDT_MIN_TIMEOUT; in mtk_wdt_probe()
424 mtk_wdt->wdt_dev.parent = dev; in mtk_wdt_probe()
426 watchdog_init_timeout(&mtk_wdt->wdt_dev, timeout, dev); in mtk_wdt_probe()
427 watchdog_set_nowayout(&mtk_wdt->wdt_dev, nowayout); in mtk_wdt_probe()
428 watchdog_set_restart_priority(&mtk_wdt->wdt_dev, 128); in mtk_wdt_probe()
430 watchdog_set_drvdata(&mtk_wdt->wdt_dev, mtk_wdt); in mtk_wdt_probe()
432 mtk_wdt_init(&mtk_wdt->wdt_dev); in mtk_wdt_probe()
434 watchdog_stop_on_reboot(&mtk_wdt->wdt_dev); in mtk_wdt_probe()
435 err = devm_watchdog_register_device(dev, &mtk_wdt->wdt_dev); in mtk_wdt_probe()
440 mtk_wdt->wdt_dev.timeout, nowayout); in mtk_wdt_probe()
465 if (watchdog_active(&mtk_wdt->wdt_dev)) in mtk_wdt_suspend()
466 mtk_wdt_stop(&mtk_wdt->wdt_dev); in mtk_wdt_suspend()
475 if (watchdog_active(&mtk_wdt->wdt_dev)) { in mtk_wdt_resume()
476 mtk_wdt_start(&mtk_wdt->wdt_dev); in mtk_wdt_resume()
477 mtk_wdt_ping(&mtk_wdt->wdt_dev); in mtk_wdt_resume()