Loading drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +6 −3 Original line number Diff line number Diff line Loading @@ -1320,12 +1320,14 @@ static int cam_ope_mgr_process_io_cfg(struct cam_ope_hw_mgr *hw_mgr, } } if (prep_args->num_in_map_entries > 1) if (prep_args->num_in_map_entries > 1 && prep_args->num_in_map_entries <= CAM_MAX_IN_RES) prep_args->num_in_map_entries = cam_common_util_remove_duplicate_arr( sync_in_obj, prep_args->num_in_map_entries); if (prep_args->num_in_map_entries > 1) { if (prep_args->num_in_map_entries > 1 && prep_args->num_in_map_entries <= CAM_MAX_IN_RES) { rc = cam_sync_merge(&sync_in_obj[0], prep_args->num_in_map_entries, &merged_sync_in_obj); if (rc) { Loading @@ -1347,7 +1349,8 @@ static int cam_ope_mgr_process_io_cfg(struct cam_ope_hw_mgr *hw_mgr, ope_request->in_resource = 0; CAM_DBG(CAM_OPE, "fence = %d", sync_in_obj[0]); } else { CAM_DBG(CAM_OPE, "No input fences"); CAM_DBG(CAM_OPE, "Invalid count of input fences, count: %d", prep_args->num_in_map_entries); prep_args->num_in_map_entries = 0; ope_request->in_resource = 0; rc = -EINVAL; Loading drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +19 −2 Original line number Diff line number Diff line Loading @@ -104,6 +104,10 @@ static int cam_ope_bus_is_rm_enabled( in_port_to_rm = &bus_rd->in_port_to_rm[io_buf->resource_type - 1]; combo_idx = cam_ope_bus_rd_combo_idx(io_buf->format); if (combo_idx < 0) { CAM_ERR(CAM_OPE, "Invalid combo_idx"); return -EINVAL; } for (k = 0; k < io_buf->num_planes; k++) { if (rm_id == in_port_to_rm->rm_port_id[combo_idx][k]) Loading Loading @@ -324,6 +328,11 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, return NULL; } if (rm_idx >= MAX_RD_CLIENTS) { CAM_ERR(CAM_OPE, "Invalid read client: %d", rm_idx); return NULL; } ctx_data = prepare->ctx_data; req_idx = prepare->req_idx; cdm_ops = ctx_data->ope_cdm.cdm_ops; Loading Loading @@ -403,9 +412,9 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, struct cam_ope_bus_rd_reg *rd_reg; struct cam_ope_bus_rd_reg_val *rd_reg_val; struct ope_bus_rd_io_port_cdm_batch *io_port_cdm_batch; struct ope_bus_rd_io_port_cdm_info *io_port_cdm; struct ope_bus_rd_io_port_cdm_info *io_port_cdm = NULL; struct cam_cdm_utils_ops *cdm_ops; int32_t num_stripes; int32_t num_stripes = 0; if (ctx_id < 0 || !data) { CAM_ERR(CAM_OPE, "Invalid data: %d %x", ctx_id, data); Loading Loading @@ -469,12 +478,20 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, for (j = 0; j < rd_reg_val->num_clients; j++) { is_rm_enabled = cam_ope_bus_is_rm_enabled( ope_request, i, j); if (is_rm_enabled < 0) { rc = -EINVAL; goto end; } if (is_rm_enabled) continue; kmd_buf = cam_ope_bus_rm_disable(ope_hw_info, ctx_id, prepare, i, j, kmd_buf, num_stripes); if (!kmd_buf) { rc = -EINVAL; goto end; } } } Loading Loading
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c +6 −3 Original line number Diff line number Diff line Loading @@ -1320,12 +1320,14 @@ static int cam_ope_mgr_process_io_cfg(struct cam_ope_hw_mgr *hw_mgr, } } if (prep_args->num_in_map_entries > 1) if (prep_args->num_in_map_entries > 1 && prep_args->num_in_map_entries <= CAM_MAX_IN_RES) prep_args->num_in_map_entries = cam_common_util_remove_duplicate_arr( sync_in_obj, prep_args->num_in_map_entries); if (prep_args->num_in_map_entries > 1) { if (prep_args->num_in_map_entries > 1 && prep_args->num_in_map_entries <= CAM_MAX_IN_RES) { rc = cam_sync_merge(&sync_in_obj[0], prep_args->num_in_map_entries, &merged_sync_in_obj); if (rc) { Loading @@ -1347,7 +1349,8 @@ static int cam_ope_mgr_process_io_cfg(struct cam_ope_hw_mgr *hw_mgr, ope_request->in_resource = 0; CAM_DBG(CAM_OPE, "fence = %d", sync_in_obj[0]); } else { CAM_DBG(CAM_OPE, "No input fences"); CAM_DBG(CAM_OPE, "Invalid count of input fences, count: %d", prep_args->num_in_map_entries); prep_args->num_in_map_entries = 0; ope_request->in_resource = 0; rc = -EINVAL; Loading
drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd/ope_bus_rd.c +19 −2 Original line number Diff line number Diff line Loading @@ -104,6 +104,10 @@ static int cam_ope_bus_is_rm_enabled( in_port_to_rm = &bus_rd->in_port_to_rm[io_buf->resource_type - 1]; combo_idx = cam_ope_bus_rd_combo_idx(io_buf->format); if (combo_idx < 0) { CAM_ERR(CAM_OPE, "Invalid combo_idx"); return -EINVAL; } for (k = 0; k < io_buf->num_planes; k++) { if (rm_id == in_port_to_rm->rm_port_id[combo_idx][k]) Loading Loading @@ -324,6 +328,11 @@ static uint32_t *cam_ope_bus_rm_disable(struct ope_hw *ope_hw_info, return NULL; } if (rm_idx >= MAX_RD_CLIENTS) { CAM_ERR(CAM_OPE, "Invalid read client: %d", rm_idx); return NULL; } ctx_data = prepare->ctx_data; req_idx = prepare->req_idx; cdm_ops = ctx_data->ope_cdm.cdm_ops; Loading Loading @@ -403,9 +412,9 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, struct cam_ope_bus_rd_reg *rd_reg; struct cam_ope_bus_rd_reg_val *rd_reg_val; struct ope_bus_rd_io_port_cdm_batch *io_port_cdm_batch; struct ope_bus_rd_io_port_cdm_info *io_port_cdm; struct ope_bus_rd_io_port_cdm_info *io_port_cdm = NULL; struct cam_cdm_utils_ops *cdm_ops; int32_t num_stripes; int32_t num_stripes = 0; if (ctx_id < 0 || !data) { CAM_ERR(CAM_OPE, "Invalid data: %d %x", ctx_id, data); Loading Loading @@ -469,12 +478,20 @@ static int cam_ope_bus_rd_prepare(struct ope_hw *ope_hw_info, for (j = 0; j < rd_reg_val->num_clients; j++) { is_rm_enabled = cam_ope_bus_is_rm_enabled( ope_request, i, j); if (is_rm_enabled < 0) { rc = -EINVAL; goto end; } if (is_rm_enabled) continue; kmd_buf = cam_ope_bus_rm_disable(ope_hw_info, ctx_id, prepare, i, j, kmd_buf, num_stripes); if (!kmd_buf) { rc = -EINVAL; goto end; } } } Loading