ASoC: mid-x86: Use the soc-jack apis for jack type detection
authorVinod Koul <vinod.koul@intel.com>
Thu, 10 Feb 2011 07:28:01 +0000 (12:58 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 11 Feb 2011 11:16:29 +0000 (11:16 +0000)
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@intel.com>
Signed-off-by: Harsha Priya <priya.harsha@intel.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/sn95031.c
sound/soc/mid-x86/mfld_machine.c

index 4cc00177ee3d1a076c497e0d709ff094c8c8f476..d0b7802067165cab269fca1deb388d612cdcaf3f 100644 (file)
@@ -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)
index 45a006708022a04c27cfecf032798387dfc878a4..96487fb8d265ee05a3d8d452e0c16de855dd27b0 100644 (file)
@@ -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