Commit 40e568f9 authored by Matti Vaittinen's avatar Matti Vaittinen Committed by Bartosz Golaszewski
Browse files

gpio: gpio-regmap: Use devm_add_action_or_reset()



Slightly simplify the devm_gpio_regmap_register() by using the
devm_add_action_or_reset().

Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: default avatarMichael Walle <michael@walle.cc>
Signed-off-by: default avatarMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
parent bd56b051
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -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;
}