[patch] VAIO irq assignment fix

Jes Sorensen
2002-01-17T00:00:44Z

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
*/