aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/v4l2-core/videobuf2-dma-contig.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/v4l2-core/videobuf2-dma-contig.c')
-rw-r--r--drivers/media/v4l2-core/videobuf2-dma-contig.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c
index c4e4dfa8123a..4a02ade14b4f 100644
--- a/drivers/media/v4l2-core/videobuf2-dma-contig.c
+++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c
@@ -98,6 +98,9 @@ static void *vb2_dc_vaddr(void *buf_priv)
98{ 98{
99 struct vb2_dc_buf *buf = buf_priv; 99 struct vb2_dc_buf *buf = buf_priv;
100 100
101 if (!buf->vaddr && buf->db_attach)
102 buf->vaddr = dma_buf_vmap(buf->db_attach->dmabuf);
103
101 return buf->vaddr; 104 return buf->vaddr;
102} 105}
103 106
@@ -735,6 +738,7 @@ static int vb2_dc_map_dmabuf(void *mem_priv)
735 738
736 buf->dma_addr = sg_dma_address(sgt->sgl); 739 buf->dma_addr = sg_dma_address(sgt->sgl);
737 buf->dma_sgt = sgt; 740 buf->dma_sgt = sgt;
741 buf->vaddr = NULL;
738 742
739 return 0; 743 return 0;
740} 744}
@@ -754,6 +758,10 @@ static void vb2_dc_unmap_dmabuf(void *mem_priv)
754 return; 758 return;
755 } 759 }
756 760
761 if (buf->vaddr) {
762 dma_buf_vunmap(buf->db_attach->dmabuf, buf->vaddr);
763 buf->vaddr = NULL;
764 }
757 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir); 765 dma_buf_unmap_attachment(buf->db_attach, sgt, buf->dma_dir);
758 766
759 buf->dma_addr = 0; 767 buf->dma_addr = 0;