diff options
Diffstat (limited to 'sound/soc/fsl/imx-spdif.c')
-rw-r--r-- | sound/soc/fsl/imx-spdif.c | 14 |
1 files changed, 8 insertions, 6 deletions
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; } |