Lines Matching refs:dw_wdt
70 } dw_wdt; variable
74 return readl(dw_wdt.regs + WDOG_CONTROL_REG_OFFSET) & in dw_wdt_is_enabled()
84 return (1 << (16 + top)) / clk_get_rate(dw_wdt.clk); in dw_wdt_top_in_seconds()
89 int top = readl(dw_wdt.regs + WDOG_TIMEOUT_RANGE_REG_OFFSET) & 0xF; in dw_wdt_get_top()
96 dw_wdt.next_heartbeat = jiffies + dw_wdt_get_top() * HZ; in dw_wdt_set_next_heartbeat()
101 writel(WDOG_COUNTER_RESTART_KICK_VALUE, dw_wdt.regs + in dw_wdt_keepalive()
126 dw_wdt.regs + WDOG_TIMEOUT_RANGE_REG_OFFSET); in dw_wdt_set_top()
145 writel(0, dw_wdt.regs + WDOG_TIMEOUT_RANGE_REG_OFFSET); in dw_wdt_restart_handle()
146 val = readl(dw_wdt.regs + WDOG_CONTROL_REG_OFFSET); in dw_wdt_restart_handle()
148 writel(WDOG_COUNTER_RESTART_KICK_VALUE, dw_wdt.regs + in dw_wdt_restart_handle()
152 dw_wdt.regs + WDOG_CONTROL_REG_OFFSET); in dw_wdt_restart_handle()
162 if (time_before(jiffies, dw_wdt.next_heartbeat) || in dw_wdt_ping()
163 (!nowayout && !dw_wdt.in_use)) { in dw_wdt_ping()
165 mod_timer(&dw_wdt.timer, jiffies + WDT_TIMEOUT); in dw_wdt_ping()
172 if (test_and_set_bit(0, &dw_wdt.in_use)) in dw_wdt_open()
185 dw_wdt.regs + WDOG_CONTROL_REG_OFFSET); in dw_wdt_open()
202 dw_wdt.expect_close = 0; in dw_wdt_write()
211 dw_wdt.expect_close = 1; in dw_wdt_write()
219 mod_timer(&dw_wdt.timer, jiffies + WDT_TIMEOUT); in dw_wdt_write()
226 return readl(dw_wdt.regs + WDOG_CURRENT_COUNT_REG_OFFSET) / in dw_wdt_time_left()
227 clk_get_rate(dw_wdt.clk); in dw_wdt_time_left()
276 clear_bit(0, &dw_wdt.in_use); in dw_wdt_release()
278 if (!dw_wdt.expect_close) { in dw_wdt_release()
279 del_timer(&dw_wdt.timer); in dw_wdt_release()
287 dw_wdt.expect_close = 0; in dw_wdt_release()
295 clk_disable_unprepare(dw_wdt.clk); in dw_wdt_suspend()
302 int err = clk_prepare_enable(dw_wdt.clk); in dw_wdt_resume()
335 dw_wdt.regs = devm_ioremap_resource(&pdev->dev, mem); in dw_wdt_drv_probe()
336 if (IS_ERR(dw_wdt.regs)) in dw_wdt_drv_probe()
337 return PTR_ERR(dw_wdt.regs); in dw_wdt_drv_probe()
339 dw_wdt.clk = devm_clk_get(&pdev->dev, NULL); in dw_wdt_drv_probe()
340 if (IS_ERR(dw_wdt.clk)) in dw_wdt_drv_probe()
341 return PTR_ERR(dw_wdt.clk); in dw_wdt_drv_probe()
343 ret = clk_prepare_enable(dw_wdt.clk); in dw_wdt_drv_probe()
351 dw_wdt.restart_handler.notifier_call = dw_wdt_restart_handle; in dw_wdt_drv_probe()
352 dw_wdt.restart_handler.priority = 128; in dw_wdt_drv_probe()
353 ret = register_restart_handler(&dw_wdt.restart_handler); in dw_wdt_drv_probe()
358 setup_timer(&dw_wdt.timer, dw_wdt_ping, 0); in dw_wdt_drv_probe()
359 mod_timer(&dw_wdt.timer, jiffies + WDT_TIMEOUT); in dw_wdt_drv_probe()
364 clk_disable_unprepare(dw_wdt.clk); in dw_wdt_drv_probe()
371 unregister_restart_handler(&dw_wdt.restart_handler); in dw_wdt_drv_remove()
375 clk_disable_unprepare(dw_wdt.clk); in dw_wdt_drv_remove()