Commit 95eb1986 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Geert Uytterhoeven
Browse files

pinctrl: renesas: rzg2l: Use devm_clk_get_enabled() helper



The devm_clk_get_enabled() helper:
   - calls devm_clk_get()
   - calls clk_prepare_enable() and registers what is needed in order to
     call clk_disable_unprepare() when needed, as a managed resource.

This simplifies the code and avoids the need of a dedicated function used
with devm_add_action_or_reset().

While at it, use dev_err_probe() which filters -EPROBE_DEFER.

Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/a4a586337d692f0ca396b80d275ba634eb419593.1690058500.git.christophe.jaillet@wanadoo.fr


[geert: Make clk local to rzg2l_pinctrl_probe()]
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
parent f4b2ce40
Loading
Loading
Loading
Loading
+5 −27
Original line number Diff line number Diff line
@@ -144,7 +144,6 @@ struct rzg2l_pinctrl {
	const struct rzg2l_pinctrl_data	*data;
	void __iomem			*base;
	struct device			*dev;
	struct clk			*clk;

	struct gpio_chip		gpio_chip;
	struct pinctrl_gpio_range	gpio_range;
@@ -1470,14 +1469,10 @@ static int rzg2l_pinctrl_register(struct rzg2l_pinctrl *pctrl)
	return 0;
}

static void rzg2l_pinctrl_clk_disable(void *data)
{
	clk_disable_unprepare(data);
}

static int rzg2l_pinctrl_probe(struct platform_device *pdev)
{
	struct rzg2l_pinctrl *pctrl;
	struct clk *clk;
	int ret;

	BUILD_BUG_ON(ARRAY_SIZE(rzg2l_gpio_configs) * RZG2L_PINS_PER_PORT >
@@ -1500,33 +1495,16 @@ static int rzg2l_pinctrl_probe(struct platform_device *pdev)
	if (IS_ERR(pctrl->base))
		return PTR_ERR(pctrl->base);

	pctrl->clk = devm_clk_get(pctrl->dev, NULL);
	if (IS_ERR(pctrl->clk)) {
		ret = PTR_ERR(pctrl->clk);
		dev_err(pctrl->dev, "failed to get GPIO clk : %i\n", ret);
		return ret;
	}
	clk = devm_clk_get_enabled(pctrl->dev, NULL);
	if (IS_ERR(clk))
		return dev_err_probe(pctrl->dev, PTR_ERR(clk),
				     "failed to enable GPIO clk\n");

	spin_lock_init(&pctrl->lock);
	spin_lock_init(&pctrl->bitmap_lock);

	platform_set_drvdata(pdev, pctrl);

	ret = clk_prepare_enable(pctrl->clk);
	if (ret) {
		dev_err(pctrl->dev, "failed to enable GPIO clk: %i\n", ret);
		return ret;
	}

	ret = devm_add_action_or_reset(&pdev->dev, rzg2l_pinctrl_clk_disable,
				       pctrl->clk);
	if (ret) {
		dev_err(pctrl->dev,
			"failed to register GPIO clk disable action, %i\n",
			ret);
		return ret;
	}

	ret = rzg2l_pinctrl_register(pctrl);
	if (ret)
		return ret;