]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
gpio: gpio-regmap: Use devm_add_action_or_reset()
authorMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Thu, 3 Jun 2021 10:00:21 +0000 (13:00 +0300)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Fri, 4 Jun 2021 18:53:51 +0000 (20:53 +0200)
Slightly simplify the devm_gpio_regmap_register() by using the
devm_add_action_or_reset().

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Michael Walle <michael@walle.cc>
Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/gpio/gpio-regmap.c

index 134cedf151a7e98100458d5cf9947d21ab9ec71e..1ead1290eb3f415548613e78d67bcabc9ade13c4 100644 (file)
@@ -311,9 +311,9 @@ void gpio_regmap_unregister(struct gpio_regmap *gpio)
 }
 EXPORT_SYMBOL_GPL(gpio_regmap_unregister);
 
-static void devm_gpio_regmap_unregister(struct device *dev, void *res)
+static void devm_gpio_regmap_unregister(void *res)
 {
-       gpio_regmap_unregister(*(struct gpio_regmap **)res);
+       gpio_regmap_unregister(res);
 }
 
 /**
@@ -330,20 +330,17 @@ static void devm_gpio_regmap_unregister(struct device *dev, void *res)
 struct gpio_regmap *devm_gpio_regmap_register(struct device *dev,
                                              const struct gpio_regmap_config *config)
 {
-       struct gpio_regmap **ptr, *gpio;
-
-       ptr = devres_alloc(devm_gpio_regmap_unregister, sizeof(*ptr),
-                          GFP_KERNEL);
-       if (!ptr)
-               return ERR_PTR(-ENOMEM);
+       struct gpio_regmap *gpio;
+       int ret;
 
        gpio = gpio_regmap_register(config);
-       if (!IS_ERR(gpio)) {
-               *ptr = gpio;
-               devres_add(dev, ptr);
-       } else {
-               devres_free(ptr);
-       }
+
+       if (IS_ERR(gpio))
+               return gpio;
+
+       ret = devm_add_action_or_reset(dev, devm_gpio_regmap_unregister, gpio);
+       if (ret)
+               return ERR_PTR(ret);
 
        return gpio;
 }