patch-2.3.40 linux/include/asm-arm/arch-ebsa285/irq.h

Next file: linux/include/asm-arm/arch-ebsa285/system.h
Previous file: linux/include/asm-arm/arch-ebsa285/io.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.39/linux/include/asm-arm/arch-ebsa285/irq.h linux/include/asm-arm/arch-ebsa285/irq.h
@@ -44,8 +44,19 @@
 static inline int fixup_irq(unsigned int irq)
 {
 #ifdef CONFIG_HOST_FOOTBRIDGE
-	if (irq == isa_irq)
+	if (irq == isa_irq) {
 		irq = *(unsigned char *)PCIIACK_BASE;
+
+		/*
+		 * The NetWinder appears to randomly give wrong interrupt
+		 * numbers from time to time.  When it does, map them to
+		 * the unused IRQ 13
+		 */
+		if (irq >= NR_IRQS) {
+			printk(KERN_ERR "Strange interrupt %d?\n", irq);
+			irq = _ISA_IRQ(13);
+		}
+	}
 #endif
 
 	return irq;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)