mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
clk: nuvoton: ma35d1: fix ignored div_u64 return values in PLL freq calculation
div_u64() does not modify its argument in place; the return value must
be assigned. Both ma35d1_calc_smic_pll_freq() and ma35d1_calc_pll_freq()
called div_u64() and discarded the result, leaving pll_freq holding the
undivided product and thus returning a frequency orders of magnitude too
high.
Fixes: 691521a367 ("clk: nuvoton: Add clock driver for ma35d1 clock controller")
Reviewed-by: Brian Masney <bmasney@redhat.com>
Signed-off-by: Joey Lu <a0987203069@gmail.com>
Signed-off-by: Brian Masney <bmasney@redhat.com>
This commit is contained in:
parent
f63aecdb45
commit
b3a2223a78
|
|
@ -92,7 +92,7 @@ static unsigned long ma35d1_calc_smic_pll_freq(u32 pll0_ctl0,
|
|||
p = FIELD_GET(SPLL0_CTL0_OUTDIV, pll0_ctl0);
|
||||
outdiv = 1 << p;
|
||||
pll_freq = (u64)parent_rate * n;
|
||||
div_u64(pll_freq, m * outdiv);
|
||||
pll_freq = div_u64(pll_freq, m * outdiv);
|
||||
return pll_freq;
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ static unsigned long ma35d1_calc_pll_freq(u8 mode, u32 *reg_ctl, unsigned long p
|
|||
|
||||
if (mode == PLL_MODE_INT) {
|
||||
pll_freq = (u64)parent_rate * n;
|
||||
div_u64(pll_freq, m * p);
|
||||
pll_freq = div_u64(pll_freq, m * p);
|
||||
} else {
|
||||
x = FIELD_GET(PLL_CTL1_FRAC, reg_ctl[1]);
|
||||
/* 2 decimal places floating to integer (ex. 1.23 to 123) */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user