static void eurwdt_activate_timer(void) { eurwdt_disable_timer(); eurwdt_write_reg(WDT_CTRL_REG, 0x01); /* activate the WDT */ eurwdt_write_reg(WDT_OUTPIN_CFG, !strcmp("int", ev) ? WDT_EVENT_INT : WDT_EVENT_REBOOT); /* Setting interrupt line */ if (irq == 2 || irq > 15 || irq < 0) { printk(KERN_ERR ": invalid irq number\n"); irq = 0; /* if invalid we disable interrupt */ } if (irq == 0) printk(KERN_INFO ": interrupt disabled\n"); eurwdt_write_reg(WDT_TIMER_CFG, irq<<4); eurwdt_write_reg(WDT_UNIT_SEL, WDT_UNIT_SECS); /* we use seconds */ eurwdt_set_timeout(0); /* the default timeout */ }
static inline void eurwdt_set_timeout(int timeout) { eurwdt_write_reg(WDT_TIMEOUT_VAL, (u8) timeout); }
static inline void eurwdt_unlock_chip(void) { outb(0x55, io); eurwdt_write_reg(0x07, 0x08); /* set the logical device */ }