Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: gdsc: treat optional supplies as optional

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>

authored by

Johan Hovold and committed by
Bjorn Andersson
6677196f 4cece764

+8 -3
+8 -3
drivers/clk/qcom/gdsc.c
··· 487 487 if (!scs[i] || !scs[i]->supply) 488 488 continue; 489 489 490 - scs[i]->rsupply = devm_regulator_get(dev, scs[i]->supply); 491 - if (IS_ERR(scs[i]->rsupply)) 492 - return PTR_ERR(scs[i]->rsupply); 490 + scs[i]->rsupply = devm_regulator_get_optional(dev, scs[i]->supply); 491 + if (IS_ERR(scs[i]->rsupply)) { 492 + ret = PTR_ERR(scs[i]->rsupply); 493 + if (ret != -ENODEV) 494 + return ret; 495 + 496 + scs[i]->rsupply = NULL; 497 + } 493 498 } 494 499 495 500 data->num_domains = num;