All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	"Lopez Cruz, Misael" <x0052729@ti.com>
Subject: [PATCH 15/18] ASoC: TWL4030: Add voice digital loopback: sidetone
Date: Tue,  5 May 2009 11:02:28 +0100	[thread overview]
Message-ID: <1241517751-2634-15-git-send-email-broonie@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <20090505100123.GB2050@rakim.wolfsonmicro.main>

From: Lopez Cruz, Misael <x0052729@ti.com>

This patch add voice digital loopback (sidetone) to the twl4030
driver. It mixes voice uplink attenuated (by sidetone gain) with
voice downlink when the codec is working in option2 (voice/audio
mode).

Signed-off-by: Misael Lopez Cruz <x0052729@ti.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/codecs/twl4030.c |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
index efb371f..23bae74 100644
--- a/sound/soc/codecs/twl4030.c
+++ b/sound/soc/codecs/twl4030.c
@@ -491,6 +491,18 @@ static const struct snd_kcontrol_new twl4030_dapm_dbypassr_control =
 			TWL4030_REG_ATX2ARXPGA, 0, 7, 0,
 			twl4030_dapm_dbypass_tlv);
 
+/*
+ * Voice Sidetone GAIN volume control:
+ * from -51 to -10 dB in 1 dB steps (mute instead of -51 dB)
+ */
+static DECLARE_TLV_DB_SCALE(twl4030_dapm_dbypassv_tlv, -5100, 100, 1);
+
+/* Digital bypass voice: sidetone (VUL -> VDL)*/
+static const struct snd_kcontrol_new twl4030_dapm_dbypassv_control =
+	SOC_DAPM_SINGLE_TLV("Volume",
+			TWL4030_REG_VSTPGA, 0, 0x29, 0,
+			twl4030_dapm_dbypassv_tlv);
+
 static int micpath_event(struct snd_soc_dapm_widget *w,
 	struct snd_kcontrol *kcontrol, int event)
 {
@@ -607,12 +619,18 @@ static int bypass_event(struct snd_soc_dapm_widget *w,
 			twl4030->bypass_state |= (1 << 4);
 		else
 			twl4030->bypass_state &= ~(1 << 4);
+	} else if (m->reg == TWL4030_REG_VSTPGA) {
+		/* Voice digital bypass */
+		if (reg)
+			twl4030->bypass_state |= (1 << 5);
+		else
+			twl4030->bypass_state &= ~(1 << 5);
 	} else {
 		/* Digital bypass */
 		if (reg & (0x7 << m->shift))
-			twl4030->bypass_state |= (1 << (m->shift ? 6 : 5));
+			twl4030->bypass_state |= (1 << (m->shift ? 7 : 6));
 		else
-			twl4030->bypass_state &= ~(1 << (m->shift ? 6 : 5));
+			twl4030->bypass_state &= ~(1 << (m->shift ? 7 : 6));
 	}
 
 	/* Enable master analog loopback mode if any analog switch is enabled*/
@@ -991,6 +1009,9 @@ static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
 	SND_SOC_DAPM_SWITCH_E("Right Digital Loopback", SND_SOC_NOPM, 0, 0,
 			&twl4030_dapm_dbypassr_control, bypass_event,
 			SND_SOC_DAPM_POST_REG),
+	SND_SOC_DAPM_SWITCH_E("Voice Digital Loopback", SND_SOC_NOPM, 0, 0,
+			&twl4030_dapm_dbypassv_control, bypass_event,
+			SND_SOC_DAPM_POST_REG),
 
 	SND_SOC_DAPM_MIXER("Analog R1 Playback Mixer", TWL4030_REG_AVDAC_CTL,
 			0, 0, NULL, 0),
@@ -1203,9 +1224,11 @@ static const struct snd_soc_dapm_route intercon[] = {
 	/* Digital bypass routes */
 	{"Right Digital Loopback", "Volume", "TX1 Capture Route"},
 	{"Left Digital Loopback", "Volume", "TX1 Capture Route"},
+	{"Voice Digital Loopback", "Volume", "TX2 Capture Route"},
 
 	{"Analog R2 Playback Mixer", NULL, "Right Digital Loopback"},
 	{"Analog L2 Playback Mixer", NULL, "Left Digital Loopback"},
+	{"Analog Voice Playback Mixer", NULL, "Voice Digital Loopback"},
 
 };
 
-- 
1.6.2.4

  parent reply	other threads:[~2009-05-05 10:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-05 10:01 ASoC updates for 2.6.31 Mark Brown
2009-05-05 10:02 ` [PATCH 01/18] ASoC: Fix error message formatting in s3c64xx-i2s driver Mark Brown
2009-05-05 10:02 ` [PATCH 02/18] ASoC: Check for supported CPUs when building s3c-i2s-v2 Mark Brown
2009-05-05 10:02 ` [PATCH 03/18] ASoC: Make S3C64xx clock export function to return struct clk Mark Brown
2009-05-05 10:02 ` [PATCH 04/18] ASoC: Fix data format configuration for S3C64xx IISv2 and add 24 bit Mark Brown
2009-05-05 10:02 ` [PATCH 05/18] ASoC: Fix boot warnings from S3C IISv2 Mark Brown
2009-05-05 10:02 ` [PATCH 06/18] ASoC: Allow use of resource from the platform device for " Mark Brown
2009-05-05 10:02 ` [PATCH 07/18] ASoC: Display the clock rate used as the basis for rate calculation Mark Brown
2009-05-05 10:02 ` [PATCH 08/18] ASoC: Display S3C IISv2 mode and MS errors by default Mark Brown
2009-05-05 10:02 ` [PATCH 09/18] ASoC: Staticise txctrl and rxctrl for S3C IISv2 Mark Brown
2009-05-05 10:02 ` [PATCH 10/18] ASoC: Use platform device resource for S3C64xx IISv2 Mark Brown
2009-05-05 10:02 ` [PATCH 11/18] ASoC: Use a shared define for AC97 CODEC data formats Mark Brown
2009-05-05 10:02 ` [PATCH 12/18] ASoC: Remove unused DAI format defines Mark Brown
2009-05-05 10:02 ` [PATCH 13/18] ASoC: Fix errors in WM8990 Mark Brown
2009-05-05 10:02 ` [PATCH 14/18] ASoC: TWL4030: Add VDL analog bypass Mark Brown
2009-05-05 10:02 ` Mark Brown [this message]
2009-05-05 10:02 ` [PATCH 16/18] ASoC: IMote2 ASoC Support Mark Brown
2009-05-05 10:02 ` [PATCH 17/18] ASoC: TWL4030: Add VIBRA output Mark Brown
2009-05-05 10:02 ` [PATCH 18/18] ASoC: Remove redundant codec pointer from DAIs Mark Brown
2009-05-05 10:45 ` ASoC updates for 2.6.31 Takashi Iwai

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=1241517751-2634-15-git-send-email-broonie@opensource.wolfsonmicro.com \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.