From 3eca03b1449c2f6c348a53da16d1cfe8938c8d8e Mon Sep 17 00:00:00 2001 From: Sheetal Date: Tue, 13 May 2025 08:57:20 +0000 Subject: [PATCH] NVIDIA: SAUCE: ASoC: Fix pll clock issue Issue: Using 'rt5640-codec-sysclk-bclk1' compatible throws below error while running any of the rt5640 usecase, rt5640 3-001c: Unsupported clock setting 48000 for DAI 0 rt5640 3-001c: ASoC: error at snd_soc_dai_hw_params on rt5640-aif1: -22 Fix: aud_mclk was used uninitialized that was leading to above error. Initialized aud_mclk as srate * 256. Fixes: 9225307cecaa("NVIDIA: SAUCE: ASoC: tegra: support few external codecs") http://nvbugs/5197062 Signed-off-by: Sheetal Reviewed-by: Mohan kumar Reviewed-by: Sameer Pujar Signed-off-by: Kartik Rajput Acked-by: Noah Wager Acked-by: Jacob Martin Signed-off-by: Noah Wager --- sound/soc/tegra/tegra_codecs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sound/soc/tegra/tegra_codecs.c b/sound/soc/tegra/tegra_codecs.c index d7f1383fff11..554c951960f0 100644 --- a/sound/soc/tegra/tegra_codecs.c +++ b/sound/soc/tegra/tegra_codecs.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // // tegra_codecs.c - External audio codec setup @@ -281,6 +281,9 @@ int tegra_codecs_runtime_setup(struct snd_soc_pcm_runtime *rtd, vrtd = find_rtd(rtd, "rt565x-codec-sysclk-bclk1"); if (vrtd) { + props = simple_priv_to_props(simple, vrtd->num); + aud_mclk = props->mclk_fs * srate; + err = set_pll_sysclk(vrtd, RT5659_PLL1_S_BCLK1, RT5659_SCLK_S_PLL1, srate, channels, width, aud_mclk); if (err < 0) @@ -290,6 +293,9 @@ int tegra_codecs_runtime_setup(struct snd_soc_pcm_runtime *rtd, vrtd = find_rtd(rtd, "rt5640-codec-sysclk-bclk1"); if (vrtd) { + props = simple_priv_to_props(simple, vrtd->num); + aud_mclk = props->mclk_fs * srate; + err = set_pll_sysclk(vrtd, RT5640_PLL1_S_BCLK1, RT5640_SCLK_S_PLL1, srate, channels, width, aud_mclk); if (err < 0)