Lines Matching defs:dmt
47 static inline void dmt_enable(struct pic32_dmt *dmt)
49 writel(DMT_ON, PIC32_SET(dmt->regs + DMTCON_REG));
52 static inline void dmt_disable(struct pic32_dmt *dmt)
54 writel(DMT_ON, PIC32_CLR(dmt->regs + DMTCON_REG));
62 static inline int dmt_bad_status(struct pic32_dmt *dmt)
66 val = readl(dmt->regs + DMTSTAT_REG);
74 static inline int dmt_keepalive(struct pic32_dmt *dmt)
80 writel(DMT_STEP1_KEY << 8, dmt->regs + DMTPRECLR_REG);
84 v = readl(dmt->regs + DMTSTAT_REG) & DMTSTAT_WINOPN;
90 writel(DMT_STEP2_KEY, dmt->regs + DMTCLR_REG);
93 return dmt_bad_status(dmt);
96 static inline u32 pic32_dmt_get_timeout_secs(struct pic32_dmt *dmt)
100 rate = clk_get_rate(dmt->clk);
102 return readl(dmt->regs + DMTPSCNT_REG) / rate;
107 static inline u32 pic32_dmt_bootstatus(struct pic32_dmt *dmt)
126 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
128 dmt_enable(dmt);
129 return dmt_keepalive(dmt);
134 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
136 dmt_disable(dmt);
143 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
145 return dmt_keepalive(dmt);
170 struct pic32_dmt *dmt;
173 dmt = devm_kzalloc(dev, sizeof(*dmt), GFP_KERNEL);
174 if (!dmt)
177 dmt->regs = devm_platform_ioremap_resource(pdev, 0);
178 if (IS_ERR(dmt->regs))
179 return PTR_ERR(dmt->regs);
181 dmt->clk = devm_clk_get_enabled(dev, NULL);
182 if (IS_ERR(dmt->clk)) {
184 return PTR_ERR(dmt->clk);
187 wdd->timeout = pic32_dmt_get_timeout_secs(dmt);
195 wdd->bootstatus = pic32_dmt_bootstatus(dmt) ? WDIOF_CARDRESET : 0;
198 watchdog_set_drvdata(wdd, dmt);
209 { .compatible = "microchip,pic32mzda-dmt",},
217 .name = "pic32-dmt",