ASoC: audio-graph-card: add hp and mic detect gpios same as simple-card
authorKatsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
Mon, 11 Jun 2018 08:32:14 +0000 (17:32 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 18 Jun 2018 11:54:38 +0000 (12:54 +0100)
This patch adds headphone and microphone jack detection gpios as same
as simple-card driver.

Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/generic/audio-graph-card.c

index d93bacacbd5b4d018b0633b24f71cee60bf756e3..a2a3e630f11ceb64127e41dcbb72c5b8b512fbc2 100644 (file)
@@ -21,7 +21,6 @@
 #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 {
@@ -32,6 +31,8 @@ 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;
 };
@@ -278,6 +279,22 @@ static int asoc_graph_get_dais_count(struct device *dev)
        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;
@@ -319,6 +336,7 @@ static int asoc_graph_card_probe(struct platform_device *pdev)
        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) {