Tony,

  How does this look?

  If we set irq to NR_IRQS then arch/arm/kernel/irq.c will use
bad_irq_desc when it processes the interrupt.  NOTE: I haven't tested
this yet.

  Rick


--- linux-omap-2.6/arch/arm/plat-omap/include/mach/entry-macro.S.git    
2008-10-22 20:01:33.000000000 -0700
+++ linux-omap-2.6/arch/arm/plat-omap/include/mach/entry-macro.S        
2008-10-23 21:12:29.000000000 -0700
@@ -66,7 +66,8 @@
 #endif
 
 #define INTCPS_SIR_IRQ_OFFSET  0x0040          /* Active interrupt offset */
-#define        ACTIVEIRQ_MASK          0x7f            /* Active interrupt 
bits */
+#define INTCPS_CONTROL         0x0048          /* new interrupt agreement bits 
*/
+#define INTCPS_CONTROL_NEWIRQAGR 0x0001                /* Reset IRQ output and 
enable new IRQ generation */
 
                .macro  disable_fiq
                .endm
@@ -79,18 +80,13 @@
 
                .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
                ldr     \base, =OMAP2_VA_IC_BASE
-               ldr     \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
-               cmp     \irqnr, #0x0
-               bne     2222f
-               ldr     \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
-               cmp     \irqnr, #0x0
-               bne     2222f
-               ldr     \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
-               cmp     \irqnr, #0x0
+               ldr     \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]  /* NOTE: range 
is 0-0x5f and 0ffffff80 to 0xffffffdf */
+               adds    \tmp, \irqnr, #1 /* change from zero based to 1 based 
so we clear Z */
+               bpl     2222f  /* if no spurious interrupt */
+               mov     \tmp, #INTCPS_CONTROL_NEWIRQAGR /* Ack the spurious irq 
*/
+               str     \tmp, [\base, #INTCPS_CONTROL]
+               movw    \irqnr, #NR_IRQS /* set to NR_IRQS so that 
bad_irq_desc() get's called */
 2222:
-               ldrne   \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]
-               and     \irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits 
*/
-
                .endm
 
                .macro  irq_prio_table
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to