Lines Matching refs:watchdog

155 static struct watchdog_data watchdog = {  variable
156 .lock = __MUTEX_INITIALIZER(watchdog.lock),
229 mutex_lock(&watchdog.lock); in watchdog_set_timeout()
231 watchdog.timeout = timeout; in watchdog_set_timeout()
233 watchdog.timer_val = DIV_ROUND_UP(timeout, 60); in watchdog_set_timeout()
234 watchdog.minutes_mode = true; in watchdog_set_timeout()
236 watchdog.timer_val = timeout; in watchdog_set_timeout()
237 watchdog.minutes_mode = false; in watchdog_set_timeout()
240 mutex_unlock(&watchdog.lock); in watchdog_set_timeout()
250 if (watchdog.type == f71868) { in watchdog_set_pulse_width()
256 mutex_lock(&watchdog.lock); in watchdog_set_pulse_width()
259 watchdog.pulse_val = 0; in watchdog_set_pulse_width()
261 watchdog.pulse_val = 1; in watchdog_set_pulse_width()
263 watchdog.pulse_val = 2; in watchdog_set_pulse_width()
265 watchdog.pulse_val = 3; in watchdog_set_pulse_width()
272 watchdog.pulse_mode = pw; in watchdog_set_pulse_width()
275 mutex_unlock(&watchdog.lock); in watchdog_set_pulse_width()
283 mutex_lock(&watchdog.lock); in watchdog_keepalive()
284 err = superio_enter(watchdog.sioaddr); in watchdog_keepalive()
287 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_keepalive()
289 if (watchdog.minutes_mode) in watchdog_keepalive()
291 superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_keepalive()
295 superio_clear_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_keepalive()
299 superio_outb(watchdog.sioaddr, F71808FG_REG_WD_TIME, in watchdog_keepalive()
300 watchdog.timer_val); in watchdog_keepalive()
302 superio_exit(watchdog.sioaddr); in watchdog_keepalive()
305 mutex_unlock(&watchdog.lock); in watchdog_keepalive()
340 mutex_lock(&watchdog.lock); in watchdog_start()
341 err = superio_enter(watchdog.sioaddr); in watchdog_start()
344 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_start()
347 switch (watchdog.type) { in watchdog_start()
350 superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT2, 3); in watchdog_start()
351 superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT3, 3); in watchdog_start()
355 err = f71862fg_pin_configure(watchdog.sioaddr); in watchdog_start()
363 superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT1, 4); in watchdog_start()
368 superio_set_bit(watchdog.sioaddr, SIO_REG_MFUNCT1, 1); in watchdog_start()
373 superio_outb(watchdog.sioaddr, SIO_REG_MFUNCT3, in watchdog_start()
374 superio_inb(watchdog.sioaddr, SIO_REG_MFUNCT3) & 0xcf); in watchdog_start()
379 superio_clear_bit(watchdog.sioaddr, SIO_REG_CLOCK_SEL, 3); in watchdog_start()
381 superio_outb(watchdog.sioaddr, SIO_REG_TSI_LEVEL_SEL, 0x5f & in watchdog_start()
382 superio_inb(watchdog.sioaddr, SIO_REG_TSI_LEVEL_SEL)); in watchdog_start()
387 superio_clear_bit(watchdog.sioaddr, SIO_REG_MFUNCT3, 5); in watchdog_start()
397 tmp = superio_inb(watchdog.sioaddr, SIO_F81866_REG_PORT_SEL); in watchdog_start()
400 superio_outb(watchdog.sioaddr, SIO_F81866_REG_PORT_SEL, tmp); in watchdog_start()
402 superio_clear_bit(watchdog.sioaddr, SIO_F81866_REG_GPIO1, 5); in watchdog_start()
414 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_start()
415 superio_set_bit(watchdog.sioaddr, SIO_REG_ENABLE, 0); in watchdog_start()
417 if (watchdog.type == f81865 || watchdog.type == f81866) in watchdog_start()
418 superio_set_bit(watchdog.sioaddr, F81865_REG_WDO_CONF, in watchdog_start()
421 superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDO_CONF, in watchdog_start()
424 superio_set_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_start()
427 if (watchdog.pulse_mode) { in watchdog_start()
429 u8 wdt_conf = superio_inb(watchdog.sioaddr, in watchdog_start()
433 wdt_conf = (wdt_conf & 0xfc) | (watchdog.pulse_val & 0x03); in watchdog_start()
437 superio_outb(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_start()
441 superio_clear_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_start()
446 superio_exit(watchdog.sioaddr); in watchdog_start()
448 mutex_unlock(&watchdog.lock); in watchdog_start()
457 mutex_lock(&watchdog.lock); in watchdog_stop()
458 err = superio_enter(watchdog.sioaddr); in watchdog_stop()
461 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_stop()
463 superio_clear_bit(watchdog.sioaddr, F71808FG_REG_WDT_CONF, in watchdog_stop()
466 superio_exit(watchdog.sioaddr); in watchdog_stop()
469 mutex_unlock(&watchdog.lock); in watchdog_stop()
478 mutex_lock(&watchdog.lock); in watchdog_get_status()
479 status = (watchdog.caused_reboot) ? WDIOF_CARDRESET : 0; in watchdog_get_status()
480 mutex_unlock(&watchdog.lock); in watchdog_get_status()
493 mutex_lock(&watchdog.lock); in watchdog_is_running()
494 if (superio_enter(watchdog.sioaddr)) in watchdog_is_running()
496 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_is_running()
498 is_running = (superio_inb(watchdog.sioaddr, SIO_REG_ENABLE) & BIT(0)) in watchdog_is_running()
499 && (superio_inb(watchdog.sioaddr, F71808FG_REG_WDT_CONF) in watchdog_is_running()
502 superio_exit(watchdog.sioaddr); in watchdog_is_running()
505 mutex_unlock(&watchdog.lock); in watchdog_is_running()
516 if (test_and_set_bit(0, &watchdog.opened)) in watchdog_open()
521 clear_bit(0, &watchdog.opened); in watchdog_open()
528 watchdog.expect_close = 0; in watchdog_open()
534 clear_bit(0, &watchdog.opened); in watchdog_release()
536 if (!watchdog.expect_close) { in watchdog_release()
575 mutex_lock(&watchdog.lock); in watchdog_write()
576 watchdog.expect_close = expect_close; in watchdog_write()
577 mutex_unlock(&watchdog.lock); in watchdog_write()
611 return copy_to_user(uarg.ident, &watchdog.ident, in watchdog_ioctl()
612 sizeof(watchdog.ident)) ? -EFAULT : 0; in watchdog_ioctl()
649 return put_user(watchdog.timeout, uarg.i); in watchdog_ioctl()
691 watchdog.sioaddr = sioaddr; in watchdog_init()
692 watchdog.ident.options = WDIOC_SETTIMEOUT in watchdog_init()
696 snprintf(watchdog.ident.identity, in watchdog_init()
697 sizeof(watchdog.ident.identity), "%s watchdog", in watchdog_init()
698 f71808e_names[watchdog.type]); in watchdog_init()
703 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_init()
706 watchdog.caused_reboot = wdt_conf & BIT(F71808FG_FLAG_WDTMOUT_STS); in watchdog_init()
742 mutex_lock(&watchdog.lock); in watchdog_init()
746 superio_select(watchdog.sioaddr, SIO_F71808FG_LD_WDT); in watchdog_init()
763 mutex_unlock(&watchdog.lock); in watchdog_init()
775 mutex_unlock(&watchdog.lock); in watchdog_init()
801 watchdog.type = f71808fg; in f71808e_find()
804 watchdog.type = f71862fg; in f71808e_find()
808 watchdog.type = f71868; in f71808e_find()
812 watchdog.type = f71869; in f71808e_find()
815 watchdog.type = f71882fg; in f71808e_find()
818 watchdog.type = f71889fg; in f71808e_find()
825 watchdog.type = f81803; in f71808e_find()
828 watchdog.type = f81865; in f71808e_find()
831 watchdog.type = f81866; in f71808e_find()
841 f71808e_names[watchdog.type], in f71808e_find()