[patch] VAIO irq assignment fix

From: Jes Sorensen (jes@wildopensource.com)
Date: Wed Jan 16 2002 - 19:00:18 EST


Hi

I have gotten a Sony VAIO R505TL laptop which has a Richo RL5C574
Cardbus controller however the broken bios doesn't assign an irq to the
controller even though it is attached.

This patch solves the problem and makes cardbus insert/eject a lot more
stable for me.

Cheers,
Jes
--- ../linux-2.4.18-pre2/arch/i386/kernel/dmi_scan.c Fri Dec 21 12:41:53 2001
+++ arch/i386/kernel/dmi_scan.c Wed Jan 16 18:36:05 2002
@@ -5,6 +5,7 @@
 #include <linux/init.h>
 #include <linux/apm_bios.h>
 #include <linux/slab.h>
+#include <linux/pci.h>
 #include <asm/io.h>
 #include <linux/pm.h>
 #include <asm/keyboard.h>
@@ -416,6 +417,26 @@
 
 
 /*
+ * Work around broken Sony VAIO Notebooks which do not assign irqs
+ * to their Richo RL5C475 Cardbus controller, IRQ is 9.
+ */
+static __init int fix_broken_sony_bios_irq(struct dmi_blacklist *d)
+{
+ struct pci_dev *pdev = NULL;
+
+ pdev = pci_find_device(PCI_VENDOR_ID_RICOH,
+ PCI_DEVICE_ID_RICOH_RL5C475, pdev);
+ if (pdev) {
+ pdev->irq = 9;
+ pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, 9);
+ printk(KERN_INFO "%s detected - fixing missing/"
+ "broken IRQ routing\n", d->ident);
+ }
+ return 0;
+}
+
+
+/*
  * Simple "print if true" callback
  */
  
@@ -614,7 +635,13 @@
                         NO_MATCH, NO_MATCH
                         } },
          
-
+ { fix_broken_sony_bios_irq, "Sony VAIO R505TL Series Laptop", {
+ MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+ MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
+ MATCH(DMI_BIOS_VERSION, "R0202U1"),
+ NO_MATCH
+ } },
+
         /*
          * Generic per vendor APM settings
          */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jan 23 2002 - 21:00:18 EST