On 12/28/2013 01:16 PM, Mauro Carvalho Chehab wrote:
> From: Mauro Carvalho Chehab <m.che...@samsung.com>
> 
> The recent changes in the USB API ("implement new semantics for
> URB_ISO_ASAP") made the former meaning of the URB_ISO_ASAP flag the
> default, and changed this flag to mean that URBs can be delayed.
> This is not the behaviour wanted by any of the audio drivers because
> it leads to discontinuous playback with very small period sizes.
> Therefore, our URBs need to be submitted without this flag.

Does this affect other drivers as well? E.g. cx231xx-audio.c uses this
as well.

Regards,

        Hans

> 
> This patch implements the same fix as found at snd-usb-audio driver
> (commit c75c5ab575af7db707689cdbb5a5c458e9a034bb)
> 
> Signed-off-by: Mauro Carvalho Chehab <m.che...@samsung.com>
> ---
>  drivers/media/usb/em28xx/em28xx-audio.c | 2 +-
>  drivers/media/usb/em28xx/em28xx-core.c  | 3 +--
>  2 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/usb/em28xx/em28xx-audio.c 
> b/drivers/media/usb/em28xx/em28xx-audio.c
> index a6eef06ffdcd..54f4eb6d513c 100644
> --- a/drivers/media/usb/em28xx/em28xx-audio.c
> +++ b/drivers/media/usb/em28xx/em28xx-audio.c
> @@ -195,7 +195,7 @@ static int em28xx_init_audio_isoc(struct em28xx *dev)
>               urb->dev = dev->udev;
>               urb->context = dev;
>               urb->pipe = usb_rcvisocpipe(dev->udev, EM28XX_EP_AUDIO);
> -             urb->transfer_flags = URB_ISO_ASAP;
> +             urb->transfer_flags = 0;
>               urb->transfer_buffer = dev->adev.transfer_buffer[i];
>               urb->interval = 1;
>               urb->complete = em28xx_audio_isocirq;
> diff --git a/drivers/media/usb/em28xx/em28xx-core.c 
> b/drivers/media/usb/em28xx/em28xx-core.c
> index d6928d83fb2a..8376b9e6397f 100644
> --- a/drivers/media/usb/em28xx/em28xx-core.c
> +++ b/drivers/media/usb/em28xx/em28xx-core.c
> @@ -953,8 +953,7 @@ int em28xx_alloc_urbs(struct em28xx *dev, enum 
> em28xx_mode mode, int xfer_bulk,
>                       usb_fill_int_urb(urb, dev->udev, pipe,
>                                        usb_bufs->transfer_buffer[i], sb_size,
>                                        em28xx_irq_callback, dev, 1);
> -                     urb->transfer_flags = URB_ISO_ASAP |
> -                                           URB_NO_TRANSFER_DMA_MAP;
> +                     urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
>                       k = 0;
>                       for (j = 0; j < usb_bufs->num_packets; j++) {
>                               urb->iso_frame_desc[j].offset = k;
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to