mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 04:09:18 -04:00
ASoC: wm8940: Correct PLL rate rounding
Using a single value of 22500000 for both 48000Hz and 44100Hz audio
will sometimes result in returning wrong dividers due to rounding.
Update the code to use the actual value for both.
Fixes: 294833fc9e ("ASoC: wm8940: Rewrite code to set proper clocks")
Reported-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Link: https://patch.msgid.link/20250821082639.1301453-2-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
b320789d68
commit
d05afb53c6
@@ -693,7 +693,12 @@ static int wm8940_update_clocks(struct snd_soc_dai *dai)
|
||||
f = wm8940_get_mclkdiv(priv->mclk, fs256, &mclkdiv);
|
||||
if (f != priv->mclk) {
|
||||
/* The PLL performs best around 90MHz */
|
||||
fpll = wm8940_get_mclkdiv(22500000, fs256, &mclkdiv);
|
||||
if (fs256 % 8000)
|
||||
f = 22579200;
|
||||
else
|
||||
f = 24576000;
|
||||
|
||||
fpll = wm8940_get_mclkdiv(f, fs256, &mclkdiv);
|
||||
}
|
||||
|
||||
wm8940_set_dai_pll(dai, 0, 0, priv->mclk, fpll);
|
||||
|
||||
Reference in New Issue
Block a user