Skip to content
This repository has been archived by the owner on Jun 20, 2022. It is now read-only.

Commit

Permalink
Revert "msm: camera_v2: reject the late request"
Browse files Browse the repository at this point in the history
This reverts commit bc82952.

Signed-off-by: Shashank Baghel <theradcolor@gmail.com>
  • Loading branch information
radcolor committed Jul 13, 2020
1 parent 2794abf commit 620344d
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -616,9 +616,12 @@ static void msm_isp_update_framedrop_reg(struct msm_vfe_axi_stream *stream_info,
MSM_VFE_STREAM_STOP_PERIOD;
}

if (stream_info->undelivered_request_cnt > 0)
if (stream_info->undelivered_request_cnt > 0 &&
drop_reconfig != 1)
stream_info->current_framedrop_period =
MSM_VFE_STREAM_STOP_PERIOD;
if (stream_info->controllable_output && drop_reconfig == 1)
stream_info->current_framedrop_period = 1;
/*
* re-configure the period pattern, only if it's not already
* set to what we want
Expand Down Expand Up @@ -3626,22 +3629,20 @@ static int msm_isp_request_frame(struct vfe_device *vfe_dev,
(stream_info->undelivered_request_cnt <=
MAX_BUFFERS_IN_HW)
) {
pr_debug("%s:%d invalid time to request frame %d try drop_reconfig\n",
pr_debug("%s:%d invalid time to request frame %d\n",
__func__, __LINE__, frame_id);
vfe_dev->isp_page->drop_reconfig = 1;
return 0;
} else if ((vfe_dev->axi_data.src_info[frame_src].active) &&
((frame_id ==
vfe_dev->axi_data.src_info[frame_src].frame_id) ||
(frame_id == vfe_dev->irq_sof_id)) &&
(stream_info->undelivered_request_cnt <=
MAX_BUFFERS_IN_HW)) {
vfe_dev->isp_page->drop_reconfig = 1;
pr_debug("%s: vfe_%d request_frame %d cur frame id %d pix %d try drop_reconfig\n",
pr_debug("%s: vfe_%d request_frame %d cur frame id %d pix %d\n",
__func__, vfe_dev->pdev->id, frame_id,
vfe_dev->axi_data.src_info[VFE_PIX_0].frame_id,
vfe_dev->axi_data.src_info[VFE_PIX_0].active);
return 0;
} else if ((vfe_dev->axi_data.src_info[frame_src].active && (frame_id !=
vfe_dev->axi_data.src_info[frame_src].frame_id + vfe_dev->
axi_data.src_info[frame_src].sof_counter_step)) ||
Expand All @@ -3662,18 +3663,19 @@ static int msm_isp_request_frame(struct vfe_device *vfe_dev,
if ((frame_src == VFE_PIX_0) && !stream_info->undelivered_request_cnt &&
MSM_VFE_STREAM_STOP_PERIOD !=
stream_info->activated_framedrop_period) {
/* wm is reloaded if undelivered_request_cnt is zero.
* As per the hw behavior wm should be disabled or skip writing
* before reload happens other wise wm could start writing from
* middle of the frame and could result in image corruption.
* instead of dropping frame in this error scenario use
* drop_reconfig flag to process the request in next sof.
*/
pr_debug("%s:%d vfe %d frame_id %d prev_pattern %x stream_id %x\n",
__func__, __LINE__, vfe_dev->pdev->id, frame_id,
stream_info->activated_framedrop_period,
stream_info->stream_id);
vfe_dev->isp_page->drop_reconfig = 1;

rc = msm_isp_return_empty_buffer(vfe_dev, stream_info,
user_stream_id, frame_id, buf_index, frame_src);
if (rc < 0)
pr_err("%s:%d failed: return_empty_buffer src %d\n",
__func__, __LINE__, frame_src);
stream_info->current_framedrop_period =
MSM_VFE_STREAM_STOP_PERIOD;
msm_isp_cfg_framedrop_reg(stream_info);
return 0;
}

Expand Down

0 comments on commit 620344d

Please sign in to comment.