msm: camera: reqmgr: Mask re-apply for SHDR usecase

SHDR case has two ISP instances, if one of them
apply req failed sometimes, but the other one is
good and the buf done has been handled successfully,
then we don't need to apply the req again for the
successful ISP.

CRs-Fixed: 2842495
Change-Id: I3dfbb455244daa0d155858dd59f4a661fd3b87cd
Signed-off-by: Depeng Shao <depengs@codeaurora.org>
Этот коммит содержится в:
Depeng Shao
2020-12-29 10:53:23 +08:00
коммит произвёл Gerrit - the friendly Code Review server
родитель fdf216909b
Коммит 1edfd82801
2 изменённых файлов: 24 добавлений и 11 удалений

Просмотреть файл

@@ -3065,6 +3065,17 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
struct cam_isp_context *ctx_isp = NULL;
struct cam_hw_config_args cfg = {0};
ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;
if (apply->re_apply)
if (apply->request_id <= ctx_isp->last_applied_req_id) {
CAM_INFO_RATE_LIMIT(CAM_ISP,
"ctx_id:%d Trying to reapply the same request %llu again",
ctx->ctx_id,
apply->request_id);
return 0;
}
if (list_empty(&ctx->pending_req_list)) {
CAM_ERR_RATE_LIMIT(CAM_ISP,
"ctx_id:%d No available request for Apply id %lld",
@@ -3080,8 +3091,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
* The maximum number of request allowed to be outstanding is 2.
*
*/
ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;
if (atomic_read(&ctx_isp->process_bubble)) {
CAM_INFO_RATE_LIMIT(CAM_ISP,
"ctx_id:%d Processing bubble cannot apply Request Id %llu",
@@ -3091,15 +3100,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
goto end;
}
if (apply->re_apply)
if (apply->request_id <= ctx_isp->last_applied_req_id) {
CAM_INFO_RATE_LIMIT(CAM_ISP,
"ctx_id:%d Trying to reapply the same request %llu again",
ctx->ctx_id,
apply->request_id);
return 0;
}
spin_lock_bh(&ctx->lock);
req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request,
list);