Index: quirks.c =================================================================== RCS file: /var/cvs/linux-2.6/drivers/pci/quirks.c,v retrieving revision 1.35 diff -u -p -r1.35 quirks.c --- quirks.c 12 Nov 2005 04:08:03 -0000 1.35 +++ quirks.c 11 Dec 2005 22:22:58 -0000 @@ -862,6 +862,28 @@ static void __init quirk_eisa_bridge(str DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge ); /* + * Cirrus 6832 Cardbus reports wrong irq on RDI Tadpole PARISC Laptop. + */ +#if defined(CONFIG_PARISC) +static void __devinit quirk_hp_cardbus(struct pci_dev *dev) +{ + u8 irq, new_irq; + + new_irq = dev->irq - 1; + pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); + + printk(KERN_ERR "PCI: Cirrus Cardbus IRQ fixup for %s, from %d to %d (old native irq=%d)\n", + pci_name(dev), dev->irq, new_irq, irq); + dev->irq = new_irq; + + udelay(15); /* unknown if delay really needed */ + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); + +} +DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_CIRRUS, PCI_DEVICE_ID_CIRRUS_6832, quirk_hp_cardbus ); +#endif + +/* * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge * is not activated. The myth is that Asus said that they do not want the * users to be irritated by just another PCI Device in the Win98 device