Lines Matching defs:dmt

48 static inline void dmt_enable(struct pic32_dmt *dmt)
50 writel(DMT_ON, PIC32_SET(dmt->regs + DMTCON_REG));
53 static inline void dmt_disable(struct pic32_dmt *dmt)
55 writel(DMT_ON, PIC32_CLR(dmt->regs + DMTCON_REG));
63 static inline int dmt_bad_status(struct pic32_dmt *dmt)
67 val = readl(dmt->regs + DMTSTAT_REG);
75 static inline int dmt_keepalive(struct pic32_dmt *dmt)
81 writel(DMT_STEP1_KEY << 8, dmt->regs + DMTPRECLR_REG);
85 v = readl(dmt->regs + DMTSTAT_REG) & DMTSTAT_WINOPN;
91 writel(DMT_STEP2_KEY, dmt->regs + DMTCLR_REG);
94 return dmt_bad_status(dmt);
97 static inline u32 pic32_dmt_get_timeout_secs(struct pic32_dmt *dmt)
101 rate = clk_get_rate(dmt->clk);
103 return readl(dmt->regs + DMTPSCNT_REG) / rate;
108 static inline u32 pic32_dmt_bootstatus(struct pic32_dmt *dmt)
127 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
129 dmt_enable(dmt);
130 return dmt_keepalive(dmt);
135 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
137 dmt_disable(dmt);
144 struct pic32_dmt *dmt = watchdog_get_drvdata(wdd);
146 return dmt_keepalive(dmt);
176 struct pic32_dmt *dmt;
179 dmt = devm_kzalloc(dev, sizeof(*dmt), GFP_KERNEL);
180 if (!dmt)
183 dmt->regs = devm_platform_ioremap_resource(pdev, 0);
184 if (IS_ERR(dmt->regs))
185 return PTR_ERR(dmt->regs);
187 dmt->clk = devm_clk_get(dev, NULL);
188 if (IS_ERR(dmt->clk)) {
190 return PTR_ERR(dmt->clk);
193 ret = clk_prepare_enable(dmt->clk);
197 dmt->clk);
201 wdd->timeout = pic32_dmt_get_timeout_secs(dmt);
209 wdd->bootstatus = pic32_dmt_bootstatus(dmt) ? WDIOF_CARDRESET : 0;
212 watchdog_set_drvdata(wdd, dmt);
223 { .compatible = "microchip,pic32mzda-dmt",},
231 .name = "pic32-dmt",