[alsa-devel] Confusion about Playback/Capture, CODEC/CODEC links, and snd_soc_dapm_link_dai_widgets()

Mark Brown broonie at opensource.wolfsonmicro.com
Tue Jun 5 22:48:01 CEST 2012

On Tue, Jun 05, 2012 at 02:24:47PM -0600, Stephen Warren wrote:

> Initially, I thought that snd_soc_dapm_new_dai_widgets() could just
> return if the DAI already had widgets, but that doesn't work, since the
> widgets were created for the wrong DAPM context - the I2S1 DAP DAI's
> rather than the I2S CODEC's.

> Perhaps instead of blindly probing the CPU DAI, soc_probe_dai_link()
> should check whether that DAI is part of a CODEC, and instead of calling
> try_module_get() and snd_soc_dapm_new_dai_widgets(), it should just call
> soc_probe_codec() on the parent CODEC (guarded by whether the CODEC was
> already probed). Does that sound right? I'm attempting to make that work
> now, in case it's right.

No, we should just probe CODECs sensibly before we do any of the DAIs
instead of trying to guess what we're doing in the middle of handling
the DAI links.  Your changes will be making the logic even more
complicated here, it should be getting simpler - the reason this blew up
for you is that the probe logic is already far too baroque.  Given the
data we have it'll boil down to similar checks bit it'll be in a clear,
comprehensible CODEC probe step rather than intertwined with other
stuff.  This will also mean that aux_devs make more sense.

More information about the Alsa-devel mailing list