[PATCH] yenta: optimize interrupt handler
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>
This commit is contained in:
parent
37f7795544
commit
e4115805cf
|
@ -531,6 +531,9 @@ static irqreturn_t yenta_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
|
|
||||||
csc = exca_readb(socket, I365_CSC);
|
csc = exca_readb(socket, I365_CSC);
|
||||||
|
|
||||||
|
if (!(cb_event || csc))
|
||||||
|
return IRQ_NONE;
|
||||||
|
|
||||||
events = (cb_event & (CB_CD1EVENT | CB_CD2EVENT)) ? SS_DETECT : 0 ;
|
events = (cb_event & (CB_CD1EVENT | CB_CD2EVENT)) ? SS_DETECT : 0 ;
|
||||||
events |= (csc & I365_CSC_DETECT) ? SS_DETECT : 0;
|
events |= (csc & I365_CSC_DETECT) ? SS_DETECT : 0;
|
||||||
if (exca_readb(socket, I365_INTCTL) & I365_PC_IOCARD) {
|
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)
|
if (events)
|
||||||
pcmcia_parse_events(&socket->socket, events);
|
pcmcia_parse_events(&socket->socket, events);
|
||||||
|
|
||||||
if (cb_event || csc)
|
return IRQ_HANDLED;
|
||||||
return IRQ_HANDLED;
|
|
||||||
|
|
||||||
return IRQ_NONE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void yenta_interrupt_wrapper(unsigned long data)
|
static void yenta_interrupt_wrapper(unsigned long data)
|
||||||
|
|
Loading…
Reference in New Issue