Lines Matching refs:wddev

62 static int watchdog_ping(struct watchdog_device *wddev)  in watchdog_ping()  argument
66 mutex_lock(&wddev->lock); in watchdog_ping()
68 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_ping()
73 if (!watchdog_active(wddev)) in watchdog_ping()
76 if (wddev->ops->ping) in watchdog_ping()
77 err = wddev->ops->ping(wddev); /* ping the watchdog */ in watchdog_ping()
79 err = wddev->ops->start(wddev); /* restart watchdog */ in watchdog_ping()
82 mutex_unlock(&wddev->lock); in watchdog_ping()
95 static int watchdog_start(struct watchdog_device *wddev) in watchdog_start() argument
99 mutex_lock(&wddev->lock); in watchdog_start()
101 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_start()
106 if (watchdog_active(wddev)) in watchdog_start()
109 err = wddev->ops->start(wddev); in watchdog_start()
111 set_bit(WDOG_ACTIVE, &wddev->status); in watchdog_start()
114 mutex_unlock(&wddev->lock); in watchdog_start()
128 static int watchdog_stop(struct watchdog_device *wddev) in watchdog_stop() argument
132 mutex_lock(&wddev->lock); in watchdog_stop()
134 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_stop()
139 if (!watchdog_active(wddev)) in watchdog_stop()
142 if (test_bit(WDOG_NO_WAY_OUT, &wddev->status)) { in watchdog_stop()
143 dev_info(wddev->dev, "nowayout prevents watchdog being stopped!\n"); in watchdog_stop()
148 err = wddev->ops->stop(wddev); in watchdog_stop()
150 clear_bit(WDOG_ACTIVE, &wddev->status); in watchdog_stop()
153 mutex_unlock(&wddev->lock); in watchdog_stop()
165 static int watchdog_get_status(struct watchdog_device *wddev, in watchdog_get_status() argument
171 if (!wddev->ops->status) in watchdog_get_status()
174 mutex_lock(&wddev->lock); in watchdog_get_status()
176 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_get_status()
181 *status = wddev->ops->status(wddev); in watchdog_get_status()
184 mutex_unlock(&wddev->lock); in watchdog_get_status()
194 static int watchdog_set_timeout(struct watchdog_device *wddev, in watchdog_set_timeout() argument
199 if ((wddev->ops->set_timeout == NULL) || in watchdog_set_timeout()
200 !(wddev->info->options & WDIOF_SETTIMEOUT)) in watchdog_set_timeout()
203 if (watchdog_timeout_invalid(wddev, timeout)) in watchdog_set_timeout()
206 mutex_lock(&wddev->lock); in watchdog_set_timeout()
208 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_set_timeout()
213 err = wddev->ops->set_timeout(wddev, timeout); in watchdog_set_timeout()
216 mutex_unlock(&wddev->lock); in watchdog_set_timeout()
228 static int watchdog_get_timeleft(struct watchdog_device *wddev, in watchdog_get_timeleft() argument
234 if (!wddev->ops->get_timeleft) in watchdog_get_timeleft()
237 mutex_lock(&wddev->lock); in watchdog_get_timeleft()
239 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_get_timeleft()
244 *timeleft = wddev->ops->get_timeleft(wddev); in watchdog_get_timeleft()
247 mutex_unlock(&wddev->lock); in watchdog_get_timeleft()
258 static int watchdog_ioctl_op(struct watchdog_device *wddev, unsigned int cmd, in watchdog_ioctl_op() argument
263 if (!wddev->ops->ioctl) in watchdog_ioctl_op()
266 mutex_lock(&wddev->lock); in watchdog_ioctl_op()
268 if (test_bit(WDOG_UNREGISTERED, &wddev->status)) { in watchdog_ioctl_op()
273 err = wddev->ops->ioctl(wddev, cmd, arg); in watchdog_ioctl_op()
276 mutex_unlock(&wddev->lock); in watchdog_ioctl_op()