[alsa-devel] Question about dapm setup

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Fri May 31 02:57:48 CEST 2019


Hi Charles

Thank you for your help

> > 	static int snd_soc_instantiate_card(struct snd_soc_card *card)
> > 	{
> > 
> > =>		snd_soc_dapm_debugfs_init()
> > =>		snd_soc_dapm_new_controls(...)
> > =>		snd_soc_dapm_link_dai_widgets()
> > =>		snd_soc_dapm_connect_dai_link_widgets()
> > =>		snd_soc_add_card_controls()
> > =>		snd_soc_dapm_add_routes()
> > =>		snd_soc_dapm_new_widgets()
> > =>		dapm_mark_endpoints_dirty()
> > =>		snd_soc_dapm_sync()
> > 
> > 		card->probe(..)
> > 		soc_probe_link_components(...)
> > 		soc_probe_aux_device(...)
> > 		soc_bind_dai_link(...)
> > 		soc_probe_link_dais
> > 		snprintf(...)
> > 		card->late_probe()
> > 		snd_card_register()
> > 
> > =>		/* or dapm setup here instead ? */
> > 	}
(snip)
> There are definitely some dependencies for example component probes
> will add widgets, controls and routes from those components so
> those will need to be done before the card level routes are
> added. The card level routes may link to widgets on individual
> components.
> 
> Also the DAPM sync definitely needs to be after everything has
> been setup.
> 
> I wouldn't be surprised if there are others as well, things like
> creating the DAI link widgets are probably done through some
> of these helpers and probably need to be at certain points in the
> process.

Thank for your information !
I think we can do some cleanup there, but need more investigation.
I guess, the point is card->probe, and card->late_probe (?)

Thank you for your help !!
Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list