diff options
-rw-r--r-- | drivers/staging/media/atomisp/pci/atomisp_v4l2.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c index 03c535bcb229..ac8fefca7922 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_v4l2.c +++ b/drivers/staging/media/atomisp/pci/atomisp_v4l2.c @@ -963,10 +963,17 @@ static void atomisp_init_sensor(struct atomisp_input_subdev *input) sel.which = V4L2_SUBDEV_FORMAT_TRY; sel.target = V4L2_SEL_TGT_CROP; sel.r = input->native_rect; - v4l2_subdev_lock_state(input->try_sd_state); + + /* Don't lock try_sd_state if the lock is shared with the active state */ + if (!input->sensor->state_lock) + v4l2_subdev_lock_state(input->try_sd_state); + err = v4l2_subdev_call(input->sensor, pad, set_selection, input->try_sd_state, &sel); - v4l2_subdev_unlock_state(input->try_sd_state); + + if (!input->sensor->state_lock) + v4l2_subdev_unlock_state(input->try_sd_state); + if (err) goto unlock_act_sd_state; |