Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Ujfalusi <peter.ujfalusi@nokia.com>
To: "ext Lopez Cruz, Misael" <x0052729@ti.com>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>
Subject: Re: [PATCH] ASoC: TWL4030: Disable DACs in analog loopback
Date: Thu, 30 Apr 2009 11:46:48 +0300	[thread overview]
Message-ID: <200904301146.49080.peter.ujfalusi@nokia.com> (raw)
In-Reply-To: <2C7D3DF36ADFFC479B44490D912B616705F63E05BA@dlee07.ent.ti.com>

On Thursday 30 April 2009 10:31:20 ext Lopez Cruz, Misael wrote:
> In analog loopback mode, DACs should not be enabled. For that reason,
> DAC widgets (DAC Right1, DAC Left1, DAC Right2, DAC Left2) will power
> DACs only during playback.
>
> Analog loopback requires to set a master enable bit when any of the
> analog bypass switches are enabled.

I have also noticed this, also in analog loopback mode the bits in the OPTION 
register can be cleared, since we don't need those to have analog loopback.

But I'm afraid, this patch does break the Digital loopback, which needs the 
DACs to be powered, in case when the capture path is set in analog mode the 
ADC(s) also need to be powered. 

Both analog and digital loopback connects to 'Analog XY Playback Mixer', which 
turns on/off the physical DAC on the given route.
I have been thinking of - as a part of a big clean up - to separate these, 
since as you have pointed out, the DACs are not needed for the analog 
loopback.

>
> Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
> ---
>  sound/soc/codecs/twl4030.c |   34 +++++++++++++++++++++-------------
>  1 files changed, 21 insertions(+), 13 deletions(-)
>
> diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
> index efa1a80..d3184a0 100644
> --- a/sound/soc/codecs/twl4030.c
> +++ b/sound/soc/codecs/twl4030.c
> @@ -64,7 +64,7 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
>  	0x00, /* REG_VRXPGA		(0x14)	*/
>  	0x00, /* REG_VSTPGA		(0x15)	*/
>  	0x00, /* REG_VRX2ARXPGA		(0x16)	*/
> -	0x0c, /* REG_AVDAC_CTL		(0x17)	*/
> +	0x00, /* REG_AVDAC_CTL		(0x17)	*/
>  	0x00, /* REG_ARX2VTXPGA		(0x18)	*/
>  	0x00, /* REG_ARXL1_APGA_CTL	(0x19)	*/
>  	0x00, /* REG_ARXR1_APGA_CTL	(0x1A)	*/

Now that we have the DAPM routing for most of the things, these defaults needs 
to be revisited... They are left as they were mostly, but now it is safe to 
turn off most of the thing by default.

> @@ -585,7 +585,7 @@ static int bypass_event(struct snd_soc_dapm_widget *w,
>  	struct soc_mixer_control *m =
>  		(struct soc_mixer_control *)w->kcontrols->private_value;
>  	struct twl4030_priv *twl4030 = w->codec->private_data;
> -	unsigned char reg;
> +	unsigned char reg, misc;
>
>  	reg = twl4030_read_reg_cache(w->codec, m->reg);
>
> @@ -605,6 +605,14 @@ static int bypass_event(struct snd_soc_dapm_widget *w,
>  			twl4030->bypass_state &= ~(1 << (m->shift ? 5 : 4));
>  	}
>
> +	/* Enable master analog loopback mode if any analog switch is enabled*/
> +	misc = twl4030_read_reg_cache(w->codec, TWL4030_REG_MISC_SET_1);
> +	if (twl4030->bypass_state & 0xF)
> +		misc |= TWL4030_FMLOOP_EN;
> +	else
> +		misc &= ~TWL4030_FMLOOP_EN;
> +	twl4030_write(w->codec, TWL4030_REG_MISC_SET_1, misc);
> +

Oh, so there is another register/bit to be configured to enable the analog 
loopback ;) I certainly missed this bit...

>  	if (w->codec->bias_level == SND_SOC_BIAS_STANDBY) {
>  		if (twl4030->bypass_state)
>  			twl4030_codec_mute(w->codec, 0);
> @@ -927,13 +935,13 @@ static const struct snd_soc_dapm_widget
> twl4030_dapm_widgets[] = {
>
>  	/* DACs */
>  	SND_SOC_DAPM_DAC("DAC Right1", "Right Front Playback",
> -			SND_SOC_NOPM, 0, 0),
> +			TWL4030_REG_AVDAC_CTL, 0, 0),
>  	SND_SOC_DAPM_DAC("DAC Left1", "Left Front Playback",
> -			SND_SOC_NOPM, 0, 0),
> +			TWL4030_REG_AVDAC_CTL, 1, 0),
>  	SND_SOC_DAPM_DAC("DAC Right2", "Right Rear Playback",
> -			SND_SOC_NOPM, 0, 0),
> +			TWL4030_REG_AVDAC_CTL, 2, 0),
>  	SND_SOC_DAPM_DAC("DAC Left2", "Left Rear Playback",
> -			SND_SOC_NOPM, 0, 0),
> +			TWL4030_REG_AVDAC_CTL, 3, 0),
>  	SND_SOC_DAPM_DAC("DAC Voice", "Voice Playback",
>  			TWL4030_REG_AVDAC_CTL, 4, 0),
>
> @@ -971,14 +979,14 @@ static const struct snd_soc_dapm_widget
> twl4030_dapm_widgets[] = { &twl4030_dapm_dbypassr_control, bypass_event,
>  			SND_SOC_DAPM_POST_REG),
>
> -	SND_SOC_DAPM_MIXER("Analog R1 Playback Mixer", TWL4030_REG_AVDAC_CTL,
> +	SND_SOC_DAPM_MIXER("Analog R1 Playback Mixer", SND_SOC_NOPM,
> +			0, 0, NULL, 0),
> +	SND_SOC_DAPM_MIXER("Analog L1 Playback Mixer", SND_SOC_NOPM,
> +			0, 0, NULL, 0),
> +	SND_SOC_DAPM_MIXER("Analog R2 Playback Mixer", SND_SOC_NOPM,
> +			0, 0, NULL, 0),
> +	SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer", SND_SOC_NOPM,
>  			0, 0, NULL, 0),
> -	SND_SOC_DAPM_MIXER("Analog L1 Playback Mixer", TWL4030_REG_AVDAC_CTL,
> -			1, 0, NULL, 0),
> -	SND_SOC_DAPM_MIXER("Analog R2 Playback Mixer", TWL4030_REG_AVDAC_CTL,
> -			2, 0, NULL, 0),
> -	SND_SOC_DAPM_MIXER("Analog L2 Playback Mixer", TWL4030_REG_AVDAC_CTL,
> -			3, 0, NULL, 0),
>
>  	/* Output MIXER controls */
>  	/* Earpiece */

-- 
Péter

  reply	other threads:[~2009-04-30  8:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-30  7:31 [PATCH] ASoC: TWL4030: Disable DACs in analog loopback Lopez Cruz, Misael
2009-04-30  8:46 ` Peter Ujfalusi [this message]
2009-04-30  9:53   ` Lopez Cruz, Misael
2009-04-30 10:28     ` Peter Ujfalusi
2009-04-30 10:53       ` Lopez Cruz, Misael
2009-04-30 11:04         ` Peter Ujfalusi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200904301146.49080.peter.ujfalusi@nokia.com \
    --to=peter.ujfalusi@nokia.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=x0052729@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox