All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack
@ 2011-01-27 14:47 Jarkko Nikula
  2011-01-27 14:47 ` [PATCH 2/2] ASoC: omap: rx51: Add earphone support Jarkko Nikula
  2011-01-27 20:49 ` [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Liam Girdwood
  0 siblings, 2 replies; 7+ messages in thread
From: Jarkko Nikula @ 2011-01-27 14:47 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Peter Ujfalusi, Liam Girdwood

Audio jack in Nokia RX-51/N900 is driven by TPA6130 headphone amplifier.
This patch adds support for it and stereo output can be active when
"Jack Function" == "TV-OUT" || "Headphone".

As the TPA6130 can output very high volume levels the output is limited
with snd_soc_limit_volume. Limiting value is found from Maemo kernel sources.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Cc: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
Just repost with Mark's ack added. Previous thread here:
http://mailman.alsa-project.org/pipermail/alsa-devel/2011-January/035312.html
---
 sound/soc/omap/Kconfig |    1 +
 sound/soc/omap/rx51.c  |   43 +++++++++++++++++++++++++++++++++++++++----
 2 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
index a088db6..b592298 100644
--- a/sound/soc/omap/Kconfig
+++ b/sound/soc/omap/Kconfig
@@ -24,6 +24,7 @@ config SND_OMAP_SOC_RX51
 	select OMAP_MCBSP
 	select SND_OMAP_SOC_MCBSP
 	select SND_SOC_TLV320AIC3X
+	select SND_SOC_TPA6130A2
 	help
 	  Say Y if you want to add support for SoC audio on Nokia RX-51
 	  hardware. This is also known as Nokia N900 product.
diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 09fb0df..251afbe 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -31,6 +31,7 @@
 #include <sound/pcm.h>
 #include <sound/soc.h>
 #include <plat/mcbsp.h>
+#include "../codecs/tpa6130a2.h"
 
 #include <asm/mach-types.h>
 
@@ -47,7 +48,8 @@
 
 enum {
 	RX51_JACK_DISABLED,
-	RX51_JACK_TVOUT,		/* tv-out */
+	RX51_JACK_TVOUT,		/* tv-out with stereo output */
+	RX51_JACK_HP,			/* headphone: stereo output, no mic */
 };
 
 static int rx51_spk_func;
@@ -57,6 +59,15 @@ static int rx51_jack_func;
 static void rx51_ext_control(struct snd_soc_codec *codec)
 {
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	int hp = 0, tvout = 0;
+
+	switch (rx51_jack_func) {
+	case RX51_JACK_TVOUT:
+		tvout = 1;
+	case RX51_JACK_HP:
+		hp = 1;
+		break;
+	}
 
 	if (rx51_spk_func)
 		snd_soc_dapm_enable_pin(dapm, "Ext Spk");
@@ -66,9 +77,12 @@ static void rx51_ext_control(struct snd_soc_codec *codec)
 		snd_soc_dapm_enable_pin(dapm, "DMic");
 	else
 		snd_soc_dapm_disable_pin(dapm, "DMic");
+	if (hp)
+		snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
+	else
+		snd_soc_dapm_disable_pin(dapm, "Headphone Jack");
 
-	gpio_set_value(RX51_TVOUT_SEL_GPIO,
-		       rx51_jack_func == RX51_JACK_TVOUT);
+	gpio_set_value(RX51_TVOUT_SEL_GPIO, tvout);
 
 	snd_soc_dapm_sync(dapm);
 }
@@ -153,6 +167,19 @@ static int rx51_spk_event(struct snd_soc_dapm_widget *w,
 	return 0;
 }
 
+static int rx51_hp_event(struct snd_soc_dapm_widget *w,
+			 struct snd_kcontrol *k, int event)
+{
+	struct snd_soc_codec *codec = w->dapm->codec;
+
+	if (SND_SOC_DAPM_EVENT_ON(event))
+		tpa6130a2_stereo_enable(codec, 1);
+	else
+		tpa6130a2_stereo_enable(codec, 0);
+
+	return 0;
+}
+
 static int rx51_get_input(struct snd_kcontrol *kcontrol,
 			  struct snd_ctl_elem_value *ucontrol)
 {
@@ -212,11 +239,14 @@ static struct snd_soc_jack_gpio rx51_av_jack_gpios[] = {
 static const struct snd_soc_dapm_widget aic34_dapm_widgets[] = {
 	SND_SOC_DAPM_SPK("Ext Spk", rx51_spk_event),
 	SND_SOC_DAPM_MIC("DMic", NULL),
+	SND_SOC_DAPM_HP("Headphone Jack", rx51_hp_event),
 };
 
 static const struct snd_soc_dapm_route audio_map[] = {
 	{"Ext Spk", NULL, "HPLOUT"},
 	{"Ext Spk", NULL, "HPROUT"},
+	{"Headphone Jack", NULL, "LLOUT"},
+	{"Headphone Jack", NULL, "RLOUT"},
 
 	{"DMic Rate 64", NULL, "Mic Bias 2V"},
 	{"Mic Bias 2V", NULL, "DMic"},
@@ -224,7 +254,7 @@ static const struct snd_soc_dapm_route audio_map[] = {
 
 static const char *spk_function[] = {"Off", "On"};
 static const char *input_function[] = {"ADC", "Digital Mic"};
-static const char *jack_function[] = {"Off", "TV-OUT"};
+static const char *jack_function[] = {"Off", "TV-OUT", "Headphone"};
 
 static const struct soc_enum rx51_enum[] = {
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(spk_function), spk_function),
@@ -265,6 +295,11 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 	/* Set up RX-51 specific audio path audio_map */
 	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
 
+	err = tpa6130a2_add_controls(codec);
+	if (err < 0)
+		return err;
+	snd_soc_limit_volume(codec, "TPA6130A2 Headphone Playback Volume", 42);
+
 	snd_soc_dapm_sync(dapm);
 
 	/* AV jack detection */
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] ASoC: omap: rx51: Add earphone support
  2011-01-27 14:47 [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Jarkko Nikula
@ 2011-01-27 14:47 ` Jarkko Nikula
  2011-01-27 15:27   ` Mark Brown
  2011-01-27 20:49 ` [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Liam Girdwood
  1 sibling, 1 reply; 7+ messages in thread
From: Jarkko Nikula @ 2011-01-27 14:47 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Liam Girdwood

Earphone in Nokia RX-51/N900 is connected to left HP output of B part of the
TLV320AIC34 dual codec. In RX-51 the codec A is used as a traditional codec
and the codec B as an auxiliary device.

Audio from codec A goes via the codec B to earphone:
MONO_LOUT of A -> LINE2R of B (B interconnects) -> HPLOUT of B -> Earphone.

Take earphone into use by utilizing the recent ASoC auxiliary and
cross-device support.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
---
This is not the most optimal way to handle but anyway the N900 is a nice
test and development environment for ASoC cross-device etc. stuff so take
the codec B part into use.
---
 sound/soc/omap/rx51.c |   84 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 251afbe..5f8e69b 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -55,6 +55,7 @@ enum {
 static int rx51_spk_func;
 static int rx51_dmic_func;
 static int rx51_jack_func;
+static int rx51_ear_func;
 
 static void rx51_ext_control(struct snd_soc_codec *codec)
 {
@@ -224,6 +225,34 @@ static int rx51_set_jack(struct snd_kcontrol *kcontrol,
 	return 1;
 }
 
+static int rx51_get_ear(struct snd_kcontrol *kcontrol,
+			struct snd_ctl_elem_value *ucontrol)
+{
+	ucontrol->value.integer.value[0] = rx51_ear_func;
+
+	return 0;
+}
+
+static int rx51_set_ear(struct snd_kcontrol *kcontrol,
+			struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
+	struct snd_soc_dapm_context *dapm = &codec->dapm;
+
+	if (rx51_ear_func == ucontrol->value.integer.value[0])
+		return 0;
+
+	rx51_ear_func = ucontrol->value.integer.value[0];
+	if (rx51_ear_func)
+		snd_soc_dapm_enable_pin(dapm, "Earphone");
+	else
+		snd_soc_dapm_disable_pin(dapm, "Earphone");
+
+	snd_soc_dapm_sync(dapm);
+
+	return 1;
+}
+
 static struct snd_soc_jack rx51_av_jack;
 
 static struct snd_soc_jack_gpio rx51_av_jack_gpios[] = {
@@ -242,6 +271,10 @@ static const struct snd_soc_dapm_widget aic34_dapm_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone Jack", rx51_hp_event),
 };
 
+static const struct snd_soc_dapm_widget aic34_dapm_widgetsb[] = {
+	SND_SOC_DAPM_SPK("Earphone", NULL),
+};
+
 static const struct snd_soc_dapm_route audio_map[] = {
 	{"Ext Spk", NULL, "HPLOUT"},
 	{"Ext Spk", NULL, "HPROUT"},
@@ -252,14 +285,21 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"Mic Bias 2V", NULL, "DMic"},
 };
 
+static const struct snd_soc_dapm_route audio_mapb[] = {
+	{"b LINE2R", NULL, "MONO_LOUT"},
+	{"Earphone", NULL, "b HPLOUT"},
+};
+
 static const char *spk_function[] = {"Off", "On"};
 static const char *input_function[] = {"ADC", "Digital Mic"};
 static const char *jack_function[] = {"Off", "TV-OUT", "Headphone"};
+static const char *ear_function[] = {"Off", "On"};
 
 static const struct soc_enum rx51_enum[] = {
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(spk_function), spk_function),
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(input_function), input_function),
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(jack_function), jack_function),
+	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ear_function), ear_function),
 };
 
 static const struct snd_kcontrol_new aic34_rx51_controls[] = {
@@ -271,6 +311,11 @@ static const struct snd_kcontrol_new aic34_rx51_controls[] = {
 		     rx51_get_jack, rx51_set_jack),
 };
 
+static const struct snd_kcontrol_new aic34_rx51_controlsb[] = {
+	 SOC_ENUM_EXT("Earphone Function",  rx51_enum[3],
+		      rx51_get_ear, rx51_set_ear),
+};
+
 static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
@@ -314,6 +359,26 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 	return err;
 }
 
+static int rx51_aic34b_init(struct snd_soc_dapm_context *dapm)
+{
+	int err;
+
+	err = snd_soc_add_controls(dapm->codec, aic34_rx51_controlsb,
+				   ARRAY_SIZE(aic34_rx51_controlsb));
+	if (err < 0)
+		return err;
+
+	err = snd_soc_dapm_new_controls(dapm, aic34_dapm_widgetsb,
+					ARRAY_SIZE(aic34_dapm_widgetsb));
+	if (err < 0)
+		return 0;
+
+	snd_soc_dapm_disable_pin(dapm, "Earphone");
+
+	return snd_soc_dapm_add_routes(dapm, audio_mapb,
+				       ARRAY_SIZE(audio_mapb));
+}
+
 /* Digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link rx51_dai[] = {
 	{
@@ -328,11 +393,30 @@ static struct snd_soc_dai_link rx51_dai[] = {
 	},
 };
 
+struct snd_soc_aux_dev rx51_aux_dev[] = {
+	{
+		.name = "TLV320AIC34b",
+		.codec_name = "tlv320aic3x-codec.2-0019",
+		.init = rx51_aic34b_init,
+	},
+};
+
+static struct snd_soc_codec_conf rx51_codec_conf[] = {
+	{
+		.dev_name = "tlv320aic3x-codec.2-0019",
+		.name_prefix = "b",
+	},
+};
+
 /* Audio card */
 static struct snd_soc_card rx51_sound_card = {
 	.name = "RX-51",
 	.dai_link = rx51_dai,
 	.num_links = ARRAY_SIZE(rx51_dai),
+	.aux_dev = rx51_aux_dev,
+	.num_aux_devs = ARRAY_SIZE(rx51_aux_dev),
+	.codec_conf = rx51_codec_conf,
+	.num_configs = ARRAY_SIZE(rx51_codec_conf),
 };
 
 static struct platform_device *rx51_snd_device;
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] ASoC: omap: rx51: Add earphone support
  2011-01-27 14:47 ` [PATCH 2/2] ASoC: omap: rx51: Add earphone support Jarkko Nikula
@ 2011-01-27 15:27   ` Mark Brown
  2011-01-31 12:43     ` [PATCHv2] " Jarkko Nikula
  0 siblings, 1 reply; 7+ messages in thread
From: Mark Brown @ 2011-01-27 15:27 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Liam Girdwood

On Thu, Jan 27, 2011 at 04:47:12PM +0200, Jarkko Nikula wrote:

> +	rx51_ear_func = ucontrol->value.integer.value[0];
> +	if (rx51_ear_func)
> +		snd_soc_dapm_enable_pin(dapm, "Earphone");
> +	else
> +		snd_soc_dapm_disable_pin(dapm, "Earphone");
> +

This looks like a PIN_SWITCH() DAPM control?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack
  2011-01-27 14:47 [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Jarkko Nikula
  2011-01-27 14:47 ` [PATCH 2/2] ASoC: omap: rx51: Add earphone support Jarkko Nikula
@ 2011-01-27 20:49 ` Liam Girdwood
  1 sibling, 0 replies; 7+ messages in thread
From: Liam Girdwood @ 2011-01-27 20:49 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Mark Brown, Peter Ujfalusi

On Thu, 2011-01-27 at 16:47 +0200, Jarkko Nikula wrote:
> Audio jack in Nokia RX-51/N900 is driven by TPA6130 headphone amplifier.
> This patch adds support for it and stereo output can be active when
> "Jack Function" == "TV-OUT" || "Headphone".
> 
> As the TPA6130 can output very high volume levels the output is limited
> with snd_soc_limit_volume. Limiting value is found from Maemo kernel sources.
> 
> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
> Cc: Peter Ujfalusi <peter.ujfalusi@nokia.com>
> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> Just repost with Mark's ack added. Previous thread here:
> http://mailman.alsa-project.org/pipermail/alsa-devel/2011-January/035312.html
> ---
>  sound/soc/omap/Kconfig |    1 +
>  sound/soc/omap/rx51.c  |   43 +++++++++++++++++++++++++++++++++++++++----
>  2 files changed, 40 insertions(+), 4 deletions(-)
> 

Applied.

Thanks

Liam
-- 
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCHv2] ASoC: omap: rx51: Add earphone support
  2011-01-27 15:27   ` Mark Brown
@ 2011-01-31 12:43     ` Jarkko Nikula
  2011-01-31 13:17       ` Mark Brown
  2011-02-01 13:59       ` Liam Girdwood
  0 siblings, 2 replies; 7+ messages in thread
From: Jarkko Nikula @ 2011-01-31 12:43 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Liam Girdwood

Earphone in Nokia RX-51/N900 is connected to left HP output of B part of the
TLV320AIC34 dual codec. In RX-51 the codec A is used as a traditional codec
and the codec B as an auxiliary device.

Audio from codec A goes via the codec B to earphone:
MONO_LOUT of A -> LINE2R of B (B interconnects) -> HPLOUT of B -> Earphone.

Take earphone into use by utilizing the recent ASoC auxiliary and
cross-device support.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
---
v2: Uses SOC_DAPM_PIN_SWITCH for implementing the "Earphone" widget and
kcontrol.
---
 sound/soc/omap/rx51.c |   50 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 251afbe..2d7d411 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -242,6 +242,10 @@ static const struct snd_soc_dapm_widget aic34_dapm_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone Jack", rx51_hp_event),
 };
 
+static const struct snd_soc_dapm_widget aic34_dapm_widgetsb[] = {
+	SND_SOC_DAPM_SPK("Earphone", NULL),
+};
+
 static const struct snd_soc_dapm_route audio_map[] = {
 	{"Ext Spk", NULL, "HPLOUT"},
 	{"Ext Spk", NULL, "HPROUT"},
@@ -252,6 +256,11 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"Mic Bias 2V", NULL, "DMic"},
 };
 
+static const struct snd_soc_dapm_route audio_mapb[] = {
+	{"b LINE2R", NULL, "MONO_LOUT"},
+	{"Earphone", NULL, "b HPLOUT"},
+};
+
 static const char *spk_function[] = {"Off", "On"};
 static const char *input_function[] = {"ADC", "Digital Mic"};
 static const char *jack_function[] = {"Off", "TV-OUT", "Headphone"};
@@ -271,6 +280,10 @@ static const struct snd_kcontrol_new aic34_rx51_controls[] = {
 		     rx51_get_jack, rx51_set_jack),
 };
 
+static const struct snd_kcontrol_new aic34_rx51_controlsb[] = {
+	SOC_DAPM_PIN_SWITCH("Earphone"),
+};
+
 static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
@@ -314,6 +327,24 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 	return err;
 }
 
+static int rx51_aic34b_init(struct snd_soc_dapm_context *dapm)
+{
+	int err;
+
+	err = snd_soc_add_controls(dapm->codec, aic34_rx51_controlsb,
+				   ARRAY_SIZE(aic34_rx51_controlsb));
+	if (err < 0)
+		return err;
+
+	err = snd_soc_dapm_new_controls(dapm, aic34_dapm_widgetsb,
+					ARRAY_SIZE(aic34_dapm_widgetsb));
+	if (err < 0)
+		return 0;
+
+	return snd_soc_dapm_add_routes(dapm, audio_mapb,
+				       ARRAY_SIZE(audio_mapb));
+}
+
 /* Digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link rx51_dai[] = {
 	{
@@ -328,11 +359,30 @@ static struct snd_soc_dai_link rx51_dai[] = {
 	},
 };
 
+struct snd_soc_aux_dev rx51_aux_dev[] = {
+	{
+		.name = "TLV320AIC34b",
+		.codec_name = "tlv320aic3x-codec.2-0019",
+		.init = rx51_aic34b_init,
+	},
+};
+
+static struct snd_soc_codec_conf rx51_codec_conf[] = {
+	{
+		.dev_name = "tlv320aic3x-codec.2-0019",
+		.name_prefix = "b",
+	},
+};
+
 /* Audio card */
 static struct snd_soc_card rx51_sound_card = {
 	.name = "RX-51",
 	.dai_link = rx51_dai,
 	.num_links = ARRAY_SIZE(rx51_dai),
+	.aux_dev = rx51_aux_dev,
+	.num_aux_devs = ARRAY_SIZE(rx51_aux_dev),
+	.codec_conf = rx51_codec_conf,
+	.num_configs = ARRAY_SIZE(rx51_codec_conf),
 };
 
 static struct platform_device *rx51_snd_device;
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] ASoC: omap: rx51: Add earphone support
  2011-01-31 12:43     ` [PATCHv2] " Jarkko Nikula
@ 2011-01-31 13:17       ` Mark Brown
  2011-02-01 13:59       ` Liam Girdwood
  1 sibling, 0 replies; 7+ messages in thread
From: Mark Brown @ 2011-01-31 13:17 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Liam Girdwood

On Mon, Jan 31, 2011 at 02:43:48PM +0200, Jarkko Nikula wrote:
> Earphone in Nokia RX-51/N900 is connected to left HP output of B part of the
> TLV320AIC34 dual codec. In RX-51 the codec A is used as a traditional codec
> and the codec B as an auxiliary device.

Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] ASoC: omap: rx51: Add earphone support
  2011-01-31 12:43     ` [PATCHv2] " Jarkko Nikula
  2011-01-31 13:17       ` Mark Brown
@ 2011-02-01 13:59       ` Liam Girdwood
  1 sibling, 0 replies; 7+ messages in thread
