struct snd_soc_jack headset_jack;
 };
 
+static struct snd_soc_jack_pin headset_jack_pins[] = {
+       {
+               .pin = "Headphone",
+               .mask = SND_JACK_HEADPHONE,
+       },
+       {
+               .pin = "Headset Mic",
+               .mask = SND_JACK_MICROPHONE,
+       },
+};
+
 static int midas_start_fll1(struct snd_soc_pcm_runtime *rtd, unsigned int rate)
 {
        struct snd_soc_card *card = rtd->card;
        SOC_DAPM_PIN_SWITCH("Main Mic"),
        SOC_DAPM_PIN_SWITCH("Sub Mic"),
        SOC_DAPM_PIN_SWITCH("Headset Mic"),
+       SOC_DAPM_PIN_SWITCH("Headphone"),
 
        SOC_DAPM_PIN_SWITCH("FM In"),
 };
        SND_SOC_DAPM_LINE("HDMI", NULL),
        SND_SOC_DAPM_LINE("FM In", midas_fm_set),
 
+       SND_SOC_DAPM_HP("Headphone", NULL),
        SND_SOC_DAPM_MIC("Headset Mic", NULL),
        SND_SOC_DAPM_MIC("Main Mic", midas_mic_bias),
        SND_SOC_DAPM_MIC("Sub Mic", midas_submic_bias),
                return ret;
        }
 
-       ret = snd_soc_card_jack_new(card, "Headset",
-                       SND_JACK_HEADSET | SND_JACK_MECHANICAL |
-                       SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 |
-                       SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5,
-                       &priv->headset_jack);
+       ret = snd_soc_card_jack_new_pins(card, "Headset",
+                                        SND_JACK_HEADSET | SND_JACK_MECHANICAL |
+                                        SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 |
+                                        SND_JACK_BTN_3 | SND_JACK_BTN_4 | SND_JACK_BTN_5,
+                                        &priv->headset_jack,
+                                        headset_jack_pins,
+                                        ARRAY_SIZE(headset_jack_pins));
        if (ret)
                return ret;