Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7691167d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera_v2: reject the late request"

parents aa5efdde f4c6a3a2
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -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
@@ -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) ||
@@ -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)) ||
@@ -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;
	}