[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