msm: camera: isp: Pause the CRM timer in case of hardware errors

In the Case of CSID RX fetal errors, We disable rx path. Whenever
we get sof freeze after some time, we enable the path SOF
to do a health check of the sensor.
But we don’t get the SOFs and it gives the wrong impression that
the sensor is not streaming.

Notify crm driver to pause the timer in case of fatal hardware error
to not missled sof freez issue.

CRs-Fixed: 2890861
Change-Id: I73e750cad0193ea5537a25c8440a9863343c4ef7
Signed-off-by: Chandan Kumar Jha <cjha@codeaurora.org>
This commit is contained in:
Chandan Kumar Jha
2021-04-01 00:20:57 +05:30
rodzic 68934ef08c
commit 90cd14c1de
3 zmienionych plików z 47 dodań i 27 usunięć

Wyświetl plik

@@ -2385,6 +2385,7 @@ static int __cam_isp_ctx_handle_error(struct cam_isp_context *ctx_isp,
struct cam_hw_fence_map_entry *fence_map_out = NULL;
struct cam_req_mgr_message req_msg;
uint32_t evt_param;
struct cam_req_mgr_timer_notify timer;
struct cam_context *ctx = ctx_isp->base;
struct cam_isp_hw_error_event_data *error_event_data =
@@ -2394,6 +2395,15 @@ static int __cam_isp_ctx_handle_error(struct cam_isp_context *ctx_isp,
CAM_DBG(CAM_ISP, "Enter error_type = %d", error_type);
if (ctx->ctx_crm_intf && ctx->ctx_crm_intf->notify_timer) {
timer.link_hdl = ctx->link_hdl;
timer.dev_hdl = ctx->dev_hdl;
timer.state = false;
ctx->ctx_crm_intf->notify_timer(&timer);
CAM_DBG(CAM_ISP, "Notify CRM to pause timer for ctx %u",
ctx->ctx_id);
}
if ((error_type == CAM_ISP_HW_ERROR_OVERFLOW) ||
(error_type == CAM_ISP_HW_ERROR_BUSIF_OVERFLOW) ||
(error_type == CAM_ISP_HW_ERROR_VIOLATION)) {