All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio
@ 2011-02-14 15:20 Jarkko Nikula
  2011-02-14 15:20 ` [PATCH 2/3] ASoC: omap: rx51: Add headset support Jarkko Nikula
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jarkko Nikula @ 2011-02-14 15:20 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Liam Girdwood

Just slight cleanup to be sync with upcoming change.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
---
 sound/soc/omap/rx51.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 2d7d411..9411969 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -394,10 +394,10 @@ static int __init rx51_soc_init(void)
 	if (!machine_is_nokia_rx51())
 		return -ENODEV;
 
-	err = gpio_request(RX51_TVOUT_SEL_GPIO, "tvout_sel");
+	err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
+			       GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");
 	if (err)
 		goto err_gpio_tvout_sel;
-	gpio_direction_output(RX51_TVOUT_SEL_GPIO, 0);
 
 	rx51_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!rx51_snd_device) {
-- 
1.7.0.4

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

* [PATCH 2/3] ASoC: omap: rx51: Add headset support
  2011-02-14 15:20 [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Jarkko Nikula
@ 2011-02-14 15:20 ` Jarkko Nikula
  2011-02-14 15:20 ` [PATCH 3/3] ASoC: omap: rx51: Report headset insertion instead of video out cable Jarkko Nikula
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jarkko Nikula @ 2011-02-14 15:20 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Liam Girdwood

This patch adds support for headset microphone in Nokia RX-51/N900. The mic
signal from audio jack is routed to codec A LINE1L via two switches and the
mic bias is coming from codec B part.

First switch is the tv-out switch that is already supported and the second
switch selects between voltage detection circuit and codecs. As there is
no use for voltage detection at the moment the second switch is connected
statically to codecs in rx51_soc_init.

Headset can be active when control "Jack Function" is set to "Headset".

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
---
 sound/soc/omap/rx51.c |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 9411969..9860018 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -40,6 +40,7 @@
 
 #define RX51_TVOUT_SEL_GPIO		40
 #define RX51_JACK_DETECT_GPIO		177
+#define RX51_ECI_SW_GPIO		182
 /*
  * REVISIT: TWL4030 GPIO base in RX-51. Now statically defined to 192. This
  * gpio is reserved in arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -50,6 +51,7 @@ enum {
 	RX51_JACK_DISABLED,
 	RX51_JACK_TVOUT,		/* tv-out with stereo output */
 	RX51_JACK_HP,			/* headphone: stereo output, no mic */
+	RX51_JACK_HS,			/* headset: stereo output with mic */
 };
 
 static int rx51_spk_func;
@@ -59,11 +61,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;
+	int hp = 0, hs = 0, tvout = 0;
 
 	switch (rx51_jack_func) {
 	case RX51_JACK_TVOUT:
 		tvout = 1;
+		hp = 1;
+		break;
+	case RX51_JACK_HS:
+		hs = 1;
 	case RX51_JACK_HP:
 		hp = 1;
 		break;
@@ -81,6 +87,10 @@ static void rx51_ext_control(struct snd_soc_codec *codec)
 		snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
 	else
 		snd_soc_dapm_disable_pin(dapm, "Headphone Jack");
+	if (hs)
+		snd_soc_dapm_enable_pin(dapm, "HS Mic");
+	else
+		snd_soc_dapm_disable_pin(dapm, "HS Mic");
 
 	gpio_set_value(RX51_TVOUT_SEL_GPIO, tvout);
 
@@ -240,6 +250,7 @@ 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),
+	SND_SOC_DAPM_MIC("HS Mic", NULL),
 };
 
 static const struct snd_soc_dapm_widget aic34_dapm_widgetsb[] = {
@@ -259,11 +270,14 @@ static const struct snd_soc_dapm_route audio_map[] = {
 static const struct snd_soc_dapm_route audio_mapb[] = {
 	{"b LINE2R", NULL, "MONO_LOUT"},
 	{"Earphone", NULL, "b HPLOUT"},
+
+	{"LINE1L", NULL, "b Mic Bias 2.5V"},
+	{"b Mic Bias 2.5V", NULL, "HS Mic"}
 };
 
 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 *jack_function[] = {"Off", "TV-OUT", "Headphone", "Headset"};
 
 static const struct soc_enum rx51_enum[] = {
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(spk_function), spk_function),
@@ -398,6 +412,10 @@ static int __init rx51_soc_init(void)
 			       GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");
 	if (err)
 		goto err_gpio_tvout_sel;
+	err = gpio_request_one(RX51_ECI_SW_GPIO,
+			       GPIOF_DIR_OUT | GPIOF_INIT_HIGH, "eci_sw");
+	if (err)
+		goto err_gpio_eci_sw;
 
 	rx51_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!rx51_snd_device) {
@@ -415,6 +433,8 @@ static int __init rx51_soc_init(void)
 err2:
 	platform_device_put(rx51_snd_device);
 err1:
+	gpio_free(RX51_ECI_SW_GPIO);
+err_gpio_eci_sw:
 	gpio_free(RX51_TVOUT_SEL_GPIO);
 err_gpio_tvout_sel:
 
@@ -427,6 +447,7 @@ static void __exit rx51_soc_exit(void)
 				rx51_av_jack_gpios);
 
 	platform_device_unregister(rx51_snd_device);
+	gpio_free(RX51_ECI_SW_GPIO);
 	gpio_free(RX51_TVOUT_SEL_GPIO);
 }
 
-- 
1.7.0.4

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

* [PATCH 3/3] ASoC: omap: rx51: Report headset insertion instead of video out cable
  2011-02-14 15:20 [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Jarkko Nikula
  2011-02-14 15:20 ` [PATCH 2/3] ASoC: omap: rx51: Add headset support Jarkko Nikula
