From 8e013fb268248049cc221513f6562b90882b4fc8 Mon Sep 17 00:00:00 2001 From: Viorel Suman Date: Thu, 23 Aug 2018 13:18:25 +0300 Subject: MLK-19154-5: ASoC: fsl_spdif: refine PLL switch handling Allow PLL switch for playback stream only and remove PLL switch guard with regard to capture stream as the clock for capture stream is provided externally. Signed-off-by: Viorel Suman (cherry picked from commit c8213da5fbcd370acb4d764bef5df5981a517c11) --- sound/soc/fsl/imx-spdif.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'sound/soc/fsl/imx-spdif.c') diff --git a/sound/soc/fsl/imx-spdif.c b/sound/soc/fsl/imx-spdif.c index f2d0c6f6193f..1a64302aa595 100644 --- a/sound/soc/fsl/imx-spdif.c +++ b/sound/soc/fsl/imx-spdif.c @@ -20,15 +20,17 @@ static int imx_spdif_hw_params(struct snd_pcm_substream *substream, { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct device *dev = rtd->card->dev; - int ret; + int ret = 0; u64 rate = params_rate(params); unsigned int freq; - freq = do_div(rate, 8000) ? CLK_11K_FREQ : CLK_8K_FREQ; - ret = snd_soc_dai_set_sysclk(rtd->cpu_dai, STC_TXCLK_SPDIF_ROOT, - freq, SND_SOC_CLOCK_OUT); - if (ret) - dev_err(dev, "failed to set cpu sysclk: %d\n", ret); + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { + freq = do_div(rate, 8000) ? CLK_11K_FREQ : CLK_8K_FREQ; + ret = snd_soc_dai_set_sysclk(rtd->cpu_dai, STC_TXCLK_SPDIF_ROOT, + freq, SND_SOC_CLOCK_OUT); + if (ret) + dev_err(dev, "failed to set cpu sysclk: %d\n", ret); + } return ret; } -- cgit v1.2.3