diff --git a/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c b/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c index d222b6910e..e83685c076 100644 --- a/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +++ b/drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c @@ -640,7 +640,8 @@ err: } static int cam_ife_mgr_csid_start_hw( - struct cam_ife_hw_mgr_ctx *ctx) + struct cam_ife_hw_mgr_ctx *ctx, + uint32_t primary_rdi_csid_res) { struct cam_isp_hw_mgr_res *hw_mgr_res; struct cam_isp_resource_node *isp_res; @@ -651,19 +652,22 @@ static int cam_ife_mgr_csid_start_hw( int j; for (j = ctx->num_base - 1 ; j >= 0; j--) { - cnt = 0; if (ctx->base[j].hw_type != CAM_ISP_HW_TYPE_CSID) continue; list_for_each_entry(hw_mgr_res, &ctx->res_list_ife_csid, list) { - isp_res = hw_mgr_res->hw_res[ctx->base[j].split_id]; if (!isp_res || ctx->base[j].idx != isp_res->hw_intf->hw_idx) continue; + if (primary_rdi_csid_res == hw_mgr_res->res_id) { + hw_mgr_res->hw_res[0]->rdi_only_ctx = + ctx->flags.is_rdi_only_context; + } + CAM_DBG(CAM_ISP, "csid[%u] res:%s res_id %d cnt %u", isp_res->hw_intf->hw_idx, isp_res->res_name, isp_res->res_id, cnt); @@ -6155,7 +6159,7 @@ static int cam_ife_mgr_restart_hw(void *start_hw_args) CAM_DBG(CAM_ISP, "START CSID HW ... in ctx id:%d", ctx->ctx_index); /* Start the IFE CSID HW devices */ - cam_ife_mgr_csid_start_hw(ctx); + cam_ife_mgr_csid_start_hw(ctx, CAM_IFE_PIX_PATH_RES_MAX); /* Start IFE root node: do nothing */ CAM_DBG(CAM_ISP, "Exit...(success)"); @@ -6488,7 +6492,7 @@ start_only: CAM_DBG(CAM_ISP, "START CSID HW ... in ctx id:%d", ctx->ctx_index); /* Start the IFE CSID HW devices */ - cam_ife_mgr_csid_start_hw(ctx); + cam_ife_mgr_csid_start_hw(ctx, primary_rdi_csid_res); if (ctx->flags.is_tpg) { CAM_DBG(CAM_ISP, "START TPG HW ... in ctx id:%d",