---------------------
PatchSet 3150 
Date: 2005/05/02 08:53:46
Author: cladisch
Branch: HEAD
Tag: (none) 
Log:
Summary: usb-audio - use proper interval between synchronization packets

Add sanity checks when reading the bRefresh value, and actually use it
for the synchronization packets instead of polling at 1000 Hz.

Members: 
	usb/usbaudio.c:1.125->1.126 

Index: /sound/usb/usbaudio.c
diff -u /sound/usb/usbaudio.c.old /sound/usb/usbaudio.c
--- /sound/usb/usbaudio.c.old	Mon May  2 00:51:26 2005
+++ /sound/usb/usbaudio.c	Mon May  2 00:53:46 2005
@@ -1051,10 +1051,7 @@
 			u->urb->pipe = subs->syncpipe;
 			u->urb->transfer_flags = URB_ISO_ASAP;
 			u->urb->number_of_packets = u->packets;
-			if (snd_usb_get_speed(subs->dev) == USB_SPEED_HIGH)
-				u->urb->interval = 8;
-			else
-				u->urb->interval = 1;
+			u->urb->interval = 1 << subs->syncinterval;
 			u->urb->context = u;
 			u->urb->complete = snd_usb_complete_callback(snd_complete_sync_urb);
 		}
@@ -1272,7 +1269,12 @@
 			subs->syncpipe = usb_rcvisocpipe(dev, ep);
 		else
 			subs->syncpipe = usb_sndisocpipe(dev, ep);
-		subs->syncinterval = get_endpoint(alts, 1)->bRefresh;
+		if (get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
+		    get_endpoint(alts, 1)->bRefresh >= 1 &&
+		    get_endpoint(alts, 1)->bRefresh <= 9)
+			subs->syncinterval = get_endpoint(alts, 1)->bRefresh;
+		else
+			subs->syncinterval = 1;
 	}
 
 	/* always fill max packet size */