[alsa-devel] [patch] tlv320aic3x: disable ADC/DAC while changing clock

Mark Brown broonie at sirena.org.uk
Mon Mar 30 14:51:47 CEST 2009

On Mon, Mar 30, 2009 at 02:48:09PM +0200, Daniel Gl?ckner wrote:
> On 03/26/2009 02:45 PM, Mark Brown wrote:

> > Could you go into more detail on why you believe that this is the case?
> > The DACs and ADCs won't be operational when the bias is held at standby
> > which means that at most standby needs to wait for them to go idle.

> This is based on the fact that soc_pcm_prepare calls
> snd_soc_dapm_stream_event(..., SND_SOC_DAPM_STREAM_START) before
> snd_soc_dapm_set_bias_level(..., SND_SOC_BIAS_ON).

So enable the PLL on BIAS_PREPARE?  That's probably more correct anyway.

> In addition there is a block of code in tlv320aic3x.c that explicitly disables
> the ADC/DAC in SND_SOC_BIAS_OFF. It may be superfluous, though.

Yes, all that code is redundant - all the widgets will be powered down
before the bias is removed.

> >> +static u8 aic3x_power_codec(struct snd_soc_codec *codec, u8 new)
> >> +{

> > This really needs some comments explaining what it's doing; it's not
> > really clear what effect it's trying to achieve or how it interacts with
> > DAPM.

> This function takes a bitmask of the desired power state of the ADC/DAC blocks
> and configures the device accordingly. It returns a bitmask of the previous
> power state, suitable for input.

"Suitable for input"?  Like I say, there need to be way more comments in
the code.

More information about the Alsa-devel mailing list