X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fi386%2Fpci%2Firq.c;h=e29b67b9cc27fe30529cb10be92ecc3d81ce6879;hb=5e3b93f248c98873cc843e83092bb8da92ac85a2;hp=6aa9e5fcfd76615b81dda6b051840e1bdebac644;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index 6aa9e5fcf..e29b67b9c 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -23,8 +22,7 @@ #define PIRQ_SIGNATURE (('$' << 0) + ('P' << 8) + ('I' << 16) + ('R' << 24)) #define PIRQ_VERSION 0x0100 -static int broken_hp_bios_irq9; -static int acer_tm360_irqrouting; +int broken_hp_bios_irq9; static struct irq_routing_table *pirq_table; @@ -747,14 +745,6 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign) r->set(pirq_router_dev, dev, pirq, 11); } - /* same for Acer Travelmate 360, but with CB and irq 11 -> 10 */ - if (acer_tm360_irqrouting && dev->irq == 11 && dev->vendor == PCI_VENDOR_ID_O2) { - pirq = 0x68; - mask = 0x400; - dev->irq = r->get(pirq_router_dev, dev, pirq); - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); - } - /* * Find the best IRQ to assign: use the one * reported by the device if possible. @@ -817,7 +807,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign) if ( dev2->irq && dev2->irq != irq && \ (!(pci_probe & PCI_USE_PIRQ_MASK) || \ ((1 << dev2->irq) & mask)) ) { -#ifndef CONFIG_PCI_MSI +#ifndef CONFIG_PCI_USE_VECTOR printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n", pci_name(dev2), dev2->irq, irq); #endif @@ -903,54 +893,6 @@ static void __init pcibios_fixup_irqs(void) } } -/* - * Work around broken HP Pavilion Notebooks which assign USB to - * IRQ 9 even though it is actually wired to IRQ 11 - */ -static int __init fix_broken_hp_bios_irq9(struct dmi_system_id *d) -{ - if (!broken_hp_bios_irq9) { - broken_hp_bios_irq9 = 1; - printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident); - } - return 0; -} - -/* - * Work around broken Acer TravelMate 360 Notebooks which assign - * Cardbus to IRQ 11 even though it is actually wired to IRQ 10 - */ -static int __init fix_acer_tm360_irqrouting(struct dmi_system_id *d) -{ - if (!acer_tm360_irqrouting) { - acer_tm360_irqrouting = 1; - printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident); - } - return 0; -} - -static struct dmi_system_id __initdata pciirq_dmi_table[] = { - { - .callback = fix_broken_hp_bios_irq9, - .ident = "HP Pavilion N5400 Series Laptop", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), - DMI_MATCH(DMI_BIOS_VERSION, "GE.M1.03"), - DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"), - DMI_MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736"), - }, - }, - { - .callback = fix_acer_tm360_irqrouting, - .ident = "Acer TravelMate 36x Laptop", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Acer"), - DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), - }, - }, - { } -}; - static int __init pcibios_irq_init(void) { DBG("PCI: IRQ init\n"); @@ -958,8 +900,6 @@ static int __init pcibios_irq_init(void) if (pcibios_enable_irq || raw_pci_ops == NULL) return 0; - dmi_check_system(pciirq_dmi_table); - pirq_table = pirq_find_routing_table(); #ifdef CONFIG_PCI_BIOS @@ -1034,7 +974,7 @@ int pirq_enable_irq(struct pci_dev *dev) } dev = temp_dev; if (irq >= 0) { -#ifdef CONFIG_PCI_MSI +#ifdef CONFIG_PCI_USE_VECTOR if (!platform_legacy_irq(irq)) irq = IO_APIC_VECTOR(irq); #endif @@ -1060,7 +1000,7 @@ int pirq_enable_irq(struct pci_dev *dev) /* VIA bridges use interrupt line for apic/pci steering across the V-Link */ else if (interrupt_line_quirk) - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq & 15); + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); return 0; }