Browse Source

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 years ago
parent
commit
05c1bc0f18
1 changed files with 7 additions and 1 deletions
  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_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_isp_ctx_substate_val_to_type(