Loading drivers/cam_isp/cam_isp_context.c +19 −7 Original line number Diff line number Diff line Loading @@ -1254,13 +1254,25 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( req->request_id, ctx_isp->active_req_cnt, ctx->ctx_id); } else if (req_isp->bubble_detected) { if (ctx_isp->last_sof_timestamp != ctx_isp->sof_timestamp_val) { ctx_isp->bubble_frame_cnt++; CAM_DBG(CAM_ISP, "Waiting on bufdone for bubble req: %lld, since frame_cnt = %lld", req->request_id, ctx_isp->bubble_frame_cnt); "Waiting on bufdone bubble req %lld ctx %u frame_cnt %lld link 0x%x", req->request_id, ctx->ctx_id, ctx_isp->bubble_frame_cnt, ctx->link_hdl); } else { CAM_DBG(CAM_ISP, "Possible tasklet delay req %lld ctx %u link 0x%x ts %lld", req->request_id, ctx->ctx_id, ctx->link_hdl, ctx_isp->sof_timestamp_val); } } else CAM_DBG(CAM_ISP, "Delayed bufdone for req: %lld", req->request_id); CAM_DBG(CAM_ISP, "Delayed bufdone for req: %lld ctx %u link 0x%x", req->request_id, ctx->ctx_id, ctx->link_hdl); } if (ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_trigger && Loading Loading @@ -1306,7 +1318,7 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( ctx->ctx_id); rc = -EFAULT; } ctx_isp->last_sof_timestamp = ctx_isp->sof_timestamp_val; return 0; } Loading drivers/cam_isp/cam_isp_context.h +2 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,7 @@ struct cam_isp_context_event_record { * decide whether to apply request in offline ctx * @workq: Worker thread for offline ife * @trigger_id: ID provided by CRM for each ctx on the link * @last_sof_timestamp: SOF timestamp of the last frame * */ struct cam_isp_context { Loading Loading @@ -298,6 +299,7 @@ struct cam_isp_context { atomic_t rxd_epoch; struct cam_req_mgr_core_workq *workq; int32_t trigger_id; uint64_t last_sof_timestamp; }; /** Loading drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +7 −1 Original line number Diff line number Diff line Loading @@ -6956,12 +6956,18 @@ static int cam_ife_hw_mgr_find_affected_ctx( affected_core, CAM_IFE_HW_NUM_MAX)) continue; if (error_event_data->error_type == CAM_ISP_HW_ERROR_CSID_FATAL) { CAM_DBG(CAM_ISP, "CSID recovery"); goto skip_overflow; } if (atomic_read(&ife_hwr_mgr_ctx->overflow_pending)) { CAM_INFO(CAM_ISP, "CTX:%d already error reported", ife_hwr_mgr_ctx->ctx_index); continue; } skip_overflow: atomic_set(&ife_hwr_mgr_ctx->overflow_pending, 1); notify_err_cb = ife_hwr_mgr_ctx->common.event_cb[event_type]; Loading Loading
drivers/cam_isp/cam_isp_context.c +19 −7 Original line number Diff line number Diff line Loading @@ -1254,13 +1254,25 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( req->request_id, ctx_isp->active_req_cnt, ctx->ctx_id); } else if (req_isp->bubble_detected) { if (ctx_isp->last_sof_timestamp != ctx_isp->sof_timestamp_val) { ctx_isp->bubble_frame_cnt++; CAM_DBG(CAM_ISP, "Waiting on bufdone for bubble req: %lld, since frame_cnt = %lld", req->request_id, ctx_isp->bubble_frame_cnt); "Waiting on bufdone bubble req %lld ctx %u frame_cnt %lld link 0x%x", req->request_id, ctx->ctx_id, ctx_isp->bubble_frame_cnt, ctx->link_hdl); } else { CAM_DBG(CAM_ISP, "Possible tasklet delay req %lld ctx %u link 0x%x ts %lld", req->request_id, ctx->ctx_id, ctx->link_hdl, ctx_isp->sof_timestamp_val); } } else CAM_DBG(CAM_ISP, "Delayed bufdone for req: %lld", req->request_id); CAM_DBG(CAM_ISP, "Delayed bufdone for req: %lld ctx %u link 0x%x", req->request_id, ctx->ctx_id, ctx->link_hdl); } if (ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_trigger && Loading Loading @@ -1306,7 +1318,7 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( ctx->ctx_id); rc = -EFAULT; } ctx_isp->last_sof_timestamp = ctx_isp->sof_timestamp_val; return 0; } Loading
drivers/cam_isp/cam_isp_context.h +2 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,7 @@ struct cam_isp_context_event_record { * decide whether to apply request in offline ctx * @workq: Worker thread for offline ife * @trigger_id: ID provided by CRM for each ctx on the link * @last_sof_timestamp: SOF timestamp of the last frame * */ struct cam_isp_context { Loading Loading @@ -298,6 +299,7 @@ struct cam_isp_context { atomic_t rxd_epoch; struct cam_req_mgr_core_workq *workq; int32_t trigger_id; uint64_t last_sof_timestamp; }; /** Loading
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +7 −1 Original line number Diff line number Diff line Loading @@ -6956,12 +6956,18 @@ static int cam_ife_hw_mgr_find_affected_ctx( affected_core, CAM_IFE_HW_NUM_MAX)) continue; if (error_event_data->error_type == CAM_ISP_HW_ERROR_CSID_FATAL) { CAM_DBG(CAM_ISP, "CSID recovery"); goto skip_overflow; } if (atomic_read(&ife_hwr_mgr_ctx->overflow_pending)) { CAM_INFO(CAM_ISP, "CTX:%d already error reported", ife_hwr_mgr_ctx->ctx_index); continue; } skip_overflow: atomic_set(&ife_hwr_mgr_ctx->overflow_pending, 1); notify_err_cb = ife_hwr_mgr_ctx->common.event_cb[event_type]; Loading