Skip to content

Commit a613b63

Browse files
Revaliolibroonie
authored andcommitted
ASoC: fsl-asoc-card: add support for dai links with multiple codecs
Add support for dai links using multiple codecs for multi-codec use cases. Co-developed-by: Philip-Dylan Gleonec <[email protected]> Signed-off-by: Philip-Dylan Gleonec <[email protected]> Signed-off-by: Elinor Montmasson <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 1cc509e commit a613b63

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

sound/soc/fsl/fsl-asoc-card.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ static int fsl_asoc_card_late_probe(struct snd_soc_card *card)
542542
static int fsl_asoc_card_probe(struct platform_device *pdev)
543543
{
544544
struct device_node *cpu_np, *codec_np, *asrc_np;
545+
struct snd_soc_dai_link_component *codec_comp;
545546
struct device_node *np = pdev->dev.of_node;
546547
struct platform_device *asrc_pdev = NULL;
547548
struct device_node *bitclkprovider = NULL;
@@ -552,6 +553,7 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
552553
const char *codec_dai_name;
553554
const char *codec_dev_name;
554555
u32 asrc_fmt = 0;
556+
int codec_idx;
555557
u32 width;
556558
int ret;
557559

@@ -816,10 +818,10 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
816818

817819
/* Normal DAI Link */
818820
priv->dai_link[0].cpus->of_node = cpu_np;
819-
priv->dai_link[0].codecs->dai_name = codec_dai_name;
821+
priv->dai_link[0].codecs[0].dai_name = codec_dai_name;
820822

821823
if (!fsl_asoc_card_is_ac97(priv))
822-
priv->dai_link[0].codecs->of_node = codec_np;
824+
priv->dai_link[0].codecs[0].of_node = codec_np;
823825
else {
824826
u32 idx;
825827

@@ -830,11 +832,11 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
830832
goto asrc_fail;
831833
}
832834

833-
priv->dai_link[0].codecs->name =
835+
priv->dai_link[0].codecs[0].name =
834836
devm_kasprintf(&pdev->dev, GFP_KERNEL,
835837
"ac97-codec.%u",
836838
(unsigned int)idx);
837-
if (!priv->dai_link[0].codecs->name) {
839+
if (!priv->dai_link[0].codecs[0].name) {
838840
ret = -ENOMEM;
839841
goto asrc_fail;
840842
}
@@ -848,10 +850,11 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
848850
/* DPCM DAI Links only if ASRC exists */
849851
priv->dai_link[1].cpus->of_node = asrc_np;
850852
priv->dai_link[1].platforms->of_node = asrc_np;
851-
priv->dai_link[2].codecs->dai_name = codec_dai_name;
852-
priv->dai_link[2].codecs->of_node = codec_np;
853-
priv->dai_link[2].codecs->name =
854-
priv->dai_link[0].codecs->name;
853+
for_each_link_codecs((&(priv->dai_link[2])), codec_idx, codec_comp) {
854+
codec_comp->dai_name = priv->dai_link[0].codecs[codec_idx].dai_name;
855+
codec_comp->of_node = priv->dai_link[0].codecs[codec_idx].of_node;
856+
codec_comp->name = priv->dai_link[0].codecs[codec_idx].name;
857+
}
855858
priv->dai_link[2].cpus->of_node = cpu_np;
856859
priv->dai_link[2].dai_fmt = priv->dai_fmt;
857860
priv->card.num_links = 3;

0 commit comments

Comments
 (0)