瀏覽代碼

msm: camera: isp: Don't move substate to SOF

In RDI only usecase, if we get RUP and buf done
late, then we will enter bubble substate. In
current logic, we will move to SOF substate if
we get SOF in bubble substate, it causes the
buf done of bubble req can't be received. Since
we don't have valid interface for buf done in
SOF substate.
This changes don't move substate to SOF if we
are processing bubble.

CRs-Fixed: 3126554
Change-Id: I955173f12b5c1f5a699fa102e1ca6c82913c86e4
Signed-off-by: Depeng Shao <[email protected]>
Depeng Shao 3 年之前
父節點
當前提交
05c1bc0f18
共有 1 個文件被更改,包括 7 次插入1 次删除
  1. 7 1
      drivers/cam_isp/cam_isp_context.c

+ 7 - 1
drivers/cam_isp/cam_isp_context.c

@@ -5224,7 +5224,13 @@ end:
 	__cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id,
 	__cam_isp_ctx_send_sof_timestamp(ctx_isp, request_id,
 		CAM_REQ_MGR_SOF_EVENT_SUCCESS);
 		CAM_REQ_MGR_SOF_EVENT_SUCCESS);
 
 
-	ctx_isp->substate_activated = CAM_ISP_CTX_ACTIVATED_SOF;
+	/*
+	 * Can't move the substate to SOF if we are processing bubble,
+	 * since the SOF substate can't receive REG_UPD and buf done,
+	 * then the processing of bubble req can't be finished
+	 */
+	if (!atomic_read(&ctx_isp->process_bubble))
+		ctx_isp->substate_activated = CAM_ISP_CTX_ACTIVATED_SOF;
 
 
 	CAM_DBG(CAM_ISP, "next Substate[%s]",
 	CAM_DBG(CAM_ISP, "next Substate[%s]",
 		__cam_isp_ctx_substate_val_to_type(
 		__cam_isp_ctx_substate_val_to_type(