Lines Matching refs:wdt

85 static inline void cdns_wdt_writereg(struct cdns_wdt *wdt, u32 offset, u32 val)
87 writel_relaxed(val, wdt->regs + offset);
126 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd);
128 spin_lock(&wdt->io_lock);
129 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET,
131 spin_unlock(&wdt->io_lock);
147 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd);
149 spin_lock(&wdt->io_lock);
150 cdns_wdt_writereg(wdt, CDNS_WDT_RESTART_OFFSET,
152 spin_unlock(&wdt->io_lock);
177 struct cdns_wdt *wdt = watchdog_get_drvdata(wdd);
180 unsigned long clock_f = clk_get_rate(wdt->clk);
186 count = (wdd->timeout * (clock_f / wdt->prescaler)) /
192 spin_lock(&wdt->io_lock);
193 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET,
199 data = count | CDNS_WDT_REGISTER_ACCESS_KEY | wdt->ctrl_clksel;
200 cdns_wdt_writereg(wdt, CDNS_WDT_CCR_OFFSET, data);
205 if (wdt->rst) {
212 cdns_wdt_writereg(wdt, CDNS_WDT_ZMR_OFFSET, data);
213 cdns_wdt_writereg(wdt, CDNS_WDT_RESTART_OFFSET,
215 spin_unlock(&wdt->io_lock);
291 struct cdns_wdt *wdt;
294 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
295 if (!wdt)
298 cdns_wdt_device = &wdt->cdns_wdt_device;
305 wdt->regs = devm_platform_ioremap_resource(pdev, 0);
306 if (IS_ERR(wdt->regs))
307 return PTR_ERR(wdt->regs);
310 wdt->rst = of_property_read_bool(dev->of_node, "reset-on-timeout");
312 if (!wdt->rst && irq >= 0) {
329 watchdog_set_drvdata(cdns_wdt_device, wdt);
331 wdt->clk = devm_clk_get_enabled(dev, NULL);
332 if (IS_ERR(wdt->clk))
333 return dev_err_probe(dev, PTR_ERR(wdt->clk),
336 clock_f = clk_get_rate(wdt->clk);
338 wdt->prescaler = CDNS_WDT_PRESCALE_512;
339 wdt->ctrl_clksel = CDNS_WDT_PRESCALE_SELECT_512;
341 wdt->prescaler = CDNS_WDT_PRESCALE_4096;
342 wdt->ctrl_clksel = CDNS_WDT_PRESCALE_SELECT_4096;
345 spin_lock_init(&wdt->io_lock);
352 platform_set_drvdata(pdev, wdt);
368 struct cdns_wdt *wdt = dev_get_drvdata(dev);
370 if (watchdog_active(&wdt->cdns_wdt_device)) {
371 cdns_wdt_stop(&wdt->cdns_wdt_device);
372 clk_disable_unprepare(wdt->clk);
387 struct cdns_wdt *wdt = dev_get_drvdata(dev);
389 if (watchdog_active(&wdt->cdns_wdt_device)) {
390 ret = clk_prepare_enable(wdt->clk);
395 cdns_wdt_start(&wdt->cdns_wdt_device);
404 { .compatible = "cdns,wdt-r1p2", },
413 .name = "cdns-wdt",