V4L/DVB (11140): usbvision: fix oops on ARM platform when allocating transfer buffers
authorDevin Heitmueller <dheitmueller@linuxtv.org>
Mon, 23 Mar 2009 02:39:12 +0000 (23:39 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:43:31 +0000 (12:43 -0300)
Add missing URB_NO_TRANSFER_DMA_MAP flag, since the use of consistent memory
is not permitted for DMA on the ARM platform.

Thanks to Paul Thomas <pthomas8589@gmail.com> for providing sample ARM hardware
that was experiencing the oops (tested on the at91rm9200 based LinuxStamp).

Thanks to David Brownell <david-b@pacbell.net> for providing insight into the
ARM memory architecture.

Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/usbvision/usbvision-core.c

index 71cb4aa..a0feb1c 100644 (file)
@@ -2503,7 +2503,7 @@ int usbvision_init_isoc(struct usb_usbvision *usbvision)
                urb->dev = dev;
                urb->context = usbvision;
                urb->pipe = usb_rcvisocpipe(dev, usbvision->video_endp);
-               urb->transfer_flags = URB_ISO_ASAP;
+               urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
                urb->interval = 1;
                urb->transfer_buffer = usbvision->sbuf[bufIdx].data;
                urb->complete = usbvision_isocIrq;