From: Andrey Panin This patch moves PCI IRQ routing workaround for Acer TravelMate 360 laptop to arch/i386/pci/irq.c and makes acer_tm360_irqrouting variable static. It also fixes VisWs build error caused by this workaround code. Signed-off-by: Andrey Panin Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/kernel/dmi_scan.c | 22 ---------------------- 25-akpm/arch/i386/pci/irq.c | 23 ++++++++++++++++++++++- 2 files changed, 22 insertions(+), 23 deletions(-) diff -puN arch/i386/kernel/dmi_scan.c~267-mm1-port-acer-laptop-irq-routing-workaround-to-new-dmi-probing arch/i386/kernel/dmi_scan.c --- 25/arch/i386/kernel/dmi_scan.c~267-mm1-port-acer-laptop-irq-routing-workaround-to-new-dmi-probing Wed Jun 23 14:16:27 2004 +++ 25-akpm/arch/i386/kernel/dmi_scan.c Wed Jun 23 14:17:05 2004 @@ -317,22 +317,6 @@ static __init int disable_smbus(struct d } /* - * Work around broken Acer TravelMate 360 Notebooks which assign Cardbus to - * IRQ 11 even though it is actually wired to IRQ 10 - */ -static __init int fix_acer_tm360_irqrouting(struct dmi_blacklist *d) -{ -#ifdef CONFIG_PCI - extern int acer_tm360_irqrouting; - if (acer_tm360_irqrouting == 0) { - acer_tm360_irqrouting = 1; - printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident); - } -#endif - return 0; -} - -/* * Check for clue free BIOS implementations who use * the following QA technique * @@ -830,12 +814,6 @@ static __initdata struct dmi_blacklist d } }, - { fix_acer_tm360_irqrouting, "Acer TravelMate 36x Laptop", { - MATCH(DMI_SYS_VENDOR, "Acer"), - MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), - NO_MATCH, NO_MATCH - } }, - /* * Generic per vendor APM settings */ diff -puN arch/i386/pci/irq.c~267-mm1-port-acer-laptop-irq-routing-workaround-to-new-dmi-probing arch/i386/pci/irq.c --- 25/arch/i386/pci/irq.c~267-mm1-port-acer-laptop-irq-routing-workaround-to-new-dmi-probing Wed Jun 23 14:16:27 2004 +++ 25-akpm/arch/i386/pci/irq.c Wed Jun 23 14:16:30 2004 @@ -24,7 +24,7 @@ #define PIRQ_VERSION 0x0100 static int broken_hp_bios_irq9; -int acer_tm360_irqrouting; +static int acer_tm360_irqrouting; static struct irq_routing_table *pirq_table; @@ -916,6 +916,19 @@ static int __init fix_broken_hp_bios_irq 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, @@ -927,6 +940,14 @@ static struct dmi_system_id __initdata p 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"), + }, + }, { } }; _