From: Bjorn Helgaas Signed-off-by: Andrew Morton --- 25-akpm/drivers/acpi/pci_irq.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff -puN drivers/acpi/pci_irq.c~via-irq-fixup-fix drivers/acpi/pci_irq.c --- 25/drivers/acpi/pci_irq.c~via-irq-fixup-fix 2005-03-13 13:06:19.000000000 -0800 +++ 25-akpm/drivers/acpi/pci_irq.c 2005-03-13 13:06:19.000000000 -0800 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -444,11 +445,18 @@ acpi_pci_irq_enable ( } } - if (via_interrupt_line_quirk) - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq & 15); - dev->irq = acpi_register_gsi(irq, edge_level, active_high_low); + if (dev->vendor == PCI_VENDOR_ID_VIA) { + u8 old_irq, new_irq = dev->irq & 0xf; + + pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &old_irq); + printk(KERN_INFO PREFIX "Via IRQ fixup for %s, from %d " + "to %d\n", pci_name(dev), old_irq, new_irq); + udelay(15); + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); + } + printk(KERN_INFO PREFIX "PCI Interrupt %s[%c] -> ", pci_name(dev), 'A' + pin); _