Lines Matching refs:wdt

54 static inline u32 zx2967_wdt_readl(struct zx2967_wdt *wdt, u16 reg)
56 return readl_relaxed(wdt->reg_base + reg);
59 static inline void zx2967_wdt_writel(struct zx2967_wdt *wdt, u16 reg, u32 val)
61 writel_relaxed(val | ZX2967_WDT_WRITEKEY, wdt->reg_base + reg);
64 static void zx2967_wdt_refresh(struct zx2967_wdt *wdt)
68 val = zx2967_wdt_readl(wdt, ZX2967_WDT_REFRESH_REG);
76 zx2967_wdt_writel(wdt, ZX2967_WDT_REFRESH_REG,
83 struct zx2967_wdt *wdt = watchdog_get_drvdata(wdd);
91 zx2967_wdt_writel(wdt, ZX2967_WDT_CFG_REG,
93 zx2967_wdt_writel(wdt, ZX2967_WDT_LOAD_REG,
95 zx2967_wdt_refresh(wdt);
101 static void __zx2967_wdt_start(struct zx2967_wdt *wdt)
105 val = zx2967_wdt_readl(wdt, ZX2967_WDT_START_REG);
107 zx2967_wdt_writel(wdt, ZX2967_WDT_START_REG,
111 static void __zx2967_wdt_stop(struct zx2967_wdt *wdt)
115 val = zx2967_wdt_readl(wdt, ZX2967_WDT_START_REG);
117 zx2967_wdt_writel(wdt, ZX2967_WDT_START_REG,
123 struct zx2967_wdt *wdt = watchdog_get_drvdata(wdd);
126 __zx2967_wdt_start(wdt);
133 struct zx2967_wdt *wdt = watchdog_get_drvdata(wdd);
135 __zx2967_wdt_stop(wdt);
142 struct zx2967_wdt *wdt = watchdog_get_drvdata(wdd);
144 zx2967_wdt_refresh(wdt);
172 "zte,wdt-reset-sysctrl", 3, 0, &out_args);
198 struct zx2967_wdt *wdt;
202 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
203 if (!wdt)
206 platform_set_drvdata(pdev, wdt);
208 wdt->wdt_device.info = &zx2967_wdt_ident;
209 wdt->wdt_device.ops = &zx2967_wdt_ops;
210 wdt->wdt_device.timeout = ZX2967_WDT_DEFAULT_TIMEOUT;
211 wdt->wdt_device.max_timeout = ZX2967_WDT_MAX_TIMEOUT;
212 wdt->wdt_device.min_timeout = ZX2967_WDT_MIN_TIMEOUT;
213 wdt->wdt_device.parent = dev;
215 wdt->reg_base = devm_platform_ioremap_resource(pdev, 0);
216 if (IS_ERR(wdt->reg_base))
217 return PTR_ERR(wdt->reg_base);
221 wdt->clock = devm_clk_get(dev, NULL);
222 if (IS_ERR(wdt->clock)) {
224 return PTR_ERR(wdt->clock);
227 ret = clk_prepare_enable(wdt->clock);
233 wdt->clock);
236 clk_set_rate(wdt->clock, ZX2967_WDT_CLK_FREQ);
247 watchdog_set_drvdata(&wdt->wdt_device, wdt);
248 watchdog_init_timeout(&wdt->wdt_device,
250 watchdog_set_nowayout(&wdt->wdt_device, WATCHDOG_NOWAYOUT);
252 ret = devm_watchdog_register_device(dev, &wdt->wdt_device);
257 wdt->wdt_device.timeout, WATCHDOG_NOWAYOUT);
263 { .compatible = "zte,zx296718-wdt", },
271 .name = "zx2967-wdt",