diff mbox series

[v4,2/3] gpio: gpio-regmap: Use devm_add_action_or_reset()

Message ID cf34b0268bf298314392b0ed8831a4d9cd14efca.1622008846.git.matti.vaittinen@fi.rohmeurope.com
State New
Headers show
Series gpio: gpio-regmap: Support few custom operations | expand

Commit Message

Matti Vaittinen May 26, 2021, 6:10 a.m. UTC
Slightly simplify the devm_gpio_regmap_register() by using the
devm_add_action_or_reset().

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>

---
Changelog v3:
 - gpio-regmap: Use the devm_add_action_or_reset() instead of the
   devm_add_action()
---
 drivers/gpio/gpio-regmap.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

Comments

Michael Walle May 28, 2021, 5:17 p.m. UTC | #1
Am 2021-05-26 08:10, schrieb Matti Vaittinen:
> Slightly simplify the devm_gpio_regmap_register() by using the
> devm_add_action_or_reset().

Reviewed-by: Michael Walle <michael@walle.cc>

-michael
Bartosz Golaszewski June 2, 2021, 11:54 a.m. UTC | #2
On Fri, May 28, 2021 at 7:17 PM Michael Walle <michael@walle.cc> wrote:
>
> Am 2021-05-26 08:10, schrieb Matti Vaittinen:
> > Slightly simplify the devm_gpio_regmap_register() by using the
> > devm_add_action_or_reset().
>
> Reviewed-by: Michael Walle <michael@walle.cc>
>
> -michael

This doesn't apply on its own - looks like it depends on patch 1/3.
Would you mind sending it separately rebased on top of my for-next
branch at https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git/?

Bart
Matti Vaittinen June 3, 2021, 4:26 a.m. UTC | #3
Morning Bart,

On Wed, 2021-06-02 at 13:54 +0200, Bartosz Golaszewski wrote:
> On Fri, May 28, 2021 at 7:17 PM Michael Walle <michael@walle.cc>
> wrote:
> > Am 2021-05-26 08:10, schrieb Matti Vaittinen:
> > > Slightly simplify the devm_gpio_regmap_register() by using the
> > > devm_add_action_or_reset().
> > 
> > Reviewed-by: Michael Walle <michael@walle.cc>
> > 
> > -michael
> 
> This doesn't apply on its own - looks like it depends on patch 1/3.
> Would you mind sending it separately rebased on top of my for-next
> branch at 
> https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git/?
> 

Sure. No problem. I'll respin this sole patch today unless Michael
plans adding other changes - in which case it might be best he includes
this just to avoid the conflicts.

> Bart
Michael Walle June 3, 2021, 7:40 a.m. UTC | #4
Am 3. Juni 2021 06:26:03 MESZ schrieb Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>:
>Morning Bart,
>
>On Wed, 2021-06-02 at 13:54 +0200, Bartosz Golaszewski wrote:
>> On Fri, May 28, 2021 at 7:17 PM Michael Walle <michael@walle.cc>
>> wrote:
>> > Am 2021-05-26 08:10, schrieb Matti Vaittinen:
>> > > Slightly simplify the devm_gpio_regmap_register() by using the
>> > > devm_add_action_or_reset().
>> > 
>> > Reviewed-by: Michael Walle <michael@walle.cc>
>> > 
>> > -michael
>> 
>> This doesn't apply on its own - looks like it depends on patch 1/3.
>> Would you mind sending it separately rebased on top of my for-next
>> branch at 
>> https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git/?
>> 
>
>Sure. No problem. I'll respin this sole patch today unless Michael
>plans adding other changes - in which case it might be best he includes
>this just to avoid the conflicts.

Both are fine by me. I don't expect any conflicts, but I can also pick this up when I'm picking the gpio_regmap_set_drvdata() stuff of the other patch. I'll do it probably tomorrow. 

-michael
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
index 4f0903d1acd5..ce5bc9e0d684 100644
--- a/drivers/gpio/gpio-regmap.c
+++ b/drivers/gpio/gpio-regmap.c
@@ -341,9 +341,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);
 }
 
 /**
@@ -361,20 +361,17 @@  struct gpio_regmap *devm_gpio_regmap_register(struct device *dev,
 					      const struct gpio_regmap_config *config,
 					      const struct gpio_regmap_ops *ops)
 {
-	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, ops);
-	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;
 }