[media] media: marvell-ccic: use vb2_ops_wait_prepare/finish helper
authorPrabhakar Lad <prabhakar.csengg@gmail.com>
Wed, 26 Nov 2014 22:42:29 +0000 (19:42 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 2 Dec 2014 13:33:51 +0000 (11:33 -0200)
This patch drops driver specific wait_prepare() and
wait_finish() callbacks from vb2_ops and instead uses
the the helpers vb2_ops_wait_prepare/finish() provided
by the vb2 core, the lock member of the queue needs
to be initalized to a mutex so that vb2 helpers
vb2_ops_wait_prepare/finish() can make use of it.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/marvell-ccic/mcam-core.c

index b65761b4556880aba9f7cdb5f8bebdebcb1959d0..193373ff268dad773d14d07ce0a7c9414c94f451 100644 (file)
@@ -1102,26 +1102,6 @@ static void mcam_vb_buf_queue(struct vb2_buffer *vb)
                mcam_read_setup(cam);
 }
 
-
-/*
- * vb2 uses these to release the mutex when waiting in dqbuf.  I'm
- * not actually sure we need to do this (I'm not sure that vb2_dqbuf() needs
- * to be called with the mutex held), but better safe than sorry.
- */
-static void mcam_vb_wait_prepare(struct vb2_queue *vq)
-{
-       struct mcam_camera *cam = vb2_get_drv_priv(vq);
-
-       mutex_unlock(&cam->s_mutex);
-}
-
-static void mcam_vb_wait_finish(struct vb2_queue *vq)
-{
-       struct mcam_camera *cam = vb2_get_drv_priv(vq);
-
-       mutex_lock(&cam->s_mutex);
-}
-
 /*
  * These need to be called with the mutex held from vb2
  */
@@ -1191,8 +1171,8 @@ static const struct vb2_ops mcam_vb2_ops = {
        .buf_queue              = mcam_vb_buf_queue,
        .start_streaming        = mcam_vb_start_streaming,
        .stop_streaming         = mcam_vb_stop_streaming,
-       .wait_prepare           = mcam_vb_wait_prepare,
-       .wait_finish            = mcam_vb_wait_finish,
+       .wait_prepare           = vb2_ops_wait_prepare,
+       .wait_finish            = vb2_ops_wait_finish,
 };
 
 
@@ -1252,8 +1232,8 @@ static const struct vb2_ops mcam_vb2_sg_ops = {
        .buf_cleanup            = mcam_vb_sg_buf_cleanup,
        .start_streaming        = mcam_vb_start_streaming,
        .stop_streaming         = mcam_vb_stop_streaming,
-       .wait_prepare           = mcam_vb_wait_prepare,
-       .wait_finish            = mcam_vb_wait_finish,
+       .wait_prepare           = vb2_ops_wait_prepare,
+       .wait_finish            = vb2_ops_wait_finish,
 };
 
 #endif /* MCAM_MODE_DMA_SG */
@@ -1265,6 +1245,7 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
        memset(vq, 0, sizeof(*vq));
        vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        vq->drv_priv = cam;
+       vq->lock = &cam->s_mutex;
        INIT_LIST_HEAD(&cam->buffers);
        switch (cam->buffer_mode) {
        case B_DMA_contig: