Browse Source

Merge "msm: camera: ope: Updated logic to calculate num bw path" into camera-kernel.lnx.4.0

Camera Software Integration 4 years ago
parent
commit
79edec1a06
1 changed files with 42 additions and 1 deletions
  1. 42 1
      drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c

+ 42 - 1
drivers/cam_ope/ope_hw_mgr/cam_ope_hw_mgr.c

@@ -1320,6 +1320,46 @@ static int cam_ope_mgr_update_clk_rate(struct cam_ope_hw_mgr *hw_mgr,
 	return 0;
 	return 0;
 }
 }
 
 
+static int cam_ope_mgr_calculate_num_path(
+	struct cam_ope_clk_bw_req_internal_v2 *clk_info,
+	struct cam_ope_ctx *ctx_data)
+{
+	int i, path_index = 0;
+
+	for (i = 0; i < CAM_OPE_MAX_PER_PATH_VOTES; i++) {
+		if ((clk_info->axi_path[i].path_data_type <
+			CAM_AXI_PATH_DATA_OPE_START_OFFSET) ||
+			(clk_info->axi_path[i].path_data_type >
+			CAM_AXI_PATH_DATA_OPE_MAX_OFFSET) ||
+			((clk_info->axi_path[i].path_data_type -
+			CAM_AXI_PATH_DATA_OPE_START_OFFSET) >=
+			CAM_OPE_MAX_PER_PATH_VOTES)) {
+			CAM_WARN(CAM_OPE,
+				"Invalid path %d, start offset=%d, max=%d",
+				ctx_data->clk_info.axi_path[i].path_data_type,
+				CAM_AXI_PATH_DATA_OPE_START_OFFSET,
+				CAM_OPE_MAX_PER_PATH_VOTES);
+			continue;
+		}
+
+		path_index = clk_info->axi_path[i].path_data_type -
+			CAM_AXI_PATH_DATA_OPE_START_OFFSET;
+
+		CAM_DBG(CAM_OPE,
+			"clk_info: i[%d]: [%s %s] bw [%lld %lld] num_path: %d",
+			i,
+			cam_cpas_axi_util_trans_type_to_string(
+			clk_info->axi_path[i].transac_type),
+			cam_cpas_axi_util_path_type_to_string(
+			clk_info->axi_path[i].path_data_type),
+			clk_info->axi_path[i].camnoc_bw,
+			clk_info->axi_path[i].mnoc_ab_bw,
+			clk_info->num_paths);
+	}
+
+	return (path_index+1);
+}
+
 static bool cam_ope_update_bw_v2(struct cam_ope_hw_mgr *hw_mgr,
 static bool cam_ope_update_bw_v2(struct cam_ope_hw_mgr *hw_mgr,
 	struct cam_ope_ctx *ctx_data,
 	struct cam_ope_ctx *ctx_data,
 	struct cam_ope_clk_info *hw_mgr_clk_info,
 	struct cam_ope_clk_info *hw_mgr_clk_info,
@@ -1402,7 +1442,8 @@ static bool cam_ope_update_bw_v2(struct cam_ope_hw_mgr *hw_mgr,
 		ctx_data->clk_info.axi_path[i].ddr_ib_bw;
 		ctx_data->clk_info.axi_path[i].ddr_ib_bw;
 	}
 	}
 
 
-	ctx_data->clk_info.num_paths = clk_info->num_paths;
+	ctx_data->clk_info.num_paths =
+		cam_ope_mgr_calculate_num_path(clk_info, ctx_data);
 
 
 	memcpy(&ctx_data->clk_info.axi_path[0],
 	memcpy(&ctx_data->clk_info.axi_path[0],
 		&clk_info->axi_path[0],
 		&clk_info->axi_path[0],