msm: camera: core: Fix cpas axi clk rate overflow

Change the clk variable type from int32_t to int64_t
to avoid integer overflow.

CRs-Fixed: 2609090
Change-Id: I9f785ce2c1e45b1e9a238c42e86da1161bf70f75
Signed-off-by: Ravikishore Pampana <rpampana@codeaurora.org>
This commit is contained in:
Ravikishore Pampana committed 2020-03-30 15:11:53 +05:30
1 parent be3de2de38
commit 2c31a66902
3 files changed
+14 -14

No files matched your search

+3 -3
View File
@@ -450,7 +450,7 @@ static int cam_cpas_util_set_camnoc_axi_clk_rate(
if (soc_private->control_camnoc_axi_clk) {
struct cam_hw_soc_info *soc_info = &cpas_hw->soc_info;
uint64_t required_camnoc_bw = 0, intermediate_result = 0;
int32_t clk_rate = 0;
int64_t clk_rate = 0;
for (i = 0; i < CAM_CPAS_MAX_TREE_NODES; i++) {
tree_node = soc_private->tree_node[i];
@@ -479,7 +479,7 @@ static int cam_cpas_util_set_camnoc_axi_clk_rate(
do_div(intermediate_result, soc_private->camnoc_bus_width);
clk_rate = intermediate_result;
CAM_DBG(CAM_CPAS, "Setting camnoc axi clk rate : %llu %d",
CAM_DBG(CAM_CPAS, "Setting camnoc axi clk rate : %llu %lld",
required_camnoc_bw, clk_rate);
/*
@@ -492,7 +492,7 @@ static int cam_cpas_util_set_camnoc_axi_clk_rate(
rc = cam_soc_util_set_src_clk_rate(soc_info, clk_rate);
if (rc)
CAM_ERR(CAM_CPAS,
"Failed in setting camnoc axi clk %llu %d %d",
"Failed in setting camnoc axi clk %llu %lld %d",
required_camnoc_bw, clk_rate, rc);
}
}
+9 -9
View File
@@ -17,7 +17,7 @@ static char supported_clk_info[256];
static char debugfs_dir_name[64];
int cam_soc_util_get_clk_level(struct cam_hw_soc_info *soc_info,
int32_t clk_rate, int clk_idx, int32_t *clk_lvl)
int64_t clk_rate, int clk_idx, int32_t *clk_lvl)
{
int i;
long clk_rate_round;
@@ -41,9 +41,9 @@ int cam_soc_util_get_clk_level(struct cam_hw_soc_info *soc_info,
(soc_info->clk_rate[i][clk_idx] >=
clk_rate_round)) {
CAM_DBG(CAM_UTIL,
"soc = %d round rate = %ld actual = %d",
"soc = %d round rate = %ld actual = %lld",
soc_info->clk_rate[i][clk_idx],
clk_rate_round, clk_rate);
clk_rate_round, clk_rate);
*clk_lvl = i;
return 0;
}
@@ -380,7 +380,7 @@ long cam_soc_util_get_clk_round_rate(struct cam_hw_soc_info *soc_info,
* @return: Success or failure
*/
static int cam_soc_util_set_clk_rate(struct clk *clk, const char *clk_name,
int32_t clk_rate)
int64_t clk_rate)
{
int rc = 0;
long clk_rate_round;
@@ -388,7 +388,7 @@ static int cam_soc_util_set_clk_rate(struct clk *clk, const char *clk_name,
if (!clk || !clk_name)
return -EINVAL;
CAM_DBG(CAM_UTIL, "set %s, rate %d", clk_name, clk_rate);
CAM_DBG(CAM_UTIL, "set %s, rate %lld", clk_name, clk_rate);
if (clk_rate > 0) {
clk_rate_round = clk_round_rate(clk, clk_rate);
CAM_DBG(CAM_UTIL, "new_rate %ld", clk_rate_round);
@@ -424,7 +424,7 @@ static int cam_soc_util_set_clk_rate(struct clk *clk, const char *clk_name,
}
int cam_soc_util_set_src_clk_rate(struct cam_hw_soc_info *soc_info,
int32_t clk_rate)
int64_t clk_rate)
{
int rc = 0;
int i = 0;
@@ -452,13 +452,13 @@ int cam_soc_util_set_src_clk_rate(struct cam_hw_soc_info *soc_info,
&apply_level);
if (rc || (apply_level < 0) || (apply_level >= CAM_MAX_VOTE)) {
CAM_ERR(CAM_UTIL,
"set %s, rate %d dev_name = %s apply level = %d",
"set %s, rate %lld dev_name = %s apply level = %d",
soc_info->clk_name[src_clk_idx], clk_rate,
soc_info->dev_name, apply_level);
return -EINVAL;
}
CAM_DBG(CAM_UTIL, "set %s, rate %d dev_name = %s apply level = %d",
CAM_DBG(CAM_UTIL, "set %s, rate %lld dev_name = %s apply level = %d",
soc_info->clk_name[src_clk_idx], clk_rate,
soc_info->dev_name, apply_level);
@@ -471,7 +471,7 @@ int cam_soc_util_set_src_clk_rate(struct cam_hw_soc_info *soc_info,
soc_info->clk_name[src_clk_idx], clk_rate);
if (rc) {
CAM_ERR(CAM_UTIL,
"SET_RATE Failed: src clk: %s, rate %d, dev_name = %s rc: %d",
"SET_RATE Failed: src clk: %s, rate %lld, dev_name = %s rc: %d",
soc_info->clk_name[src_clk_idx], clk_rate,
soc_info->dev_name, rc);
return rc;
+2 -2
View File
@@ -415,7 +415,7 @@ long cam_soc_util_get_clk_round_rate(struct cam_hw_soc_info *soc_info,
* @return: success or failure
*/
int cam_soc_util_set_src_clk_rate(struct cam_hw_soc_info *soc_info,
int32_t clk_rate);
int64_t clk_rate);
/**
* cam_soc_util_get_option_clk_by_name()
@@ -657,7 +657,7 @@ int cam_soc_util_clk_enable_default(struct cam_hw_soc_info *soc_info,
enum cam_vote_level clk_level);
int cam_soc_util_get_clk_level(struct cam_hw_soc_info *soc_info,
int32_t clk_rate, int clk_idx, int32_t *clk_lvl);
int64_t clk_rate, int clk_idx, int32_t *clk_lvl);
/* Callback to get reg space data for specific HW */
typedef int (*cam_soc_util_regspace_data_cb)(uint32_t reg_base_type,