diff options
| author | Hariram Purushothaman <hariramp@codeaurora.org> | 2015-09-02 16:55:11 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:04:04 -0700 |
| commit | 2643b2dfcef4e6147f557eca24de13b2da76d687 (patch) | |
| tree | 80542020b68ab6019fcbd1f9626dd320b42337a8 | |
| parent | 61eb046eae7c54b8a8abbade62a84b3326db0725 (diff) | |
msm: camera: Implementing stream base locks in qbuf, dqbuf, reqbufs.
Stream based locks used in qbuf, dqbuf, reqbus.
Old session based locks are removed.
CRs-Fixed: 986029
Change-Id: I30788f9248bea67e560d1a602e8feadfde6c2691
Signed-off-by: Ramesh V <ramev@codeaurora.org>
Signed-off-by: Hariram Purushothaman <hariramp@codeaurora.org>
| -rw-r--r-- | drivers/media/platform/msm/camera_v2/camera/camera.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/media/platform/msm/camera_v2/camera/camera.c b/drivers/media/platform/msm/camera_v2/camera/camera.c index 00012a771f10..f2c78d470a2e 100644 --- a/drivers/media/platform/msm/camera_v2/camera/camera.c +++ b/drivers/media/platform/msm/camera_v2/camera/camera.c @@ -42,6 +42,7 @@ struct camera_v4l2_private { unsigned int is_vb2_valid; /*0 if no vb2 buffers on stream, else 1*/ struct vb2_queue vb2_q; bool stream_created; + struct mutex lock; }; static void camera_pack_event(struct file *filep, int evt_id, @@ -225,9 +226,9 @@ static int camera_v4l2_reqbufs(struct file *filep, void *fh, session = msm_session_find(session_id); if (WARN_ON(!session)) return -EIO; - mutex_lock(&session->lock_q); + mutex_lock(&sp->lock); ret = vb2_reqbufs(&sp->vb2_q, req); - mutex_unlock(&session->lock_q); + mutex_unlock(&sp->lock); return ret; } @@ -248,9 +249,9 @@ static int camera_v4l2_qbuf(struct file *filep, void *fh, session = msm_session_find(session_id); if (WARN_ON(!session)) return -EIO; - mutex_lock(&session->lock_q); + mutex_lock(&sp->lock); ret = vb2_qbuf(&sp->vb2_q, pb); - mutex_unlock(&session->lock_q); + mutex_unlock(&sp->lock); return ret; } @@ -265,9 +266,9 @@ static int camera_v4l2_dqbuf(struct file *filep, void *fh, session = msm_session_find(session_id); if (WARN_ON(!session)) return -EIO; - mutex_lock(&session->lock_q); + mutex_lock(&sp->lock); ret = vb2_dqbuf(&sp->vb2_q, pb, filep->f_flags & O_NONBLOCK); - mutex_unlock(&session->lock_q); + mutex_unlock(&sp->lock); return ret; } @@ -495,6 +496,8 @@ static int camera_v4l2_fh_open(struct file *filep) (const unsigned long *)&stream_id, MSM_CAMERA_STREAM_CNT_BITS); pr_debug("%s: Found stream_id=%d\n", __func__, sp->stream_id); + mutex_init(&sp->lock); + v4l2_fh_init(&sp->fh, pvdev->vdev); v4l2_fh_add(&sp->fh); @@ -510,6 +513,7 @@ static int camera_v4l2_fh_release(struct file *filep) v4l2_fh_exit(&sp->fh); } + mutex_destroy(&sp->lock); kzfree(sp); return 0; } |
