1
0
Fork 0

MLK-20203-4 soc: imx: fix coverity issue

This patch fixes coverity issue of "divide by 0".

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Bai Ping <ping.bai@nxp.com>
pull/10/head
Anson Huang 2018-11-03 12:17:31 +08:00
parent 4e70e0b026
commit fb672a95ff
1 changed files with 38 additions and 7 deletions

View File

@ -104,6 +104,8 @@ static void update_bus_freq(int target_freq)
static void reduce_bus_freq(void)
{
u32 rate;
high_bus_freq_mode = 0;
/*
@ -142,7 +144,12 @@ static void reduce_bus_freq(void)
clk_disable_unprepare(dram_alt_root);
}
/* reduce the NOC & bus clock */
clk_set_rate(noc_div, clk_get_rate(noc_div) / 8);
rate = clk_get_rate(noc_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(noc_div, rate / 8);
} else {
/* prepare the necessary clk before frequency change */
clk_prepare_enable(sys1_pll_40m);
@ -161,10 +168,19 @@ static void reduce_bus_freq(void)
clk_disable_unprepare(dram_alt_root);
/* change the NOC rate */
clk_set_rate(noc_div, clk_get_rate(noc_div) / 5);
rate = clk_get_rate(noc_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(noc_div, rate / 5);
}
clk_set_rate(ahb_div, clk_get_rate(ahb_div) / 6);
rate = clk_get_rate(ahb_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(ahb_div, rate / 6);
clk_set_parent(main_axi_src, osc_25m);
}
@ -201,7 +217,12 @@ static void reduce_bus_freq(void)
clk_disable_unprepare(dram_alt_root);
}
/* reduce the NOC & bus clock */
clk_set_rate(noc_div, clk_get_rate(noc_div) / 8);
rate = clk_get_rate(noc_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(noc_div, rate / 8);
} else {
/* prepare the necessary clk before frequency change */
clk_prepare_enable(sys1_pll_40m);
@ -220,10 +241,20 @@ static void reduce_bus_freq(void)
clk_disable_unprepare(dram_alt_root);
/* change the NOC clock rate */
clk_set_rate(noc_div, clk_get_rate(noc_div) / 5);
rate = clk_get_rate(noc_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(noc_div, rate / 5);
}
clk_set_rate(ahb_div, clk_get_rate(ahb_div) / 6);
rate = clk_get_rate(ahb_div);
if (rate == 0) {
WARN_ON(1);
return;
}
clk_set_rate(ahb_div, rate / 6);
clk_set_parent(main_axi_src, osc_25m);
}