Messages in this thread Patch in this message | | | Date | Fri, 29 Oct 2004 10:18:48 +0200 | From | David Jez <> | Subject | Re: PCI & IRQ problems on TI Extensa 600CD |
| |
Hi all,
Last night i solved this problem. It cause by crippled PCI chipset parody called ALi and his perverse undocumented "features". I think that use ISA bridge as IRQ router if we haven't any router is guite good idea. Everythink with this patch works fine even though i have different irq in win. See attached logs. Jim, can you try this patch please? I assume that you have some kind of ALi chipset too. Maybe this solves your problem too. Martin, Marcelo, please aply :-).
PS: is here anybody who have relevant datascheet?
Regards, -- ------------------------------------------------------- David "Dave" Jez Brno, CZ, Europe E-mail: dave.jez@seznam.cz PGP key: finger xjezda00@eva.fit.vutbr.cz ---------=[ ~EOF ]=------------------------------------ pci-irq.c | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-)
diff -urN linux.orig/arch/i386/kernel/pci-irq.c linux/arch/i386/kernel/pci-irq.c --- linux.orig/arch/i386/kernel/pci-irq.c Fri Sep 24 15:19:06 2004 +++ linux/arch/i386/kernel/pci-irq.c Thu Oct 28 15:49:26 2004 @@ -736,6 +736,7 @@ { switch(device) { + case PCI_DEVICE_ID_AL_M1523: case PCI_DEVICE_ID_AL_M1533: r->name = "ALI"; r->get = pirq_ali_get; @@ -814,8 +815,18 @@ pirq_router_dev = pci_find_slot(rt->rtr_bus, rt->rtr_devfn); if (!pirq_router_dev) { - DBG("PCI: Interrupt router not found at %02x:%02x\n", rt->rtr_bus, rt->rtr_devfn); - return; + DBG("PCI: Interrupt router not found at %02x:%02x. Aieee, do you have ALi chipset?\n", + rt->rtr_bus, rt->rtr_devfn); + pirq_router_dev = (pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1523, NULL)); + if (!pirq_router_dev) + pirq_router_dev = (pci_find_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL)); + if (!pirq_router_dev) { + DBG("PC: ...hmmm sorry...\n"); + return; + } else { + DBG("PCI: OK, found %04x:%04x. Let's playing a game!\n", + pirq_router_dev->vendor, pirq_router_dev->device); + } } for( h = pirq_routers; h->vendor; h++) {[unhandled content-type:application/x-gtar] | |