patch-2.3.99-pre2 linux/arch/i386/kernel/pci-pc.c
Next file: linux/arch/i386/kernel/setup.c
Previous file: linux/arch/i386/kernel/pci-i386.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Thu Mar 16 11:27:22 2000
- Orig file:
v2.3.99-pre1/linux/arch/i386/kernel/pci-pc.c
- Orig date:
Fri Mar 10 16:40:39 2000
diff -u --recursive --new-file v2.3.99-pre1/linux/arch/i386/kernel/pci-pc.c linux/arch/i386/kernel/pci-pc.c
@@ -1103,9 +1103,9 @@
{
struct irq_info *q;
struct pci_dev *router;
- int i, pirq, newirq;
+ int i, pirq, newirq, reg;
u32 rtrid, mask;
- u8 x;
+ u8 x, y;
char *msg = NULL;
pin--;
@@ -1169,13 +1169,43 @@
DBG(" -> [PIIX] set to %02x\n", newirq);
pci_write_config_byte(router, pirq, newirq);
msg = "PIIX-NEW";
- } else
- DBG(" -> [PIIX] sink\n");
+ } else DBG(" -> [PIIX] sink\n");
break;
case ID(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533):
newirq = ali_set_irq(router, pirq-1, newirq);
if (newirq)
msg = "ALI";
+ break;
+ case ID(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596):
+ case ID(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686):
+ reg = 0x55 + (pirq >> 1);
+ pci_read_config_byte(router, reg, &x);
+ y = (pirq & 1) ? (x >> 4) : (x & 0x0f);
+ if (y) {
+ DBG(" -> [VIA] %02x\n", y);
+ newirq = y;
+ msg = "VIA";
+ } else if (newirq) {
+ DBG(" -> [VIA] set to %02x\n", newirq);
+ x = (pirq & 1) ? ((x & 0x0f) | (newirq << 4)) : ((x & 0xf0) | newirq);
+ pci_write_config_byte(router, reg, y);
+ msg = "VIA-NEW";
+ } else DBG(" -> [VIA] sink\n");
+ break;
+ case ID(PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C700):
+ reg = 0xb8 + (pirq >> 5);
+ pci_read_config_byte(router, reg, &x);
+ y = (pirq & 0x10) ? (x >> 4) : (x & 0x0f);
+ if (y) {
+ DBG(" -> [OPTI] %02x\n", y);
+ newirq = y;
+ msg = "OPTI";
+ } else if (newirq) {
+ DBG(" -> [OPTI] set to %02x\n", newirq);
+ x = (pirq & 0x10) ? ((x & 0x0f) | (newirq << 4)) : ((x & 0xf0) | newirq);
+ pci_write_config_byte(router, reg, y);
+ msg = "OPTI-NEW";
+ } else DBG(" -> [OPTI] sink\n");
break;
default:
DBG(" -> unknown router %04x/%04x\n", rt->rtr_vendor, rt->rtr_device);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)