OMAPDSS: fix dss_fck clock rate rounding
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 10 Apr 2013 11:47:38 +0000 (14:47 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 11 Apr 2013 10:07:54 +0000 (13:07 +0300)
commit648a55e1254117bd7500747a789f0b112c7af240
tree3ec4f099ab6d2d20f743bc064cec928ffd2571f1
parent77d3595b29e2289cb6f9e4cece5fca1335554d56
OMAPDSS: fix dss_fck clock rate rounding

DSS func clock is calculated with prate / div * m. However, the current
omapdss code calculates it with prate * m / div, which yields a slightly
different result when there's a remainder. For example, 432000000 / 14 *
2 = 61714284, but 432000000 * 2 / 14 = 61714285.

In addition to that, the clock framework wants the clock rate given with
clk_set_rate to be higher than the actual (truncated) end result. So, if
prate is 432000000, and div is 14, the real result is 30857142.8571...
We need to call clk_set_rate with 30857143, which gives us a clock of
30857142. That's why we need to use DIV_ROUND_UP() when calling
clk_set_rate.

This patch fixes the clock calculation.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dss.c