From: bui duc phuc <[email protected]>

The current code uses devm_clk_get() and sets the clock pointer
to NULL when it returns an error. However, this silently ignores
errors such as -EPROBE_DEFER, allowing the driver to continue
probing without the requested clock.

Use devm_clk_get_optional() to handle missing optional clocks
automatically, and dev_err_probe() to properly propagate other
errors, including -EPROBE_DEFER.

Signed-off-by: bui duc phuc <[email protected]>
---
 sound/soc/fsl/fsl_sai.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
index 042885ba415e..44a34f48a0cf 100644
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
@@ -1589,12 +1589,10 @@ static int fsl_sai_probe(struct platform_device *pdev)
 
        for (i = 1; i < FSL_SAI_MCLK_MAX; i++) {
                sprintf(tmp, "mclk%d", i);
-               sai->mclk_clk[i] = devm_clk_get(dev, tmp);
-               if (IS_ERR(sai->mclk_clk[i])) {
-                       dev_err(dev, "failed to get mclk%d clock: %ld\n",
-                                       i, PTR_ERR(sai->mclk_clk[i]));
-                       sai->mclk_clk[i] = NULL;
-               }
+               sai->mclk_clk[i] = devm_clk_get_optional(dev, tmp);
+               if (IS_ERR(sai->mclk_clk[i]))
+                       return dev_err_probe(dev, PTR_ERR(sai->mclk_clk[i]),
+                                            "failed to get mclk%d clock\n", i);
        }
 
        if (sai->soc_data->mclk0_is_mclk1)
-- 
2.43.0


Reply via email to