Hi Fabio,
On Fri, Jul 19, 2013 at 02:58:28AM -0300, Fabio Estevam wrote:
wm8962_configure_bclk(codec);
break;
case SND_SOC_BIAS_STANDBY:
@@ -2621,8 +2619,6 @@ static int wm8962_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
wm8962->sysclk_rate = freq;
- wm8962_configure_bclk(codec);
Although I know this modification should be okay on i.MX SabreSD, yet I'm not sure if won't break other usage on other platforms.
And the problem here is because wm8962->bclk and wm8962->lrclk are updated in hw_params() but be remained after playback's done. So there might be a least risky way to fix it just by adding this:
+static int wm8962_hw_free(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct snd_soc_codec *codec = dai->codec; + struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec); + + wm8962->lrclk = 0; + wm8962->bclk = 0; + + return 0; +}
Surely If Mark say okay to Fabio's patch, I'll be totally okay with it too. I just want to this wm8962 driver can work perfectly on all the platforms.