Lines Matching refs:wdt

91 static inline void cdns_wdt_writereg(struct cdns_wdt *wdt, u32 offset, u32 val)  in cdns_wdt_writereg()  argument
93 writel_relaxed(val, wdt->regs + offset); in cdns_wdt_writereg()
132 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd); in cdns_wdt_stop() local
134 spin_lock(&wdt->io_lock); in cdns_wdt_stop()
135 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET, in cdns_wdt_stop()
137 spin_unlock(&wdt->io_lock); in cdns_wdt_stop()
153 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd); in cdns_wdt_reload() local
155 spin_lock(&wdt->io_lock); in cdns_wdt_reload()
156 cdns_wdt_writereg(wdt, CDNS_WDT_RESTART_OFFSET, in cdns_wdt_reload()
158 spin_unlock(&wdt->io_lock); in cdns_wdt_reload()
183 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd); in cdns_wdt_start() local
186 unsigned long clock_f = clk_get_rate(wdt->clk); in cdns_wdt_start()
192 count = (wdd->timeout * (clock_f / wdt->prescaler)) / in cdns_wdt_start()
198 spin_lock(&wdt->io_lock); in cdns_wdt_start()
199 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET, in cdns_wdt_start()
205 data = count | CDNS_WDT_REGISTER_ACCESS_KEY | wdt->ctrl_clksel; in cdns_wdt_start()
206 cdns_wdt_writereg(wdt, CDNS_WDT_CCR_OFFSET, data); in cdns_wdt_start()
211 if (wdt->rst) { in cdns_wdt_start()
218 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET, data); in cdns_wdt_start()
219 cdns_wdt_writereg(wdt, CDNS_WDT_RESTART_OFFSET, in cdns_wdt_start()
221 spin_unlock(&wdt->io_lock); in cdns_wdt_start()
298 struct cdns_wdt *wdt = container_of(this, struct cdns_wdt, in cdns_wdt_notify_sys() local
301 cdns_wdt_stop(&wdt->cdns_wdt_device); in cdns_wdt_notify_sys()
320 struct cdns_wdt *wdt; in cdns_wdt_probe() local
323 wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL); in cdns_wdt_probe()
324 if (!wdt) in cdns_wdt_probe()
327 cdns_wdt_device = &wdt->cdns_wdt_device; in cdns_wdt_probe()
335 wdt->regs = devm_ioremap_resource(&pdev->dev, res); in cdns_wdt_probe()
336 if (IS_ERR(wdt->regs)) in cdns_wdt_probe()
337 return PTR_ERR(wdt->regs); in cdns_wdt_probe()
340 wdt->rst = of_property_read_bool(pdev->dev.of_node, "reset-on-timeout"); in cdns_wdt_probe()
342 if (!wdt->rst && irq >= 0) { in cdns_wdt_probe()
363 watchdog_set_drvdata(cdns_wdt_device, wdt); in cdns_wdt_probe()
365 wdt->clk = devm_clk_get(&pdev->dev, NULL); in cdns_wdt_probe()
366 if (IS_ERR(wdt->clk)) { in cdns_wdt_probe()
368 ret = PTR_ERR(wdt->clk); in cdns_wdt_probe()
372 ret = clk_prepare_enable(wdt->clk); in cdns_wdt_probe()
378 clock_f = clk_get_rate(wdt->clk); in cdns_wdt_probe()
380 wdt->prescaler = CDNS_WDT_PRESCALE_512; in cdns_wdt_probe()
381 wdt->ctrl_clksel = CDNS_WDT_PRESCALE_SELECT_512; in cdns_wdt_probe()
383 wdt->prescaler = CDNS_WDT_PRESCALE_4096; in cdns_wdt_probe()
384 wdt->ctrl_clksel = CDNS_WDT_PRESCALE_SELECT_4096; in cdns_wdt_probe()
387 spin_lock_init(&wdt->io_lock); in cdns_wdt_probe()
389 wdt->cdns_wdt_notifier.notifier_call = &cdns_wdt_notify_sys; in cdns_wdt_probe()
390 ret = register_reboot_notifier(&wdt->cdns_wdt_notifier); in cdns_wdt_probe()
402 platform_set_drvdata(pdev, wdt); in cdns_wdt_probe()
405 wdt->regs, cdns_wdt_device->timeout, in cdns_wdt_probe()
411 clk_disable_unprepare(wdt->clk); in cdns_wdt_probe()
426 struct cdns_wdt *wdt = platform_get_drvdata(pdev); in cdns_wdt_remove() local
428 cdns_wdt_stop(&wdt->cdns_wdt_device); in cdns_wdt_remove()
429 watchdog_unregister_device(&wdt->cdns_wdt_device); in cdns_wdt_remove()
430 unregister_reboot_notifier(&wdt->cdns_wdt_notifier); in cdns_wdt_remove()
431 clk_disable_unprepare(wdt->clk); in cdns_wdt_remove()
444 struct cdns_wdt *wdt = platform_get_drvdata(pdev); in cdns_wdt_shutdown() local
446 cdns_wdt_stop(&wdt->cdns_wdt_device); in cdns_wdt_shutdown()
447 clk_disable_unprepare(wdt->clk); in cdns_wdt_shutdown()
460 struct cdns_wdt *wdt = platform_get_drvdata(pdev); in cdns_wdt_suspend() local
462 cdns_wdt_stop(&wdt->cdns_wdt_device); in cdns_wdt_suspend()
463 clk_disable_unprepare(wdt->clk); in cdns_wdt_suspend()
479 struct cdns_wdt *wdt = platform_get_drvdata(pdev); in cdns_wdt_resume() local
481 ret = clk_prepare_enable(wdt->clk); in cdns_wdt_resume()
486 cdns_wdt_start(&wdt->cdns_wdt_device); in cdns_wdt_resume()