static char esb_expect_close;
static struct platform_device *esb_platform_device;
-
/* module parameters */
/* 30 sec default heartbeat (1 < heartbeat < 2*1023) */
#define WATCHDOG_HEARTBEAT 30
writeb(ESB_UNLOCK2, ESB_RELOAD_REG);
}
-static void esb_timer_start(void)
+static int esb_timer_start(void)
{
u8 val;
+ spin_lock(&esb_lock);
+ esb_unlock_registers();
+ writew(ESB_WDT_RELOAD, ESB_RELOAD_REG);
/* Enable or Enable + Lock? */
val = 0x02 | (nowayout ? 0x01 : 0x00);
pci_write_config_byte(esb_pci, ESB_LOCK_REG, val);
+ spin_unlock(&esb_lock);
+ return 0;
}
static int esb_timer_stop(void)
return -EBUSY;
/* Reload and activate timer */
- esb_timer_keepalive();
esb_timer_start();
return nonseekable_open(inode, file);
}
if (new_options & WDIOS_ENABLECARD) {
- esb_timer_keepalive();
esb_timer_start();
retval = 0;
}