On Wed, May 29, 2019 at 01:50:07PM +0900, Kuninori Morimoto wrote: > > Hi ALSA ML > > snd_soc_instantiate_card() setups dapm, but its timing seems > very randomly for me. > In my understanding, dapm setup timing is not so serious. > So, I think we can do it in one place, > but are there some reasons ? > For example, "xxxx should be called after yyyy" > There are certainly reasons for some of it, but might be easier to explain what you are thinking of moving, rather than trying to list all dependencies. > > static int snd_soc_instantiate_card(struct snd_soc_card *card) > { > ... > > => snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root); > > ... > > if (card->dapm_widgets) > snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets, > card->num_dapm_widgets); > > if (card->of_dapm_widgets) > snd_soc_dapm_new_controls(&card->dapm, card->of_dapm_widgets, > card->num_of_dapm_widgets); > > ... > > snd_soc_dapm_link_dai_widgets(card); > snd_soc_dapm_connect_dai_link_widgets(card); For example we need the calls to snd_soc_dapm_new_controls to be before these two so that the widgets exist for linking them. > > if (card->controls) > snd_soc_add_card_controls(card, card->controls, > card->num_controls); > This needs to be before the routes are added so that the routes can find their associated controls. > if (card->dapm_routes) > snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes, > card->num_dapm_routes); > > if (card->of_dapm_routes) > snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes, > card->num_of_dapm_routes); > ... And the routes also obviously need to be after the widgets are added as well. > > snd_soc_dapm_new_widgets(card); > > ... > > dapm_mark_endpoints_dirty(card); > snd_soc_dapm_sync(&card->dapm); > ... > } > > Hope that is roughly the sort of thing you were interested in. Thanks, Charles _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel