mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] fix irq routing on acer travelmate 360 laptop
@ 2004-05-31 21:20 Daniel Ritz
  0 siblings, 0 replies; only message in thread
From: Daniel Ritz @ 2004-05-31 21:20 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

hi andrew

the updated patch that fixes irq routing on acer travelmate 360 laptop.
against 2.6.7-rc2-bk

rgds
-daniel


---------

fixes interrupt routing on acer travelmate 360 notebooks. it looks like the bios
assigned the wrong pirq value for the cardbus bridge. just assigning irq 10 to
all devices with pirq 0x63 would break second usb port. pirq 0x68 seems to be
right one for cardbus.

Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>


--- 1.59/arch/i386/kernel/dmi_scan.c	Wed Apr 28 09:29:06 2004
+++ edited/arch/i386/kernel/dmi_scan.c	Sat May  8 00:46:42 2004
@@ -360,6 +360,21 @@
 }
 
 /*
+ * Work around broken Acer TravelMate 360 Notebooks which assign Cardbus to
+ * IRQ 11 even though it is actually wired to IRQ 10
+ */
+static __init int fix_acer_tm360_irqrouting(struct dmi_blacklist *d)
+{
+#ifdef CONFIG_PCI
+	extern int acer_tm360_irqrouting;
+	if (acer_tm360_irqrouting == 0) {
+		acer_tm360_irqrouting = 1;
+		printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident);
+	}
+#endif
+	return 0;
+}
+/*
  *  Check for clue free BIOS implementations who use
  *  the following QA technique
  *
@@ -844,6 +859,13 @@
 			MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"),
 			MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736")
 			} },
+
+	{ fix_acer_tm360_irqrouting, "Acer TravelMate 36x Laptop", {
+			MATCH(DMI_SYS_VENDOR, "Acer"),
+			MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
+			NO_MATCH, NO_MATCH
+			} },
+ 
  
 
 	/*
@@ -1033,6 +1055,13 @@
 			MATCH(DMI_BOARD_NAME, "PR-DLS"),
 			MATCH(DMI_BIOS_VERSION, "ASUS PR-DLS ACPI BIOS Revision 1010"),
 			MATCH(DMI_BIOS_DATE, "03/21/2003") }},
+
+ 	{ disable_acpi_pci, "Acer TravelMate 36x Laptop", {
+ 			MATCH(DMI_SYS_VENDOR, "Acer"),
+ 			MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
+ 			NO_MATCH, NO_MATCH
+ 			} },
+  
 #endif
 
 	{ NULL, }
--- 1.39/arch/i386/pci/irq.c	Fri Apr 23 21:43:20 2004
+++ edited/arch/i386/pci/irq.c	Sun May  9 20:53:19 2004
@@ -23,6 +23,7 @@
 #define PIRQ_VERSION 0x0100
 
 int broken_hp_bios_irq9;
+int acer_tm360_irqrouting;
 
 static struct irq_routing_table *pirq_table;
 
@@ -744,6 +745,14 @@
 		dev->irq = 11;
 		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11);
 		r->set(pirq_router_dev, dev, pirq, 11);
+	}
+
+	/* same for Acer Travelmate 360, but with CB and irq 11 -> 10 */
+	if (acer_tm360_irqrouting && dev->irq == 11 && dev->vendor == PCI_VENDOR_ID_O2) {
+		pirq = 0x68;
+		mask = 0x400;
+		dev->irq = r->get(pirq_router_dev, dev, pirq);
+		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
 	}
 
 	/*



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-05-31 21:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-31 21:20 [PATCH] fix irq routing on acer travelmate 360 laptop Daniel Ritz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®