]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - sound/soc/soc-topology.c
Merge tag 'drm-next-2019-12-06' of git://anongit.freedesktop.org/drm/drm
[linux.git] / sound / soc / soc-topology.c
index 0fd032914a318b39d46f89ac8af1435de11ebba1..81d2af000a5c80b2e7f7c36a31029414d32d95c3 100644 (file)
@@ -1800,6 +1800,9 @@ static int soc_tplg_dai_create(struct soc_tplg *tplg,
        struct snd_soc_dai_driver *dai_drv;
        struct snd_soc_pcm_stream *stream;
        struct snd_soc_tplg_stream_caps *caps;
+       struct snd_soc_dai *dai;
+       struct snd_soc_dapm_context *dapm =
+               snd_soc_component_get_dapm(tplg->comp);
        int ret;
 
        dai_drv = kzalloc(sizeof(struct snd_soc_dai_driver), GFP_KERNEL);
@@ -1842,7 +1845,19 @@ static int soc_tplg_dai_create(struct soc_tplg *tplg,
        list_add(&dai_drv->dobj.list, &tplg->comp->dobj_list);
 
        /* register the DAI to the component */
-       return snd_soc_register_dai(tplg->comp, dai_drv);
+       dai = snd_soc_register_dai(tplg->comp, dai_drv, false);
+       if (!dai)
+               return -ENOMEM;
+
+       /* Create the DAI widgets here */
+       ret = snd_soc_dapm_new_dai_widgets(dapm, dai);
+       if (ret != 0) {
+               dev_err(dai->dev, "Failed to create DAI widgets %d\n", ret);
+               snd_soc_unregister_dai(dai);
+               return ret;
+       }
+
+       return ret;
 }
 
 static void set_link_flags(struct snd_soc_dai_link *link,