Forráskód Böngészése

msm: camera: cdm: check irq status on hang detection

Check IRQ status on hang detection; if the inline IRQ
is set then the cdm has triggered IRQ but there is a
workqueue scheduling delay which is causing the cdm
config timeout. To prevent the timeout due to
scheduling check the work record and irq status.

Change-Id: Id3d224d6393b69638b27c82ebf0933a6a3dce231
CRs-Fixed: 3163828
Signed-off-by: Shardul Bankar <[email protected]>
Shardul Bankar 3 éve
szülő
commit
17e95f5f2f
1 módosított fájl, 9 hozzáadás és 7 törlés
  1. 9 7
      drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c

+ 9 - 7
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c

@@ -6293,13 +6293,15 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv,
 				CAM_ERR(CAM_ISP,
 					"config done completion timeout for req_id=%llu ctx_index %d",
 					cfg->request_id, ctx->ctx_index);
-
-				if (!cam_cdm_detect_hang_error(ctx->cdm_handle))
-					CAM_ERR(CAM_ISP, "CDM Workqueue delayed");
-				else
-					cam_cdm_dump_debug_registers(ctx->cdm_handle);
-
-				rc = -ETIMEDOUT;
+				rc = cam_cdm_detect_hang_error(ctx->cdm_handle);
+				if (rc < 0) {
+					cam_cdm_dump_debug_registers(
+						ctx->cdm_handle);
+					rc = -ETIMEDOUT;
+				} else {
+					CAM_DBG(CAM_ISP,
+						"Wq delayed but IRQ CDM done");
+				}
 			} else {
 				CAM_DBG(CAM_ISP,
 					"config done Success for req_id=%llu ctx_index %d",