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

msm: camera: isp: Mask process_bubble for SHDR usecase

SHDR usecase doesn't report bubble to CRM, but we still
need to know whether it is processing bubble during
applying request, since we may haven't received the
reg update of the previous applied request, then
we have a chance to apply a new req to HW, this may
result in overflow issue. This change masks the
process_bubble for SHDR case during epoch in applied
sub state.

CRs-Fixed: 2948932
Change-Id: I699a2f59ea874693b78a918895db98727b95c634
Signed-off-by: Depeng Shao <[email protected]>
Depeng Shao 4 éve
szülő
commit
1d69c55f63
1 módosított fájl, 14 hozzáadás és 0 törlés
  1. 14 0
      drivers/cam_isp/cam_isp_context.c

+ 14 - 0
drivers/cam_isp/cam_isp_context.c

@@ -870,6 +870,18 @@ static int __cam_isp_ctx_handle_buf_done_for_req_list(
 		list_add_tail(&req->list, &ctx->free_req_list);
 		req_isp->reapply = false;
 		req_isp->cdm_reset_before_apply = false;
+		req_isp->num_acked = 0;
+		req_isp->num_deferred_acks = 0;
+		req_isp->bubble_detected = false;
+		/*
+		 * Only update the process_bubble and bubble_frame_cnt
+		 * when bubble is detected on this req, in case the other
+		 * request is processing bubble.
+		 */
+		if (req_isp->bubble_detected) {
+			atomic_set(&ctx_isp->process_bubble, 0);
+			ctx_isp->bubble_frame_cnt = 0;
+		}
 
 		CAM_DBG(CAM_REQ,
 			"Move active request %lld to free list(cnt = %d) [all fences done], ctx %u",
@@ -2081,6 +2093,7 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp,
 					ctx_isp->frame_id, ctx->ctx_id);
 			}
 		}
+		atomic_set(&ctx_isp->process_bubble, 1);
 	}
 
 	/*
@@ -2315,6 +2328,7 @@ static int __cam_isp_ctx_epoch_in_bubble_applied(
 					ctx_isp->frame_id, ctx->ctx_id);
 			}
 		}
+		atomic_set(&ctx_isp->process_bubble, 1);
 	}
 
 	/*