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

Keyon Jie yang.jie at linux.intel.com
Tue May 22 08:33:59 CEST 2018



On 2018年05月22日 14:26, Ranjani Sridharan wrote:
> 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.

I also found this issue just now when I am debugging it, then I refer 
back to the patch I made before 1.1, it actually should be id, not index 
here.

Thanks for the correction, will send patch with this once everyone 
aligned to use this solution.

Thanks,
~Keyon

> 
> 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
> _______________________________________________
> 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