msm: camera: isp: Add eof notification for rdi only context

For RDI only context EOF is not notified; it should be
notified, for the corner case if the flash is
configured to apply at EOF then it will block apply for
ISP on SOF as well until the EOF is notified, this
change adds EOF notification.

CRs-Fixed: 3091241
Change-Id: If6d974d092d640d9def89bbcf7a88fba0d85579b
Signed-off-by: Tejas Prajapati <quic_tpraja@quicinc.com>
This commit is contained in:
Tejas Prajapati 2021-11-24 10:50:39 +05:30 • committed by Gerrit - the friendly Code Review server
commit c6de9ec432
3 changed files with 19 additions and 5 deletions

View file

@ -4315,7 +4315,7 @@ static struct cam_isp_ctx_irq_ops
__cam_isp_ctx_rdi_only_sof_in_top_state,
__cam_isp_ctx_reg_upd_in_sof,
NULL,
NULL,
__cam_isp_ctx_notify_eof_in_activated_state,
NULL,
},
},
@ -4326,7 +4326,7 @@ static struct cam_isp_ctx_irq_ops
__cam_isp_ctx_rdi_only_sof_in_applied_state,
NULL,
NULL,
NULL,
__cam_isp_ctx_notify_eof_in_activated_state,
__cam_isp_ctx_buf_done_in_applied,
},
},
@ -4337,7 +4337,7 @@ static struct cam_isp_ctx_irq_ops
__cam_isp_ctx_rdi_only_sof_in_top_state,
NULL,
NULL,
NULL,
__cam_isp_ctx_notify_eof_in_activated_state,
__cam_isp_ctx_buf_done_in_epoch,
},
},
@ -4348,7 +4348,7 @@ static struct cam_isp_ctx_irq_ops
__cam_isp_ctx_rdi_only_sof_in_bubble_state,
__cam_isp_ctx_rdi_only_reg_upd_in_bubble_state,
NULL,
NULL,
__cam_isp_ctx_notify_eof_in_activated_state,
__cam_isp_ctx_buf_done_in_bubble,
},
},
@ -4359,7 +4359,7 @@ static struct cam_isp_ctx_irq_ops
__cam_isp_ctx_rdi_only_sof_in_bubble_applied,
__cam_isp_ctx_rdi_only_reg_upd_in_bubble_applied_state,
NULL,
NULL,
__cam_isp_ctx_notify_eof_in_activated_state,
__cam_isp_ctx_buf_done_in_bubble_applied,
},
},

View file

@ -7990,6 +7990,14 @@ static int cam_ife_hw_mgr_handle_hw_eof(
case CAM_ISP_HW_VFE_IN_RDI1:
case CAM_ISP_HW_VFE_IN_RDI2:
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_hw_irq_eof_cb(ife_hw_mgr_ctx->common.cb_priv,
CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data);
break;
case CAM_ISP_HW_VFE_IN_PDLIB:
case CAM_ISP_HW_VFE_IN_LCR:
break;

View file

@ -5649,6 +5649,12 @@ static int cam_tfe_hw_mgr_handle_hw_eof(
case CAM_ISP_HW_TFE_IN_RDI0:
case CAM_ISP_HW_TFE_IN_RDI1:
case CAM_ISP_HW_TFE_IN_RDI2:
if (!tfe_hw_mgr_ctx->is_rdi_only_context)
break;
if (atomic_read(&tfe_hw_mgr_ctx->overflow_pending))
break;
tfe_hw_irq_eof_cb(tfe_hw_mgr_ctx->common.cb_priv,
CAM_ISP_HW_EVENT_EOF, (void *)&eof_done_event_data);
break;
default: