diff options
| author | Rosen Penev | 2024-10-03 23:06:31 +0000 |
|---|---|---|
| committer | Robert Marko | 2024-10-08 17:34:38 +0000 |
| commit | a35bfa68d3609cd50a92bfc132d5618d05017442 (patch) | |
| tree | e056145f356258d6a220d9215f67f5950d94a341 | |
| parent | b37f3def8690f8b81e2fb058a130358514bf2f93 (diff) | |
| download | openwrt-a35bfa68d3609cd50a92bfc132d5618d05017442.tar.gz | |
ath79: gpio-rb4xx: use devm_mutex_init
Also use devm for gpiochip_add_data.
Allows completely removing the _remove function.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16622
Signed-off-by: Robert Marko <robimarko@gmail.com>
| -rw-r--r-- | target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c b/target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c index f8022436e0..db381f5d30 100644 --- a/target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c +++ b/target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c @@ -105,6 +105,7 @@ static int rb4xx_gpio_probe(struct platform_device *pdev) struct device *parent = dev->parent; struct rb4xx_gpio *gpio; u32 val; + int err; if (!parent) return -ENODEV; @@ -117,7 +118,10 @@ static int rb4xx_gpio_probe(struct platform_device *pdev) gpio->cpld = dev_get_drvdata(parent); gpio->dev = dev; gpio->values = 0; - mutex_init(&gpio->lock); + + err = devm_mutex_init(&pdev->dev, &gpio->lock); + if (err) + return err; gpio->chip.label = "rb4xx-gpio"; gpio->chip.parent = dev; @@ -134,17 +138,7 @@ static int rb4xx_gpio_probe(struct platform_device *pdev) if (!of_property_read_u32(dev->of_node, "base", &val)) gpio->chip.base = val; - return gpiochip_add_data(&gpio->chip, gpio); -} - -static int rb4xx_gpio_remove(struct platform_device *pdev) -{ - struct rb4xx_gpio *gpio = platform_get_drvdata(pdev); - - gpiochip_remove(&gpio->chip); - mutex_destroy(&gpio->lock); - - return 0; + return devm_gpiochip_add_data(&pdev->dev, &gpio->chip, gpio); } static const struct platform_device_id rb4xx_gpio_id_table[] = { @@ -155,7 +149,6 @@ MODULE_DEVICE_TABLE(platform, rb4xx_gpio_id_table); static struct platform_driver rb4xx_gpio_driver = { .probe = rb4xx_gpio_probe, - .remove = rb4xx_gpio_remove, .id_table = rb4xx_gpio_id_table, .driver = { .name = "rb4xx-gpio", |