USB: ehci: fix audio record functionality for some Full speed sound blaster devices
authorDmitri Epshtein <dima@marvell.com>
Mon, 14 Dec 2009 15:17:34 +0000 (17:17 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:53:13 +0000 (14:53 -0800)
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>
drivers/usb/host/ehci-sched.c

index e7a3b08..39340ae 100644 (file)
@@ -2324,9 +2324,13 @@ restart:
                                 * No need to check for activity unless the
                                 * frame is current.
                                 */
-                               if (frame == clock_frame && live &&
-                                               (q.sitd->hw_results &
-                                                       SITD_ACTIVE(ehci))) {
+                               if (((frame == clock_frame) ||
+                                    (((frame + 1) % ehci->periodic_size)
+                                     == clock_frame))
+                                   && live
+                                   && (q.sitd->hw_results &
+                                       SITD_ACTIVE(ehci))) {
+
                                        incomplete = true;
                                        q_p = &q.sitd->sitd_next;
                                        hw_p = &q.sitd->hw_next;