Index: southbridge.c
===================================================================
RCS file: /cvsroot/freebios/freebios/src/northsouthbridge/sis/630/southbridge.c,v
retrieving revision 1.22
diff -b -u -r1.22 southbridge.c
--- southbridge.c	2001/04/19 05:30:38	1.22
+++ southbridge.c	2001/05/10 08:24:36
@@ -264,6 +264,7 @@
 	if (pcidev != NULL) {
 		printk("Remapping IRQ on southbridge for OLD_KERNEL_HACK\n");
                // remap IRQ for PCI -- this is exactly what the BIOS does now.
+               pci_write_config_byte(pcidev, 0x41, 0x9);
                pci_write_config_byte(pcidev, 0x42, 0xa);
                pci_write_config_byte(pcidev, 0x43, 0xb);
                pci_write_config_byte(pcidev, 0x44, 0xc);
@@ -287,6 +288,27 @@
 		pci_write_config_byte(pcidev, PCI_INTERRUPT_LINE, 0xb);
 	} else {
 		printk(KERN_ERR "Can't find ethernet interface\n");
+	}
+	// -- Levi
+	// 2nd ethernet fixup (left pci slot). This should all work, and doesn't, yet.
+	// so we hack it for now.
+	// need a manifest constant for the enet device.
+	pcidev = pci_find_device(PCI_VENDOR_ID_3COM, 0x9200, (void *)NULL);
+	if (pcidev != NULL) {
+		u32 bar0 = 0xd001;
+		// set the BAR 0 to 0xb000. Safe, high value, known good.
+		// pci config set doesn't work for reasons we don't understand.
+		pci_write_config_dword(pcidev, PCI_BASE_ADDRESS_0, bar0);
+
+		// Make sure bus mastering is on. The tried-and-true probe in linuxpci.c
+		// doesn't set this for some reason.
+		pci_write_config_byte(pcidev, PCI_COMMAND,
+				      PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
+
+		// set the interrupt to '9'
+		pci_write_config_byte(pcidev, PCI_INTERRUPT_LINE, 0x9);
+	} else {
+		printk(KERN_ERR "Can't find 3Com ethernet interface\n");
 	}
 #endif /* OLD_KERNEL_HACK */
 
