clk: samsung: Fix pll36xx_recalc_rate to handle kdiv properly
authorDoug Anderson <dianders@chromium.org>
Tue, 11 Jun 2013 15:24:05 +0000 (08:24 -0700)
committerMike Turquette <mturquette@linaro.org>
Tue, 11 Jun 2013 16:51:26 +0000 (09:51 -0700)
commit071ff9a36cb08b5a2b099fcdb45b63a61618f928
treeaae3e0d37266606242ea6456ad09c43ffb5a7b2e
parent589c603b2c591ed470a731ceda589e6d60b77b5f
clk: samsung: Fix pll36xx_recalc_rate to handle kdiv properly

The KDIV value is often listed as unsigned but it needs to be treated
as a 16-bit signed value when using it in calculations.  Fix our rate
recalculation to do this correctly.

Before doing this, I tried setting EPLL on exynos5250 to:
  rate, m, p, s, k = 80000000, 107, 2, 4, 43691

This rate is exactly from the table in the exynos5250 user manual.

I read this back as 80750003 with:
  cat /sys/kernel/debug/clk/fin_pll/fout_epll/clk_rate

After this patch, it reads back as 80000003

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Reviewed-by: Vikas Sajjan <vikas.sajjan@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
drivers/clk/samsung/clk-pll.c