]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: ftgpio010: shrink code
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 17 Oct 2024 12:30:44 +0000 (14:30 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 21 Oct 2024 07:23:34 +0000 (09:23 +0200)
Use devm_clk_get_enabled() to drop the goto label from probe() and the
entire remove() callback. Drop platform_set_drvdata() as it's no longer
needed. Drop log noise on success.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20241017123044.75531-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-ftgpio010.c

index 5b07749dbdff23d69556b33a1b3cc7630e5fca01..c35eaa2851d8533309fe04a3e6265d9a7947606d 100644 (file)
@@ -253,18 +253,13 @@ static int ftgpio_gpio_probe(struct platform_device *pdev)
        if (irq < 0)
                return irq;
 
-       g->clk = devm_clk_get(dev, NULL);
-       if (!IS_ERR(g->clk)) {
-               ret = clk_prepare_enable(g->clk);
-               if (ret)
-                       return ret;
-       } else if (PTR_ERR(g->clk) == -EPROBE_DEFER) {
+       g->clk = devm_clk_get_enabled(dev, NULL);
+       if (IS_ERR(g->clk) && PTR_ERR(g->clk) == -EPROBE_DEFER)
                /*
                 * Percolate deferrals, for anything else,
                 * just live without the clocking.
                 */
                return PTR_ERR(g->clk);
-       }
 
        ret = bgpio_init(&g->gc, dev, 4,
                         g->base + GPIO_DATA_IN,
@@ -273,10 +268,9 @@ static int ftgpio_gpio_probe(struct platform_device *pdev)
                         g->base + GPIO_DIR,
                         NULL,
                         0);
-       if (ret) {
-               dev_err(dev, "unable to init generic GPIO\n");
-               goto dis_clk;
-       }
+       if (ret)
+               return dev_err_probe(dev, ret, "unable to init generic GPIO\n");
+
        g->gc.label = dev_name(dev);
        g->gc.base = -1;
        g->gc.parent = dev;
@@ -293,10 +287,9 @@ static int ftgpio_gpio_probe(struct platform_device *pdev)
        girq->num_parents = 1;
        girq->parents = devm_kcalloc(dev, 1, sizeof(*girq->parents),
                                     GFP_KERNEL);
-       if (!girq->parents) {
-               ret = -ENOMEM;
-               goto dis_clk;
-       }
+       if (!girq->parents)
+               return -ENOMEM;
+
        girq->default_type = IRQ_TYPE_NONE;
        girq->handler = handle_bad_irq;
        girq->parents[0] = irq;
@@ -309,26 +302,7 @@ static int ftgpio_gpio_probe(struct platform_device *pdev)
        /* Clear any use of debounce */
        writel(0x0, g->base + GPIO_DEBOUNCE_EN);
 
-       ret = devm_gpiochip_add_data(dev, &g->gc, g);
-       if (ret)
-               goto dis_clk;
-
-       platform_set_drvdata(pdev, g);
-       dev_info(dev, "FTGPIO010 @%p registered\n", g->base);
-
-       return 0;
-
-dis_clk:
-       clk_disable_unprepare(g->clk);
-
-       return ret;
-}
-
-static void ftgpio_gpio_remove(struct platform_device *pdev)
-{
-       struct ftgpio_gpio *g = platform_get_drvdata(pdev);
-
-       clk_disable_unprepare(g->clk);
+       return devm_gpiochip_add_data(dev, &g->gc, g);
 }
 
 static const struct of_device_id ftgpio_gpio_of_match[] = {
@@ -350,6 +324,5 @@ static struct platform_driver ftgpio_gpio_driver = {
                .of_match_table = ftgpio_gpio_of_match,
        },
        .probe = ftgpio_gpio_probe,
-       .remove = ftgpio_gpio_remove,
 };
 builtin_platform_driver(ftgpio_gpio_driver);