]> git.hungrycats.org Git - linux/commitdiff
ASoC: fsl-asoc-card: defer probe when the CPU DAI device is not ready
authorLiangCheng Wang <zaq14760@gmail.com>
Wed, 5 Aug 2026 07:55:43 +0000 (15:55 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 11 Aug 2026 21:08:50 +0000 (22:08 +0100)
fsl_asoc_card_probe() hard-fails with -EINVAL when the CPU DAI (SAI)
platform device is not found. Like the codec, the CPU DAI may just be
probed later than the machine driver; the order is not guaranteed and
varies across kernel versions, so a permanent -EINVAL leaves the card
unregistered with no analog playback or capture.

Defer probe instead, mirroring commit e396dec46c56 ("ASoC:
fsl-asoc-card: Defer probe when fail to find codec device").

Tested on i.MX8MP with an ALC5672 on SAI3: the card that failed to
register on v6.18 now comes up during boot.

Fixes: 708b4351f08c ("ASoC: fsl: Add Freescale Generic ASoC Sound Card with ASRC support")
Signed-off-by: LiangCheng Wang <zaq14760@gmail.com>
Link: https://patch.msgid.link/20260805-fsl-asoc-defer-cpu-dai-v1-1-43f7f538e384@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl-asoc-card.c

index 709543308fe9e9dc508a791b7125e5f467182cee..eff46666c8add604d0edbf9537ee2d275813c1b7 100644 (file)
@@ -728,8 +728,8 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
 
        cpu_pdev = of_find_device_by_node(cpu_np);
        if (!cpu_pdev) {
-               dev_err(&pdev->dev, "failed to find CPU DAI device\n");
-               ret = -EINVAL;
+               ret = dev_err_probe(&pdev->dev, -EPROBE_DEFER,
+                                   "failed to find CPU DAI device\n");
                goto fail;
        }