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

Commit b9dd84cc authored by Vikram Sharma's avatar Vikram Sharma Committed by Sridhar Gujje
Browse files

msm: camera: isp: prioritize RUP over EPOCH in bottom half



When epoch comes along with RUP we report bubble as per current state
machine. This was because in camif_bottom_half handler we are handling
EPOCH before RUP. This change prioritize RUP over EPOCH  and EOF over
SOF to handle race.

CRs-Fixed: 2567120
Change-Id: I236bcc44b609f8ef7f963f19d33d46a3d95ba0d2
Signed-off-by: default avatarVikram Sharma <vikramsa@codeaurora.org>
parent 50e83233
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -709,6 +709,16 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv,
	CAM_DBG(CAM_ISP, "irq_status_0 = 0x%x irq_status_1 = 0x%x",
		irq_status0, irq_status1);

	if (irq_status0 & camif_priv->reg_data->eof_irq_mask) {
		CAM_DBG(CAM_ISP, "Received EOF");

		if (camif_priv->event_cb)
			camif_priv->event_cb(camif_priv->priv,
				CAM_ISP_HW_EVENT_EOF, (void *)&evt_info);

		ret = CAM_VFE_IRQ_STATUS_SUCCESS;
	}

	if (irq_status0 & camif_priv->reg_data->sof_irq_mask) {
		if ((camif_priv->enable_sof_irq_debug) &&
			(camif_priv->irq_debug_cnt <=
@@ -732,16 +742,6 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv,
		ret = CAM_VFE_IRQ_STATUS_SUCCESS;
	}

	if (irq_status0 & camif_priv->reg_data->epoch0_irq_mask) {
		CAM_DBG(CAM_ISP, "Received EPOCH");

		if (camif_priv->event_cb)
			camif_priv->event_cb(camif_priv->priv,
				CAM_ISP_HW_EVENT_EPOCH, (void *)&evt_info);

		ret = CAM_VFE_IRQ_STATUS_SUCCESS;
	}

	if (irq_status0 & camif_priv->reg_data->reg_update_irq_mask) {
		CAM_DBG(CAM_ISP, "Received REG_UPDATE_ACK");

@@ -752,12 +752,12 @@ static int cam_vfe_camif_handle_irq_bottom_half(void *handler_priv,
		ret = CAM_VFE_IRQ_STATUS_SUCCESS;
	}

	if (irq_status0 & camif_priv->reg_data->eof_irq_mask) {
		CAM_DBG(CAM_ISP, "Received EOF");
	if (irq_status0 & camif_priv->reg_data->epoch0_irq_mask) {
		CAM_DBG(CAM_ISP, "Received EPOCH");

		if (camif_priv->event_cb)
			camif_priv->event_cb(camif_priv->priv,
				CAM_ISP_HW_EVENT_EOF, (void *)&evt_info);
				CAM_ISP_HW_EVENT_EPOCH, (void *)&evt_info);

		ret = CAM_VFE_IRQ_STATUS_SUCCESS;
	}