summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSameer Pujar <spujar@nvidia.com>2021-03-15 23:01:32 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-04-07 12:48:48 +0200
commitbd1aa59a895a8e122b541af646fe9df12c9c15c1 (patch)
treee2c1786f6897f0e686c919613fbfba68275de761
parent1fd2bf77bd5d054fb6e8e68cedd55c020aa82e85 (diff)
downloadlinux-stable-bd1aa59a895a8e122b541af646fe9df12c9c15c1.tar.gz
linux-stable-bd1aa59a895a8e122b541af646fe9df12c9c15c1.tar.bz2
linux-stable-bd1aa59a895a8e122b541af646fe9df12c9c15c1.zip
ASoC: rt5659: Update MCLK rate in set_sysclk()
[ Upstream commit dbf54a9534350d6aebbb34f5c1c606b81a4f35dd ] Simple-card/audio-graph-card drivers do not handle MCLK clock when it is specified in the codec device node. The expectation here is that, the codec should actually own up the MCLK clock and do necessary setup in the driver. Suggested-by: Mark Brown <broonie@kernel.org> Suggested-by: Michael Walle <michael@walle.cc> Signed-off-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/1615829492-8972-3-git-send-email-spujar@nvidia.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--sound/soc/codecs/rt5659.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c
index 1c1a521c73cb..b331b3ba61a9 100644
--- a/sound/soc/codecs/rt5659.c
+++ b/sound/soc/codecs/rt5659.c
@@ -3466,12 +3466,17 @@ static int rt5659_set_component_sysclk(struct snd_soc_component *component, int
{
struct rt5659_priv *rt5659 = snd_soc_component_get_drvdata(component);
unsigned int reg_val = 0;
+ int ret;
if (freq == rt5659->sysclk && clk_id == rt5659->sysclk_src)
return 0;
switch (clk_id) {
case RT5659_SCLK_S_MCLK:
+ ret = clk_set_rate(rt5659->mclk, freq);
+ if (ret)
+ return ret;
+
reg_val |= RT5659_SCLK_SRC_MCLK;
break;
case RT5659_SCLK_S_PLL1: