mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:46:16 +00:00
gpio: ftgpio010: shrink code
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>
This commit is contained in:
parent
dacd8ed24c
commit
68d51a0207
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user