mirror of https://gitee.com/openkylin/linux.git
firewire: ohci: omit IntEvent.busReset check rom AT queueing
Since commit82b662dc41
"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 commit76f73ca1b2
is therefore no longer necessary and the MMIO read can be avoided. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
44b74d909d
commit
b6258fc1fe
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue