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: Vikram Sharma <vikramsa@codeaurora.org>
Bu işleme şunda yer alıyor:
Vikram Sharma
2019-11-21 22:45:46 +05:30
işlemeyi yapan: Gerrit - the friendly Code Review server
ebeveyn b08e2b4099
işleme 6b1a0dfc66

Dosyayı Görüntüle

@@ -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;
}