[PATCH 7/7] clk: atlas7: fix pll missed divide NR in fraction mode
Barry Song
21cnbao at gmail.com
Mon Jul 27 23:27:25 PDT 2015
From: Guo Zeng <guo.zeng at csr.com>
PLL VCO frequency is given by Fvco = Fref * 2 * NF / NR
in integer-N mode, or by Fvco = Fref * SSN / NR in Spread
Spectrum (fractional-N) mode. Thus fix the missing part
of NR
Signed-off-by: Guo Zeng <guo.zeng at csr.com>
Signed-off-by: Barry Song <Baohua.Song at csr.com>
---
drivers/clk/sirf/clk-atlas7.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/sirf/clk-atlas7.c b/drivers/clk/sirf/clk-atlas7.c
index 4fc33da..19f417c 100644
--- a/drivers/clk/sirf/clk-atlas7.c
+++ b/drivers/clk/sirf/clk-atlas7.c
@@ -358,6 +358,7 @@ static unsigned long pll_clk_recalc_rate(struct clk_hw *hw,
if (regctrl0 & SIRFSOC_ABPLL_CTRL0_SSEN) {
rate = fin;
rate *= 1 << 24;
+ do_div(rate, nr);
do_div(rate, (256 * ((ssdiv >> ssdepth) << ssdepth)
+ (ssmod << ssdepth)));
} else {
--
1.9.1
More information about the linux-arm-kernel
mailing list