msm: camera: isp: Change notification type

Distinguish error notification to CRM for actual bubble &
other errors. This avoids conflict in internal recovery scheme.
Currently back to back bubble triggers an internal recovery, if
an error is notified for AEB back to back it will lead to two
different callflows for internal recovery. Distinguishing the
notifications will avoid different callflows.

CRs-Fixed: 3692264
Change-Id: Id4d928569fded732cef1782863ee494c66158c44
Signed-off-by: Karthik Anantha Ram <quic_kartanan@quicinc.com>
(cherry picked from commit a0a0290f13ddb1adb25eee5e55ee4f438524fbd9)
This commit is contained in:
Karthik Anantha Ram
2023-12-20 11:25:10 -08:00
committed by Sridhar Gujje
parent 8ca826a179
commit dacad856a2
2 changed files with 10 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include <linux/debugfs.h>
@@ -901,7 +901,7 @@ static int __cam_isp_ctx_notify_error_util(
notify.frame_id = ctx_isp->frame_id;
notify.sof_timestamp_val = ctx_isp->sof_timestamp_val;
if (error == CRM_KMD_ERR_BUBBLE)
if ((error == CRM_KMD_ERR_BUBBLE) || (error == CRM_KMD_WARN_INTERNAL_RECOVERY))
CAM_WARN(CAM_ISP,
"Notify CRM about bubble req: %llu frame: %llu in ctx: %u on link: 0x%x",
req_id, ctx_isp->frame_id, ctx->ctx_id, ctx->link_hdl);
@@ -1729,7 +1729,7 @@ static int __cam_isp_context_try_internal_recovery(
if (req->request_id == ctx_isp->recovery_req_id) {
rc = __cam_isp_ctx_notify_error_util(CAM_TRIGGER_POINT_SOF,
CRM_KMD_ERR_BUBBLE, ctx_isp->recovery_req_id, ctx_isp);
CRM_KMD_WARN_INTERNAL_RECOVERY, ctx_isp->recovery_req_id, ctx_isp);
if (rc) {
/* Unable to do bubble recovery reset back to normal */
CAM_WARN(CAM_ISP,
@@ -1762,7 +1762,7 @@ static int __cam_isp_context_try_internal_recovery(
if (req->request_id == ctx_isp->recovery_req_id) {
rc = __cam_isp_ctx_notify_error_util(CAM_TRIGGER_POINT_SOF,
CRM_KMD_ERR_BUBBLE, ctx_isp->recovery_req_id, ctx_isp);
CRM_KMD_WARN_INTERNAL_RECOVERY, ctx_isp->recovery_req_id, ctx_isp);
if (rc) {
/* Unable to do bubble recovery reset back to normal */
CAM_WARN(CAM_ISP,
@@ -4551,8 +4551,8 @@ static int __cam_isp_ctx_trigger_internal_recovery(
ctx_isp->active_req_cnt, ctx_isp->recovery_req_id,
ctx->ctx_id, ctx->link_hdl);
} else {
rc = __cam_isp_ctx_notify_error_util(CAM_TRIGGER_POINT_SOF, CRM_KMD_ERR_BUBBLE,
ctx_isp->recovery_req_id, ctx_isp);
rc = __cam_isp_ctx_notify_error_util(CAM_TRIGGER_POINT_SOF,
CRM_KMD_WARN_INTERNAL_RECOVERY, ctx_isp->recovery_req_id, ctx_isp);
if (rc) {
/* Unable to do bubble recovery reset back to normal */
CAM_WARN(CAM_ISP,