summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorBrent Lu <brent.lu@intel.com>2024-04-26 10:25:29 -0500
committerMark Brown <broonie@kernel.org>2024-04-29 23:49:21 +0900
commit3d84e070253eb853e3190a23994aa3074615efd1 (patch)
tree05b318287f482a8ec488ccb7c9fa6f16c39342ea /sound
parent4524b1e3ef7884e0a54484dce8d921be7a06af13 (diff)
downloadlinux-stable-3d84e070253eb853e3190a23994aa3074615efd1.tar.gz
linux-stable-3d84e070253eb853e3190a23994aa3074615efd1.tar.bz2
linux-stable-3d84e070253eb853e3190a23994aa3074615efd1.zip
ASoC: Intel: sof-rt5682: support bclk as PLL source on rt5682s
For rt5682s codec, we could use bclk as PLL source when the frequency is 3.072MHz but no 2.4MHz. Update the code to select correct pll_id and clk_id for 3.072MHz bclk. Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Brent Lu <brent.lu@intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20240426152529.38345-24-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/intel/boards/sof_rt5682.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sound/soc/intel/boards/sof_rt5682.c b/sound/soc/intel/boards/sof_rt5682.c
index c3b026868653..e3a2ec6b4c7c 100644
--- a/sound/soc/intel/boards/sof_rt5682.c
+++ b/sound/soc/intel/boards/sof_rt5682.c
@@ -355,18 +355,23 @@ static int sof_rt5682_hw_params(struct snd_pcm_substream *substream,
clk_id = RT5682_SCLK_S_PLL1;
break;
case CODEC_RT5682S:
- /*
- * For MCLK = 24.576MHz and sample rate = 96KHz case, use PLL1 We don't test
- * pll_out or params_rate() here since rt5682s PLL2 doesn't support 24.576MHz
- * input, so we have no choice but to use PLL1. Besides, we will not use PLL at
- * all if pll_in == pll_out. ex, MCLK = 24.576Mhz and sample rate = 48KHz
- */
- if (pll_in == 24576000) {
+ /* check plla_table and pllb_table in rt5682s.c */
+ switch (pll_in) {
+ case 3072000:
+ case 24576000:
+ /*
+ * For MCLK = 24.576MHz and sample rate = 96KHz case, use PLL1 We don't test
+ * pll_out or params_rate() here since rt5682s PLL2 doesn't support 24.576MHz
+ * input, so we have no choice but to use PLL1. Besides, we will not use PLL at
+ * all if pll_in == pll_out. ex, MCLK = 24.576Mhz and sample rate = 48KHz
+ */
pll_id = RT5682S_PLL1;
clk_id = RT5682S_SCLK_S_PLL1;
- } else {
+ break;
+ default:
pll_id = RT5682S_PLL2;
clk_id = RT5682S_SCLK_S_PLL2;
+ break;
}
break;
default: