Re: [PATCH v3 1/4] leds: Add of_led_get() and led_put()

From: Jean-Jacques Hiblot
Date: Fri Jul 12 2019 - 09:52:51 EST


hi Pavel

On 10/07/2019 21:09, Pavel Machek wrote:
On Wed 2019-07-10 14:39:29, Jean-Jacques Hiblot wrote:
From: Tomi Valkeinen <tomi.valkeinen@xxxxxx>

This patch adds basic support for a kernel driver to get a LED device.
This will be used by the led-backlight driver.

Only OF version is implemented for now, and the behavior is similar to
PWM's of_pwm_get() and pwm_put().

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@xxxxxx>


@@ -214,6 +215,55 @@ static int led_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(leds_class_dev_pm_ops, led_suspend, led_resume);
+static int led_match_led_node(struct device *led_dev, const void *data)
+{
+ return led_dev->of_node == data ? 1 : 0;
+}
Get rid of the "? 1 : 0"?
OK


+ led_node = of_parse_phandle(np, "leds", index);
+ if (!led_node)
+ return ERR_PTR(-ENOENT);
+ led_dev = class_find_device(leds_class, NULL, led_node,
+ led_match_led_node);
+ of_node_put(led_node);
+
+ if (!led_dev)
+ return ERR_PTR(-EPROBE_DEFER);
Won't this defer probe "forever" when the driver is not available?

Yes it will.

However I don't see how we can fix this because we don't know for sure that the LED driver will not become available at a later time.

JJ