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 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel