[alsa-devel] [RFC] ASoC: multi-component: Add optional kcontrol prefix name for a DAI link
Jarkko Nikula
jhnikula at gmail.com
Thu Aug 19 17:20:49 CEST 2010
On Thu, 19 Aug 2010 14:54:14 +0100
Mark Brown <broonie at opensource.wolfsonmicro.com> wrote:
> On Thu, Aug 19, 2010 at 02:44:51PM +0300, Jarkko Nikula wrote:
>
> > kcontrol or name prefix still comes from dai_link->kcontrol_prefix
> > (where it should be per codec as pointer by Mark). And no drivers are
> > patched for snd_soc_add_controls, snd_soc_dapm_new_control,
> > snd_soc_dapm_new_controls and snd_soc_dapm_add_routes API changes.
>
> It seems inelegant to have to bounce the prefix information through the
> CODEC driver - we're already supplying the CODEC when we register the
> controls so it seems like the core ought to be able to work out which
> controls need to be renamed from the machine description without needing
> this.
>
Yeah, I agree. It would be best if there is no need to change API of
those functions but I haven't figured out yet how those functions
can see should they add prefix or not and what prefix.
So what we do in soc_probe_dai_link:
cpu_dai->driver->probe
codec->driver->probe
-> Codec adds controls, widgets and routes (only controls
are prefixed. E.g. "front.")
platform->driver->probe
codec_dai->driver->probe
dai_link->init
-> Machine adds controls, widgets and routes (no prefixes)
-> Machine registers stuff from extra drivers (all
controls, widgets and routes are prefixed per driver.
E.g. "front-left-amp.", "front-right-amp." )
Codec and machine registrations are easy to separate e.g. by some flag
and use only codec->kcontrol_prefix and continue using unmodified API.
I think extra drivers could use own variants of those registration
functions that have the name_prefix argument (and core would call them
too). Then we don't need to patch all the codec and machine drivers.
Does this sound feasible?
> It seems best to have the data come from machine-specific config so that
> we can allow them to provide something that makes things clearer to
> users on the particular board.
>
Pointer to some codec_name<->prefix table in struct snd_soc_card at
least eliminates the dai_link->kcontrol_prefix.
> > Codec:
> > - kcontrol prefix
> > - no widget name prefix (as they are per codec)
> > - no audio map prefix (as they are per codec)
>
> Are you sure these are per CODEC?
I thought they and audio map of machine (registered in
dai_link->init) were per codec. Read that as I haven't tried with
second map yet in the test board :-)
Do you think there are some issues e.g. with multi-dai codecs that we
need to address?
--
Jarkko
More information about the Alsa-devel
mailing list