1
0
Fork 0

MLK-19854-1: ASoC: imx-cs42888: fix error when m4 image is not loaded

With rpmsg sound, when the m4 image is not loaded. There is error log

[ 46.257647] imx-cs42888 sound-rpmsg-cs42888: ASoC: CODEC DAI cs42888 not registered
[ 46.265413] imx-cs42888 sound-rpmsg-cs42888: snd_soc_register_card failed (-517)

The issue is that codec is not register, the sound registeration will fail

So add check in probe function for codec dai ready or not.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
pull/10/head
Shengjiu Wang 2018-10-11 17:53:20 +08:00 committed by Jason Liu
parent fa72c6443f
commit d4eb8ab263
1 changed files with 22 additions and 8 deletions

View File

@ -293,6 +293,8 @@ static int imx_cs42888_probe(struct platform_device *pdev)
struct platform_device *esai_pdev;
struct platform_device *asrc_pdev = NULL;
struct imx_priv *priv = &card_priv;
struct snd_soc_dai_link_component dlc = { 0 };
struct snd_soc_dai *codec_dai;
int ret;
u32 width;
@ -358,29 +360,41 @@ static int imx_cs42888_probe(struct platform_device *pdev)
}
}
if (priv->is_codec_rpmsg) {
imx_cs42888_dai[0].codec_name = "rpmsg-audio-codec-cs42888";
imx_cs42888_dai[0].codec_dai_name = "cs42888";
dlc.name = "rpmsg-audio-codec-cs42888";
dlc.dai_name = "cs42888";
codec_dai = snd_soc_find_dai(&dlc);
if (!codec_dai)
return -ENODEV;
} else {
imx_cs42888_dai[0].codec_of_node = codec_np;
}
/*if there is no asrc controller, we only enable one device*/
if (!asrc_pdev) {
if (priv->is_codec_rpmsg) {
imx_cs42888_dai[0].codec_name = "rpmsg-audio-codec-cs42888";
imx_cs42888_dai[0].codec_dai_name = "cs42888";
} else {
imx_cs42888_dai[0].codec_of_node = codec_np;
}
imx_cs42888_dai[0].cpu_dai_name = dev_name(&esai_pdev->dev);
imx_cs42888_dai[0].platform_of_node = esai_np;
snd_soc_card_imx_cs42888.num_links = 1;
snd_soc_card_imx_cs42888.num_dapm_routes =
ARRAY_SIZE(audio_map) - 2;
} else {
imx_cs42888_dai[0].codec_of_node = codec_np;
imx_cs42888_dai[0].cpu_dai_name = dev_name(&esai_pdev->dev);
imx_cs42888_dai[0].platform_of_node = esai_np;
imx_cs42888_dai[1].cpu_of_node = asrc_np;
imx_cs42888_dai[1].platform_of_node = asrc_np;
imx_cs42888_dai[2].codec_of_node = codec_np;
imx_cs42888_dai[2].cpu_dai_name = dev_name(&esai_pdev->dev);
snd_soc_card_imx_cs42888.num_links = 3;
if (priv->is_codec_rpmsg) {
imx_cs42888_dai[2].codec_name = "rpmsg-audio-codec-cs42888";
imx_cs42888_dai[2].codec_dai_name = "cs42888";
} else {
imx_cs42888_dai[2].codec_of_node = codec_np;
}
ret = of_property_read_u32(asrc_np, "fsl,asrc-rate",
&priv->asrc_rate);
if (ret) {