USB: ehci: fix audio record functionality for some Full speed sound blaster devices
authorDmitri Epshtein <[email protected]>
Mon, 14 Dec 2009 15:17:34 +0000 (17:17 +0200)
committerGreg Kroah-Hartman <[email protected]>
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 <[email protected]>
Signed-off-by: Saeed Bishara <[email protected]>
Cc: David Brownell <[email protected]>
Cc: Alan Stern <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
drivers/usb/host/ehci-sched.c

index e7a3b087083fb1a0e9174a68e3d1394f65fd2a8e..39340ae00ac488bcd6a0a3f1ed5ac71931dbe63e 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;