From: Liam Girdwood @ 2011-02-01 13:59 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Mark Brown

On Mon, 2011-01-31 at 14:43 +0200, Jarkko Nikula wrote:
> Earphone in Nokia RX-51/N900 is connected to left HP output of B part of the
> TLV320AIC34 dual codec. In RX-51 the codec A is used as a traditional codec
> and the codec B as an auxiliary device.
> 
> Audio from codec A goes via the codec B to earphone:
> MONO_LOUT of A -> LINE2R of B (B interconnects) -> HPLOUT of B -> Earphone.
> 
> Take earphone into use by utilizing the recent ASoC auxiliary and
> cross-device support.
> 
> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
> ---
> v2: Uses SOC_DAPM_PIN_SWITCH for implementing the "Earphone" widget and
> kcontrol.

Applied.

Thanks

Liam
-- 
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-02-01 14:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-27 14:47 [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Jarkko Nikula
2011-01-27 14:47 ` [PATCH 2/2] ASoC: omap: rx51: Add earphone support Jarkko Nikula
2011-01-27 15:27   ` Mark Brown
2011-01-31 12:43     ` [PATCHv2] " Jarkko Nikula
2011-01-31 13:17       ` Mark Brown
2011-02-01 13:59       ` Liam Girdwood
2011-01-27 20:49 ` [PATCH 1/2] ASoC: omap: rx51: Add stereo output support to audio jack Liam Girdwood

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.