diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-01-01 09:15:40 -0500 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2011-01-04 02:48:33 -0500 |
commit | 78dec56d6a56322e1b728d51f3a7def416d36b34 (patch) | |
tree | cecebe0b2376af8a774172286d4682bc5a697bfc /drivers | |
parent | 82b662dc41027527675740de15344d1b4e34958e (diff) |
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 <stefanr@s5r6.in-berlin.de>
Acked-by: Jarod Wilson <jarod@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firewire/ohci.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 3372cd187c25..cfe5afe359c6 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
@@ -1336,6 +1336,8 @@ static int at_context_queue_packet(struct context *ctx, | |||
1336 | * some controllers (like a JMicron JMB381 PCI-e) misbehave and wind | 1336 | * some controllers (like a JMicron JMB381 PCI-e) misbehave and wind |
1337 | * up stalling out. So we just bail out in software and try again | 1337 | * up stalling out. So we just bail out in software and try again |
1338 | * later, and everyone is happy. | 1338 | * later, and everyone is happy. |
1339 | * FIXME: Test of IntEvent.busReset may no longer be necessary since we | ||
1340 | * flush AT queues in bus_reset_tasklet. | ||
1339 | * FIXME: Document how the locking works. | 1341 | * FIXME: Document how the locking works. |
1340 | */ | 1342 | */ |
1341 | if (ohci->generation != packet->generation || | 1343 | if (ohci->generation != packet->generation || |
@@ -1750,6 +1752,11 @@ static void bus_reset_tasklet(unsigned long data) | |||
1750 | 1752 | ||
1751 | spin_unlock_irqrestore(&ohci->lock, flags); | 1753 | spin_unlock_irqrestore(&ohci->lock, flags); |
1752 | 1754 | ||
1755 | /* | ||
1756 | * Per OHCI 1.2 draft, clause 7.2.3.3, hardware may leave unsent | ||
1757 | * packets in the AT queues and software needs to drain them. | ||
1758 | * Some OHCI 1.1 controllers (JMicron) apparently require this too. | ||
1759 | */ | ||
1753 | at_context_flush(&ohci->at_request_ctx); | 1760 | at_context_flush(&ohci->at_request_ctx); |
1754 | at_context_flush(&ohci->at_response_ctx); | 1761 | at_context_flush(&ohci->at_response_ctx); |
1755 | 1762 | ||