Loading drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +13 −15 Original line number Diff line number Diff line Loading @@ -626,12 +626,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 Loading Loading @@ -3676,9 +3673,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) || Loading @@ -3686,10 +3684,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)) || Loading @@ -3710,19 +3709,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 Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +13 −15 Original line number Diff line number Diff line Loading @@ -626,12 +626,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 Loading Loading @@ -3676,9 +3673,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) || Loading @@ -3686,10 +3684,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)) || Loading @@ -3710,19 +3709,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