aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/usb/caiaq/caiaq-audio.c6
-rw-r--r--sound/usb/caiaq/caiaq-device.c2
-rw-r--r--sound/usb/caiaq/caiaq-device.h2
3 files changed, 9 insertions, 1 deletions
diff --git a/sound/usb/caiaq/caiaq-audio.c b/sound/usb/caiaq/caiaq-audio.c
index 577b1129de0e..08d51e0c9fea 100644
--- a/sound/usb/caiaq/caiaq-audio.c
+++ b/sound/usb/caiaq/caiaq-audio.c
@@ -377,6 +377,9 @@ static void read_in_urb_mode2(struct snd_usb_caiaqdev *dev,
377 377
378 for (stream = 0; stream < dev->n_streams; stream++, i++) { 378 for (stream = 0; stream < dev->n_streams; stream++, i++) {
379 sub = dev->sub_capture[stream]; 379 sub = dev->sub_capture[stream];
380 if (dev->input_panic)
381 usb_buf[i] = 0;
382
380 if (sub) { 383 if (sub) {
381 struct snd_pcm_runtime *rt = sub->runtime; 384 struct snd_pcm_runtime *rt = sub->runtime;
382 char *audio_buf = rt->dma_area; 385 char *audio_buf = rt->dma_area;
@@ -398,6 +401,9 @@ static void read_in_urb(struct snd_usb_caiaqdev *dev,
398 if (!dev->streaming) 401 if (!dev->streaming)
399 return; 402 return;
400 403
404 if (iso->actual_length < dev->bpp)
405 return;
406
401 switch (dev->spec.data_alignment) { 407 switch (dev->spec.data_alignment) {
402 case 0: 408 case 0:
403 read_in_urb_mode0(dev, urb, iso); 409 read_in_urb_mode0(dev, urb, iso);
diff --git a/sound/usb/caiaq/caiaq-device.c b/sound/usb/caiaq/caiaq-device.c
index 5736669df2d5..336a93de0b30 100644
--- a/sound/usb/caiaq/caiaq-device.c
+++ b/sound/usb/caiaq/caiaq-device.c
@@ -251,6 +251,8 @@ int snd_usb_caiaq_set_audio_params (struct snd_usb_caiaqdev *dev,
251 251
252 if (dev->audio_parm_answer != 1) 252 if (dev->audio_parm_answer != 1)
253 debug("unable to set the device's audio params\n"); 253 debug("unable to set the device's audio params\n");
254 else
255 dev->bpp = bpp;
254 256
255 return dev->audio_parm_answer == 1 ? 0 : -EINVAL; 257 return dev->audio_parm_answer == 1 ? 0 : -EINVAL;
256} 258}
diff --git a/sound/usb/caiaq/caiaq-device.h b/sound/usb/caiaq/caiaq-device.h
index 098b194f7259..4cce1ad7493d 100644
--- a/sound/usb/caiaq/caiaq-device.h
+++ b/sound/usb/caiaq/caiaq-device.h
@@ -91,7 +91,7 @@ struct snd_usb_caiaqdev {
91 int period_out_count[MAX_STREAMS]; 91 int period_out_count[MAX_STREAMS];
92 int input_panic, output_panic, warned; 92 int input_panic, output_panic, warned;
93 char *audio_in_buf, *audio_out_buf; 93 char *audio_in_buf, *audio_out_buf;
94 unsigned int samplerates; 94 unsigned int samplerates, bpp;
95 95
96 struct snd_pcm_substream *sub_playback[MAX_STREAMS]; 96 struct snd_pcm_substream *sub_playback[MAX_STREAMS];
97 struct snd_pcm_substream *sub_capture[MAX_STREAMS]; 97 struct snd_pcm_substream *sub_capture[MAX_STREAMS];