[PATCH] yenta: optimize interrupt handler
authorDaniel Ritz <daniel.ritz@gmx.ch>
Tue, 20 Sep 2005 21:17:37 +0000 (14:17 -0700)
committerDominik Brodowski <linux@dominikbrodowski.net>
Thu, 5 Jan 2006 22:41:00 +0000 (23:41 +0100)
Don't waste cpu time in yenta interrupt handler when the interrupt was for
another device.

Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
drivers/pcmcia/yenta_socket.c

index ec6ab65f087227d52a78a7ed3202a13dc9ef875c..8bfe72b713028ee14b89ad81ec7f11aae525d26a 100644 (file)
@@ -531,6 +531,9 @@ static irqreturn_t yenta_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
        csc = exca_readb(socket, I365_CSC);
 
+       if (!(cb_event || csc))
+               return IRQ_NONE;
+
        events = (cb_event & (CB_CD1EVENT | CB_CD2EVENT)) ? SS_DETECT : 0 ;
        events |= (csc & I365_CSC_DETECT) ? SS_DETECT : 0;
        if (exca_readb(socket, I365_INTCTL) & I365_PC_IOCARD) {
@@ -544,10 +547,7 @@ static irqreturn_t yenta_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        if (events)
                pcmcia_parse_events(&socket->socket, events);
 
-       if (cb_event || csc)
-               return IRQ_HANDLED;
-
-       return IRQ_NONE;
+       return IRQ_HANDLED;
 }
 
 static void yenta_interrupt_wrapper(unsigned long data)