msm: camera: isp: Add CDM Debug register dump during bubble

Add CDM Debug register dump when the Bubble is detected due
to cdm callback not received.

CRs-Fixed: 3163463
Change-Id: I028ac9216704d14cc51648b0a5a78b0a2a366f12
Signed-off-by: Jigar Agrawal <quic_jigar@quicinc.com>
Цей коміт міститься в:
Jigar Agrawal
2022-03-21 10:30:32 -07:00
зафіксовано Camera Software Integration
джерело 2bfa88814a
коміт b570795312
2 змінених файлів з 18 додано та 12 видалено

Переглянути файл

@@ -6018,7 +6018,7 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv,
struct cam_ife_hw_mgr_ctx *ctx;
struct cam_isp_prepare_hw_update_data *hw_update_data;
unsigned long rem_jiffies = 0;
bool cdm_hang_detect = false;
bool is_cdm_hung = false;
if (!hw_mgr_priv || !config_hw_args) {
CAM_ERR(CAM_ISP,
@@ -6072,12 +6072,15 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv,
if (cfg->reapply_type && cfg->cdm_reset_before_apply) {
if (ctx->last_cdm_done_req < cfg->request_id) {
cdm_hang_detect =
cam_cdm_detect_hang_error(ctx->cdm_handle);
is_cdm_hung = !cam_cdm_detect_hang_error(ctx->cdm_handle);
CAM_ERR_RATE_LIMIT(CAM_ISP,
"CDM callback not received for req: %lld, last_cdm_done_req: %lld, cdm_hang_detect: %d",
"CDM callback not received for req: %lld, last_cdm_done_req: %lld, is_cdm_hung: %d",
cfg->request_id, ctx->last_cdm_done_req,
cdm_hang_detect);
is_cdm_hung);
if (!is_cdm_hung)
cam_cdm_dump_debug_registers(ctx->cdm_handle);
rc = cam_cdm_reset_hw(ctx->cdm_handle);
if (rc) {
CAM_ERR_RATE_LIMIT(CAM_ISP,
@@ -6230,10 +6233,10 @@ static int cam_ife_mgr_config_hw(void *hw_mgr_priv,
"config done completion timeout for req_id=%llu ctx_index %d",
cfg->request_id, ctx->ctx_index);
if (!cam_cdm_detect_hang_error(ctx->cdm_handle)) {
if (!cam_cdm_detect_hang_error(ctx->cdm_handle))
CAM_ERR(CAM_ISP, "CDM Workqueue delayed");
else
cam_cdm_dump_debug_registers(ctx->cdm_handle);
}
rc = -ETIMEDOUT;
} else {

Переглянути файл

@@ -2618,7 +2618,7 @@ static int cam_tfe_mgr_config_hw(void *hw_mgr_priv,
struct cam_cdm_bl_request *cdm_cmd;
struct cam_tfe_hw_mgr_ctx *ctx;
struct cam_isp_prepare_hw_update_data *hw_update_data;
bool cdm_hang_detect = false;
bool is_cdm_hung = false;
if (!hw_mgr_priv || !config_hw_args) {
CAM_ERR(CAM_ISP, "Invalid arguments");
@@ -2644,12 +2644,15 @@ static int cam_tfe_mgr_config_hw(void *hw_mgr_priv,
if (cfg->reapply_type && cfg->cdm_reset_before_apply) {
if (ctx->last_cdm_done_req < cfg->request_id) {
cdm_hang_detect =
cam_cdm_detect_hang_error(ctx->cdm_handle);
is_cdm_hung = !cam_cdm_detect_hang_error(ctx->cdm_handle);
CAM_ERR_RATE_LIMIT(CAM_ISP,
"CDM callback not received for req: %lld, last_cdm_done_req: %lld, cdm_hang_detect: %d",
"CDM callback not received for req: %lld, last_cdm_done_req: %lld, is_cdm_hung: %d",
cfg->request_id, ctx->last_cdm_done_req,
cdm_hang_detect);
is_cdm_hung);
if (!is_cdm_hung)
cam_cdm_dump_debug_registers(ctx->cdm_handle);
rc = cam_cdm_reset_hw(ctx->cdm_handle);
if (rc) {
CAM_ERR_RATE_LIMIT(CAM_ISP,