Lines Matching refs:wdt
80 struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); in wdt_setload() local
83 rate = clk_get_rate(wdt->clk); in wdt_setload()
96 spin_lock(&wdt->lock); in wdt_setload()
97 wdt->load_val = load; in wdt_setload()
100 spin_unlock(&wdt->lock); in wdt_setload()
108 struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); in wdt_timeleft() local
111 rate = clk_get_rate(wdt->clk); in wdt_timeleft()
113 spin_lock(&wdt->lock); in wdt_timeleft()
114 load = readl_relaxed(wdt->base + WDTVALUE); in wdt_timeleft()
117 if (!(readl_relaxed(wdt->base + WDTRIS) & INT_MASK)) in wdt_timeleft()
118 load += wdt->load_val + 1; in wdt_timeleft()
119 spin_unlock(&wdt->lock); in wdt_timeleft()
126 struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); in wdt_config() local
131 ret = clk_prepare_enable(wdt->clk); in wdt_config()
133 dev_err(&wdt->adev->dev, "clock enable fail"); in wdt_config()
138 spin_lock(&wdt->lock); in wdt_config()
140 writel_relaxed(UNLOCK, wdt->base + WDTLOCK); in wdt_config()
141 writel_relaxed(wdt->load_val, wdt->base + WDTLOAD); in wdt_config()
144 writel_relaxed(INT_MASK, wdt->base + WDTINTCLR); in wdt_config()
145 writel_relaxed(INT_ENABLE | RESET_ENABLE, wdt->base + in wdt_config()
149 writel_relaxed(LOCK, wdt->base + WDTLOCK); in wdt_config()
152 readl_relaxed(wdt->base + WDTLOCK); in wdt_config()
153 spin_unlock(&wdt->lock); in wdt_config()
172 struct sp805_wdt *wdt = watchdog_get_drvdata(wdd); in wdt_disable() local
174 spin_lock(&wdt->lock); in wdt_disable()
176 writel_relaxed(UNLOCK, wdt->base + WDTLOCK); in wdt_disable()
177 writel_relaxed(0, wdt->base + WDTCONTROL); in wdt_disable()
178 writel_relaxed(LOCK, wdt->base + WDTLOCK); in wdt_disable()
181 readl_relaxed(wdt->base + WDTLOCK); in wdt_disable()
182 spin_unlock(&wdt->lock); in wdt_disable()
184 clk_disable_unprepare(wdt->clk); in wdt_disable()
206 struct sp805_wdt *wdt; in sp805_wdt_probe() local
209 wdt = devm_kzalloc(&adev->dev, sizeof(*wdt), GFP_KERNEL); in sp805_wdt_probe()
210 if (!wdt) { in sp805_wdt_probe()
215 wdt->base = devm_ioremap_resource(&adev->dev, &adev->res); in sp805_wdt_probe()
216 if (IS_ERR(wdt->base)) in sp805_wdt_probe()
217 return PTR_ERR(wdt->base); in sp805_wdt_probe()
219 wdt->clk = devm_clk_get(&adev->dev, NULL); in sp805_wdt_probe()
220 if (IS_ERR(wdt->clk)) { in sp805_wdt_probe()
222 ret = PTR_ERR(wdt->clk); in sp805_wdt_probe()
226 wdt->adev = adev; in sp805_wdt_probe()
227 wdt->wdd.info = &wdt_info; in sp805_wdt_probe()
228 wdt->wdd.ops = &wdt_ops; in sp805_wdt_probe()
230 spin_lock_init(&wdt->lock); in sp805_wdt_probe()
231 watchdog_set_nowayout(&wdt->wdd, nowayout); in sp805_wdt_probe()
232 watchdog_set_drvdata(&wdt->wdd, wdt); in sp805_wdt_probe()
233 wdt_setload(&wdt->wdd, DEFAULT_TIMEOUT); in sp805_wdt_probe()
235 ret = watchdog_register_device(&wdt->wdd); in sp805_wdt_probe()
241 amba_set_drvdata(adev, wdt); in sp805_wdt_probe()
253 struct sp805_wdt *wdt = amba_get_drvdata(adev); in sp805_wdt_remove() local
255 watchdog_unregister_device(&wdt->wdd); in sp805_wdt_remove()
256 watchdog_set_drvdata(&wdt->wdd, NULL); in sp805_wdt_remove()
263 struct sp805_wdt *wdt = dev_get_drvdata(dev); in sp805_wdt_suspend() local
265 if (watchdog_active(&wdt->wdd)) in sp805_wdt_suspend()
266 return wdt_disable(&wdt->wdd); in sp805_wdt_suspend()
273 struct sp805_wdt *wdt = dev_get_drvdata(dev); in sp805_wdt_resume() local
275 if (watchdog_active(&wdt->wdd)) in sp805_wdt_resume()
276 return wdt_enable(&wdt->wdd); in sp805_wdt_resume()