Lines Matching full:wdt

55 static void __iomem *wdt_addr(struct qcom_wdt *wdt, enum wdt_reg reg)  in wdt_addr()  argument
57 return wdt->base + wdt->layout[reg]; in wdt_addr()
87 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_start() local
90 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_start()
91 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_start()
92 writel(bark * wdt->rate, wdt_addr(wdt, WDT_BARK_TIME)); in qcom_wdt_start()
93 writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME)); in qcom_wdt_start()
94 writel(qcom_get_enable(wdd), wdt_addr(wdt, WDT_EN)); in qcom_wdt_start()
100 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_stop() local
102 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_stop()
108 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_ping() local
110 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_ping()
131 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_restart() local
136 * Setup BITE_TIME to be 128ms, and enable WDT. in qcom_wdt_restart()
138 timeout = 128 * wdt->rate / 1000; in qcom_wdt_restart()
140 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_restart()
141 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_restart()
142 writel(timeout, wdt_addr(wdt, WDT_BARK_TIME)); in qcom_wdt_restart()
143 writel(timeout, wdt_addr(wdt, WDT_BITE_TIME)); in qcom_wdt_restart()
144 writel(QCOM_WDT_ENABLE, wdt_addr(wdt, WDT_EN)); in qcom_wdt_restart()
200 struct qcom_wdt *wdt; in qcom_wdt_probe() local
210 dev_err(dev, "Unsupported QCOM WDT module\n"); in qcom_wdt_probe()
214 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL); in qcom_wdt_probe()
215 if (!wdt) in qcom_wdt_probe()
229 wdt->base = devm_ioremap_resource(dev, res); in qcom_wdt_probe()
230 if (IS_ERR(wdt->base)) in qcom_wdt_probe()
231 return PTR_ERR(wdt->base); in qcom_wdt_probe()
252 * WATCHDOG_CORE assumes units of seconds, if the WDT is clocked such in qcom_wdt_probe()
256 wdt->rate = clk_get_rate(clk); in qcom_wdt_probe()
257 if (wdt->rate == 0 || in qcom_wdt_probe()
258 wdt->rate > 0x10000000U) { in qcom_wdt_probe()
267 "wdt_bark", &wdt->wdd); in qcom_wdt_probe()
271 wdt->wdd.info = &qcom_wdt_pt_info; in qcom_wdt_probe()
272 wdt->wdd.pretimeout = 1; in qcom_wdt_probe()
277 wdt->wdd.info = &qcom_wdt_info; in qcom_wdt_probe()
280 wdt->wdd.ops = &qcom_wdt_ops; in qcom_wdt_probe()
281 wdt->wdd.min_timeout = 1; in qcom_wdt_probe()
282 wdt->wdd.max_timeout = 0x10000000U / wdt->rate; in qcom_wdt_probe()
283 wdt->wdd.parent = dev; in qcom_wdt_probe()
284 wdt->layout = data->offset; in qcom_wdt_probe()
286 if (readl(wdt_addr(wdt, WDT_STS)) & 1) in qcom_wdt_probe()
287 wdt->wdd.bootstatus = WDIOF_CARDRESET; in qcom_wdt_probe()
294 wdt->wdd.timeout = min(wdt->wdd.max_timeout, 30U); in qcom_wdt_probe()
295 watchdog_init_timeout(&wdt->wdd, 0, dev); in qcom_wdt_probe()
297 ret = devm_watchdog_register_device(dev, &wdt->wdd); in qcom_wdt_probe()
301 platform_set_drvdata(pdev, wdt); in qcom_wdt_probe()
307 struct qcom_wdt *wdt = dev_get_drvdata(dev); in qcom_wdt_suspend() local
309 if (watchdog_active(&wdt->wdd)) in qcom_wdt_suspend()
310 qcom_wdt_stop(&wdt->wdd); in qcom_wdt_suspend()
317 struct qcom_wdt *wdt = dev_get_drvdata(dev); in qcom_wdt_resume() local
319 if (watchdog_active(&wdt->wdd)) in qcom_wdt_resume()
320 qcom_wdt_start(&wdt->wdd); in qcom_wdt_resume()
330 { .compatible = "qcom,kpss-wdt", .data = &match_data_kpss },