diff options
| author | Mark Brown <broonie@kernel.org> | 2025-09-02 17:55:00 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2025-09-02 17:55:00 +0100 |
| commit | 85a71323753cbb16f4dcb5b3e2b3fd0acc05f130 (patch) | |
| tree | 4691d3b52823178e9630af600abee8b276e5d383 /sound | |
| parent | 35fc531a59694f24a2456569cf7d1a9c6436841c (diff) | |
| parent | 9b17d3724df55ecc2bc67978822585f2b023be48 (diff) | |
| download | linux-85a71323753cbb16f4dcb5b3e2b3fd0acc05f130.tar.gz linux-85a71323753cbb16f4dcb5b3e2b3fd0acc05f130.tar.bz2 linux-85a71323753cbb16f4dcb5b3e2b3fd0acc05f130.zip | |
Minor bug fixes for some older Wolfson devices
Merge series from Charles Keepax <ckeepax@opensource.cirrus.com>:
Minor bug fixes for a couple of older devices reported by some users.
Mostly this centers around the automatic PLL configuration getting the
wrong values due to rounding.
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/soc/codecs/wm8940.c | 9 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8974.c | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c index 401ee20897b1..94873ea63014 100644 --- a/sound/soc/codecs/wm8940.c +++ b/sound/soc/codecs/wm8940.c @@ -220,7 +220,7 @@ static const struct snd_kcontrol_new wm8940_snd_controls[] = { SOC_SINGLE_TLV("Digital Capture Volume", WM8940_ADCVOL, 0, 255, 0, wm8940_adc_tlv), SOC_ENUM("Mic Bias Level", wm8940_mic_bias_level_enum), - SOC_SINGLE_TLV("Capture Boost Volue", WM8940_ADCBOOST, + SOC_SINGLE_TLV("Capture Boost Volume", WM8940_ADCBOOST, 8, 1, 0, wm8940_capture_boost_vol_tlv), SOC_SINGLE_TLV("Speaker Playback Volume", WM8940_SPKVOL, 0, 63, 0, wm8940_spk_vol_tlv), @@ -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); diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c index bdf437a5403f..db16d893a235 100644 --- a/sound/soc/codecs/wm8974.c +++ b/sound/soc/codecs/wm8974.c @@ -419,10 +419,14 @@ static int wm8974_update_clocks(struct snd_soc_dai *dai) fs256 = 256 * priv->fs; f = wm8974_get_mclkdiv(priv->mclk, fs256, &mclkdiv); - if (f != priv->mclk) { /* The PLL performs best around 90MHz */ - fpll = wm8974_get_mclkdiv(22500000, fs256, &mclkdiv); + if (fs256 % 8000) + f = 22579200; + else + f = 24576000; + + fpll = wm8974_get_mclkdiv(f, fs256, &mclkdiv); } wm8974_set_dai_pll(dai, 0, 0, priv->mclk, fpll); |
