clk: qcom: gdsc: treat optional supplies as optional
authorJohan Hovold <johan+linaro@kernel.org>
Mon, 25 Mar 2024 08:58:35 +0000 (09:58 +0100)
committerBjorn Andersson <andersson@kernel.org>
Wed, 3 Apr 2024 03:47:07 +0000 (22:47 -0500)
Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
supply for GX gdsc") the GDSC supply must be treated as optional to
avoid warnings like:

gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator

on SC8280XP.

Fortunately, the driver is already prepared to handle this by checking
that the regulator pointer is non-NULL before use.

This also avoids triggering a potential deadlock on SC8280XP even if the
underlying issue still remains for the derivative platforms like SA8295P
that actually use the supply.

Fixes: deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external supply for GX gdsc")
Link: https://lore.kernel.org/lkml/Zf25Sv2x9WaCFuIH@hovoldconsulting.com/
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20240325085835.26158-1-johan+linaro@kernel.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/clk/qcom/gdsc.c

index e7a4068b9f3906f99d9d5ca444fe903b237811b6..df9618ab7eea1fb0422ee73fd21938e6fc77e257 100644 (file)
@@ -487,9 +487,14 @@ int gdsc_register(struct gdsc_desc *desc,
                if (!scs[i] || !scs[i]->supply)
                        continue;
 
-               scs[i]->rsupply = devm_regulator_get(dev, scs[i]->supply);
-               if (IS_ERR(scs[i]->rsupply))
-                       return PTR_ERR(scs[i]->rsupply);
+               scs[i]->rsupply = devm_regulator_get_optional(dev, scs[i]->supply);
+               if (IS_ERR(scs[i]->rsupply)) {
+                       ret = PTR_ERR(scs[i]->rsupply);
+                       if (ret != -ENODEV)
+                               return ret;
+
+                       scs[i]->rsupply = NULL;
+               }
        }
 
        data->num_domains = num;