diff --git a/drivers/media/platform/rockchip/isp1/isp_params.c b/drivers/media/platform/rockchip/isp1/isp_params.c index c1bdda7caf0c..0bff3147cf81 100644 --- a/drivers/media/platform/rockchip/isp1/isp_params.c +++ b/drivers/media/platform/rockchip/isp1/isp_params.c @@ -1603,16 +1603,18 @@ void rkisp1_params_isr(struct rkisp1_isp_params_vdev *params_vdev, u32 isp_mis) if (!list_empty(¶ms_vdev->params)) cur_buf = list_first_entry(¶ms_vdev->params, struct rkisp1_buffer, queue); - spin_unlock(¶ms_vdev->config_lock); - - if (!cur_buf) + if (!cur_buf) { + spin_unlock(¶ms_vdev->config_lock); return; + } new_params = (struct rkisp1_isp_params_cfg *)(cur_buf->vaddr[0]); if (isp_mis & CIF_ISP_FRAME) { u32 isp_ctrl; + list_del(&cur_buf->queue); + __isp_isr_other_config(params_vdev, new_params); __isp_isr_meas_config(params_vdev, new_params); @@ -1621,13 +1623,10 @@ void rkisp1_params_isr(struct rkisp1_isp_params_vdev *params_vdev, u32 isp_mis) isp_ctrl |= CIF_ISP_CTRL_ISP_CFG_UPD; rkisp1_iowrite32(params_vdev, isp_ctrl, CIF_ISP_CTRL); - spin_lock(¶ms_vdev->config_lock); - list_del(&cur_buf->queue); - spin_unlock(¶ms_vdev->config_lock); - cur_buf->vb.sequence = cur_frame_id; vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE); } + spin_unlock(¶ms_vdev->config_lock); } static const struct cifisp_awb_meas_config awb_params_default_config = {