[alsa-devel] [PATCH] ALSA: ASoc: Add regulator support to CS4270 codec driver

Daniel Mack daniel at caiaq.de
Wed Nov 25 16:20:52 CET 2009


On Wed, Nov 25, 2009 at 03:01:39PM +0000, Mark Brown wrote:
> On Wed, Nov 25, 2009 at 03:36:27PM +0100, Daniel Mack wrote:
> 
> >  static int cs4270_dai_mute(struct snd_soc_dai *dai, int mute)
> >  {
> >  	struct snd_soc_codec *codec = dai->codec;
> >  	struct cs4270_private *cs4270 = codec->private_data;
> > -	int reg6;
> > +	int reg6, err;
> >  
> >  	reg6 = snd_soc_read(codec, CS4270_MUTE);
> >  
> >  	if (mute)
> >  		reg6 |= CS4270_MUTE_DAC_A | CS4270_MUTE_DAC_B;
> >  	else {
> > +		if (cs4270->va_reg)
> > +			regulator_enable(cs4270->va_reg);
> > +
> 
> This looks wrong - why is the power being controlled in the mute
> function?  If nothing else this is going to break recording since the
> CODEC will only be unmuted during playback which means power will be cut
> during record.

Ok - which place would you suggest for it? Is there an ASoC callback I
can hook on to tell me when the whole codec isn't used anymore? I can
only see startup/shutdown, but I would need to my own snd_pc_substream
handling login in there. Other drivers do that in the probe/remove
functions, but that won't suffice for my board as we want VA disabled
whenever possible.

Daniel



More information about the Alsa-devel mailing list