Merge "msm: camera: ife: Improve logs" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration
2020-02-26 13:14:02 -08:00
committed by Gerrit - the friendly Code Review server
2 changed files with 66 additions and 32 deletions

View File

@@ -636,25 +636,50 @@ static const char *cam_ife_hw_mgr_get_src_res_id(
} }
} }
static void cam_ife_hw_mgr_dump_src_acq_info( static void cam_ife_hw_mgr_print_acquire_info(
struct cam_ife_hw_mgr_ctx *hwr_mgr_ctx, struct cam_ife_hw_mgr_ctx *hw_mgr_ctx, uint32_t num_pix_port,
uint32_t num_pix_port, uint32_t num_rdi_port) uint32_t num_pd_port, uint32_t num_rdi_port, int acquire_failed)
{ {
struct cam_isp_hw_mgr_res *hw_mgr_res = NULL; struct cam_isp_hw_mgr_res *hw_mgr_res = NULL;
struct cam_isp_hw_mgr_res *hw_mgr_res_temp = NULL; struct cam_isp_hw_mgr_res *hw_mgr_res_temp = NULL;
struct cam_isp_resource_node *hw_res = NULL; struct cam_isp_resource_node *hw_res = NULL;
int hw_idx[CAM_ISP_HW_SPLIT_MAX] = {-1, -1};
int i = 0; int i = 0;
hw_mgr_res = list_first_entry(&hw_mgr_ctx->res_list_ife_csid,
struct cam_isp_hw_mgr_res, list);
for (i = 0; i < CAM_ISP_HW_SPLIT_MAX; i++) {
hw_res = hw_mgr_res->hw_res[i];
if (hw_res && hw_res->hw_intf)
hw_idx[i] = hw_res->hw_intf->hw_idx;
}
if (acquire_failed)
goto fail;
CAM_INFO(CAM_ISP, CAM_INFO(CAM_ISP,
"Acquired HW for ctx: %u with pix_port: %u rdi_port: %u", "Acquired %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
hwr_mgr_ctx->ctx_index, num_pix_port, num_rdi_port); (hw_mgr_ctx->is_dual) ? "dual" : "single",
hw_idx[CAM_ISP_HW_SPLIT_LEFT], hw_idx[CAM_ISP_HW_SPLIT_RIGHT],
num_pix_port, num_pd_port, num_rdi_port, hw_mgr_ctx->ctx_index);
return;
fail:
CAM_ERR(CAM_ISP, "Acquire HW failed for ctx:%u", hw_mgr_ctx->ctx_index);
CAM_INFO(CAM_ISP,
"Previously acquired %s IFE[%d %d] with [%u pix] [%u pd] [%u rdi] ports for ctx:%u",
(hw_mgr_ctx->is_dual) ? "dual" : "single",
hw_idx[CAM_ISP_HW_SPLIT_LEFT], hw_idx[CAM_ISP_HW_SPLIT_RIGHT],
num_pix_port, num_pd_port, num_rdi_port, hw_mgr_ctx->ctx_index);
list_for_each_entry_safe(hw_mgr_res, hw_mgr_res_temp, list_for_each_entry_safe(hw_mgr_res, hw_mgr_res_temp,
&hwr_mgr_ctx->res_list_ife_src, list) { &hw_mgr_ctx->res_list_ife_src, list) {
for (i = 0; i < CAM_ISP_HW_SPLIT_MAX; i++) { for (i = 0; i < CAM_ISP_HW_SPLIT_MAX; i++) {
hw_res = hw_mgr_res->hw_res[i]; hw_res = hw_mgr_res->hw_res[i];
if (hw_res && hw_res->hw_intf) if (hw_res && hw_res->hw_intf)
CAM_INFO(CAM_ISP, CAM_INFO(CAM_ISP,
"IFE src split_id: %d res_id: %s hw_idx: %u state: %s", "IFE src split_id:%d res_id:%s hw_idx:%u state:%s",
i, i,
cam_ife_hw_mgr_get_src_res_id( cam_ife_hw_mgr_get_src_res_id(
hw_res->res_id), hw_res->res_id),
@@ -2436,7 +2461,8 @@ static int cam_ife_mgr_acquire_hw_for_ctx(
struct cam_ife_hw_mgr_ctx *ife_ctx, struct cam_ife_hw_mgr_ctx *ife_ctx,
struct cam_isp_in_port_generic_info *in_port, struct cam_isp_in_port_generic_info *in_port,
uint32_t *num_pix_port, uint32_t *num_rdi_port, uint32_t *num_pix_port, uint32_t *num_rdi_port,
uint32_t *acquired_hw_id, uint32_t *acquired_hw_path) uint32_t *num_pd_port, uint32_t *acquired_hw_id,
uint32_t *acquired_hw_path)
{ {
int rc = -1; int rc = -1;
int is_dual_isp = 0; int is_dual_isp = 0;
@@ -2541,7 +2567,8 @@ static int cam_ife_mgr_acquire_hw_for_ctx(
goto err; goto err;
} }
*num_pix_port = ipp_count + ppp_count + ife_rd_count + lcr_count; *num_pix_port = ipp_count + ife_rd_count + lcr_count;
*num_pd_port = ppp_count;
*num_rdi_port = rdi_count; *num_rdi_port = rdi_count;
return 0; return 0;
@@ -2819,8 +2846,10 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
struct cam_cdm_acquire_data cdm_acquire; struct cam_cdm_acquire_data cdm_acquire;
uint32_t num_pix_port_per_in = 0; uint32_t num_pix_port_per_in = 0;
uint32_t num_rdi_port_per_in = 0; uint32_t num_rdi_port_per_in = 0;
uint32_t num_pd_port_per_in = 0;
uint32_t total_pix_port = 0; uint32_t total_pix_port = 0;
uint32_t total_rdi_port = 0; uint32_t total_rdi_port = 0;
uint32_t total_pd_port = 0;
struct cam_isp_acquire_hw_info *acquire_hw_info = NULL; struct cam_isp_acquire_hw_info *acquire_hw_info = NULL;
uint32_t input_size = 0; uint32_t input_size = 0;
@@ -2917,16 +2946,18 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
else else
rc = cam_ife_mgr_acquire_hw_for_ctx(ife_ctx, in_port, rc = cam_ife_mgr_acquire_hw_for_ctx(ife_ctx, in_port,
&num_pix_port_per_in, &num_rdi_port_per_in, &num_pix_port_per_in, &num_rdi_port_per_in,
&num_pd_port_per_in,
&acquire_args->acquired_hw_id[i], &acquire_args->acquired_hw_id[i],
acquire_args->acquired_hw_path[i]); acquire_args->acquired_hw_path[i]);
total_pix_port += num_pix_port_per_in; total_pix_port += num_pix_port_per_in;
total_rdi_port += num_rdi_port_per_in; total_rdi_port += num_rdi_port_per_in;
total_pd_port += num_pd_port_per_in;
if (rc) { if (rc) {
CAM_ERR(CAM_ISP, "can not acquire resource"); cam_ife_hw_mgr_print_acquire_info(ife_ctx,
cam_ife_hw_mgr_dump_src_acq_info(ife_ctx, total_pix_port, total_pd_port,
total_pix_port, total_rdi_port); total_rdi_port, rc);
goto free_mem; goto free_mem;
} }
@@ -2936,7 +2967,7 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
} }
/* Check whether context has only RDI resource */ /* Check whether context has only RDI resource */
if (!total_pix_port) { if (!total_pix_port && !total_pd_port) {
ife_ctx->is_rdi_only_context = 1; ife_ctx->is_rdi_only_context = 1;
CAM_DBG(CAM_ISP, "RDI only context"); CAM_DBG(CAM_ISP, "RDI only context");
} }
@@ -2958,10 +2989,9 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
acquire_hw_info->num_inputs; acquire_hw_info->num_inputs;
ktime_get_real_ts64(&ife_ctx->ts); ktime_get_real_ts64(&ife_ctx->ts);
CAM_INFO(CAM_ISP,
"Acquire HW success with total_pix: %u total_rdi: %u is_dual: %u in ctx: %u", cam_ife_hw_mgr_print_acquire_info(ife_ctx, total_pix_port,
total_pix_port, total_rdi_port, total_pd_port, total_rdi_port, rc);
ife_ctx->is_dual, ife_ctx->ctx_index);
cam_ife_hw_mgr_put_ctx(&ife_hw_mgr->used_ctx_list, &ife_ctx); cam_ife_hw_mgr_put_ctx(&ife_hw_mgr->used_ctx_list, &ife_ctx);
@@ -3037,6 +3067,8 @@ static int cam_ife_mgr_acquire_dev(void *hw_mgr_priv, void *acquire_hw_args)
struct cam_isp_in_port_generic_info *gen_port_info = NULL; struct cam_isp_in_port_generic_info *gen_port_info = NULL;
uint32_t num_pix_port_per_in = 0; uint32_t num_pix_port_per_in = 0;
uint32_t num_rdi_port_per_in = 0; uint32_t num_rdi_port_per_in = 0;
uint32_t num_pd_port_per_in = 0;
uint32_t total_pd_port = 0;
uint32_t total_pix_port = 0; uint32_t total_pix_port = 0;
uint32_t total_rdi_port = 0; uint32_t total_rdi_port = 0;
uint32_t in_port_length = 0; uint32_t in_port_length = 0;
@@ -3156,12 +3188,13 @@ static int cam_ife_mgr_acquire_dev(void *hw_mgr_priv, void *acquire_hw_args)
rc = cam_ife_mgr_acquire_hw_for_ctx(ife_ctx, rc = cam_ife_mgr_acquire_hw_for_ctx(ife_ctx,
gen_port_info, &num_pix_port_per_in, gen_port_info, &num_pix_port_per_in,
&num_rdi_port_per_in, &num_rdi_port_per_in, &num_pd_port_per_in,
&acquire_args->acquired_hw_id[i], &acquire_args->acquired_hw_id[i],
acquire_args->acquired_hw_path[i]); acquire_args->acquired_hw_path[i]);
total_pix_port += num_pix_port_per_in; total_pix_port += num_pix_port_per_in;
total_rdi_port += num_rdi_port_per_in; total_rdi_port += num_rdi_port_per_in;
total_pd_port += num_pd_port_per_in;
kfree(in_port); kfree(in_port);
if (gen_port_info != NULL) { if (gen_port_info != NULL) {
@@ -3170,7 +3203,9 @@ static int cam_ife_mgr_acquire_dev(void *hw_mgr_priv, void *acquire_hw_args)
gen_port_info = NULL; gen_port_info = NULL;
} }
if (rc) { if (rc) {
CAM_ERR(CAM_ISP, "can not acquire resource"); cam_ife_hw_mgr_print_acquire_info(ife_ctx,
total_pix_port, total_pd_port,
total_rdi_port, rc);
goto free_res; goto free_res;
} }
} else { } else {
@@ -3199,10 +3234,8 @@ static int cam_ife_mgr_acquire_dev(void *hw_mgr_priv, void *acquire_hw_args)
ife_ctx->ctx_in_use = 1; ife_ctx->ctx_in_use = 1;
ife_ctx->num_reg_dump_buf = 0; ife_ctx->num_reg_dump_buf = 0;
CAM_INFO(CAM_ISP, cam_ife_hw_mgr_print_acquire_info(ife_ctx, total_pix_port,
"Acquire HW success with total_pix: %u total_rdi: %u is_dual: %u in ctx: %u", total_pd_port, total_rdi_port, rc);
total_pix_port, total_rdi_port,
ife_ctx->is_dual, ife_ctx->ctx_index);
cam_ife_hw_mgr_put_ctx(&ife_hw_mgr->used_ctx_list, &ife_ctx); cam_ife_hw_mgr_put_ctx(&ife_hw_mgr->used_ctx_list, &ife_ctx);
@@ -4555,10 +4588,10 @@ static int cam_isp_blob_ubwc_update(
&bytes_used); &bytes_used);
if (rc < 0) { if (rc < 0) {
CAM_ERR(CAM_ISP, CAM_ERR(CAM_ISP,
"Failed cmd_update, base_idx=%d, bytes_used=%u, res_id_out=0x%x", "Failed cmd_update, base_idx=%d, bytes_used=%u, res_id_out=0x%X",
blob_info->base_info->idx, blob_info->base_info->idx,
bytes_used, bytes_used,
res_id_out); ubwc_plane_cfg->port_type);
goto end; goto end;
} }
@@ -4728,10 +4761,10 @@ static int cam_isp_blob_ubwc_update_v2(
&bytes_used); &bytes_used);
if (rc < 0) { if (rc < 0) {
CAM_ERR(CAM_ISP, CAM_ERR(CAM_ISP,
"Failed cmd_update, base_idx=%d, bytes_used=%u, res_id_out=0x%x", "Failed cmd_update, base_idx=%d, bytes_used=%u, res_id_out=0x%X",
blob_info->base_info->idx, blob_info->base_info->idx,
bytes_used, bytes_used,
res_id_out); ubwc_plane_cfg->port_type);
goto end; goto end;
} }
@@ -4829,8 +4862,9 @@ static int cam_isp_blob_hfr_update(
&bytes_used); &bytes_used);
if (rc < 0) { if (rc < 0) {
CAM_ERR(CAM_ISP, CAM_ERR(CAM_ISP,
"Failed cmd_update, base_idx=%d, rc=%d", "Failed cmd_update, base_idx=%d, rc=%d, res_id_out:0x%X",
blob_info->base_info->idx, bytes_used); blob_info->base_info->idx, bytes_used,
port_hfr_config->resource_type);
return rc; return rc;
} }

View File

@@ -196,8 +196,8 @@ int cam_isp_add_cmd_buf_update(
uint32_t total_used_bytes = 0; uint32_t total_used_bytes = 0;
if (hw_mgr_res->res_type == CAM_ISP_RESOURCE_UNINT) { if (hw_mgr_res->res_type == CAM_ISP_RESOURCE_UNINT) {
CAM_ERR(CAM_ISP, "io res id:%d not valid", CAM_ERR(CAM_ISP, "VFE out resource:0x%X type:%d not valid",
hw_mgr_res->res_type); hw_mgr_res->res_id, hw_mgr_res->res_type);
return -EINVAL; return -EINVAL;
} }