[alsa-devel] [PATCH] ASoC: wm8962: No need to call wm8962_configure_bclk() multiple times
Nicolin Chen
b42378 at freescale.com
Fri Jul 19 08:00:31 CEST 2013
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.
More information about the Alsa-devel
mailing list