On 17/10/2023 17.33, Marek Vasut wrote:
> On 10/17/23 15:29, Rasmus Villemoes wrote:

>> static int led_gpio_bind(struct udevice *parent)
>> {
...
>>         ret = device_bind_driver_to_node(parent, "gpio_led",
>>                          ofnode_get_name(node),
>>                          node, &dev);
>>
>> static int bcm6753_led_bind(struct udevice *parent)
>> {
>>
...
>>         ret = device_bind_driver_to_node(parent, "bcm6753-led",
>>                          ofnode_get_name(node),
>>                          node, &dev);
>>
>> and that string can, if I'm not mistaken, be gotten from
>> parent->driver->name.
> 
> Which string ? The "bcm6753-led" is driver name , so that would have to
> be parametrized.

Exactly. The only difference between the two examples (apart from the
scope of the variables) is the driver name, but I think a
generic_led_bind() could just do this inside the loop:

  device_bind_driver_to_node(parent, parent->driver->name,
                          ofnode_get_name(node),
                          node, &dev);

and with that we could have most, if not all, existing .bind methods
assigned directly to generic_led_bind(), we don't even need one-line
wrapper functions in each driver passing that string explicitly.
> Make sure you test the 'led' command. The LEDs might be bound, but not
> probed (so label parsing in LED probe would be too late), and if I
> recall it right, the label parsing has to be in post-bind for the labels
> to correctly show in the 'led' command listing.

It's the led command I'm testing with (with my "new" driver for the
lp5562), and where I see the problems. Currently, the top node also gets
listed in "led list" as led-controller@30 (it's an i2c device), but
probe of that device fails because the logic in the .probe method thinks
this is a subnode (the pattern is the same as in e.g. cortina_led_probe).

Since I'm simply copying the pattern from existing drivers, I'm pretty
sure those other drivers are also currently broken (see also the fixups
I mentioned).

> I am all for generic_led_bind() .

I'll try to write some real patches.

Rasmus

Reply via email to