]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: fsl_rpmsg: Check -EPROBE_DEFER for getting clocks
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 18 Aug 2021 06:03:34 +0000 (14:03 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 18 Aug 2021 12:55:18 +0000 (13:55 +0100)
The devm_clk_get() may return -EPROBE_DEFER, then clocks
will be assigned to NULL wrongly. As the clocks are
optional so we can use devm_clk_get_optional() instead of
devm_clk_get().

Fixes: b73d9e6225e8 ("ASoC: fsl_rpmsg: Add CPU DAI driver for audio base on rpmsg")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://lore.kernel.org/r/1629266614-6942-1-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_rpmsg.c

index ea5c973e2e8468084f56caacc6704b8e7a7a3024..d60f4dac6c1b34e9ad5150c726ea7e8ca934cb35 100644 (file)
@@ -165,25 +165,25 @@ static int fsl_rpmsg_probe(struct platform_device *pdev)
        }
 
        /* Get the optional clocks */
-       rpmsg->ipg = devm_clk_get(&pdev->dev, "ipg");
+       rpmsg->ipg = devm_clk_get_optional(&pdev->dev, "ipg");
        if (IS_ERR(rpmsg->ipg))
-               rpmsg->ipg = NULL;
+               return PTR_ERR(rpmsg->ipg);
 
-       rpmsg->mclk = devm_clk_get(&pdev->dev, "mclk");
+       rpmsg->mclk = devm_clk_get_optional(&pdev->dev, "mclk");
        if (IS_ERR(rpmsg->mclk))
-               rpmsg->mclk = NULL;
+               return PTR_ERR(rpmsg->mclk);
 
-       rpmsg->dma = devm_clk_get(&pdev->dev, "dma");
+       rpmsg->dma = devm_clk_get_optional(&pdev->dev, "dma");
        if (IS_ERR(rpmsg->dma))
-               rpmsg->dma = NULL;
+               return PTR_ERR(rpmsg->dma);
 
-       rpmsg->pll8k = devm_clk_get(&pdev->dev, "pll8k");
+       rpmsg->pll8k = devm_clk_get_optional(&pdev->dev, "pll8k");
        if (IS_ERR(rpmsg->pll8k))
-               rpmsg->pll8k = NULL;
+               return PTR_ERR(rpmsg->pll8k);
 
-       rpmsg->pll11k = devm_clk_get(&pdev->dev, "pll11k");
+       rpmsg->pll11k = devm_clk_get_optional(&pdev->dev, "pll11k");
        if (IS_ERR(rpmsg->pll11k))
-               rpmsg->pll11k = NULL;
+               return PTR_ERR(rpmsg->pll11k);
 
        platform_set_drvdata(pdev, rpmsg);
        pm_runtime_enable(&pdev->dev);