pinctrl: renesas: rzg2l: Use devm_clk_get_enabled() helper
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sat, 22 Jul 2023 20:41:56 +0000 (22:41 +0200)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 25 Jul 2023 10:28:45 +0000 (12:28 +0200)
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: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Geert 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: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/pinctrl/renesas/pinctrl-rzg2l.c

index b53d261..0b8d27e 100644 (file)
@@ -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;