Commit b6258fc1 authored by Stefan Richter's avatar Stefan Richter

firewire: ohci: omit IntEvent.busReset check rom AT queueing

Since commit 82b662dc "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 76f73ca1 is therefore no longer
necessary and the MMIO read can be avoided.
Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent 44b74d90
...@@ -1329,21 +1329,8 @@ static int at_context_queue_packet(struct context *ctx, ...@@ -1329,21 +1329,8 @@ static int at_context_queue_packet(struct context *ctx,
DESCRIPTOR_IRQ_ALWAYS | DESCRIPTOR_IRQ_ALWAYS |
DESCRIPTOR_BRANCH_ALWAYS); DESCRIPTOR_BRANCH_ALWAYS);
/* /* FIXME: Document how the locking works. */
* If the controller and packet generations don't match, we need to if (ohci->generation != packet->generation) {
* 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) {
if (packet->payload_mapped) if (packet->payload_mapped)
dma_unmap_single(ohci->card.device, payload_bus, dma_unmap_single(ohci->card.device, payload_bus,
packet->payload_length, DMA_TO_DEVICE); packet->payload_length, DMA_TO_DEVICE);
......
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