Looking through the code in it87_wdt.c it appears that the open/close of
the timer is performed by writing to the configuration registers that
Cinquero identified, however, that is not how the refresh is performed!

Looking at this part of the code:

/* watchdog timer handling */

static void wdt_keepalive(void)
{
        if (test_bit(WDTS_USE_GP, &wdt_status))
                inb(base);
        else
                /* The timer reloads with around 5 msec delay */
                outb(0x55, CIR_DR(base));
        set_bit(WDTS_KEEPALIVE, &wdt_status);
}

And the page 8.11.6 from the manual (JPEG image posted by Cinquero) it
seems that the watchdog, once armed, is supposed to be reset via a "CIR
Interrupt" that presumably is generated by writing 0x55 to the CIR's
base address (default is from #define CIR_BASE 0x0208).

So has anyone any idea of with the CIR actually is, or how it works?

The alternative seems to be a code change so the wdt_keepalive() call
re-writes the timer, but I am guessing there was a good reason for doing
this way originally (e.g. time involved in slow I/O register access or
similar).

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/932381

Title:
  IT87 watchdog timer driver not working

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/932381/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to