Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271889
b: refs/heads/master
c: 3e0ac67
h: refs/heads/master
i:
  271887: b89d997
v: v3
  • Loading branch information
Al Cooper authored and Mauro Carvalho Chehab committed Sep 23, 2011
1 parent a0be12c commit c610e2a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 227bd5b3539a50290ec48b90c42c40cc7ae27191
refs/heads/master: 3e0ac6717b0a2593243ef3850025a42cb199880f
17 changes: 16 additions & 1 deletion trunk/drivers/media/video/uvc/uvc_video.c
Original file line number Diff line number Diff line change
Expand Up @@ -790,8 +790,12 @@ static void uvc_free_urb_buffers(struct uvc_streaming *stream)

for (i = 0; i < UVC_URBS; ++i) {
if (stream->urb_buffer[i]) {
#ifndef CONFIG_DMA_NONCOHERENT
usb_free_coherent(stream->dev->udev, stream->urb_size,
stream->urb_buffer[i], stream->urb_dma[i]);
#else
kfree(stream->urb_buffer[i]);
#endif
stream->urb_buffer[i] = NULL;
}
}
Expand Down Expand Up @@ -831,9 +835,14 @@ static int uvc_alloc_urb_buffers(struct uvc_streaming *stream,
for (; npackets > 1; npackets /= 2) {
for (i = 0; i < UVC_URBS; ++i) {
stream->urb_size = psize * npackets;
#ifndef CONFIG_DMA_NONCOHERENT
stream->urb_buffer[i] = usb_alloc_coherent(
stream->dev->udev, stream->urb_size,
gfp_flags | __GFP_NOWARN, &stream->urb_dma[i]);
#else
stream->urb_buffer[i] =
kmalloc(stream->urb_size, gfp_flags | __GFP_NOWARN);
#endif
if (!stream->urb_buffer[i]) {
uvc_free_urb_buffers(stream);
break;
Expand Down Expand Up @@ -908,10 +917,14 @@ static int uvc_init_video_isoc(struct uvc_streaming *stream,
urb->context = stream;
urb->pipe = usb_rcvisocpipe(stream->dev->udev,
ep->desc.bEndpointAddress);
#ifndef CONFIG_DMA_NONCOHERENT
urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
urb->transfer_dma = stream->urb_dma[i];
#else
urb->transfer_flags = URB_ISO_ASAP;
#endif
urb->interval = ep->desc.bInterval;
urb->transfer_buffer = stream->urb_buffer[i];
urb->transfer_dma = stream->urb_dma[i];
urb->complete = uvc_video_complete;
urb->number_of_packets = npackets;
urb->transfer_buffer_length = size;
Expand Down Expand Up @@ -969,8 +982,10 @@ static int uvc_init_video_bulk(struct uvc_streaming *stream,
usb_fill_bulk_urb(urb, stream->dev->udev, pipe,
stream->urb_buffer[i], size, uvc_video_complete,
stream);
#ifndef CONFIG_DMA_NONCOHERENT
urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
urb->transfer_dma = stream->urb_dma[i];
#endif

stream->urb[i] = urb;
}
Expand Down

0 comments on commit c610e2a

Please sign in to comment.