summaryrefslogtreecommitdiff
path: root/linux/drivers
diff options
context:
space:
mode:
authorDouglas Schilling Landgraf <dougsland@redhat.com>2009-02-08 14:10:39 -0200
committerDouglas Schilling Landgraf <dougsland@redhat.com>2009-02-08 14:10:39 -0200
commit96f4a3677c2e17fe91f9956779fad977ec6a8f8c (patch)
treefbf2f5ba632899fab67f813178c2fa8c9f5ad00f /linux/drivers
parent2bd11adc025f4c324d0eb2a9861bdf7589e3b74e (diff)
downloadmediapointer-dvb-s2-96f4a3677c2e17fe91f9956779fad977ec6a8f8c.tar.gz
mediapointer-dvb-s2-96f4a3677c2e17fe91f9956779fad977ec6a8f8c.tar.bz2
em28xx: Fix for em28xx audio startup
From: Robert Krakora <rob.krakora@messagenetsystems.com> Essentially if a snd_em28xx_capture_trigger() stop followed by a snd_em28xx_capture_trigger() start would not yield any data because there was some logic put in with an adev->shutdown variable which did not seem warranted in my humble opinion. It would cause snd_em28xx_capture_trigger start never to start up the audio stream until the device was closed and reopened again. Upon re-opening the device adev->shutdown is reset and audio data would again flow. Priority: high Signed-off-by: Robert Krakora <rob.krakora@messagenetsystems.com> Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Diffstat (limited to 'linux/drivers')
-rw-r--r--linux/drivers/media/video/em28xx/em28xx-audio.c12
-rw-r--r--linux/drivers/media/video/em28xx/em28xx.h2
2 files changed, 2 insertions, 12 deletions
diff --git a/linux/drivers/media/video/em28xx/em28xx-audio.c b/linux/drivers/media/video/em28xx/em28xx-audio.c
index 8753398b0..921ec190d 100644
--- a/linux/drivers/media/video/em28xx/em28xx-audio.c
+++ b/linux/drivers/media/video/em28xx/em28xx-audio.c
@@ -174,9 +174,6 @@ static void em28xx_audio_isocirq(struct urb *urb)
}
urb->status = 0;
- if (dev->adev.shutdown)
- return;
-
status = usb_submit_urb(urb, GFP_ATOMIC);
if (status < 0) {
em28xx_errdev("resubmit of audio urb failed (error=%i)\n",
@@ -387,13 +384,6 @@ static int snd_em28xx_pcm_close(struct snd_pcm_substream *substream)
em28xx_audio_analog_set(dev);
mutex_unlock(&dev->lock);
- if (dev->adev.users == 0 && dev->adev.shutdown == 1) {
- dprintk("audio users: %d\n", dev->adev.users);
- dprintk("disabling audio stream!\n");
- dev->adev.shutdown = 0;
- dprintk("released lock\n");
- em28xx_cmd(dev, EM28XX_CAPTURE_STREAM_EN, 0);
- }
return 0;
}
@@ -463,7 +453,7 @@ static int snd_em28xx_capture_trigger(struct snd_pcm_substream *substream,
em28xx_cmd(dev, EM28XX_CAPTURE_STREAM_EN, 1);
return 0;
case SNDRV_PCM_TRIGGER_STOP:
- dev->adev.shutdown = 1;
+ em28xx_cmd(dev, EM28XX_CAPTURE_STREAM_EN, 0);
return 0;
default:
return -EINVAL;
diff --git a/linux/drivers/media/video/em28xx/em28xx.h b/linux/drivers/media/video/em28xx/em28xx.h
index 1e2ffea54..f3d0d3184 100644
--- a/linux/drivers/media/video/em28xx/em28xx.h
+++ b/linux/drivers/media/video/em28xx/em28xx.h
@@ -430,7 +430,7 @@ struct em28xx_audio {
struct snd_card *sndcard;
#endif
- int users, shutdown;
+ int users;
enum em28xx_stream_state capture_stream;
spinlock_t slock;
};