Lines Matching refs:dmt

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