diff --git a/src/northsouthbridge/sis/630/southbridge.c b/src/northsouthbridge/sis/630/southbridge.c index cd87312e16..ca653443ae 100644 --- a/src/northsouthbridge/sis/630/southbridge.c +++ b/src/northsouthbridge/sis/630/southbridge.c @@ -82,6 +82,33 @@ final_southbridge_fixup() // set the interrupt to 'b' pci_write_config_byte(pcidev, PCI_INTERRUPT_LINE, 0xb); + } else { + printk(KERN_ERR "Can't find ethernet interface\n"); + } + + // fix up southbridge interrupt enables. + pcidev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, + (void *)NULL); + if (pcidev != NULL) { + // put symbolic names in here soon ... so much typing, so little time. + + // remap IRQ for PCI -- this is exactly what the BIOS does now. + pci_write_config_byte(pcidev, 0x42, 0xa); + pci_write_config_byte(pcidev, 0x43, 0xb); + pci_write_config_byte(pcidev, 0x44, 0xc); + + // now set up legacy serial interrupts + // that doesn't mean serial ports -- it's a serial interrupt + // line from the superio (LPC) + // first, enable them. + pci_write_config_byte(pcidev, 0x70, 0x80); + // skip the SMI, inta, etc. stuff. + // enable IRQs 7 to 1 + pci_write_config_byte(pcidev, 0x72, 0xfd); + pci_write_config_byte(pcidev, 0x73, 0xff); + + } else { + printk(KERN_EMERG "Can't find south bridge!\n"); } printk(KERN_INFO "Southbridge fixup done for SIS 503\n");