[Sound-open-firmware] about multiple BE dai_links support
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Tue May 22 14:23:43 CEST 2018
On 5/21/18 11:50 PM, 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.
I also prefer a link->id set in the topology.
There is no rationale or requirement for ordering BE DAIs in the machine
driver, so we need to adjust and avoid making assumptions.
For the DA7219 work, I had to change code in the machine driver to force
the ID to be zero, if there is an easier topology-based solution it's
better.
>
>
> 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 ['
> _______________________________________________
> 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