[alsa-devel] [PATCH] ASoC: mid-x86: Use the soc-jack apis for jack type detection

Koul, Vinod vinod.koul at intel.com
Thu Feb 10 08:28:01 CET 2011


From: Vinod Koul <vinod.koul at intel.com>

This patch modifies the mfld_machine to use the new jack apis for adding the
voltage zones for jack type detection. It also modifed TI sn95031 codec driver
to use these new apis

Signed-off-by: Vinod Koul <vinod.koul at intel.com>
Signed-off-by: Harsha Priya <priya.harsha at intel.com>
---
 sound/soc/codecs/sn95031.c       |    4 +---
 sound/soc/mid-x86/mfld_machine.c |   12 ++++++++++++
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/sound/soc/codecs/sn95031.c b/sound/soc/codecs/sn95031.c
index 4cc0017..d0b7802 100644
--- a/sound/soc/codecs/sn95031.c
+++ b/sound/soc/codecs/sn95031.c
@@ -782,9 +782,7 @@ static int sn95031_get_headset_state(struct snd_soc_jack *mfld_jack)
 {
 	int micbias = sn95031_get_mic_bias(mfld_jack->codec);
 
-	/* Defaulting to HEADSET for now.
-	 * will change after adding soc-jack detection apis */
-	int jack_type = SND_JACK_HEADSET;
+	int jack_type = snd_soc_jack_get_type(mfld_jack, micbias);
 
 	pr_debug("jack type detected = %d\n", jack_type);
 	if (jack_type == SND_JACK_HEADSET)
diff --git a/sound/soc/mid-x86/mfld_machine.c b/sound/soc/mid-x86/mfld_machine.c
index 45a0067..96487fb 100644
--- a/sound/soc/mid-x86/mfld_machine.c
+++ b/sound/soc/mid-x86/mfld_machine.c
@@ -74,6 +74,12 @@ static struct snd_soc_jack_pin mfld_jack_pins[] = {
 	},
 };
 
+/* jack detection voltage zones */
+static struct snd_soc_jack_zone mfld_zones[] = {
+	{MFLD_MV_START, MFLD_MV_AM_HS, SND_JACK_HEADPHONE},
+	{MFLD_MV_AM_HS, MFLD_MV_HS, SND_JACK_HEADSET},
+};
+
 /* sound card controls */
 static const char *headset_switch_text[] = {"Earpiece", "Headset"};
 
@@ -264,6 +270,12 @@ static int mfld_init(struct snd_soc_pcm_runtime *runtime)
 		pr_err("adding jack pins failed\n");
 		return ret_val;
 	}
+	ret_val = snd_soc_jack_add_zones(&mfld_jack,
+			ARRAY_SIZE(mfld_zones), mfld_zones);
+	if (ret_val) {
+		pr_err("adding jack zones failed\n");
+		return ret_val;
+	}
 
 	/* we want to check if anything is inserted at boot,
 	 * so send a fake event to codec and it will read adc
-- 
1.7.2.3



More information about the Alsa-devel mailing list