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

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

Merge "msm: camera: isp: Prevent event processing during overflow" into camera-kernel.lnx.1.0

parents 52cbea98 4eba6a54
Loading
Loading
Loading
Loading
+14 −16
Original line number Diff line number Diff line
@@ -686,7 +686,7 @@ static void cam_ife_hw_mgr_print_acquire_info(
		goto fail;

	CAM_INFO(CAM_ISP,
		"Acquired %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
		"Successfully acquire %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
		(hw_mgr_ctx->is_dual) ? "dual" : "single",
		hw_idx[CAM_ISP_HW_SPLIT_LEFT], hw_idx[CAM_ISP_HW_SPLIT_RIGHT],
		num_pix_port, num_pd_port, num_rdi_port, hw_mgr_ctx->ctx_index);
@@ -696,7 +696,7 @@ static void cam_ife_hw_mgr_print_acquire_info(
fail:
	CAM_ERR(CAM_ISP, "Acquire HW failed for ctx:%u", hw_mgr_ctx->ctx_index);
	CAM_INFO(CAM_ISP,
		"Previously acquired %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
		"Fail to acquire %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
		(hw_mgr_ctx->is_dual) ? "dual" : "single",
		hw_idx[CAM_ISP_HW_SPLIT_LEFT], hw_idx[CAM_ISP_HW_SPLIT_RIGHT],
		num_pix_port, num_pd_port, num_rdi_port, hw_mgr_ctx->ctx_index);
@@ -7065,6 +7065,9 @@ static int cam_ife_hw_mgr_handle_hw_rup(
		return 0;
	}

	if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
		return 0;

	ife_hwr_irq_rup_cb =
		ife_hw_mgr_ctx->common.event_cb[CAM_ISP_HW_EVENT_REG_UPDATE];

@@ -7075,8 +7078,6 @@ static int cam_ife_hw_mgr_handle_hw_rup(
			ife_hw_mgr_ctx->master_hw_idx))
			break;

		if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
			break;
		ife_hwr_irq_rup_cb(ife_hw_mgr_ctx->common.cb_priv,
			CAM_ISP_HW_EVENT_REG_UPDATE, &rup_event_data);
		break;
@@ -7087,8 +7088,6 @@ static int cam_ife_hw_mgr_handle_hw_rup(
	case CAM_ISP_HW_VFE_IN_RDI3:
		if (!ife_hw_mgr_ctx->is_rdi_only_context)
			break;
		if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
			break;
		ife_hwr_irq_rup_cb(ife_hw_mgr_ctx->common.cb_priv,
			CAM_ISP_HW_EVENT_REG_UPDATE, &rup_event_data);
		break;
@@ -7180,6 +7179,9 @@ static int cam_ife_hw_mgr_handle_hw_epoch(
		return 0;
	}

	if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
		return 0;

	ife_hw_irq_epoch_cb =
		ife_hw_mgr_ctx->common.event_cb[CAM_ISP_HW_EVENT_EPOCH];

@@ -7189,9 +7191,6 @@ static int cam_ife_hw_mgr_handle_hw_epoch(
		rc = cam_ife_hw_mgr_check_irq_for_dual_vfe(ife_hw_mgr_ctx,
			CAM_ISP_HW_EVENT_EPOCH);
		if (!rc) {
			if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
				break;

			epoch_done_event_data.frame_id_meta =
				event_info->th_reg_val;
			ife_hw_irq_epoch_cb(ife_hw_mgr_ctx->common.cb_priv,
@@ -7234,6 +7233,9 @@ static int cam_ife_hw_mgr_handle_hw_sof(
		return 0;
	}

	if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
		return 0;

	memset(&sof_done_event_data, 0, sizeof(sof_done_event_data));

	ife_hw_irq_sof_cb =
@@ -7260,9 +7262,6 @@ static int cam_ife_hw_mgr_handle_hw_sof(
			if (ife_hw_mgr_ctx->use_frame_header_ts)
				sof_done_event_data.timestamp = 0x0;

			if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
				break;

			ife_hw_irq_sof_cb(ife_hw_mgr_ctx->common.cb_priv,
				CAM_ISP_HW_EVENT_SOF, &sof_done_event_data);
		}
@@ -7277,8 +7276,6 @@ static int cam_ife_hw_mgr_handle_hw_sof(
		cam_ife_mgr_cmd_get_sof_timestamp(ife_hw_mgr_ctx,
			&sof_done_event_data.timestamp,
			&sof_done_event_data.boot_time);
		if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
			break;
		ife_hw_irq_sof_cb(ife_hw_mgr_ctx->common.cb_priv,
			CAM_ISP_HW_EVENT_SOF, &sof_done_event_data);
		break;
@@ -7314,6 +7311,9 @@ static int cam_ife_hw_mgr_handle_hw_eof(
		return 0;
	}

	if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
		return  0;

	ife_hw_irq_eof_cb =
		ife_hw_mgr_ctx->common.event_cb[CAM_ISP_HW_EVENT_EOF];

@@ -7323,8 +7323,6 @@ static int cam_ife_hw_mgr_handle_hw_eof(
		rc = cam_ife_hw_mgr_check_irq_for_dual_vfe(ife_hw_mgr_ctx,
			CAM_ISP_HW_EVENT_EOF);
		if (!rc) {
			if (atomic_read(&ife_hw_mgr_ctx->overflow_pending))
				break;
			ife_hw_irq_eof_cb(ife_hw_mgr_ctx->common.cb_priv,
				CAM_ISP_HW_EVENT_EOF, &eof_done_event_data);
		}