diff mbox series

[v7,1/5] leds: populate the device's of_node when possible

Message ID 20190918145730.22805-2-jjhiblot@ti.com (mailing list archive)
State New, archived
Headers show
Series Add a generic driver for LED-based backlight | expand

Commit Message

Jean-Jacques Hiblot Sept. 18, 2019, 2:57 p.m. UTC
If initialization data is available and its fwnode is actually a of_node,
store this information in the led device's structure. This will allow the
device to use or provide OF-based API such (devm_xxx).

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---
 drivers/leds/led-class.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Jacek Anaszewski Sept. 24, 2019, 9:03 p.m. UTC | #1
Hi Jean,

Thank you for rebasing the set

On 9/18/19 4:57 PM, Jean-Jacques Hiblot wrote:
> If initialization data is available and its fwnode is actually a of_node,
> store this information in the led device's structure. This will allow the
> device to use or provide OF-based API such (devm_xxx).
> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
>  drivers/leds/led-class.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
> index 647b1263c579..c2167b66b61f 100644
> --- a/drivers/leds/led-class.c
> +++ b/drivers/leds/led-class.c
> @@ -276,8 +276,11 @@ int led_classdev_register_ext(struct device *parent,
>  		mutex_unlock(&led_cdev->led_access);
>  		return PTR_ERR(led_cdev->dev);
>  	}
> -	if (init_data && init_data->fwnode)
> +	if (init_data && init_data->fwnode) {
>  		led_cdev->dev->fwnode = init_data->fwnode;
> +		if (is_of_node(init_data->fwnode))
> +			led_cdev->dev->of_node = to_of_node(init_data->fwnode);

It would be step backwards. You can do the conversion in the place of
use i.e. in devm_led_get().

> +	}
>  
>  	if (ret)
>  		dev_warn(parent, "Led %s renamed to %s due to name collision",
>
Jean-Jacques Hiblot Oct. 2, 2019, 1:58 p.m. UTC | #2
Hi Jacek,

On 24/09/2019 23:03, Jacek Anaszewski wrote:
> Hi Jean,
>
> Thank you for rebasing the set
>
> On 9/18/19 4:57 PM, Jean-Jacques Hiblot wrote:
>> If initialization data is available and its fwnode is actually a of_node,
>> store this information in the led device's structure. This will allow the
>> device to use or provide OF-based API such (devm_xxx).
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
>> ---
>>   drivers/leds/led-class.c | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
>> index 647b1263c579..c2167b66b61f 100644
>> --- a/drivers/leds/led-class.c
>> +++ b/drivers/leds/led-class.c
>> @@ -276,8 +276,11 @@ int led_classdev_register_ext(struct device *parent,
>>   		mutex_unlock(&led_cdev->led_access);
>>   		return PTR_ERR(led_cdev->dev);
>>   	}
>> -	if (init_data && init_data->fwnode)
>> +	if (init_data && init_data->fwnode) {
>>   		led_cdev->dev->fwnode = init_data->fwnode;
>> +		if (is_of_node(init_data->fwnode))
>> +			led_cdev->dev->of_node = to_of_node(init_data->fwnode);
> It would be step backwards. You can do the conversion in the place of
> use i.e. in devm_led_get().

Could be done. But it would break another use case I have. I'm also 
working on the regulator support and for this one, of_node needs to be 
populated.

Is there a problem populating of_node if the LED is indeed described in 
the DT ?

JJ

>
>> +	}
>>   
>>   	if (ret)
>>   		dev_warn(parent, "Led %s renamed to %s due to name collision",
>>
Jacek Anaszewski Oct. 2, 2019, 7:47 p.m. UTC | #3
Hi Jean,

On 10/2/19 3:58 PM, Jean-Jacques Hiblot wrote:
> Hi Jacek,
> 
> On 24/09/2019 23:03, Jacek Anaszewski wrote:
>> Hi Jean,
>>
>> Thank you for rebasing the set
>>
>> On 9/18/19 4:57 PM, Jean-Jacques Hiblot wrote:
>>> If initialization data is available and its fwnode is actually a
>>> of_node,
>>> store this information in the led device's structure. This will allow
>>> the
>>> device to use or provide OF-based API such (devm_xxx).
>>>
>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
>>> ---
>>>   drivers/leds/led-class.c | 5 ++++-
>>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
>>> index 647b1263c579..c2167b66b61f 100644
>>> --- a/drivers/leds/led-class.c
>>> +++ b/drivers/leds/led-class.c
>>> @@ -276,8 +276,11 @@ int led_classdev_register_ext(struct device
>>> *parent,
>>>           mutex_unlock(&led_cdev->led_access);
>>>           return PTR_ERR(led_cdev->dev);
>>>       }
>>> -    if (init_data && init_data->fwnode)
>>> +    if (init_data && init_data->fwnode) {
>>>           led_cdev->dev->fwnode = init_data->fwnode;
>>> +        if (is_of_node(init_data->fwnode))
>>> +            led_cdev->dev->of_node = to_of_node(init_data->fwnode);
>> It would be step backwards. You can do the conversion in the place of
>> use i.e. in devm_led_get().
> 
> Could be done. But it would break another use case I have. I'm also
> working on the regulator support and for this one, of_node needs to be
> populated.

I thought that regulator core can do the conversion to of_node itself,
but this seems not to be the case.

> Is there a problem populating of_node if the LED is indeed described in
> the DT ?

No, if it is not possible to do it otherwise.
diff mbox series

Patch

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index 647b1263c579..c2167b66b61f 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -276,8 +276,11 @@  int led_classdev_register_ext(struct device *parent,
 		mutex_unlock(&led_cdev->led_access);
 		return PTR_ERR(led_cdev->dev);
 	}
-	if (init_data && init_data->fwnode)
+	if (init_data && init_data->fwnode) {
 		led_cdev->dev->fwnode = init_data->fwnode;
+		if (is_of_node(init_data->fwnode))
+			led_cdev->dev->of_node = to_of_node(init_data->fwnode);
+	}
 
 	if (ret)
 		dev_warn(parent, "Led %s renamed to %s due to name collision",