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: 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>
This commit is contained in:
Matti Vaittinen 2021-06-03 13:00:21 +03:00 коммит произвёл Bartosz Golaszewski
Родитель bd56b051c9
Коммит 40e568f9c8
1 изменённых файлов: 11 добавлений и 14 удалений

Просмотреть файл

@ -311,9 +311,9 @@ void gpio_regmap_unregister(struct gpio_regmap *gpio)
} }
EXPORT_SYMBOL_GPL(gpio_regmap_unregister); 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, struct gpio_regmap *devm_gpio_regmap_register(struct device *dev,
const struct gpio_regmap_config *config) const struct gpio_regmap_config *config)
{ {
struct gpio_regmap **ptr, *gpio; struct gpio_regmap *gpio;
int ret;
ptr = devres_alloc(devm_gpio_regmap_unregister, sizeof(*ptr),
GFP_KERNEL);
if (!ptr)
return ERR_PTR(-ENOMEM);
gpio = gpio_regmap_register(config); gpio = gpio_regmap_register(config);
if (!IS_ERR(gpio)) {
*ptr = gpio; if (IS_ERR(gpio))
devres_add(dev, ptr); return gpio;
} else {
devres_free(ptr); ret = devm_add_action_or_reset(dev, devm_gpio_regmap_unregister, gpio);
} if (ret)
return ERR_PTR(ret);
return gpio; return gpio;
} }