lkml.org 
[lkml]   [2004]   [Oct]   [29]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateFri, 29 Oct 2004 10:18:48 +0200
FromDavid Jez <>
SubjectRe: 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]
\
 
 \ /
  Last update: 2005-03-22 14:07    [from the cache]
©2003-2008