diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-11-18 07:51:01 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2014-11-25 05:55:32 -0500 |
commit | 0c3a14c177aa85afb991e7c2be3921aa9a52a893 (patch) | |
tree | de833b66ee640393292bc404e16c8f43a49ae89c /drivers/media/platform/marvell-ccic | |
parent | e5ae8fa739f8a1d5c292c5b13fa33ac64166e5a0 (diff) |
[media] vb2-dma-sg: add allocation context to dma-sg
Require that dma-sg also uses an allocation context. This is in preparation
for adding prepare/finish memops to sync the memory between DMA and CPU.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Pawel Osciak <pawel@osciak.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/marvell-ccic')
-rw-r--r-- | drivers/media/platform/marvell-ccic/mcam-core.c | 13 | ||||
-rw-r--r-- | drivers/media/platform/marvell-ccic/mcam-core.h | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c index f0eeb6cd262c..c3ff5388aeb3 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core.c +++ b/drivers/media/platform/marvell-ccic/mcam-core.c | |||
@@ -1079,6 +1079,8 @@ static int mcam_vb_queue_setup(struct vb2_queue *vq, | |||
1079 | *nbufs = minbufs; | 1079 | *nbufs = minbufs; |
1080 | if (cam->buffer_mode == B_DMA_contig) | 1080 | if (cam->buffer_mode == B_DMA_contig) |
1081 | alloc_ctxs[0] = cam->vb_alloc_ctx; | 1081 | alloc_ctxs[0] = cam->vb_alloc_ctx; |
1082 | else if (cam->buffer_mode == B_DMA_sg) | ||
1083 | alloc_ctxs[0] = cam->vb_alloc_ctx_sg; | ||
1082 | return 0; | 1084 | return 0; |
1083 | } | 1085 | } |
1084 | 1086 | ||
@@ -1286,10 +1288,12 @@ static int mcam_setup_vb2(struct mcam_camera *cam) | |||
1286 | vq->ops = &mcam_vb2_ops; | 1288 | vq->ops = &mcam_vb2_ops; |
1287 | vq->mem_ops = &vb2_dma_contig_memops; | 1289 | vq->mem_ops = &vb2_dma_contig_memops; |
1288 | vq->buf_struct_size = sizeof(struct mcam_vb_buffer); | 1290 | vq->buf_struct_size = sizeof(struct mcam_vb_buffer); |
1289 | cam->vb_alloc_ctx = vb2_dma_contig_init_ctx(cam->dev); | ||
1290 | vq->io_modes = VB2_MMAP | VB2_USERPTR; | 1291 | vq->io_modes = VB2_MMAP | VB2_USERPTR; |
1291 | cam->dma_setup = mcam_ctlr_dma_contig; | 1292 | cam->dma_setup = mcam_ctlr_dma_contig; |
1292 | cam->frame_complete = mcam_dma_contig_done; | 1293 | cam->frame_complete = mcam_dma_contig_done; |
1294 | cam->vb_alloc_ctx = vb2_dma_contig_init_ctx(cam->dev); | ||
1295 | if (IS_ERR(cam->vb_alloc_ctx)) | ||
1296 | return PTR_ERR(cam->vb_alloc_ctx); | ||
1293 | #endif | 1297 | #endif |
1294 | break; | 1298 | break; |
1295 | case B_DMA_sg: | 1299 | case B_DMA_sg: |
@@ -1300,6 +1304,9 @@ static int mcam_setup_vb2(struct mcam_camera *cam) | |||
1300 | vq->io_modes = VB2_MMAP | VB2_USERPTR; | 1304 | vq->io_modes = VB2_MMAP | VB2_USERPTR; |
1301 | cam->dma_setup = mcam_ctlr_dma_sg; | 1305 | cam->dma_setup = mcam_ctlr_dma_sg; |
1302 | cam->frame_complete = mcam_dma_sg_done; | 1306 | cam->frame_complete = mcam_dma_sg_done; |
1307 | cam->vb_alloc_ctx_sg = vb2_dma_sg_init_ctx(cam->dev); | ||
1308 | if (IS_ERR(cam->vb_alloc_ctx_sg)) | ||
1309 | return PTR_ERR(cam->vb_alloc_ctx_sg); | ||
1303 | #endif | 1310 | #endif |
1304 | break; | 1311 | break; |
1305 | case B_vmalloc: | 1312 | case B_vmalloc: |
@@ -1325,6 +1332,10 @@ static void mcam_cleanup_vb2(struct mcam_camera *cam) | |||
1325 | if (cam->buffer_mode == B_DMA_contig) | 1332 | if (cam->buffer_mode == B_DMA_contig) |
1326 | vb2_dma_contig_cleanup_ctx(cam->vb_alloc_ctx); | 1333 | vb2_dma_contig_cleanup_ctx(cam->vb_alloc_ctx); |
1327 | #endif | 1334 | #endif |
1335 | #ifdef MCAM_MODE_DMA_SG | ||
1336 | if (cam->buffer_mode == B_DMA_sg) | ||
1337 | vb2_dma_sg_cleanup_ctx(cam->vb_alloc_ctx_sg); | ||
1338 | #endif | ||
1328 | } | 1339 | } |
1329 | 1340 | ||
1330 | 1341 | ||
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.h b/drivers/media/platform/marvell-ccic/mcam-core.h index 60a8e1cfeff7..aa0c6eac254a 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core.h +++ b/drivers/media/platform/marvell-ccic/mcam-core.h | |||
@@ -176,6 +176,7 @@ struct mcam_camera { | |||
176 | /* DMA buffers - DMA modes */ | 176 | /* DMA buffers - DMA modes */ |
177 | struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS]; | 177 | struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS]; |
178 | struct vb2_alloc_ctx *vb_alloc_ctx; | 178 | struct vb2_alloc_ctx *vb_alloc_ctx; |
179 | struct vb2_alloc_ctx *vb_alloc_ctx_sg; | ||
179 | 180 | ||
180 | /* Mode-specific ops, set at open time */ | 181 | /* Mode-specific ops, set at open time */ |
181 | void (*dma_setup)(struct mcam_camera *cam); | 182 | void (*dma_setup)(struct mcam_camera *cam); |