aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-sched.c
diff options
context:
space:
mode:
authorDmitri Epshtein <dima@marvell.com>2009-12-14 10:17:34 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-02 17:53:13 -0500
commit22e186948a262c9cd377fb43aa50bb3c3f01c468 (patch)
treeaf089f6c1eeac5d5d50783f08b6a4deb262259c8 /drivers/usb/host/ehci-sched.c
parentd63c66d2d08f52487f3ef32f1c9b1231d848966b (diff)
USB: ehci: fix audio record functionality for some Full speed sound blaster devices
This patch fix audio record functionality for some Full speed sound blaster devices. Issue: Sometimes transaction complete indication is coming from HW one frame later. Solution: If scan_periodic process now frame or previous frame now-1 and sitd transaction is not finished yet, exit scan_periodic function and check the same transaction in the next frame. Signed-off-by: Dimitry Epshtein <dima@marvell.com> Signed-off-by: Saeed Bishara <saeed@marvell.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-sched.c')
-rw-r--r--drivers/usb/host/ehci-sched.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index e7a3b087083f..39340ae00ac4 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -2324,9 +2324,13 @@ restart:
2324 * No need to check for activity unless the 2324 * No need to check for activity unless the
2325 * frame is current. 2325 * frame is current.
2326 */ 2326 */
2327 if (frame == clock_frame && live && 2327 if (((frame == clock_frame) ||
2328 (q.sitd->hw_results & 2328 (((frame + 1) % ehci->periodic_size)
2329 SITD_ACTIVE(ehci))) { 2329 == clock_frame))
2330 && live
2331 && (q.sitd->hw_results &
2332 SITD_ACTIVE(ehci))) {
2333
2330 incomplete = true; 2334 incomplete = true;
2331 q_p = &q.sitd->sitd_next; 2335 q_p = &q.sitd->sitd_next;
2332 hw_p = &q.sitd->hw_next; 2336 hw_p = &q.sitd->hw_next;