Commit 2dd5bed5 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Stefan Richter

firewire: ohci: optimize iso context checks in the interrupt handler

When the isochRx/isochTx bit is clear, we do not need to read the
corresponding iso interrupt event register.
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent 5b06db16
...@@ -1813,22 +1813,28 @@ static irqreturn_t irq_handler(int irq, void *data) ...@@ -1813,22 +1813,28 @@ static irqreturn_t irq_handler(int irq, void *data)
if (event & OHCI1394_respTxComplete) if (event & OHCI1394_respTxComplete)
tasklet_schedule(&ohci->at_response_ctx.tasklet); tasklet_schedule(&ohci->at_response_ctx.tasklet);
iso_event = reg_read(ohci, OHCI1394_IsoRecvIntEventClear); if (event & OHCI1394_isochRx) {
reg_write(ohci, OHCI1394_IsoRecvIntEventClear, iso_event); iso_event = reg_read(ohci, OHCI1394_IsoRecvIntEventClear);
reg_write(ohci, OHCI1394_IsoRecvIntEventClear, iso_event);
while (iso_event) {
i = ffs(iso_event) - 1; while (iso_event) {
tasklet_schedule(&ohci->ir_context_list[i].context.tasklet); i = ffs(iso_event) - 1;
iso_event &= ~(1 << i); tasklet_schedule(
&ohci->ir_context_list[i].context.tasklet);
iso_event &= ~(1 << i);
}
} }
iso_event = reg_read(ohci, OHCI1394_IsoXmitIntEventClear); if (event & OHCI1394_isochTx) {
reg_write(ohci, OHCI1394_IsoXmitIntEventClear, iso_event); iso_event = reg_read(ohci, OHCI1394_IsoXmitIntEventClear);
reg_write(ohci, OHCI1394_IsoXmitIntEventClear, iso_event);
while (iso_event) { while (iso_event) {
i = ffs(iso_event) - 1; i = ffs(iso_event) - 1;
tasklet_schedule(&ohci->it_context_list[i].context.tasklet); tasklet_schedule(
iso_event &= ~(1 << i); &ohci->it_context_list[i].context.tasklet);
iso_event &= ~(1 << i);
}
} }
if (unlikely(event & OHCI1394_regAccessFail)) if (unlikely(event & OHCI1394_regAccessFail))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment