• Home
  • Raw
  • Download

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()
68 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_start() local
70 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_start()
71 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_start()
72 writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BARK_TIME)); in qcom_wdt_start()
73 writel(wdd->timeout * wdt->rate, wdt_addr(wdt, WDT_BITE_TIME)); in qcom_wdt_start()
74 writel(1, wdt_addr(wdt, WDT_EN)); in qcom_wdt_start()
80 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_stop() local
82 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_stop()
88 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_ping() local
90 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_ping()
104 struct qcom_wdt *wdt = to_qcom_wdt(wdd); in qcom_wdt_restart() local
109 * Setup BITE_TIME to be 128ms, and enable WDT. in qcom_wdt_restart()
111 timeout = 128 * wdt->rate / 1000; in qcom_wdt_restart()
113 writel(0, wdt_addr(wdt, WDT_EN)); in qcom_wdt_restart()
114 writel(1, wdt_addr(wdt, WDT_RST)); in qcom_wdt_restart()
115 writel(timeout, wdt_addr(wdt, WDT_BARK_TIME)); in qcom_wdt_restart()
116 writel(timeout, wdt_addr(wdt, WDT_BITE_TIME)); in qcom_wdt_restart()
117 writel(1, wdt_addr(wdt, WDT_EN)); in qcom_wdt_restart()
147 struct qcom_wdt *wdt; in qcom_wdt_probe() local
156 dev_err(&pdev->dev, "Unsupported QCOM WDT module\n"); in qcom_wdt_probe()
160 wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL); in qcom_wdt_probe()
161 if (!wdt) in qcom_wdt_probe()
175 wdt->base = devm_ioremap_resource(&pdev->dev, res); in qcom_wdt_probe()
176 if (IS_ERR(wdt->base)) in qcom_wdt_probe()
177 return PTR_ERR(wdt->base); in qcom_wdt_probe()
179 wdt->clk = devm_clk_get(&pdev->dev, NULL); in qcom_wdt_probe()
180 if (IS_ERR(wdt->clk)) { in qcom_wdt_probe()
182 return PTR_ERR(wdt->clk); in qcom_wdt_probe()
185 ret = clk_prepare_enable(wdt->clk); in qcom_wdt_probe()
195 * WATCHDOG_CORE assumes units of seconds, if the WDT is clocked such in qcom_wdt_probe()
199 wdt->rate = clk_get_rate(wdt->clk); in qcom_wdt_probe()
200 if (wdt->rate == 0 || in qcom_wdt_probe()
201 wdt->rate > 0x10000000U) { in qcom_wdt_probe()
207 wdt->wdd.info = &qcom_wdt_info; in qcom_wdt_probe()
208 wdt->wdd.ops = &qcom_wdt_ops; in qcom_wdt_probe()
209 wdt->wdd.min_timeout = 1; in qcom_wdt_probe()
210 wdt->wdd.max_timeout = 0x10000000U / wdt->rate; in qcom_wdt_probe()
211 wdt->wdd.parent = &pdev->dev; in qcom_wdt_probe()
212 wdt->layout = regs; in qcom_wdt_probe()
214 if (readl(wdt_addr(wdt, WDT_STS)) & 1) in qcom_wdt_probe()
215 wdt->wdd.bootstatus = WDIOF_CARDRESET; in qcom_wdt_probe()
222 wdt->wdd.timeout = min(wdt->wdd.max_timeout, 30U); in qcom_wdt_probe()
223 watchdog_init_timeout(&wdt->wdd, 0, &pdev->dev); in qcom_wdt_probe()
225 ret = watchdog_register_device(&wdt->wdd); in qcom_wdt_probe()
231 platform_set_drvdata(pdev, wdt); in qcom_wdt_probe()
235 clk_disable_unprepare(wdt->clk); in qcom_wdt_probe()
241 struct qcom_wdt *wdt = platform_get_drvdata(pdev); in qcom_wdt_remove() local
243 watchdog_unregister_device(&wdt->wdd); in qcom_wdt_remove()
244 clk_disable_unprepare(wdt->clk); in qcom_wdt_remove()
251 { .compatible = "qcom,kpss-wdt", .data = reg_offset_data_kpss },