[Sound-open-firmware] about multiple BE dai_links support

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Tue May 22 08:26:00 CEST 2018


On Tue, 2018-05-22 at 12:50 +0800, Keyon Jie wrote:
> Hi all,
> 
> As we are using link->id for BE dai_link match in 
> snd_soc_find_dai_link(), so the link->id define in machine driver is 
> crucial.
> 
> Previously we set all link->id to be 0s in machine drivers(e.g. 
> nocodec.c, bytcr_rt5651.c, cnl_rt274.c, bxt_pcm512x.c...), but in
> many 
> other cAVS machine drivers(skl_rt286.c, kbl_rt5663_max98927.c, 
> bxt_tdf8532.c, ...), they are using different link->id for different
> BE 
> dai_links.
> 
> So, to reuse those machine driver and BE dai_links for SOF, we have
> 2 
> solution to fix this:
> 
> 1. remove the hardcode(to 0) of link->id in topology and add a param
> for 
> that. I provide a RFC patch below.
> 
> 2. change snd_soc_find_dai_link(), remove the link->id comparison.
> 
> Personally I don't like the #2 solution, it will lead to backward 
> compatibility issue for those exist drivers, and also is mismatch
> with 
> the comment of snd_soc_find_dai_link():
>   * @id: DAI link ID to match
>   * @name: DAI link name to match, optional
>   * @stream_name: DAI link stream name to match, optional
> 
> Hi Pierre/Liam, any comments on this? I hope we can align this soon
> then 
> I can refine and send machine driver for GPMRB.
> 
> 
> Thanks,
> ~Keyon
> 
> diff --git a/topology/m4/dai.m4 b/topology/m4/dai.m4
> index 0b030af..0a79364 100644
> --- a/topology/m4/dai.m4
> +++ b/topology/m4/dai.m4
> @@ -140,17 +140,17 @@ define(`DAI_TDM',
>   dnl DAI Config)
>   define(`N_DAI_CONFIG', `DAICONFIG.'$1)
> 
> -dnl DAI_CONFIG(type, idx, name, format, valid bits, mclk, bclk,
> fsync, tdm)
> +dnl DAI_CONFIG(type, idx, link_id, name, format, valid bits, mclk, 
> bclk, fsync, tdm)
>   define(`DAI_CONFIG',
>   `SectionHWConfig."'$1$2`" {'
>   `'
>   `      id              "'$2`"'
>   `      format          "'$4`"'
>   `'
> -`      '$6
>   `      '$7
>   `      '$8
>   `      '$9
> +`      '$10
>   `}'
>   `SectionVendorTuples."'N_DAI_CONFIG($1$2)`_tuples_str" {'
>   `      tokens "sof_dai_tokens"'
> @@ -164,15 +164,15 @@ define(`DAI_CONFIG',
>   `SectionVendorTuples."'N_DAI_CONFIG($1$2)`_tuples" {'
>   `      tokens "sof_dai_tokens"'
>   `      tuples."word" {'
> -`              SOF_TKN_DAI_SAMPLE_BITS'        STR($5)
> +`              SOF_TKN_DAI_SAMPLE_BITS'        STR($6)
>   `      }'
>   `}'
>   `SectionData."'N_DAI_CONFIG($1$2)`_data" {'
>   `      tuples "'N_DAI_CONFIG($1$2)`_tuples"'
>   `}'
>   `'
> -`SectionBE."'$3`" {'
> -`      index "0"'
> +`SectionBE."'$4`" {'
> +`      index "'$3`"'
Keyon, I may be incorrect but I have always associated index with
Pipeline_ID. So I am not sure this is the right way to assign the id. 

Why the choice of index instead of the ID in SectionHWConfig?

>   `      default_hw_conf_id      "'$2`"'
>   `'
>   `      hw_configs ['
> _______________________________________________
> Sound-open-firmware mailing list
> Sound-open-firmware at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware


More information about the Sound-open-firmware mailing list