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

Commit 1be56029 authored by Camera Software Integration's avatar Camera Software Integration Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: reqmgr: Mask re-apply for SHDR usecase" into camera-kernel.lnx.4.0

parents c465936e 5fcdbf95
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -3069,6 +3069,17 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
	struct cam_isp_context          *ctx_isp = NULL;
	struct cam_hw_config_args        cfg = {0};

	ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;

	if (apply->re_apply)
		if (apply->request_id <= ctx_isp->last_applied_req_id) {
			CAM_INFO_RATE_LIMIT(CAM_ISP,
				"ctx_id:%d Trying to reapply the same request %llu again",
				ctx->ctx_id,
				apply->request_id);
			return 0;
		}

	if (list_empty(&ctx->pending_req_list)) {
		CAM_ERR_RATE_LIMIT(CAM_ISP,
			"ctx_id:%d No available request for Apply id %lld",
@@ -3084,8 +3095,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
	 * The maximum number of request allowed to be outstanding is 2.
	 *
	 */
	ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;

	if (atomic_read(&ctx_isp->process_bubble)) {
		CAM_INFO_RATE_LIMIT(CAM_ISP,
			"ctx_id:%d Processing bubble cannot apply Request Id %llu",
@@ -3095,15 +3104,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
		goto end;
	}

	if (apply->re_apply)
		if (apply->request_id <= ctx_isp->last_applied_req_id) {
			CAM_INFO_RATE_LIMIT(CAM_ISP,
				"ctx_id:%d Trying to reapply the same request %llu again",
				ctx->ctx_id,
				apply->request_id);
			return 0;
		}

	spin_lock_bh(&ctx->lock);
	req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request,
		list);
+13 −0
Original line number Diff line number Diff line
@@ -929,6 +929,19 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link,
			apply_req.report_if_bubble =
				in_q->slot[idx].recover;

			/*
			 * If it is dual trigger usecase, need to tell
			 * devices that the req is re-applied, then the
			 * devices need to skip applying if the req has
			 * been handled.
			 * e.x. ISP device
			 */
			if (link->retry_cnt > 0) {
				if (!apply_req.report_if_bubble &&
					link->dual_trigger)
					apply_req.re_apply = true;
			}

			if ((slot->ops.dev_hdl == dev->dev_hdl) &&
				(slot->ops.is_applied)) {
				slot->ops.is_applied = false;