]>
Commit | Line | Data |
---|---|---|
9ae184f0 GKH |
1 | From a9d14bc0b188a822e42787d01e56c06fe9750162 Mon Sep 17 00:00:00 2001 |
2 | From: Daniel Mack <zonque@gmail.com> | |
3 | Date: Wed, 2 Oct 2013 17:49:50 +0200 | |
4 | Subject: ALSA: snd-usb-usx2y: remove bogus frame checks | |
5 | ||
6 | From: Daniel Mack <zonque@gmail.com> | |
7 | ||
8 | commit a9d14bc0b188a822e42787d01e56c06fe9750162 upstream. | |
9 | ||
10 | The frame check in i_usX2Y_urb_complete() and | |
11 | i_usX2Y_usbpcm_urb_complete() is bogus and produces false positives as | |
12 | described in this LAU thread: | |
13 | ||
14 | http://linuxaudio.org/mailarchive/lau/2013/5/20/200177 | |
15 | ||
16 | This patch removes the check code entirely. | |
17 | ||
18 | Cc: fzu@wemgehoertderstaat.de | |
19 | Reported-by: Dr Nicholas J Bailey <nicholas.bailey@glasgow.ac.uk> | |
20 | Suggested-by: Takashi Iwai <tiwai@suse.de> | |
21 | Signed-off-by: Daniel Mack <zonque@gmail.com> | |
22 | Signed-off-by: Takashi Iwai <tiwai@suse.de> | |
23 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
24 | ||
25 | --- | |
26 | sound/usb/usx2y/usbusx2yaudio.c | 22 +++------------------- | |
27 | sound/usb/usx2y/usx2yhwdeppcm.c | 7 +------ | |
28 | 2 files changed, 4 insertions(+), 25 deletions(-) | |
29 | ||
30 | --- a/sound/usb/usx2y/usbusx2yaudio.c | |
31 | +++ b/sound/usb/usx2y/usbusx2yaudio.c | |
32 | @@ -299,19 +299,6 @@ static void usX2Y_error_urb_status(struc | |
33 | usX2Y_clients_stop(usX2Y); | |
34 | } | |
35 | ||
36 | -static void usX2Y_error_sequence(struct usX2Ydev *usX2Y, | |
37 | - struct snd_usX2Y_substream *subs, struct urb *urb) | |
38 | -{ | |
39 | - snd_printk(KERN_ERR | |
40 | -"Sequence Error!(hcd_frame=%i ep=%i%s;wait=%i,frame=%i).\n" | |
41 | -"Most probably some urb of usb-frame %i is still missing.\n" | |
42 | -"Cause could be too long delays in usb-hcd interrupt handling.\n", | |
43 | - usb_get_current_frame_number(usX2Y->dev), | |
44 | - subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out", | |
45 | - usX2Y->wait_iso_frame, urb->start_frame, usX2Y->wait_iso_frame); | |
46 | - usX2Y_clients_stop(usX2Y); | |
47 | -} | |
48 | - | |
49 | static void i_usX2Y_urb_complete(struct urb *urb) | |
50 | { | |
51 | struct snd_usX2Y_substream *subs = urb->context; | |
52 | @@ -328,12 +315,9 @@ static void i_usX2Y_urb_complete(struct | |
53 | usX2Y_error_urb_status(usX2Y, subs, urb); | |
54 | return; | |
55 | } | |
56 | - if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF))) | |
57 | - subs->completed_urb = urb; | |
58 | - else { | |
59 | - usX2Y_error_sequence(usX2Y, subs, urb); | |
60 | - return; | |
61 | - } | |
62 | + | |
63 | + subs->completed_urb = urb; | |
64 | + | |
65 | { | |
66 | struct snd_usX2Y_substream *capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE], | |
67 | *playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; | |
68 | --- a/sound/usb/usx2y/usx2yhwdeppcm.c | |
69 | +++ b/sound/usb/usx2y/usx2yhwdeppcm.c | |
70 | @@ -244,13 +244,8 @@ static void i_usX2Y_usbpcm_urb_complete( | |
71 | usX2Y_error_urb_status(usX2Y, subs, urb); | |
72 | return; | |
73 | } | |
74 | - if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF))) | |
75 | - subs->completed_urb = urb; | |
76 | - else { | |
77 | - usX2Y_error_sequence(usX2Y, subs, urb); | |
78 | - return; | |
79 | - } | |
80 | ||
81 | + subs->completed_urb = urb; | |
82 | capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]; | |
83 | capsubs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; | |
84 | playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; |