@ 2011-02-14 15:20 ` Jarkko Nikula
  2011-02-14 15:58 ` [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Mark Brown
  2011-02-15 21:54 ` Liam Girdwood
  3 siblings, 0 replies; 5+ messages in thread
From: Jarkko Nikula @ 2011-02-14 15:20 UTC (permalink / raw)
  To: alsa-devel; +Cc: Mark Brown, Liam Girdwood

It is more usefull to report headset instead of video out cable in response
to jack insertion as this is more usual use-case and because now the headset
feature is supported. Automatic accessory detection is not possible at the
moment so most sensible static accessory type have to be used.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
---
 sound/soc/omap/rx51.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 9860018..e28f089 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -240,7 +240,7 @@ static struct snd_soc_jack_gpio rx51_av_jack_gpios[] = {
 	{
 		.gpio = RX51_JACK_DETECT_GPIO,
 		.name = "avdet-gpio",
-		.report = SND_JACK_VIDEOOUT,
+		.report = SND_JACK_HEADSET,
 		.invert = 1,
 		.debounce_time = 200,
 	},
@@ -331,7 +331,8 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 
 	/* AV jack detection */
 	err = snd_soc_jack_new(codec, "AV Jack",
-			       SND_JACK_VIDEOOUT, &rx51_av_jack);
+			       SND_JACK_HEADSET | SND_JACK_VIDEOOUT,
+			       &rx51_av_jack);
 	if (err)
 		return err;
 	err = snd_soc_jack_add_gpios(&rx51_av_jack,
-- 
1.7.0.4

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

* Re: [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio
  2011-02-14 15:20 [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Jarkko Nikula
  2011-02-14 15:20 ` [PATCH 2/3] ASoC: omap: rx51: Add headset support Jarkko Nikula
  2011-02-14 15:20 ` [PATCH 3/3] ASoC: omap: rx51: Report headset insertion instead of video out cable Jarkko Nikula
@ 2011-02-14 15:58 ` Mark Brown
  2011-02-15 21:54 ` Liam Girdwood
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2011-02-14 15:58 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Liam Girdwood

On Mon, Feb 14, 2011 at 05:20:20PM +0200, Jarkko Nikula wrote:
> Just slight cleanup to be sync with upcoming change.
> 
> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>

All

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

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

* Re: [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio
  2011-02-14 15:20 [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Jarkko Nikula
                   ` (2 preceding siblings ...)
  2011-02-14 15:58 ` [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Mark Brown
@ 2011-02-15 21:54 ` Liam Girdwood
  3 siblings, 0 replies; 5+ messages in thread
From: Liam Girdwood @ 2011-02-15 21:54 UTC (permalink / raw)
  To: Jarkko Nikula; +Cc: alsa-devel, Mark Brown

On Mon, 2011-02-14 at 17:20 +0200, Jarkko Nikula wrote:
> Just slight cleanup to be sync with upcoming change.
> 
> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
> ---
>  sound/soc/omap/rx51.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
> index 2d7d411..9411969 100644
> --- a/sound/soc/omap/rx51.c
> +++ b/sound/soc/omap/rx51.c
> @@ -394,10 +394,10 @@ static int __init rx51_soc_init(void)
>  	if (!machine_is_nokia_rx51())
>  		return -ENODEV;
>  
> -	err = gpio_request(RX51_TVOUT_SEL_GPIO, "tvout_sel");
> +	err = gpio_request_one(RX51_TVOUT_SEL_GPIO,
> +			       GPIOF_DIR_OUT | GPIOF_INIT_LOW, "tvout_sel");
>  	if (err)
>  		goto err_gpio_tvout_sel;
> -	gpio_direction_output(RX51_TVOUT_SEL_GPIO, 0);
>  
>  	rx51_snd_device = platform_device_alloc("soc-audio", -1);
>  	if (!rx51_snd_device) {

All applied.

Thanks

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

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

end of thread, other threads:[~2011-02-15 21:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-14 15:20 [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Jarkko Nikula
2011-02-14 15:20 ` [PATCH 2/3] ASoC: omap: rx51: Add headset support Jarkko Nikula
2011-02-14 15:20 ` [PATCH 3/3] ASoC: omap: rx51: Report headset insertion instead of video out cable Jarkko Nikula
2011-02-14 15:58 ` [PATCH 1/3] ASoC: omap: rx51: Use gpio_request_one to configure tvout_sel gpio Mark Brown
2011-02-15 21:54 ` 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.