diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-11-26 06:41:09 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-11-26 06:41:09 -0500 |
commit | 93049b9368a2e257ace66252ab2cc066f3399cad (patch) | |
tree | 9094bff69fc035fa65e3918843a36b98b7759028 | |
parent | 6fa9dd069e62864d990ff9c7726f16b34018e718 (diff) |
videobuf2-dma-contig: Only support if HAVE_GENERIC_DMA_COHERENT
As reported by Stephen:
> After merging the v4l-dvb tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
>
> ERROR: "dma_common_get_sgtable" [drivers/media/v4l2-core/videobuf2-dma-contig.ko] undefined!
>
> Caused by commit 9ef2cbeb8192 ("[media] v4l: vb2-dma-contig: add support
> for DMABUF exporting"). dma_common_get_sgtable() is called from the
> inline dma_get_sgtable_attrs() and dma_get_sgtable_attrs() is "called
> from" dma_get_sgtable(). dma_common_get_sgtable() is only defined if
> ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY is set which depends on
> CONFIG_HAVE_GENERIC_DMA_COHERENT being set which it isn't for this build.
The simplest fix is to just not support DMABUF with vb2-contig, on archs
where this symbol doesn't exist. Some latter patch can rewrite it to
support this outside -arm.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/v4l2-core/videobuf2-dma-contig.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c index 10beaee7f0ae..572945048f79 100644 --- a/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c | |||
@@ -226,6 +226,8 @@ static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma) | |||
226 | /* DMABUF ops for exporters */ | 226 | /* DMABUF ops for exporters */ |
227 | /*********************************************/ | 227 | /*********************************************/ |
228 | 228 | ||
229 | #ifdef HAVE_GENERIC_DMA_COHERENT | ||
230 | |||
229 | struct vb2_dc_attachment { | 231 | struct vb2_dc_attachment { |
230 | struct sg_table sgt; | 232 | struct sg_table sgt; |
231 | enum dma_data_direction dir; | 233 | enum dma_data_direction dir; |
@@ -416,6 +418,8 @@ static struct dma_buf *vb2_dc_get_dmabuf(void *buf_priv) | |||
416 | return dbuf; | 418 | return dbuf; |
417 | } | 419 | } |
418 | 420 | ||
421 | #endif | ||
422 | |||
419 | /*********************************************/ | 423 | /*********************************************/ |
420 | /* callbacks for USERPTR buffers */ | 424 | /* callbacks for USERPTR buffers */ |
421 | /*********************************************/ | 425 | /*********************************************/ |
@@ -735,7 +739,9 @@ static void *vb2_dc_attach_dmabuf(void *alloc_ctx, struct dma_buf *dbuf, | |||
735 | const struct vb2_mem_ops vb2_dma_contig_memops = { | 739 | const struct vb2_mem_ops vb2_dma_contig_memops = { |
736 | .alloc = vb2_dc_alloc, | 740 | .alloc = vb2_dc_alloc, |
737 | .put = vb2_dc_put, | 741 | .put = vb2_dc_put, |
742 | #ifdef CONFIG_HAVE_GENERIC_DMA_COHERENT | ||
738 | .get_dmabuf = vb2_dc_get_dmabuf, | 743 | .get_dmabuf = vb2_dc_get_dmabuf, |
744 | #endif | ||
739 | .cookie = vb2_dc_cookie, | 745 | .cookie = vb2_dc_cookie, |
740 | .vaddr = vb2_dc_vaddr, | 746 | .vaddr = vb2_dc_vaddr, |
741 | .mmap = vb2_dc_mmap, | 747 | .mmap = vb2_dc_mmap, |