#include <linux/of_graph.h>
 #include <linux/platform_device.h>
 #include <linux/string.h>
-#include <sound/jack.h>
 #include <sound/simple_card_utils.h>
 
 struct graph_card_data {
                unsigned int mclk_fs;
        } *dai_props;
        unsigned int mclk_fs;
+       struct asoc_simple_jack hp_jack;
+       struct asoc_simple_jack mic_jack;
        struct snd_soc_dai_link *dai_link;
        struct gpio_desc *pa_gpio;
 };
        return count;
 }
 
+static int asoc_graph_soc_card_probe(struct snd_soc_card *card)
+{
+       struct graph_card_data *priv = snd_soc_card_get_drvdata(card);
+       int ret;
+
+       ret = asoc_simple_card_init_hp(card, &priv->hp_jack, NULL);
+       if (ret < 0)
+               return ret;
+
+       ret = asoc_simple_card_init_mic(card, &priv->mic_jack, NULL);
+       if (ret < 0)
+               return ret;
+
+       return 0;
+}
+
 static int asoc_graph_card_probe(struct platform_device *pdev)
 {
        struct graph_card_data *priv;
        card->num_links = num;
        card->dapm_widgets = asoc_graph_card_dapm_widgets;
        card->num_dapm_widgets = ARRAY_SIZE(asoc_graph_card_dapm_widgets);
+       card->probe     = asoc_graph_soc_card_probe;
 
        ret = asoc_graph_card_parse_of(priv);
        if (ret < 0) {