[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220719191801.345773-2-jjhiblot@traphandler.com>
Date: Tue, 19 Jul 2022 21:17:58 +0200
From: Jean-Jacques Hiblot <jjhiblot@...phandler.com>
To: <pavel@....cz>, <robh+dt@...nel.org>,
<sven.schwermer@...ruptive-technologies.com>,
<krzysztof.kozlowski+dt@...aro.org>
CC: <johan+linaro@...nel.org>, <marijn.suijten@...ainline.org>,
<bjorn.andersson@...aro.org>, <andy.shevchenko@...il.com>,
<linux-leds@...r.kernel.org>, <devicetree@...r.kernel.org>,
<linux-kernel@...r.kernel.org>,
Jean-Jacques Hiblot <jjhiblot@...phandler.com>
Subject: [PATCH v2 1/4] leds: class: simplify the implementation of devm_of_led_get()
Use the devm_add_action_or_reset() helper.
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@...phandler.com>
---
drivers/leds/led-class.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 6a8ea94834fa..2c0d979d0c8a 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -258,11 +258,9 @@ void led_put(struct led_classdev *led_cdev)
}
EXPORT_SYMBOL_GPL(led_put);
-static void devm_led_release(struct device *dev, void *res)
+static void devm_led_release(void *cdev)
{
- struct led_classdev **p = res;
-
- led_put(*p);
+ led_put(cdev);
}
/**
@@ -280,7 +278,7 @@ struct led_classdev *__must_check devm_of_led_get(struct device *dev,
int index)
{
struct led_classdev *led;
- struct led_classdev **dr;
+ int ret;
if (!dev)
return ERR_PTR(-EINVAL);
@@ -289,15 +287,9 @@ struct led_classdev *__must_check devm_of_led_get(struct device *dev,
if (IS_ERR(led))
return led;
- dr = devres_alloc(devm_led_release, sizeof(struct led_classdev *),
- GFP_KERNEL);
- if (!dr) {
- led_put(led);
- return ERR_PTR(-ENOMEM);
- }
-
- *dr = led;
- devres_add(dev, dr);
+ ret = devm_add_action_or_reset(dev, devm_led_release, led);
+ if (ret)
+ return ERR_PTR(ret);
return led;
}
--
2.25.1
Powered by blists - more mailing lists