• Home
  • Raw
  • Download

Lines Matching refs:wdt

144 static inline void ts72xx_wdt_kick(struct ts72xx_wdt *wdt)  in ts72xx_wdt_kick()  argument
146 __raw_writeb(TS72XX_WDT_FEED_VAL, wdt->feed_reg); in ts72xx_wdt_kick()
158 static void ts72xx_wdt_start(struct ts72xx_wdt *wdt) in ts72xx_wdt_start() argument
165 ts72xx_wdt_kick(wdt); in ts72xx_wdt_start()
166 __raw_writeb((u8)wdt->regval, wdt->control_reg); in ts72xx_wdt_start()
175 static void ts72xx_wdt_stop(struct ts72xx_wdt *wdt) in ts72xx_wdt_stop() argument
177 ts72xx_wdt_kick(wdt); in ts72xx_wdt_stop()
178 __raw_writeb(0, wdt->control_reg); in ts72xx_wdt_stop()
183 struct ts72xx_wdt *wdt = platform_get_drvdata(ts72xx_wdt_pdev); in ts72xx_wdt_open() local
192 dev_err(&wdt->pdev->dev, in ts72xx_wdt_open()
198 if (mutex_lock_interruptible(&wdt->lock)) in ts72xx_wdt_open()
201 if ((wdt->flags & TS72XX_WDT_BUSY_FLAG) != 0) { in ts72xx_wdt_open()
202 mutex_unlock(&wdt->lock); in ts72xx_wdt_open()
206 wdt->flags = TS72XX_WDT_BUSY_FLAG; in ts72xx_wdt_open()
207 wdt->regval = regval; in ts72xx_wdt_open()
208 file->private_data = wdt; in ts72xx_wdt_open()
210 ts72xx_wdt_start(wdt); in ts72xx_wdt_open()
212 mutex_unlock(&wdt->lock); in ts72xx_wdt_open()
218 struct ts72xx_wdt *wdt = file->private_data; in ts72xx_wdt_release() local
220 if (mutex_lock_interruptible(&wdt->lock)) in ts72xx_wdt_release()
223 if ((wdt->flags & TS72XX_WDT_EXPECT_CLOSE_FLAG) != 0) { in ts72xx_wdt_release()
224 ts72xx_wdt_stop(wdt); in ts72xx_wdt_release()
226 dev_warn(&wdt->pdev->dev, in ts72xx_wdt_release()
234 ts72xx_wdt_kick(wdt); in ts72xx_wdt_release()
237 wdt->flags = 0; in ts72xx_wdt_release()
239 mutex_unlock(&wdt->lock); in ts72xx_wdt_release()
248 struct ts72xx_wdt *wdt = file->private_data; in ts72xx_wdt_write() local
253 if (mutex_lock_interruptible(&wdt->lock)) in ts72xx_wdt_write()
256 ts72xx_wdt_kick(wdt); in ts72xx_wdt_write()
271 wdt->flags &= ~TS72XX_WDT_EXPECT_CLOSE_FLAG; in ts72xx_wdt_write()
274 mutex_unlock(&wdt->lock); in ts72xx_wdt_write()
278 wdt->flags |= TS72XX_WDT_EXPECT_CLOSE_FLAG; in ts72xx_wdt_write()
284 mutex_unlock(&wdt->lock); in ts72xx_wdt_write()
298 struct ts72xx_wdt *wdt = file->private_data; in ts72xx_wdt_ioctl() local
303 if (mutex_lock_interruptible(&wdt->lock)) in ts72xx_wdt_ioctl()
318 ts72xx_wdt_kick(wdt); in ts72xx_wdt_ioctl()
331 ts72xx_wdt_stop(wdt); in ts72xx_wdt_ioctl()
335 ts72xx_wdt_start(wdt); in ts72xx_wdt_ioctl()
355 ts72xx_wdt_stop(wdt); in ts72xx_wdt_ioctl()
356 wdt->regval = regval; in ts72xx_wdt_ioctl()
357 ts72xx_wdt_start(wdt); in ts72xx_wdt_ioctl()
363 error = put_user(regval_to_timeout(wdt->regval), p); in ts72xx_wdt_ioctl()
371 mutex_unlock(&wdt->lock); in ts72xx_wdt_ioctl()
392 struct ts72xx_wdt *wdt; in ts72xx_wdt_probe() local
396 wdt = devm_kzalloc(&pdev->dev, sizeof(struct ts72xx_wdt), GFP_KERNEL); in ts72xx_wdt_probe()
397 if (!wdt) in ts72xx_wdt_probe()
401 wdt->control_reg = devm_ioremap_resource(&pdev->dev, r1); in ts72xx_wdt_probe()
402 if (IS_ERR(wdt->control_reg)) in ts72xx_wdt_probe()
403 return PTR_ERR(wdt->control_reg); in ts72xx_wdt_probe()
406 wdt->feed_reg = devm_ioremap_resource(&pdev->dev, r2); in ts72xx_wdt_probe()
407 if (IS_ERR(wdt->feed_reg)) in ts72xx_wdt_probe()
408 return PTR_ERR(wdt->feed_reg); in ts72xx_wdt_probe()
410 platform_set_drvdata(pdev, wdt); in ts72xx_wdt_probe()
412 wdt->pdev = pdev; in ts72xx_wdt_probe()
413 mutex_init(&wdt->lock); in ts72xx_wdt_probe()
416 ts72xx_wdt_stop(wdt); in ts72xx_wdt_probe()