21 Dec
2022
21 Dec
'22
9:36 p.m.
+static int avs_create_dai_link(struct device *dev, const char *platform_name, int ssp_port,
struct snd_soc_dai_link **dai_link)
+{
- struct snd_soc_dai_link_component *platform;
- struct snd_soc_dai_link *dl;
- dl = devm_kzalloc(dev, sizeof(*dl), GFP_KERNEL);
- platform = devm_kzalloc(dev, sizeof(*platform), GFP_KERNEL);
- if (!dl || !platform)
return -ENOMEM;
- platform->name = platform_name;
- dl->name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-Codec", ssp_port);
- dl->cpus = devm_kzalloc(dev, sizeof(*dl->cpus), GFP_KERNEL);
- dl->codecs = devm_kzalloc(dev, sizeof(*dl->codecs), GFP_KERNEL);
- if (!dl->name || !dl->cpus || !dl->codecs)
return -ENOMEM;
- dl->cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", ssp_port);
- dl->codecs->name = devm_kasprintf(dev, GFP_KERNEL, "i2c-10EC5663:00");
- dl->codecs->dai_name = RT5663_DAI_NAME;
- if (!dl->cpus->dai_name || !dl->codecs->name || !dl->codecs->dai_name)
return -ENOMEM;
- dl->num_cpus = 1;
- dl->num_codecs = 1;
- dl->platforms = platform;
- dl->num_platforms = 1;
- dl->id = 0;
- dl->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS;
can I ask why it's necessary to hard-code the format, shouldn't this be specified in the topology?
It's a generic question for AVS machine drivers, the same code is found in other cases.
- dl->init = avs_rt5663_codec_init;
- dl->nonatomic = 1;
- dl->no_pcm = 1;
- dl->dpcm_capture = 1;
- dl->dpcm_playback = 1;
- *dai_link = dl;
- return 0;
+}