Loading drivers/cam_isp/cam_isp_context.c +2 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,8 @@ static void __cam_isp_ctx_buf_done_match_req( CAM_DBG(CAM_ISP, "buf done num handles %d match count %d for next req:%lld", done->num_handles, match_count, req->request_id); CAM_DBG(CAM_ISP, "irq_delay_detected %d", *irq_delay_detected); } static int __cam_isp_ctx_handle_buf_done_verify_addr( Loading drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +13 −28 Original line number Diff line number Diff line Loading @@ -2975,32 +2975,6 @@ static int cam_ife_mgr_acquire_get_unified_structure( return 0; } static bool cam_ife_mgr_is_consumed_addr_supported( struct cam_ife_hw_mgr_ctx *ctx) { bool support_consumed_addr = false; struct cam_ife_hw_mgr_res *isp_hw_res = NULL; struct cam_hw_intf *hw_intf = NULL; isp_hw_res = &ctx->res_list_ife_out[0]; if (!isp_hw_res || !isp_hw_res->hw_res[0]) { CAM_ERR(CAM_ISP, "Invalid ife out res."); goto end; } hw_intf = isp_hw_res->hw_res[0]->hw_intf; if (hw_intf && hw_intf->hw_ops.process_cmd) { hw_intf->hw_ops.process_cmd(hw_intf->hw_priv, CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT, &support_consumed_addr, sizeof(support_consumed_addr)); } end: return support_consumed_addr; } /* entry function: acquire_hw */ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args) { Loading Loading @@ -3138,7 +3112,7 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args) } acquire_args->support_consumed_addr = cam_ife_mgr_is_consumed_addr_supported(ife_ctx); g_ife_hw_mgr.support_consumed_addr; acquire_args->ctxt_to_hw_map = ife_ctx; acquire_args->custom_enabled = ife_ctx->custom_enabled; Loading Loading @@ -7878,6 +7852,7 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) { int rc = -EFAULT; int i, j; bool support_consumed_addr = false; struct cam_iommu_handle cdm_handles; struct cam_ife_hw_mgr_ctx *ctx_pool; struct cam_ife_hw_mgr_res *res_list_ife_out; Loading @@ -7898,11 +7873,19 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) for (i = 0, j = 0; i < CAM_IFE_HW_NUM_MAX; i++) { rc = cam_vfe_hw_init(&g_ife_hw_mgr.ife_devices[i], i); if (!rc) { struct cam_hw_intf *ife_device = g_ife_hw_mgr.ife_devices[i]; struct cam_hw_info *vfe_hw = (struct cam_hw_info *) g_ife_hw_mgr.ife_devices[i]->hw_priv; ife_device->hw_priv; struct cam_hw_soc_info *soc_info = &vfe_hw->soc_info; if (j == 0) ife_device->hw_ops.process_cmd( vfe_hw, CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT, &support_consumed_addr, sizeof(support_consumed_addr)); j++; g_ife_hw_mgr.cdm_reg_map[i] = &soc_info->reg_map[0]; Loading @@ -7919,6 +7902,8 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) return -EINVAL; } g_ife_hw_mgr.support_consumed_addr = support_consumed_addr; /* fill csid hw intf information */ for (i = 0, j = 0; i < CAM_IFE_CSID_HW_NUM_MAX; i++) { rc = cam_ife_csid_hw_init(&g_ife_hw_mgr.csid_devices[i], i); Loading drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,7 @@ struct cam_ife_hw_mgr_ctx { * @ife_dev_caps ife device capability per core * @work q work queue for IFE hw manager * @debug_cfg debug configuration * @support_consumed_addr indicate whether hw supports last consumed address */ struct cam_ife_hw_mgr { struct cam_isp_hw_mgr mgr_common; Loading @@ -241,6 +242,7 @@ struct cam_ife_hw_mgr { struct cam_req_mgr_core_workq *workq; struct cam_ife_hw_mgr_debug debug_cfg; spinlock_t ctx_lock; bool support_consumed_addr; }; /** Loading Loading
drivers/cam_isp/cam_isp_context.c +2 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,8 @@ static void __cam_isp_ctx_buf_done_match_req( CAM_DBG(CAM_ISP, "buf done num handles %d match count %d for next req:%lld", done->num_handles, match_count, req->request_id); CAM_DBG(CAM_ISP, "irq_delay_detected %d", *irq_delay_detected); } static int __cam_isp_ctx_handle_buf_done_verify_addr( Loading
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c +13 −28 Original line number Diff line number Diff line Loading @@ -2975,32 +2975,6 @@ static int cam_ife_mgr_acquire_get_unified_structure( return 0; } static bool cam_ife_mgr_is_consumed_addr_supported( struct cam_ife_hw_mgr_ctx *ctx) { bool support_consumed_addr = false; struct cam_ife_hw_mgr_res *isp_hw_res = NULL; struct cam_hw_intf *hw_intf = NULL; isp_hw_res = &ctx->res_list_ife_out[0]; if (!isp_hw_res || !isp_hw_res->hw_res[0]) { CAM_ERR(CAM_ISP, "Invalid ife out res."); goto end; } hw_intf = isp_hw_res->hw_res[0]->hw_intf; if (hw_intf && hw_intf->hw_ops.process_cmd) { hw_intf->hw_ops.process_cmd(hw_intf->hw_priv, CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT, &support_consumed_addr, sizeof(support_consumed_addr)); } end: return support_consumed_addr; } /* entry function: acquire_hw */ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args) { Loading Loading @@ -3138,7 +3112,7 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args) } acquire_args->support_consumed_addr = cam_ife_mgr_is_consumed_addr_supported(ife_ctx); g_ife_hw_mgr.support_consumed_addr; acquire_args->ctxt_to_hw_map = ife_ctx; acquire_args->custom_enabled = ife_ctx->custom_enabled; Loading Loading @@ -7878,6 +7852,7 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) { int rc = -EFAULT; int i, j; bool support_consumed_addr = false; struct cam_iommu_handle cdm_handles; struct cam_ife_hw_mgr_ctx *ctx_pool; struct cam_ife_hw_mgr_res *res_list_ife_out; Loading @@ -7898,11 +7873,19 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) for (i = 0, j = 0; i < CAM_IFE_HW_NUM_MAX; i++) { rc = cam_vfe_hw_init(&g_ife_hw_mgr.ife_devices[i], i); if (!rc) { struct cam_hw_intf *ife_device = g_ife_hw_mgr.ife_devices[i]; struct cam_hw_info *vfe_hw = (struct cam_hw_info *) g_ife_hw_mgr.ife_devices[i]->hw_priv; ife_device->hw_priv; struct cam_hw_soc_info *soc_info = &vfe_hw->soc_info; if (j == 0) ife_device->hw_ops.process_cmd( vfe_hw, CAM_ISP_HW_CMD_IS_CONSUMED_ADDR_SUPPORT, &support_consumed_addr, sizeof(support_consumed_addr)); j++; g_ife_hw_mgr.cdm_reg_map[i] = &soc_info->reg_map[0]; Loading @@ -7919,6 +7902,8 @@ int cam_ife_hw_mgr_init(struct cam_hw_mgr_intf *hw_mgr_intf, int *iommu_hdl) return -EINVAL; } g_ife_hw_mgr.support_consumed_addr = support_consumed_addr; /* fill csid hw intf information */ for (i = 0, j = 0; i < CAM_IFE_CSID_HW_NUM_MAX; i++) { rc = cam_ife_csid_hw_init(&g_ife_hw_mgr.csid_devices[i], i); Loading
drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.h +2 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,7 @@ struct cam_ife_hw_mgr_ctx { * @ife_dev_caps ife device capability per core * @work q work queue for IFE hw manager * @debug_cfg debug configuration * @support_consumed_addr indicate whether hw supports last consumed address */ struct cam_ife_hw_mgr { struct cam_isp_hw_mgr mgr_common; Loading @@ -241,6 +242,7 @@ struct cam_ife_hw_mgr { struct cam_req_mgr_core_workq *workq; struct cam_ife_hw_mgr_debug debug_cfg; spinlock_t ctx_lock; bool support_consumed_addr; }; /** Loading