priv->second_stream = NULL;
if (!priv->first_stream) {
+ /*
+ * Continuously setting FLL would cause playback distortion.
+ * We can fix it just by mute codec after playback.
+ */
+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+ snd_soc_dai_digital_mute(codec_dai, 1, substream->stream);
+
/*
* WM8962 doesn't allow us to continuously setting FLL,
* So we set MCLK as sysclk once, which'd remove the limitation.
return ret;
}
- /*
- * Continuously setting FLL would cause playback distortion.
- * We can fix it just by mute codec after playback.
- */
- ret = snd_soc_dai_digital_mute(codec_dai, 1, substream->stream);
- if (ret < 0) {
- dev_err(dev, "failed to set MUTE: %d\n", ret);
- return ret;
- }
-
/* Disable FLL and let codec do pm_runtime_put() */
ret = snd_soc_dai_set_pll(codec_dai, WM8962_FLL,
WM8962_FLL_MCLK, 0, 0);