diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2019-11-06 10:07:56 +0900 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-11-12 18:28:59 +0000 |
commit | ed90c013a773b5f9e06089d0eed6714761152d14 (patch) | |
tree | 6929b10e5551866a357e5d55eae288bd1ffe64e6 /sound | |
parent | c6619b729814c855fc7bfa5a6936f5ea94d60dfd (diff) | |
download | linux-ed90c013a773b5f9e06089d0eed6714761152d14.tar.gz linux-ed90c013a773b5f9e06089d0eed6714761152d14.tar.bz2 linux-ed90c013a773b5f9e06089d0eed6714761152d14.zip |
ASoC: soc-core: merge snd_soc_bind_card() and snd_soc_instantiate_card()
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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/soc-core.c | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 11cbd7915154..f3d33a908fbc 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -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 * |