Loading drivers/media/platform/msm/camera_v2/camera/camera.c +6 −0 Original line number Diff line number Diff line Loading @@ -623,6 +623,7 @@ static int camera_v4l2_open(struct file *filep) unsigned int opn_idx, idx; BUG_ON(!pvdev); mutex_lock(&pvdev->video_drvdata_mutex); rc = camera_v4l2_fh_open(filep); if (rc < 0) { pr_err("%s : camera_v4l2_fh_open failed Line %d rc %d\n", Loading Loading @@ -693,6 +694,7 @@ static int camera_v4l2_open(struct file *filep) idx |= (1 << find_first_zero_bit((const unsigned long *)&opn_idx, MSM_CAMERA_STREAM_CNT_BITS)); atomic_cmpxchg(&pvdev->opened, opn_idx, idx); mutex_unlock(&pvdev->video_drvdata_mutex); return rc; Loading @@ -707,6 +709,7 @@ stream_fail: vb2_q_fail: camera_v4l2_fh_release(filep); fh_open_fail: mutex_unlock(&pvdev->video_drvdata_mutex); return rc; } Loading Loading @@ -737,6 +740,7 @@ static int camera_v4l2_close(struct file *filep) if (WARN_ON(!session)) return -EIO; mutex_lock(&pvdev->video_drvdata_mutex); mutex_lock(&session->close_lock); opn_idx = atomic_read(&pvdev->opened); mask = (1 << sp->stream_id); Loading Loading @@ -778,6 +782,7 @@ static int camera_v4l2_close(struct file *filep) } camera_v4l2_fh_release(filep); mutex_unlock(&pvdev->video_drvdata_mutex); return 0; } Loading Loading @@ -924,6 +929,7 @@ int camera_init_v4l2(struct device *dev, unsigned int *session) *session = pvdev->vdev->num; atomic_set(&pvdev->opened, 0); mutex_init(&pvdev->video_drvdata_mutex); video_set_drvdata(pvdev->vdev, pvdev); device_init_wakeup(&pvdev->vdev->dev, 1); goto init_end; Loading drivers/media/platform/msm/camera_v2/msm.h +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ extern bool is_daemon_status; struct msm_video_device { struct video_device *vdev; atomic_t opened; struct mutex video_drvdata_mutex; }; struct msm_queue_head { Loading Loading
drivers/media/platform/msm/camera_v2/camera/camera.c +6 −0 Original line number Diff line number Diff line Loading @@ -623,6 +623,7 @@ static int camera_v4l2_open(struct file *filep) unsigned int opn_idx, idx; BUG_ON(!pvdev); mutex_lock(&pvdev->video_drvdata_mutex); rc = camera_v4l2_fh_open(filep); if (rc < 0) { pr_err("%s : camera_v4l2_fh_open failed Line %d rc %d\n", Loading Loading @@ -693,6 +694,7 @@ static int camera_v4l2_open(struct file *filep) idx |= (1 << find_first_zero_bit((const unsigned long *)&opn_idx, MSM_CAMERA_STREAM_CNT_BITS)); atomic_cmpxchg(&pvdev->opened, opn_idx, idx); mutex_unlock(&pvdev->video_drvdata_mutex); return rc; Loading @@ -707,6 +709,7 @@ stream_fail: vb2_q_fail: camera_v4l2_fh_release(filep); fh_open_fail: mutex_unlock(&pvdev->video_drvdata_mutex); return rc; } Loading Loading @@ -737,6 +740,7 @@ static int camera_v4l2_close(struct file *filep) if (WARN_ON(!session)) return -EIO; mutex_lock(&pvdev->video_drvdata_mutex); mutex_lock(&session->close_lock); opn_idx = atomic_read(&pvdev->opened); mask = (1 << sp->stream_id); Loading Loading @@ -778,6 +782,7 @@ static int camera_v4l2_close(struct file *filep) } camera_v4l2_fh_release(filep); mutex_unlock(&pvdev->video_drvdata_mutex); return 0; } Loading Loading @@ -924,6 +929,7 @@ int camera_init_v4l2(struct device *dev, unsigned int *session) *session = pvdev->vdev->num; atomic_set(&pvdev->opened, 0); mutex_init(&pvdev->video_drvdata_mutex); video_set_drvdata(pvdev->vdev, pvdev); device_init_wakeup(&pvdev->vdev->dev, 1); goto init_end; Loading
drivers/media/platform/msm/camera_v2/msm.h +1 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ extern bool is_daemon_status; struct msm_video_device { struct video_device *vdev; atomic_t opened; struct mutex video_drvdata_mutex; }; struct msm_queue_head { Loading