summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx231xx/cx231xx-vbi.c
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2012-01-07 09:52:37 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-01-10 22:38:59 -0200
commit7a6f6c29d264cdd2fe0eb3d923217eed5f0ad134 (patch)
treefc2044a0b5f6300cafbae08285c84e8f9bc55fee /drivers/media/video/cx231xx/cx231xx-vbi.c
parent15cb6af8ac1ee1291f98bae51cd46c6719e90c0f (diff)
downloadop-kernel-dev-7a6f6c29d264cdd2fe0eb3d923217eed5f0ad134.zip
op-kernel-dev-7a6f6c29d264cdd2fe0eb3d923217eed5f0ad134.tar.gz
[media] cx231xx: use URB_NO_TRANSFER_DMA_MAP on URBs allocated with usb_alloc_urb()
URBs allocated with usb_alloc_urb() are allocated from DMA-coherent areas, and therefore it is not necessary to call dma_map_single() on such buffers. Worst, on ARM, calling dma_map_single() on a DMA-coherent buffer will trigger a BUG_ON() in arch/arm/mm/dma-mapping.c. Therefore, we mark all URBs allocated with usb_alloc_urb() with the URB_NO_TRANSFER_DMA_MAP transfer_flags, so that the USB core does not do dma_map_single()/dma_unmap_single() on those buffers. This is similar to 882787ff8fdeb0be790547ee9b22b281095e95da for the gspca driver, and has already been discussed on the linux-media list in the past: http://www.mail-archive.com/linux-media@vger.kernel.org/msg37086.html. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx231xx/cx231xx-vbi.c')
-rw-r--r--drivers/media/video/cx231xx/cx231xx-vbi.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/video/cx231xx/cx231xx-vbi.c b/drivers/media/video/cx231xx/cx231xx-vbi.c
index 9c5967e..8cdee5f 100644
--- a/drivers/media/video/cx231xx/cx231xx-vbi.c
+++ b/drivers/media/video/cx231xx/cx231xx-vbi.c
@@ -452,7 +452,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
return -ENOMEM;
}
dev->vbi_mode.bulk_ctl.urb[i] = urb;
- urb->transfer_flags = 0;
+ urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
dev->vbi_mode.bulk_ctl.transfer_buffer[i] =
kzalloc(sb_size, GFP_KERNEL);
OpenPOWER on IntegriCloud