Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b52fa21 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown
Browse files

ASoC: Call snd_soc_dapm_new_widgets() only once during card initialization



Each time snd_soc_dapm_new_widgets() is called it will instantiate all the
widgets and routes that have been added so far and then power them. Doing this
multiple times before the card is fully initialized and all widgets have been
added can cause unnecessary and even invalid power state transitions which can
result in extra register writes and and also might cause clicks and pops.

Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 14866307
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -1230,9 +1230,6 @@ static int soc_post_component_init(struct snd_soc_card *card,
	}
	rtd->card = card;

	/* Make sure all DAPM widgets are instantiated */
	snd_soc_dapm_new_widgets(&codec->dapm);

	/* machine controls, routes and widgets are not prefixed */
	temp = codec->name_prefix;
	codec->name_prefix = NULL;
@@ -1728,8 +1725,6 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
		snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
					card->num_dapm_routes);

	snd_soc_dapm_new_widgets(&card->dapm);

	for (i = 0; i < card->num_links; i++) {
		dai_link = &card->dai_link[i];
		dai_fmt = dai_link->dai_fmt;