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`"' ` default_hw_conf_id "'$2`"' `' ` hw_configs ['