Lines Matching defs:st_wdog
41 struct st_wdog {
65 static void st_wdog_setup(struct st_wdog *st_wdog, bool enable)
68 if (st_wdog->syscfg->reset_type_reg)
69 regmap_update_bits(st_wdog->regmap,
70 st_wdog->syscfg->reset_type_reg,
71 st_wdog->syscfg->reset_type_mask,
72 st_wdog->warm_reset);
75 regmap_update_bits(st_wdog->regmap,
76 st_wdog->syscfg->enable_reg,
77 st_wdog->syscfg->enable_mask,
78 enable ? 0 : st_wdog->syscfg->enable_mask);
81 static void st_wdog_load_timer(struct st_wdog *st_wdog, unsigned int timeout)
83 unsigned long clkrate = st_wdog->clkrate;
85 writel_relaxed(timeout * clkrate, st_wdog->base + LPC_LPA_LSB_OFF);
86 writel_relaxed(1, st_wdog->base + LPC_LPA_START_OFF);
91 struct st_wdog *st_wdog = watchdog_get_drvdata(wdd);
93 writel_relaxed(1, st_wdog->base + LPC_WDT_OFF);
100 struct st_wdog *st_wdog = watchdog_get_drvdata(wdd);
102 writel_relaxed(0, st_wdog->base + LPC_WDT_OFF);
110 struct st_wdog *st_wdog = watchdog_get_drvdata(wdd);
113 st_wdog_load_timer(st_wdog, timeout);
120 struct st_wdog *st_wdog = watchdog_get_drvdata(wdd);
122 st_wdog_load_timer(st_wdog, wdd->timeout);
155 struct st_wdog *st_wdog;
172 st_wdog = devm_kzalloc(dev, sizeof(*st_wdog), GFP_KERNEL);
173 if (!st_wdog)
181 st_wdog->syscfg = (struct st_wdog_syscfg *)match->data;
199 st_wdog->dev = dev;
200 st_wdog->base = base;
201 st_wdog->clk = clk;
202 st_wdog->regmap = regmap;
203 st_wdog->warm_reset = of_property_read_bool(np, "st,warm_reset");
204 st_wdog->clkrate = clk_get_rate(st_wdog->clk);
206 if (!st_wdog->clkrate) {
210 st_wdog_dev.max_timeout = 0xFFFFFFFF / st_wdog->clkrate;
222 watchdog_set_drvdata(&st_wdog_dev, st_wdog);
234 st_wdog_setup(st_wdog, true);
237 st_wdog->warm_reset ? "warm" : "cold");
244 struct st_wdog *st_wdog = watchdog_get_drvdata(&st_wdog_dev);
246 st_wdog_setup(st_wdog, false);
254 struct st_wdog *st_wdog = watchdog_get_drvdata(&st_wdog_dev);
259 st_wdog_setup(st_wdog, false);
261 clk_disable(st_wdog->clk);
268 struct st_wdog *st_wdog = watchdog_get_drvdata(&st_wdog_dev);
271 ret = clk_enable(st_wdog->clk);
275 clk_unprepare(st_wdog->clk);
279 st_wdog_setup(st_wdog, true);
282 st_wdog_load_timer(st_wdog, st_wdog_dev.timeout);