media: ccs-pll: Fix check for PLL multiplier upper bound
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 7 Jul 2020 13:24:09 +0000 (15:24 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 7 Dec 2020 14:50:18 +0000 (15:50 +0100)
The additional multiplier (for higher VT timing) of the PLL multiplier was
checked against the upper limit but the result was rounded up, possibly
producing too high additional multiplier. Round down instead to keep
within hardware limits.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/ccs-pll.c

index f4c41d61e3324a1489da3ae76c3045125cb2bc5c..b23e959000a407912f593df9fd7a6384bb3349af 100644 (file)
@@ -204,8 +204,7 @@ __ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim,
        dev_dbg(dev, "more_mul_max: max_op_sys_clk_div check: %u\n",
                more_mul_max);
        /* Ensure we won't go above max_pll_multiplier. */
-       more_mul_max = min(more_mul_max,
-                          DIV_ROUND_UP(op_lim_fr->max_pll_multiplier, mul));
+       more_mul_max = min(more_mul_max, op_lim_fr->max_pll_multiplier / mul);
        dev_dbg(dev, "more_mul_max: min_pll_multiplier check: %u\n",
                more_mul_max);