Skip to content

Commit

Permalink
[media] em28xx: fix check for audio only usb interfaces when changing…
Browse files Browse the repository at this point in the history
… the usb alternate setting

Previously, we've been assuming that the video endpoints are always at usb
interface 0. Hence, if vendor audio endpoints are provided at a separate
interface, they were supposed to be at interface number > 0.
Instead of checking for (interface number > 0) to determine if an interface
is a pure audio interface, dev->is_audio_only should be checked.

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
  • Loading branch information
Frank Schaefer authored and Mauro Carvalho Chehab committed Jan 14, 2014
1 parent 961717b commit 0191a2a
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions drivers/media/usb/em28xx/em28xx-audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,18 +266,29 @@ static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
dprintk("opening device and trying to acquire exclusive lock\n");

runtime->hw = snd_em28xx_hw_capture;
if ((dev->alt == 0 || dev->ifnum) && dev->adev.users == 0) {
if ((dev->alt == 0 || dev->is_audio_only) && dev->adev.users == 0) {
int nonblock = !!(substream->f_flags & O_NONBLOCK);

if (nonblock) {
if (!mutex_trylock(&dev->lock))
return -EAGAIN;
} else
mutex_lock(&dev->lock);
if (dev->ifnum)
if (dev->is_audio_only)
/* vendor audio is on a separate interface */
dev->alt = 1;
else
/* vendor audio is on the same interface as video */
dev->alt = 7;
/*
* FIXME: The intention seems to be to select the alt
* setting with the largest wMaxPacketSize for the video
* endpoint.
* At least dev->alt should be used instead, but we
* should probably not touch it at all if it is
* already >0, because wMaxPacketSize of the audio
* endpoints seems to be the same for all.
*/

dprintk("changing alternate number on interface %d to %d\n",
dev->ifnum, dev->alt);
Expand Down

0 comments on commit 0191a2a

Please sign in to comment.