[PATCH 2/3] clk: renesas: rzg2l: Add missing of_genpd_del_provider() call

From: Ovidiu Panait

Date: Wed Sep 16 2026 - 07:50:50 EST


The RZ/G2L CPG driver registers the PM domain provider, but doesn't
remove it on probe failure, leaving a stale provider behind.

Add the missing of_genpd_del_provider() call on the probe error path.

Fixes: ef3c613ccd68 ("clk: renesas: Add CPG core wrapper for RZ/G2L SoC")
Signed-off-by: Ovidiu Panait <ovidiu.panait.rb@xxxxxxxxxxx>
---
drivers/clk/renesas/rzg2l-cpg.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/renesas/rzg2l-cpg.c b/drivers/clk/renesas/rzg2l-cpg.c
index 7f8decef92fd..01304b078d6f 100644
--- a/drivers/clk/renesas/rzg2l-cpg.c
+++ b/drivers/clk/renesas/rzg2l-cpg.c
@@ -2590,7 +2590,10 @@ static void rzg2l_cpg_detach_dev(struct generic_pm_domain *unused, struct device

static void rzg2l_cpg_genpd_remove(void *data)
{
- pm_genpd_remove(data);
+ struct rzg2l_cpg_priv *priv = data;
+
+ of_genpd_del_provider(priv->dev->of_node);
+ pm_genpd_remove(&priv->genpd);
}

static int __init rzg2l_cpg_add_clk_domain(struct rzg2l_cpg_priv *priv)
@@ -2609,11 +2612,13 @@ static int __init rzg2l_cpg_add_clk_domain(struct rzg2l_cpg_priv *priv)
if (ret)
return ret;

- ret = devm_add_action_or_reset(dev, rzg2l_cpg_genpd_remove, genpd);
- if (ret)
+ ret = of_genpd_add_provider_simple(np, genpd);
+ if (ret) {
+ pm_genpd_remove(genpd);
return ret;
+ }

- return of_genpd_add_provider_simple(np, genpd);
+ return devm_add_action_or_reset(dev, rzg2l_cpg_genpd_remove, priv);
}

static int __init rzg2l_cpg_probe(struct platform_device *pdev)
--
2.34.1