Skip to content

Commit 09cda70

Browse files
TE-N-ShengjiuWangbroonie
authored andcommitted
ASoC: fsl: Restore configuration of platform
This reverts commit 33683cb ("ASoC: fsl: remove unnecessary dai_link->platform"). dai_link->platform is needed. The platform component is "snd_dmaengine_pcm", which is registered from cpu driver, If dai_link->platform is not assigned, then platform component will not be probed, then there will be issue: aplay: main:831: audio open error: Invalid argument Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1681900158-17428-1-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 574399f commit 09cda70

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

sound/soc/fsl/imx-audmix.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,8 @@ static int imx_audmix_probe(struct platform_device *pdev)
207207
for (i = 0; i < num_dai; i++) {
208208
struct snd_soc_dai_link_component *dlc;
209209

210-
/* for CPU/Codec x 2 */
211-
dlc = devm_kcalloc(&pdev->dev, 4, sizeof(*dlc), GFP_KERNEL);
210+
/* for CPU/Codec/Platform x 2 */
211+
dlc = devm_kcalloc(&pdev->dev, 6, sizeof(*dlc), GFP_KERNEL);
212212
if (!dlc)
213213
return -ENOMEM;
214214

@@ -240,16 +240,19 @@ static int imx_audmix_probe(struct platform_device *pdev)
240240

241241
priv->dai[i].cpus = &dlc[0];
242242
priv->dai[i].codecs = &dlc[1];
243+
priv->dai[i].platforms = &dlc[2];
243244

244245
priv->dai[i].num_cpus = 1;
245246
priv->dai[i].num_codecs = 1;
247+
priv->dai[i].num_platforms = 1;
246248

247249
priv->dai[i].name = dai_name;
248250
priv->dai[i].stream_name = "HiFi-AUDMIX-FE";
249251
priv->dai[i].codecs->dai_name = "snd-soc-dummy-dai";
250252
priv->dai[i].codecs->name = "snd-soc-dummy";
251253
priv->dai[i].cpus->of_node = args.np;
252254
priv->dai[i].cpus->dai_name = dev_name(&cpu_pdev->dev);
255+
priv->dai[i].platforms->of_node = args.np;
253256
priv->dai[i].dynamic = 1;
254257
priv->dai[i].dpcm_playback = 1;
255258
priv->dai[i].dpcm_capture = (i == 0 ? 1 : 0);
@@ -264,17 +267,20 @@ static int imx_audmix_probe(struct platform_device *pdev)
264267
be_cp = devm_kasprintf(&pdev->dev, GFP_KERNEL,
265268
"AUDMIX-Capture-%d", i);
266269

267-
priv->dai[num_dai + i].cpus = &dlc[2];
268-
priv->dai[num_dai + i].codecs = &dlc[3];
270+
priv->dai[num_dai + i].cpus = &dlc[3];
271+
priv->dai[num_dai + i].codecs = &dlc[4];
272+
priv->dai[num_dai + i].platforms = &dlc[5];
269273

270274
priv->dai[num_dai + i].num_cpus = 1;
271275
priv->dai[num_dai + i].num_codecs = 1;
276+
priv->dai[num_dai + i].num_platforms = 1;
272277

273278
priv->dai[num_dai + i].name = be_name;
274279
priv->dai[num_dai + i].codecs->dai_name = "snd-soc-dummy-dai";
275280
priv->dai[num_dai + i].codecs->name = "snd-soc-dummy";
276281
priv->dai[num_dai + i].cpus->of_node = audmix_np;
277282
priv->dai[num_dai + i].cpus->dai_name = be_name;
283+
priv->dai[num_dai + i].platforms->name = "snd-soc-dummy";
278284
priv->dai[num_dai + i].no_pcm = 1;
279285
priv->dai[num_dai + i].dpcm_playback = 1;
280286
priv->dai[num_dai + i].dpcm_capture = 1;

sound/soc/fsl/imx-spdif.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,26 @@ static int imx_spdif_audio_probe(struct platform_device *pdev)
2626
}
2727

2828
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
29-
comp = devm_kzalloc(&pdev->dev, 2 * sizeof(*comp), GFP_KERNEL);
29+
comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL);
3030
if (!data || !comp) {
3131
ret = -ENOMEM;
3232
goto end;
3333
}
3434

3535
data->dai.cpus = &comp[0];
3636
data->dai.codecs = &comp[1];
37+
data->dai.platforms = &comp[2];
3738

3839
data->dai.num_cpus = 1;
3940
data->dai.num_codecs = 1;
41+
data->dai.num_platforms = 1;
4042

4143
data->dai.name = "S/PDIF PCM";
4244
data->dai.stream_name = "S/PDIF PCM";
4345
data->dai.codecs->dai_name = "snd-soc-dummy-dai";
4446
data->dai.codecs->name = "snd-soc-dummy";
4547
data->dai.cpus->of_node = spdif_np;
48+
data->dai.platforms->of_node = spdif_np;
4649
data->dai.playback_only = true;
4750
data->dai.capture_only = true;
4851

0 commit comments

Comments
 (0)