aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/ohci.c
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2011-02-26 09:08:35 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2011-03-14 18:30:56 -0400
commitb6258fc1feabda868694ad5fdc7ca8edf3ef30ec (patch)
treedb2a06bde078d146c4ec32ab34ebe7a1779356ea /drivers/firewire/ohci.c
parent44b74d909dc943fd9384930a141450cb17133511 (diff)
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.c17
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,
1329 DESCRIPTOR_IRQ_ALWAYS | 1329 DESCRIPTOR_IRQ_ALWAYS |
1330 DESCRIPTOR_BRANCH_ALWAYS); 1330 DESCRIPTOR_BRANCH_ALWAYS);
1331 1331
1332 /* 1332 /* FIXME: Document how the locking works. */
1333 * If the controller and packet generations don't match, we need to 1333 if (ohci->generation != packet->generation) {
1334 * bail out and try again. If IntEvent.busReset is set, the AT context
1335 * is halted, so appending to the context and trying to run it is
1336 * futile. Most controllers do the right thing and just flush the AT
1337 * queue (per section 7.2.3.2 of the OHCI 1.1 specification), but
1338 * some controllers (like a JMicron JMB381 PCI-e) misbehave and wind
1339 * up stalling out. So we just bail out in software and try again
1340 * later, and everyone is happy.
1341 * FIXME: Test of IntEvent.busReset may no longer be necessary since we
1342 * flush AT queues in bus_reset_tasklet.
1343 * FIXME: Document how the locking works.
1344 */
1345 if (ohci->generation != packet->generation ||
1346 reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) {
1347 if (packet->payload_mapped) 1334 if (packet->payload_mapped)
1348 dma_unmap_single(ohci->card.device, payload_bus, 1335 dma_unmap_single(ohci->card.device, payload_bus,
1349 packet->payload_length, DMA_TO_DEVICE); 1336 packet->payload_length, DMA_TO_DEVICE);