[media] em28xx-audio: make sure audio is unmuted on open()

In all cases, when the first capture is called, we need to
call the code that unmutes the volume.

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
Frank Schaefer 2014-01-17 14:18:43 -03:00 коммит произвёл Mauro Carvalho Chehab
Родитель 22a5ea91df
Коммит ba35ca0708
1 изменённых файлов: 21 добавлений и 19 удалений

Просмотреть файл

@ -273,26 +273,28 @@ static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
mutex_lock(&dev->lock);
runtime->hw = snd_em28xx_hw_capture;
if ((dev->alt == 0 || dev->is_audio_only) && dev->adev.users == 0) {
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);
usb_set_interface(dev->udev, dev->ifnum, dev->alt);
if (dev->adev.users == 0) {
if (dev->alt == 0 || dev->is_audio_only) {
if (dev->is_audio_only)
/* audio is on a separate interface */
dev->alt = 1;
else
/* 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);
usb_set_interface(dev->udev, dev->ifnum, dev->alt);
}
/* Sets volume, mute, etc */
dev->mute = 0;