diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-02-26 15:08:35 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-03-14 23:30:56 +0100 |
commit | b6258fc1feabda868694ad5fdc7ca8edf3ef30ec (patch) | |
tree | db2a06bde078d146c4ec32ab34ebe7a1779356ea /drivers/firewire/ohci.c | |
parent | 44b74d909dc943fd9384930a141450cb17133511 (diff) | |
download | linux-b6258fc1feabda868694ad5fdc7ca8edf3ef30ec.tar.gz linux-b6258fc1feabda868694ad5fdc7ca8edf3ef30ec.tar.bz2 linux-b6258fc1feabda868694ad5fdc7ca8edf3ef30ec.zip |
firewire: ohci: omit IntEvent.busReset check rom AT queueing
Since commit 82b662dc4102 "flush AT contexts after bus reset for OHCI 1.2",
the driver takes care of any AT packets that were enqueued during a bus
reset phase. The check from commit 76f73ca1b291 is therefore no longer
necessary and the MMIO read can be avoided.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/ohci.c')
-rw-r--r-- | drivers/firewire/ohci.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index c0572283b93e..8f1e3ce930d6 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1329,21 +1329,8 @@ static int at_context_queue_packet(struct context *ctx, DESCRIPTOR_IRQ_ALWAYS | DESCRIPTOR_BRANCH_ALWAYS); - /* - * If the controller and packet generations don't match, we need to - * bail out and try again. If IntEvent.busReset is set, the AT context - * is halted, so appending to the context and trying to run it is - * futile. Most controllers do the right thing and just flush the AT - * queue (per section 7.2.3.2 of the OHCI 1.1 specification), but - * some controllers (like a JMicron JMB381 PCI-e) misbehave and wind - * up stalling out. So we just bail out in software and try again - * later, and everyone is happy. - * FIXME: Test of IntEvent.busReset may no longer be necessary since we - * flush AT queues in bus_reset_tasklet. - * FIXME: Document how the locking works. - */ - if (ohci->generation != packet->generation || - reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) { + /* FIXME: Document how the locking works. */ + if (ohci->generation != packet->generation) { if (packet->payload_mapped) dma_unmap_single(ohci->card.device, payload_bus, packet->payload_length, DMA_TO_DEVICE); |