Lines Matching refs:wdev
90 struct imx2_wdt_device *wdev = container_of(this, in imx2_restart_handler() local
94 regmap_write(wdev->regmap, 0, wcr_enable); in imx2_restart_handler()
102 regmap_write(wdev->regmap, 0, wcr_enable); in imx2_restart_handler()
103 regmap_write(wdev->regmap, 0, wcr_enable); in imx2_restart_handler()
113 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_setup() local
116 regmap_read(wdev->regmap, IMX2_WDT_WCR, &val); in imx2_wdt_setup()
129 regmap_write(wdev->regmap, IMX2_WDT_WCR, val); in imx2_wdt_setup()
133 regmap_write(wdev->regmap, IMX2_WDT_WCR, val); in imx2_wdt_setup()
136 static inline bool imx2_wdt_is_running(struct imx2_wdt_device *wdev) in imx2_wdt_is_running() argument
140 regmap_read(wdev->regmap, IMX2_WDT_WCR, &val); in imx2_wdt_is_running()
147 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_ping() local
149 regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ1); in imx2_wdt_ping()
150 regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ2); in imx2_wdt_ping()
157 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_timer_ping() local
161 mod_timer(&wdev->timer, jiffies + wdog->timeout * HZ / 2); in imx2_wdt_timer_ping()
167 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_set_timeout() local
169 regmap_update_bits(wdev->regmap, IMX2_WDT_WCR, IMX2_WDT_WCR_WT, in imx2_wdt_set_timeout()
176 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_start() local
178 if (imx2_wdt_is_running(wdev)) { in imx2_wdt_start()
180 del_timer_sync(&wdev->timer); in imx2_wdt_start()
200 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_ping_if_active() local
202 if (imx2_wdt_is_running(wdev)) { in imx2_wdt_ping_if_active()
225 struct imx2_wdt_device *wdev; in imx2_wdt_probe() local
232 wdev = devm_kzalloc(&pdev->dev, sizeof(*wdev), GFP_KERNEL); in imx2_wdt_probe()
233 if (!wdev) in imx2_wdt_probe()
241 wdev->regmap = devm_regmap_init_mmio_clk(&pdev->dev, NULL, base, in imx2_wdt_probe()
243 if (IS_ERR(wdev->regmap)) { in imx2_wdt_probe()
245 return PTR_ERR(wdev->regmap); in imx2_wdt_probe()
248 wdev->clk = devm_clk_get(&pdev->dev, NULL); in imx2_wdt_probe()
249 if (IS_ERR(wdev->clk)) { in imx2_wdt_probe()
251 return PTR_ERR(wdev->clk); in imx2_wdt_probe()
254 wdog = &wdev->wdog; in imx2_wdt_probe()
260 clk_prepare_enable(wdev->clk); in imx2_wdt_probe()
262 regmap_read(wdev->regmap, IMX2_WDT_WRSR, &val); in imx2_wdt_probe()
271 watchdog_set_drvdata(wdog, wdev); in imx2_wdt_probe()
275 setup_timer(&wdev->timer, imx2_wdt_timer_ping, (unsigned long)wdog); in imx2_wdt_probe()
284 regmap_write(wdev->regmap, IMX2_WDT_WMCR, 0); in imx2_wdt_probe()
292 wdev->restart_handler.notifier_call = imx2_restart_handler; in imx2_wdt_probe()
293 wdev->restart_handler.priority = 128; in imx2_wdt_probe()
294 ret = register_restart_handler(&wdev->restart_handler); in imx2_wdt_probe()
307 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_remove() local
309 unregister_restart_handler(&wdev->restart_handler); in imx2_wdt_remove()
313 if (imx2_wdt_is_running(wdev)) { in imx2_wdt_remove()
314 del_timer_sync(&wdev->timer); in imx2_wdt_remove()
324 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_shutdown() local
326 if (imx2_wdt_is_running(wdev)) { in imx2_wdt_shutdown()
331 del_timer_sync(&wdev->timer); in imx2_wdt_shutdown()
343 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_suspend() local
346 if (imx2_wdt_is_running(wdev)) { in imx2_wdt_suspend()
352 del_timer_sync(&wdev->timer); in imx2_wdt_suspend()
355 clk_disable_unprepare(wdev->clk); in imx2_wdt_suspend()
364 struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); in imx2_wdt_resume() local
366 clk_prepare_enable(wdev->clk); in imx2_wdt_resume()
368 if (watchdog_active(wdog) && !imx2_wdt_is_running(wdev)) { in imx2_wdt_resume()
377 } else if (imx2_wdt_is_running(wdev)) { in imx2_wdt_resume()
386 mod_timer(&wdev->timer, in imx2_wdt_resume()