mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
ALSA: snd-usb-usx2y: remove bogus frame checks
commit a9d14bc0b1
upstream.
The frame check in i_usX2Y_urb_complete() and
i_usX2Y_usbpcm_urb_complete() is bogus and produces false positives as
described in this LAU thread:
http://linuxaudio.org/mailarchive/lau/2013/5/20/200177
This patch removes the check code entirely.
Cc: fzu@wemgehoertderstaat.de
Reported-by: Dr Nicholas J Bailey <nicholas.bailey@glasgow.ac.uk>
Suggested-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dc3a8b0c21
commit
863b6d816a
2 changed files with 4 additions and 25 deletions
|
@ -295,19 +295,6 @@ static void usX2Y_error_urb_status(struct usX2Ydev *usX2Y,
|
|||
usX2Y_clients_stop(usX2Y);
|
||||
}
|
||||
|
||||
static void usX2Y_error_sequence(struct usX2Ydev *usX2Y,
|
||||
struct snd_usX2Y_substream *subs, struct urb *urb)
|
||||
{
|
||||
snd_printk(KERN_ERR
|
||||
"Sequence Error!(hcd_frame=%i ep=%i%s;wait=%i,frame=%i).\n"
|
||||
"Most probably some urb of usb-frame %i is still missing.\n"
|
||||
"Cause could be too long delays in usb-hcd interrupt handling.\n",
|
||||
usb_get_current_frame_number(usX2Y->dev),
|
||||
subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out",
|
||||
usX2Y->wait_iso_frame, urb->start_frame, usX2Y->wait_iso_frame);
|
||||
usX2Y_clients_stop(usX2Y);
|
||||
}
|
||||
|
||||
static void i_usX2Y_urb_complete(struct urb *urb)
|
||||
{
|
||||
struct snd_usX2Y_substream *subs = urb->context;
|
||||
|
@ -324,12 +311,9 @@ static void i_usX2Y_urb_complete(struct urb *urb)
|
|||
usX2Y_error_urb_status(usX2Y, subs, urb);
|
||||
return;
|
||||
}
|
||||
if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
|
||||
subs->completed_urb = urb;
|
||||
else {
|
||||
usX2Y_error_sequence(usX2Y, subs, urb);
|
||||
return;
|
||||
}
|
||||
|
||||
subs->completed_urb = urb;
|
||||
|
||||
{
|
||||
struct snd_usX2Y_substream *capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE],
|
||||
*playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
|
||||
|
|
|
@ -244,13 +244,8 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb)
|
|||
usX2Y_error_urb_status(usX2Y, subs, urb);
|
||||
return;
|
||||
}
|
||||
if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
|
||||
subs->completed_urb = urb;
|
||||
else {
|
||||
usX2Y_error_sequence(usX2Y, subs, urb);
|
||||
return;
|
||||
}
|
||||
|
||||
subs->completed_urb = urb;
|
||||
capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
|
||||
capsubs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
|
||||
playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
|
||||
|
|
Loading…
Reference in a new issue