summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRosen Penev2024-10-03 23:06:31 +0000
committerRobert Marko2024-10-08 17:34:38 +0000
commita35bfa68d3609cd50a92bfc132d5618d05017442 (patch)
treee056145f356258d6a220d9215f67f5950d94a341
parentb37f3def8690f8b81e2fb058a130358514bf2f93 (diff)
downloadopenwrt-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.c19
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",