clk: mmp: try to use closer one when do round rate

The orignal code will use the bigger rate between
"previous rate" and "current rate" when caculate the
rate.
In fact, hardware cares about the closest one.
So choose the closer rate between "previous rate" and
"current rate".

Signed-off-by: Chao Xie <chao.xie@marvell.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
This commit is contained in:
Chao Xie 2014-01-23 10:47:42 +08:00 committed by Mike Turquette
parent c45693a648
commit 5d26c15d3b

View file

@ -45,10 +45,14 @@ static long clk_factor_round_rate(struct clk_hw *hw, unsigned long drate,
if (rate > drate)
break;
}
if ((i == 0) || (i == factor->ftbl_cnt))
if ((i == 0) || (i == factor->ftbl_cnt)) {
return rate;
else
return prev_rate;
} else {
if ((drate - prev_rate) > (rate - drate))
return rate;
else
return prev_rate;
}
}
static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,