From: Stefan Richter Date: Sat, 1 Jan 2011 14:15:40 +0000 (+0100) Subject: firewire: ohci: flush AT contexts after bus reset - addendum X-Git-Tag: v2.6.38-rc2~9^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78dec56d6a56322e1b728d51f3a7def416d36b34;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git firewire: ohci: flush AT contexts after bus reset - addendum Add comments - on why bus_reset_tasklet flushes AT queues, - that commit 76f73ca1b291 can possibly be reverted now. Signed-off-by: Stefan Richter Acked-by: Jarod Wilson --- diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 3372cd1..cfe5afe 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -1336,6 +1336,8 @@ static int at_context_queue_packet(struct context *ctx, * 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 || @@ -1750,6 +1752,11 @@ static void bus_reset_tasklet(unsigned long data) spin_unlock_irqrestore(&ohci->lock, flags); + /* + * Per OHCI 1.2 draft, clause 7.2.3.3, hardware may leave unsent + * packets in the AT queues and software needs to drain them. + * Some OHCI 1.1 controllers (JMicron) apparently require this too. + */ at_context_flush(&ohci->at_request_ctx); at_context_flush(&ohci->at_response_ctx);