ASoC: Create card DAPM widgets early so they can be used in callbacks

This helps with things like setting up the initial state.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
This commit is contained in:
Mark Brown 2011-04-12 17:51:37 -07:00
parent 01b07e2d84
commit 9a841ebb9c

View file

@ -1878,6 +1878,10 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
INIT_WORK(&card->deferred_resume_work, soc_resume_deferred); INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
#endif #endif
if (card->dapm_widgets)
snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
card->num_dapm_widgets);
/* initialise the sound card only once */ /* initialise the sound card only once */
if (card->probe) { if (card->probe) {
ret = card->probe(card); ret = card->probe(card);
@ -1911,9 +1915,6 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
card->controls, card->controls,
card->num_controls); card->num_controls);
if (card->dapm_widgets)
snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
card->num_dapm_widgets);
if (card->dapm_routes) if (card->dapm_routes)
snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes, snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
card->num_dapm_routes); card->num_dapm_routes);