ASoC: soc-core: move soc_link_init()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 10 Dec 2019 00:34:36 +0000 (09:34 +0900)
committerMark Brown <broonie@kernel.org>
Tue, 10 Dec 2019 13:17:46 +0000 (13:17 +0000)
This patch moves soc_link_init() to upper side.
This is prepare for its cleanup.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/871rtdyq5g.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index 81164b5..04cb690 100644 (file)
@@ -1123,6 +1123,78 @@ static int soc_dai_pcm_new(struct snd_soc_dai **dais, int num_dais,
        return 0;
 }
 
+static int soc_link_init(struct snd_soc_card *card,
+                        struct snd_soc_pcm_runtime *rtd)
+{
+       struct snd_soc_dai_link *dai_link = rtd->dai_link;
+       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_rtdcom_list *rtdcom;
+       struct snd_soc_component *component;
+       int ret, num;
+
+       /* set default power off timeout */
+       rtd->pmdown_time = pmdown_time;
+
+       /* do machine specific initialization */
+       if (dai_link->init) {
+               ret = dai_link->init(rtd);
+               if (ret < 0) {
+                       dev_err(card->dev, "ASoC: failed to init %s: %d\n",
+                               dai_link->name, ret);
+                       return ret;
+               }
+       }
+
+       if (dai_link->dai_fmt) {
+               ret = snd_soc_runtime_set_dai_fmt(rtd, dai_link->dai_fmt);
+               if (ret)
+                       return ret;
+       }
+
+       /* add DPCM sysfs entries */
+       soc_dpcm_debugfs_add(rtd);
+
+       num = rtd->num;
+
+       /*
+        * most drivers will register their PCMs using DAI link ordering but
+        * topology based drivers can use the DAI link id field to set PCM
+        * device number and then use rtd + a base offset of the BEs.
+        */
+       for_each_rtd_components(rtd, rtdcom, component) {
+               if (!component->driver->use_dai_pcm_id)
+                       continue;
+
+               if (rtd->dai_link->no_pcm)
+                       num += component->driver->be_pcm_base;
+               else
+                       num = rtd->dai_link->id;
+       }
+
+       /* create compress_device if possible */
+       ret = snd_soc_dai_compress_new(cpu_dai, rtd, num);
+       if (ret != -ENOTSUPP) {
+               if (ret < 0)
+                       dev_err(card->dev, "ASoC: can't create compress %s\n",
+                               dai_link->stream_name);
+               return ret;
+       }
+
+       /* create the pcm */
+       ret = soc_new_pcm(rtd, num);
+       if (ret < 0) {
+               dev_err(card->dev, "ASoC: can't create pcm %s :%d\n",
+                       dai_link->stream_name, ret);
+               return ret;
+       }
+       ret = soc_dai_pcm_new(&cpu_dai, 1, rtd);
+       if (ret < 0)
+               return ret;
+       ret = soc_dai_pcm_new(rtd->codec_dais,
+                             rtd->num_codecs, rtd);
+       return ret;
+}
+
 static void soc_set_of_name_prefix(struct snd_soc_component *component)
 {
        struct device_node *of_node = soc_component_to_node(component);
@@ -1400,78 +1472,6 @@ static int soc_probe_link_components(struct snd_soc_card *card)
        return 0;
 }
 
-static int soc_link_init(struct snd_soc_card *card,
-                        struct snd_soc_pcm_runtime *rtd)
-{
-       struct snd_soc_dai_link *dai_link = rtd->dai_link;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-       struct snd_soc_rtdcom_list *rtdcom;
-       struct snd_soc_component *component;
-       int ret, num;
-
-       /* set default power off timeout */
-       rtd->pmdown_time = pmdown_time;
-
-       /* do machine specific initialization */
-       if (dai_link->init) {
-               ret = dai_link->init(rtd);
-               if (ret < 0) {
-                       dev_err(card->dev, "ASoC: failed to init %s: %d\n",
-                               dai_link->name, ret);
-                       return ret;
-               }
-       }
-
-       if (dai_link->dai_fmt) {
-               ret = snd_soc_runtime_set_dai_fmt(rtd, dai_link->dai_fmt);
-               if (ret)
-                       return ret;
-       }
-
-       /* add DPCM sysfs entries */
-       soc_dpcm_debugfs_add(rtd);
-
-       num = rtd->num;
-
-       /*
-        * most drivers will register their PCMs using DAI link ordering but
-        * topology based drivers can use the DAI link id field to set PCM
-        * device number and then use rtd + a base offset of the BEs.
-        */
-       for_each_rtd_components(rtd, rtdcom, component) {
-               if (!component->driver->use_dai_pcm_id)
-                       continue;
-
-               if (rtd->dai_link->no_pcm)
-                       num += component->driver->be_pcm_base;
-               else
-                       num = rtd->dai_link->id;
-       }
-
-       /* create compress_device if possible */
-       ret = snd_soc_dai_compress_new(cpu_dai, rtd, num);
-       if (ret != -ENOTSUPP) {
-               if (ret < 0)
-                       dev_err(card->dev, "ASoC: can't create compress %s\n",
-                                        dai_link->stream_name);
-               return ret;
-       }
-
-       /* create the pcm */
-       ret = soc_new_pcm(rtd, num);
-       if (ret < 0) {
-               dev_err(card->dev, "ASoC: can't create pcm %s :%d\n",
-                       dai_link->stream_name, ret);
-               return ret;
-       }
-       ret = soc_dai_pcm_new(&cpu_dai, 1, rtd);
-       if (ret < 0)
-               return ret;
-       ret = soc_dai_pcm_new(rtd->codec_dais,
-                             rtd->num_codecs, rtd);
-       return ret;
-}
-
 static void soc_unbind_aux_dev(struct snd_soc_card *card)
 {
        struct snd_soc_component *component, *_component;