@@ -87,6 +87,14 @@ static void em28xx_audio_isocirq(struct urb *urb)
struct snd_pcm_substream *substream;
struct snd_pcm_runtime *runtime;
+size_t size = 0;
+
+if (!urb->status)
+for (i = 0; i < urb->number_of_packets; i++)
+ size =+ urb->iso_frame_desc[i].actual_length;
+
+printk("%s, status %d, %d packets (size %d)\n", __func__, urb->status, urb->number_of_packets, size);
+
switch (urb->status) {
case 0: /* success */
case -ETIMEDOUT: /* NAK */
@@ -215,14 +223,15 @@ static struct snd_pcm_hardware snd_em28xx_hw_capture = {
.formats = SNDRV_PCM_FMTBIT_S16_LE,
- .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_KNOT,
+// .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_KNOT,
+ .rates = SNDRV_PCM_RATE_48000,
.rate_min = 48000,
.rate_max = 48000,
.channels_min = 2,
.channels_max = 2,
.buffer_bytes_max = 62720 * 8, /* just about the value in usbaudio.c */
- .period_bytes_min = 64, /* 12544/2, */
+ .period_bytes_min = 188,
.period_bytes_max = 12544,
.periods_min = 2,
.periods_max = 98, /* 12544, */
The PCM audio hardware is not properly described. This causes the driver to use a period shorter than it should be, causing problems with USB 3.0. This is a first attempt to fix it. PS.: 1) This patch is not to be applied. It contains an ugly debug added for testing purposes, and uses a C99 comment; 2) em28xx can accept other sample rates. It would be good to add support for those other rates, as some audio playback hardware may not support 48KHz (I have one such hardware here). Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com> -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html