media: ccs-pll: Avoid overflow in pre-PLL divisor lower bound search
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 7 Jul 2020 08:31:56 +0000 (10:31 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 7 Dec 2020 14:49:32 +0000 (15:49 +0100)
commit482e75e7b3eba6730cbfaa1911916d13887c9606
treec522a03b0601df1de45141f49e6def813a1bcee7
parentfe52ece8d2e26bd4d38e2c99a7cd13d944c1ee98
media: ccs-pll: Avoid overflow in pre-PLL divisor lower bound search

The external clock frequency times the PLL multiplier may exceed the value
range of 32-bit unsigned integers. Instead perform the same calculation y
using two divisions.

The result has some potential to be different, but that's ok: this number
is used to limit the range of pre-PLL divisors to find optimal values. So
the effect of the rare case of a different result here would mean an
invalid pre-PLL divisor is tried. That will be found out a little later in
any case.

Also guard against dividing by zero if the external clock frequency is
higher than the maximum OP PLL output clock --- a rather improbable case.

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