Skip to content

Commit

Permalink
gpio: gpio-regmap: Use devm_add_action_or_reset()
Browse files Browse the repository at this point in the history
Slightly simplify the devm_gpio_regmap_register() by using the
devm_add_action_or_reset().

Reviewed-by: Andy Shevchenko <[email protected]>
Reviewed-by: Michael Walle <[email protected]>
Signed-off-by: Matti Vaittinen <[email protected]>
Signed-off-by: Bartosz Golaszewski <[email protected]>
  • Loading branch information
M-Vaittinen authored and brgl committed Jun 4, 2021
1 parent bd56b05 commit 40e568f
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions drivers/gpio/gpio-regmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

/**
Expand All @@ -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;
}
Expand Down

0 comments on commit 40e568f

Please sign in to comment.