leds: led-class: Add __devm_led_get() helper
Add a __devm_led_get() helper which registers a passed in led_classdev with devm for unregistration. This is a preparation patch for adding a generic (non devicetree specific) devm_led_get() function. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Lee Jones <lee@kernel.org> Link: https://lore.kernel.org/r/20230120114524.408368-4-hdegoede@redhat.com
This commit is contained in:
Родитель
fafef58ef4
Коммит
537bdca2a0
|
@ -274,6 +274,22 @@ static void devm_led_release(struct device *dev, void *res)
|
|||
led_put(*p);
|
||||
}
|
||||
|
||||
static struct led_classdev *__devm_led_get(struct device *dev, struct led_classdev *led)
|
||||
{
|
||||
struct led_classdev **dr;
|
||||
|
||||
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);
|
||||
|
||||
return led;
|
||||
}
|
||||
|
||||
/**
|
||||
* devm_of_led_get - Resource-managed request of a LED device
|
||||
* @dev: LED consumer
|
||||
|
@ -289,7 +305,6 @@ struct led_classdev *__must_check devm_of_led_get(struct device *dev,
|
|||
int index)
|
||||
{
|
||||
struct led_classdev *led;
|
||||
struct led_classdev **dr;
|
||||
|
||||
if (!dev)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
@ -298,17 +313,7 @@ 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);
|
||||
|
||||
return led;
|
||||
return __devm_led_get(dev, led);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_of_led_get);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче