@ -63,22 +63,19 @@ unsigned long bfin_irq_flags = 0x1f;
EXPORT_SYMBOL ( bfin_irq_flags ) ;
# endif
/* The number of spurious interrupts */
atomic_t num_spurious ;
# ifdef CONFIG_PM
unsigned long bfin_sic_iwr [ 3 ] ; /* Up to 3 SIC_IWRx registers */
unsigned vr_wakeup ;
# endif
struct ivgx {
static st ruct ivgx {
/* irq number for request_irq, available in mach-bf5xx/irq.h */
unsigned int irqno ;
/* corresponding bit in the SIC_ISR register */
unsigned int isrflag ;
} ivg_table [ NR_PERI_INTS ] ;
struct ivg_slice {
static st ruct ivg_slice {
/* position of first irq in ivg_table for given ivg */
struct ivgx * ifirst ;
struct ivgx * istop ;
@ -1331,10 +1328,8 @@ void do_irq(int vec, struct pt_regs *fp)
sic_status [ 2 ] = bfin_read_SIC_ISR2 ( ) & bfin_read_SIC_IMASK2 ( ) ;
# endif
for ( ; ; ivg + + ) {
if ( ivg > = ivg_stop ) {
atomic_inc ( & num_spurious ) ;
if ( ivg > = ivg_stop )
return ;
}
if ( sic_status [ ( ivg - > irqno - IVG7 ) / 32 ] & ivg - > isrflag )
break ;
}
@ -1344,10 +1339,9 @@ void do_irq(int vec, struct pt_regs *fp)
sic_status = bfin_read_SIC_IMASK ( ) & bfin_read_SIC_ISR ( ) ;
for ( ; ; ivg + + ) {
if ( ivg > = ivg_stop ) {
atomic_inc ( & num_spurious ) ;
if ( ivg > = ivg_stop )
return ;
} else if ( sic_status & ivg - > isrflag )
if ( sic_status & ivg - > isrflag )
break ;
}
# endif
@ -1403,10 +1397,8 @@ asmlinkage int __ipipe_grab_irq(int vec, struct pt_regs *regs)
sic_status [ 2 ] = bfin_read_SIC_ISR2 ( ) & bfin_read_SIC_IMASK2 ( ) ;
# endif
for ( ; ; ivg + + ) {
if ( ivg > = ivg_stop ) {
atomic_inc ( & num_spurious ) ;
if ( ivg > = ivg_stop )
return 0 ;
}
if ( sic_status [ ( ivg - > irqno - IVG7 ) / 32 ] & ivg - > isrflag )
break ;
}
@ -1416,10 +1408,9 @@ asmlinkage int __ipipe_grab_irq(int vec, struct pt_regs *regs)
sic_status = bfin_read_SIC_IMASK ( ) & bfin_read_SIC_ISR ( ) ;
for ( ; ; ivg + + ) {
if ( ivg > = ivg_stop ) {
atomic_inc ( & num_spurious ) ;
if ( ivg > = ivg_stop )
return 0 ;
} else if ( sic_status & ivg - > isrflag )
if ( sic_status & ivg - > isrflag )
break ;
}
# endif