From: Daniel Ritz <daniel.ritz@gmx.ch>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] fix Acer TravelMate 360 interrupt routing
Date: Sat, 10 Apr 2004 22:24:29 +0200 [thread overview]
Message-ID: <200404102224.29396.daniel.ritz@gmx.ch> (raw)
acer travelmate 360 has a broken interrupt routing. there's an interrupt storm
on irq 10 w/o this patch as soon as yenta_socket is loaded. the problem
has been seen on different machines (reported on l-k and on pcmcia-cs
list). there's also an USB controller on the same interrupt line as the CB
which also works fine after the patch. and routing via ACPI fails too.
against 2.6.5
--- 1.36/arch/i386/pci/irq.c Fri Feb 27 06:48:13 2004
+++ edited/arch/i386/pci/irq.c Wed Apr 7 22:15:11 2004
@@ -22,6 +22,7 @@
#define PIRQ_VERSION 0x0100
int broken_hp_bios_irq9;
+int acer_tm360_irqrouting;
static struct irq_routing_table *pirq_table;
@@ -745,6 +744,13 @@
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 && pirq == 0x63 && dev->irq == 11) {
+ dev->irq = 10;
+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 10);
+ r->set(pirq_router_dev, dev, pirq, 10);
}
/*
--- 1.56/arch/i386/kernel/dmi_scan.c Sun Mar 21 06:33:07 2004
+++ edited/arch/i386/kernel/dmi_scan.c Wed Apr 7 22:19:57 2004
@@ -360,6 +360,22 @@
}
/*
+ * 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
*
@@ -890,6 +906,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
+ } },
+
/*
@@ -1028,6 +1051,12 @@
MATCH(DMI_BIOS_VERSION, "ASUS A7V ACPI BIOS Revision 1007"),
NO_MATCH }},
+ { disable_acpi_pci, "Acer TravelMate 36x Laptop", {
+ MATCH(DMI_SYS_VENDOR, "Acer"),
+ MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
+ NO_MATCH, NO_MATCH
+ } },
+
#endif
{ NULL, }
next reply other threads:[~2004-04-10 20:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-10 20:24 Daniel Ritz [this message]
[not found] <A6974D8E5F98D511BB910002A50A6647615F8369@hdsmsx403.hd.intel.com>
2004-04-14 1:26 ` [PATCH] fix Acer TravelMate 360 interrupt routing Len Brown
2004-04-14 13:47 ` Daniel Ritz
2004-04-16 5:31 ` Kitt Tientanopajai
-- strict thread matches above, loose matches on Subject: below --
2004-04-16 7:39 Brown, Len
2004-04-16 11:25 ` Kitt Tientanopajai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200404102224.29396.daniel.ritz@gmx.ch \
--to=daniel.ritz@gmx.ch \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.