Merge "msm: camera_v2: reject the late request"
This commit is contained in:
commit
aa2bb48a42
1 changed files with 13 additions and 15 deletions
|
@ -616,12 +616,9 @@ 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 &&
|
||||
drop_reconfig != 1)
|
||||
if (stream_info->undelivered_request_cnt > 0)
|
||||
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
|
||||
|
@ -3624,9 +3621,10 @@ 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\n",
|
||||
pr_debug("%s:%d invalid time to request frame %d try drop_reconfig\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) ||
|
||||
|
@ -3634,10 +3632,11 @@ static int msm_isp_request_frame(struct vfe_device *vfe_dev,
|
|||
(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\n",
|
||||
pr_debug("%s: vfe_%d request_frame %d cur frame id %d pix %d try drop_reconfig\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)) ||
|
||||
|
@ -3658,19 +3657,18 @@ 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);
|
||||
|
||||
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);
|
||||
vfe_dev->isp_page->drop_reconfig = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue