[media] smiapp: Round minimum pre_pll up rather than down in ip_clk_freq check
authorSakari Ailus <sakari.ailus@maxwell.research.nokia.com>
Thu, 26 Apr 2012 14:21:30 +0000 (11:21 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 20 May 2012 15:46:17 +0000 (12:46 -0300)
The pre_pll divisor must be such that ext_clk / pre_pll divisor does not
result in a frequency that is greater than pll_ip_clk_freq. Fix this.

Signed-off-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/smiapp-pll.c

index a416e27a4282c0e8114219a838e1e883605f3961..a2e41a21dc65908f93a448f8b4eb68b4186424af 100644 (file)
@@ -124,8 +124,9 @@ int smiapp_pll_calculate(struct device *dev, struct smiapp_pll_limits *limits,
                                   limits->min_pll_ip_freq_hz));
        limits->min_pre_pll_clk_div =
                max_t(uint16_t, limits->min_pre_pll_clk_div,
-                     clk_div_even(pll->ext_clk_freq_hz /
-                                  limits->max_pll_ip_freq_hz));
+                     clk_div_even_up(
+                             DIV_ROUND_UP(pll->ext_clk_freq_hz,
+                                          limits->max_pll_ip_freq_hz)));
        dev_dbg(dev, "pre-pll check: min / max pre_pll_clk_div: %d / %d\n",
                limits->min_pre_pll_clk_div, limits->max_pre_pll_clk_div);