ath79: gpio-rb4xx: use devm_mutex_init
authorRosen Penev <rosenp@gmail.com>
Thu, 3 Oct 2024 23:06:31 +0000 (16:06 -0700)
committerRobert Marko <robimarko@gmail.com>
Tue, 8 Oct 2024 17:34:38 +0000 (19:34 +0200)
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>
target/linux/ath79/files/drivers/gpio/gpio-rb4xx.c

index f8022436e09da69539a1bb29648ecadacde0790c..db381f5d30fc5ee81c2bc29c197d46a75d6be99f 100644 (file)
@@ -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",