[alsa-devel] Converting a non BE to BE inside soc_check_tplg_fes

Daniel Baluta daniel.baluta at gmail.com
Tue Nov 26 17:23:16 CET 2019


Thanks Liam for your answer! Some comments inside:

On Tue, Nov 26, 2019 at 5:32 PM Liam Girdwood
<liam.r.girdwood at linux.intel.com> wrote:
>
> On Mon, 2019-11-25 at 18:45 +0200, Daniel Baluta wrote:
> > Hi all,
> >
> > I am trying how a non-BE link is converted to a BE link
> > inside soc_check_tplg_fes.
> >
> > soc_check_tplg_fes
> > => for all components that have ignore_machine setup to card name
> >      => dai_link->platforms->name = component->name;
> >      => dai_link->no_pcm = 1;
> >
> > But the thing is that the link is a true non-DPCM link, than fields
> > like dpcm_playback/dpcm_capture are not set and playback/record
> > substreams are no created.
>
> These fields should be being populated by topology since they are
> runtime configuration on a non DPCM PCM device.

Well looking at topology code (soc-topology.c) it looks like only newly
created links (and only FE links) get dpcm_playback/dpcm_capture set.

soc_tplg_fe_link_create
=> link->dynamic = 1;
=> link->dpcm_playback = le32_to_cpu(pcm->playback);

So, for an existing BE link, dpcm_playback/dpcm_capture are not touched.

>
> >
> > The question is: is this supposed to be working with non-DPCM links?

>
> Yes, it "should do" and did when I last tested - there were some non
> DPCM Intel machine drivers that needed to work (grep -L no_pcm
> sound/soc/intel/boards/*.c), but I am not as up to date as other on the
> SOF driver core now. So if it's not working, it could be a regression
> (as these non DPCM boards are not used now IIRC).

Oh, I see. Thanks for confirming that this works. I will dig through the history
to see what happen. Because I do think it is a regression.

thanks,
Daniel.


More information about the Alsa-devel mailing list