ASoC: omap-abe-twl6040: DAI link selection based on platform data
[firefly-linux-kernel-4.4.55.git] / sound / soc / omap / omap-abe-twl6040.c
index f2b5fec8f68015eef909e1c44a4d67ab4fc4ed34..5b781f904cd79f41862b405aa5b5d41cc7b667c6 100644 (file)
@@ -212,7 +212,7 @@ static int omap_abe_dmic_init(struct snd_soc_pcm_runtime *rtd)
 }
 
 /* Digital audio interface glue - connects codec <--> CPU */
-static struct snd_soc_dai_link sdp4430_dai[] = {
+static struct snd_soc_dai_link twl6040_dmic_dai[] = {
        {
                .name = "TWL6040",
                .stream_name = "TWL6040",
@@ -235,11 +235,22 @@ static struct snd_soc_dai_link sdp4430_dai[] = {
        },
 };
 
+static struct snd_soc_dai_link twl6040_only_dai[] = {
+       {
+               .name = "TWL6040",
+               .stream_name = "TWL6040",
+               .cpu_dai_name = "omap-mcpdm",
+               .codec_dai_name = "twl6040-legacy",
+               .platform_name = "omap-pcm-audio",
+               .codec_name = "twl6040-codec",
+               .init = omap_abe_twl6040_init,
+               .ops = &omap_abe_ops,
+       },
+};
+
 /* Audio machine driver */
 static struct snd_soc_card omap_abe_card = {
        .owner = THIS_MODULE,
-       .dai_link = sdp4430_dai,
-       .num_links = ARRAY_SIZE(sdp4430_dai),
 
        .dapm_widgets = twl6040_dapm_widgets,
        .num_dapm_widgets = ARRAY_SIZE(twl6040_dapm_widgets),
@@ -267,6 +278,14 @@ static __devinit int omap_abe_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
+       if (pdata->has_dmic) {
+               card->dai_link = twl6040_dmic_dai;
+               card->num_links = ARRAY_SIZE(twl6040_dmic_dai);
+       } else {
+               card->dai_link = twl6040_only_dai;
+               card->num_links = ARRAY_SIZE(twl6040_only_dai);
+       }
+
        ret = snd_soc_register_card(card);
        if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",