mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-05-26 11:40:24 +02:00
media: ccs-pll: Fix pre-PLL divider calculation for EXT_IP_PLL_DIVIDER flag
When the CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER flag is set, odd pre-PLL divider values are allowed. However, in the operational timing branch the calculation of the minimum pre-PLL divider incorrectly uses clk_div_even_up, forcing the minimum value to be even, even if the flag is set. This prevents selecting a valid odd divider like 3, which may be required for certain sensor configurations. Fix this by removing the forced even rounding from the minimum pre-PLL divider calculation. The loop later uses the flag to determine the step, so odd values will be considered when the flag is set. Signed-off-by: Alexander Shiyan <eagle.alexander923@gmail.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
2fb0481fe0
commit
b7ef8bbb9f
@@ -824,9 +824,8 @@ int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim,
|
||||
op_lim_fr->min_pll_ip_clk_freq_hz));
|
||||
min_op_pre_pll_clk_div =
|
||||
max_t(u16, op_lim_fr->min_pre_pll_clk_div,
|
||||
clk_div_even_up(
|
||||
DIV_ROUND_UP(pll->ext_clk_freq_hz,
|
||||
op_lim_fr->max_pll_ip_clk_freq_hz)));
|
||||
DIV_ROUND_UP(pll->ext_clk_freq_hz,
|
||||
op_lim_fr->max_pll_ip_clk_freq_hz));
|
||||
dev_dbg(dev, "pre-pll check: min / max op_pre_pll_clk_div: %u / %u\n",
|
||||
min_op_pre_pll_clk_div, max_op_pre_pll_clk_div);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user