On Mon, 17 Mar 2003, Spirit wrote:
That shouldn't be a problem unless it takes 5 seconds to get to the southbridge.c code. But of course, moving it to an earlier position is a good idea.
It really takes 5 seconds? it did not used to. I liked having it in the southbridge code for a simple reason: if you are in that code then things are working well. If you are not in that kind at some point, you really want that watchdog reset. It is a very simple self-test.
However, what I was asking for is how to enable and make use of it, not how to disable it. I think I'll need to look into the i810-tco.c from the kernel sources and try to modify it for SIS630.
it's easy. Set the bit, and in 5 seconds or so you get a reset.
Here is a sample function that will enable reset, from the old patches.
+void +sis503_reset(struct pci_dev *dev) +{ + unsigned char b; + unsigned short acpi_base; + + printk(KERN_ERR __FUNCTION__ ": starting reset operation. \n"); + + /* Enable ACPI by set B7 on Reg 0x40, LPC */ + pci_read_config_byte(dev, 0x40, &b); + pci_write_config_byte(dev, 0x40, b | 0x80); + printk(KERN_ERR __FUNCTION__ ": enabled ACPI. \n"); + + /* get the ACPI base address for register 0x74,0x75 of LPC */ + pci_read_config_word(dev, 0x74, &acpi_base); + printk(KERN_ERR __FUNCTION__ ":acpi base: %x\n", acpi_base); + + /* Set software watchdog timer init value */ + outb(0x03, 0x4a + acpi_base); + printk(KERN_ERR __FUNCTION__ ": set the dog. \n"); + + printk(KERN_ERR __FUNCTION__ ": enabling dog. \n"); + /* Software watchdog enable, issue PCIRST# when time expire */ + outb(0x8f, 0x4b + acpi_base); + + printk(KERN_ERR __FUNCTION__ ": We should reset soon. \n"); +}
Speaking of ACPI... I can't get it working with LinuxBIOS. ospm_*.o modules won't load and the kernel complains on being unable to read ACPI tables.
that's because there are not acpi tables.
ron