OSDN Git Service

ASoC: soc-core: merge snd_soc_bind_card() and snd_soc_instantiate_card()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 6 Nov 2019 01:07:56 +0000 (10:07 +0900)
committerMark Brown <broonie@kernel.org>
Tue, 12 Nov 2019 18:28:59 +0000 (18:28 +0000)
having both soc_bind_card() and snd_soc_instantiate_card() is
very confusable. Let's merge these.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87mud9hkwj.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index 11cbd79..f3d33a9 100644 (file)
@@ -1974,7 +1974,7 @@ static void soc_cleanup_card_resources(struct snd_soc_card *card)
                card->remove(card);
 }
 
-static int snd_soc_instantiate_card(struct snd_soc_card *card)
+static int snd_soc_bind_card(struct snd_soc_card *card)
 {
        struct snd_soc_pcm_runtime *rtd;
        struct snd_soc_dai_link *dai_link;
@@ -2106,6 +2106,19 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
        dapm_mark_endpoints_dirty(card);
        snd_soc_dapm_sync(&card->dapm);
 
+       /* deactivate pins to sleep state */
+       for_each_card_rtds(card, rtd) {
+               struct snd_soc_dai *dai;
+
+               for_each_rtd_codec_dai(rtd, i, dai) {
+                       if (!dai->active)
+                               pinctrl_pm_select_sleep_state(dai->dev);
+               }
+
+               if (!rtd->cpu_dai->active)
+                       pinctrl_pm_select_sleep_state(rtd->cpu_dai->dev);
+       }
+
 probe_end:
        if (ret < 0)
                soc_cleanup_card_resources(card);
@@ -2338,33 +2351,6 @@ int snd_soc_add_dai_controls(struct snd_soc_dai *dai,
 }
 EXPORT_SYMBOL_GPL(snd_soc_add_dai_controls);
 
-static int snd_soc_bind_card(struct snd_soc_card *card)
-{
-       struct snd_soc_pcm_runtime *rtd;
-       int ret;
-
-       ret = snd_soc_instantiate_card(card);
-       if (ret != 0)
-               return ret;
-
-       /* deactivate pins to sleep state */
-       for_each_card_rtds(card, rtd) {
-               struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-               struct snd_soc_dai *codec_dai;
-               int j;
-
-               for_each_rtd_codec_dai(rtd, j, codec_dai) {
-                       if (!codec_dai->active)
-                               pinctrl_pm_select_sleep_state(codec_dai->dev);
-               }
-
-               if (!cpu_dai->active)
-                       pinctrl_pm_select_sleep_state(cpu_dai->dev);
-       }
-
-       return ret;
-}
-
 /**
  * snd_soc_register_card - Register a card with the ASoC core
  *