#define W836X7HF_WDT_CSR       0xf7
 #define NCT6102D_WDT_CSR       0xf2
 
+#define WDT_CSR_STATUS         0x10
+#define WDT_CSR_KBD            0x40
+#define WDT_CSR_MOUSE          0x80
+
 static void superio_outb(int reg, int val)
 {
        outb(reg, WDT_EFER);
        t = superio_inb(cr_wdt_control) & ~0x0C;
        superio_outb(cr_wdt_control, t);
 
-       /* reset trigger, disable keyboard & mouse turning off watchdog */
-       t = superio_inb(cr_wdt_csr) & ~0xD0;
+       t = superio_inb(cr_wdt_csr);
+       if (t & WDT_CSR_STATUS)
+               wdog->bootstatus |= WDIOF_CARDRESET;
+
+       /* reset status, disable keyboard & mouse turning off watchdog */
+       t &= ~(WDT_CSR_STATUS | WDT_CSR_KBD | WDT_CSR_MOUSE);
        superio_outb(cr_wdt_csr, t);
 
        superio_exit();