linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
@ 2021-02-04 14:37 Sven Schuchmann
  2021-02-04 14:52 ` Pavel Machek
  0 siblings, 1 reply; 7+ messages in thread
From: Sven Schuchmann @ 2021-02-04 14:37 UTC (permalink / raw)
  Cc: Sven Schuchmann, Pavel Machek, Dan Murphy, Rob Herring,
	linux-leds, devicetree, linux-kernel

In order to use a multicolor-led together with a trigger
the led needs to have an intensity set to see something.
The trigger changes the brightness of the led but if there
is no intensity we actually see nothing.

This patch adds the ability to set the default intensity
of each multi-led node so that it is turned on from DT.
If no intensity is given the led will be initialized
with full intensity.

Part 1 updates the documentation.
Part 2 removes an unused variable.
Part 3 sets the initial intensity to full.
Part 4 reads the default intensity from DT

changes in v1
 - fix dt_binding_check errors

changes in v2
 - sets default intensity to full
 - adds the property to the multi-led node

Signed-off-by: Sven Schuchmann <schuchmann@schleissheimer.de>
---
 Documentation/devicetree/bindings/leds/leds-lp50xx.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
index c192b5feadc7..2bc25b2fc94d 100644
--- a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
+++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
@@ -65,6 +65,11 @@ patternProperties:
           This property denotes the LED module number(s) that is used on the
           for the child node.  The LED modules can either be used stand alone
           or grouped into a module bank.
+      default-intensity:
+        minItems: 1
+        maxItems: 3
+        description:
+          The default intensity the multi-led gets initialised with.
 
     patternProperties:
       "(^led-[0-9a-f]$|led)":
@@ -99,6 +104,7 @@ examples:
                reg = <0x1>;
                color = <LED_COLOR_ID_RGB>;
                function = LED_FUNCTION_CHARGING;
+               default-intensity = <100 0 0>;
 
                led-0 {
                    color = <LED_COLOR_ID_RED>;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-04 14:37 [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT Sven Schuchmann
@ 2021-02-04 14:52 ` Pavel Machek
  2021-02-05  9:57   ` AW: " Sven Schuchmann
  0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2021-02-04 14:52 UTC (permalink / raw)
  To: Sven Schuchmann
  Cc: Dan Murphy, Rob Herring, linux-leds, devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1982 bytes --]

Hi!

> In order to use a multicolor-led together with a trigger
> the led needs to have an intensity set to see something.
> The trigger changes the brightness of the led but if there
> is no intensity we actually see nothing.
> 
> This patch adds the ability to set the default intensity
> of each multi-led node so that it is turned on from DT.
> If no intensity is given the led will be initialized
> with full intensity.
> 
> Part 1 updates the documentation.
> Part 2 removes an unused variable.
> Part 3 sets the initial intensity to full.
> Part 4 reads the default intensity from DT
> 

> diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> index c192b5feadc7..2bc25b2fc94d 100644
> --- a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> +++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> @@ -65,6 +65,11 @@ patternProperties:
>            This property denotes the LED module number(s) that is used on the
>            for the child node.  The LED modules can either be used stand alone
>            or grouped into a module bank.
> +      default-intensity:
> +        minItems: 1
> +        maxItems: 3
> +        description:

Do we need more than three for RGBW and similar?

> +          The default intensity the multi-led gets initialised with.
>  
>      patternProperties:
>        "(^led-[0-9a-f]$|led)":
> @@ -99,6 +104,7 @@ examples:
>                 reg = <0x1>;
>                 color = <LED_COLOR_ID_RGB>;
>                 function = LED_FUNCTION_CHARGING;
> +               default-intensity = <100 0 0>;
>  
>                 led-0 {
>                     color = <LED_COLOR_ID_RED>;

Should this go to leds-class-multicolor.yaml ? Can you make example
<255 120 0> or something like that, so make it clear it is not
percent?

Best regards,
								Pavel

-- 
http://www.livejournal.com/~pavelmachek

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* AW: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-04 14:52 ` Pavel Machek
@ 2021-02-05  9:57   ` Sven Schuchmann
  2021-02-05 10:23     ` Pavel Machek
  0 siblings, 1 reply; 7+ messages in thread
From: Sven Schuchmann @ 2021-02-05  9:57 UTC (permalink / raw)
  To: Pavel Machek, Dan Murphy
  Cc: Rob Herring, linux-leds, devicetree, linux-kernel

Hello Pavel, hello Dan,

> > diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-
> lp50xx.yaml
> > index c192b5feadc7..2bc25b2fc94d 100644
> > --- a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> > +++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> > @@ -65,6 +65,11 @@ patternProperties:
> >            This property denotes the LED module number(s) that is used on the
> >            for the child node.  The LED modules can either be used stand alone
> >            or grouped into a module bank.
> > +      default-intensity:
> > +        minItems: 1
> > +        maxItems: 3
> > +        description:
> 
> Do we need more than three for RGBW and similar?

AFAIK the lp50xx supports only RGB. So I would go for that.


> >      patternProperties:
> >        "(^led-[0-9a-f]$|led)":
> > @@ -99,6 +104,7 @@ examples:
> >                 reg = <0x1>;
> >                 color = <LED_COLOR_ID_RGB>;
> >                 function = LED_FUNCTION_CHARGING;
> > +               default-intensity = <100 0 0>;
> >
> >                 led-0 {
> >                     color = <LED_COLOR_ID_RED>;
> 
> Should this go to leds-class-multicolor.yaml ? 

I think then all drivers should support it,  but I cannot change all drivers. 
So I would only leave it in there.


> Can you make example
> <255 120 0> or something like that, so make it clear it is not
> percent?

Sure

Best Regards,

   Sven




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-05  9:57   ` AW: " Sven Schuchmann
@ 2021-02-05 10:23     ` Pavel Machek
  2021-02-05 18:37       ` Jacek Anaszewski
  0 siblings, 1 reply; 7+ messages in thread
From: Pavel Machek @ 2021-02-05 10:23 UTC (permalink / raw)
  To: Sven Schuchmann
  Cc: Dan Murphy, Rob Herring, linux-leds, devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 822 bytes --]

Hi!

> > >      patternProperties:
> > >        "(^led-[0-9a-f]$|led)":
> > > @@ -99,6 +104,7 @@ examples:
> > >                 reg = <0x1>;
> > >                 color = <LED_COLOR_ID_RGB>;
> > >                 function = LED_FUNCTION_CHARGING;
> > > +               default-intensity = <100 0 0>;
> > >
> > >                 led-0 {
> > >                     color = <LED_COLOR_ID_RED>;
> > 
> > Should this go to leds-class-multicolor.yaml ? 
> 
> I think then all drivers should support it,  but I cannot change all drivers. 
> So I would only leave it in there.

It really should be in common binding, and no, that does not mean you
need to change all the drivers.

Plus there's at most two of them at the moment.

Best regards,
							Pavel

-- 
http://www.livejournal.com/~pavelmachek

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-05 10:23     ` Pavel Machek
@ 2021-02-05 18:37       ` Jacek Anaszewski
  2021-02-06 13:14         ` AW: " Sven Schuchmann
  0 siblings, 1 reply; 7+ messages in thread
From: Jacek Anaszewski @ 2021-02-05 18:37 UTC (permalink / raw)
  To: Pavel Machek, Sven Schuchmann
  Cc: Dan Murphy, Rob Herring, linux-leds, devicetree, linux-kernel

Hi Pavel,

On 2/5/21 11:23 AM, Pavel Machek wrote:
> Hi!
> 
>>>>       patternProperties:
>>>>         "(^led-[0-9a-f]$|led)":
>>>> @@ -99,6 +104,7 @@ examples:
>>>>                  reg = <0x1>;
>>>>                  color = <LED_COLOR_ID_RGB>;
>>>>                  function = LED_FUNCTION_CHARGING;
>>>> +               default-intensity = <100 0 0>;

How will you know which array position is for which child LED?
I presume DT child nodes are not guaranteed to be parsed in the order
of declaration?

>>>>
>>>>                  led-0 {
>>>>                      color = <LED_COLOR_ID_RED>;
>>>
>>> Should this go to leds-class-multicolor.yaml ?
>>
>> I think then all drivers should support it,  but I cannot change all drivers.
>> So I would only leave it in there.
> 
> It really should be in common binding, and no, that does not mean you
> need to change all the drivers.
> 
> Plus there's at most two of them at the moment.
> 
> Best regards,
> 							Pavel
> 

-- 
Best regards,
Jacek Anaszewski

^ permalink raw reply	[flat|nested] 7+ messages in thread

* AW: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-05 18:37       ` Jacek Anaszewski
@ 2021-02-06 13:14         ` Sven Schuchmann
  2021-02-06 20:58           ` Jacek Anaszewski
  0 siblings, 1 reply; 7+ messages in thread
From: Sven Schuchmann @ 2021-02-06 13:14 UTC (permalink / raw)
  To: Jacek Anaszewski, Pavel Machek
  Cc: Dan Murphy, Rob Herring, linux-leds, devicetree, linux-kernel

Hello Dan,

> Von: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> Gesendet: Freitag, 5. Februar 2021 19:37
> Hi Pavel,
> 
> On 2/5/21 11:23 AM, Pavel Machek wrote:
> > Hi!
> >
> >>>>       patternProperties:
> >>>>         "(^led-[0-9a-f]$|led)":
> >>>> @@ -99,6 +104,7 @@ examples:
> >>>>                  reg = <0x1>;
> >>>>                  color = <LED_COLOR_ID_RGB>;
> >>>>                  function = LED_FUNCTION_CHARGING;
> >>>> +               default-intensity = <100 0 0>;
> 
> How will you know which array position is for which child LED?
> I presume DT child nodes are not guaranteed to be parsed in the order
> of declaration?

I tried to fiddle this out, but it seems Jacek is right over here.
The multi-led definition looks like this (from the documentation leds-lp50xx.yaml)

        multi-led@1 {
               #address-cells = <1>;
               #size-cells = <0>;
               reg = <0x1>;
               color = <LED_COLOR_ID_RGB>;
               function = LED_FUNCTION_CHARGING;

               led-0 {
                   color = <LED_COLOR_ID_RED>;
               };

               led-1 {
                   color = <LED_COLOR_ID_GREEN>;
               };

               led-2 {
                   color = <LED_COLOR_ID_BLUE>;
               };
          };

But it seems that the color definition of each led is ignored.
By ignored I mean the driver does not take care which color
is at which position. So if I change led-0 to be LED_COLOR_ID_BLUE
and led-2 to be LED_COLOR_ID_RED nothing will change if I write
from userspace. Could you help to clarify?
Then it is even hard to know which led to set with default-intensity.

Also it seems that the enumeration of the multi-leds should
start with multi-led@0 (and not 1 as in the documentation).

Best Regards,

   Sven


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: AW: [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT
  2021-02-06 13:14         ` AW: " Sven Schuchmann
@ 2021-02-06 20:58           ` Jacek Anaszewski
  0 siblings, 0 replies; 7+ messages in thread
From: Jacek Anaszewski @ 2021-02-06 20:58 UTC (permalink / raw)
  To: Sven Schuchmann, Pavel Machek
  Cc: Dan Murphy, Rob Herring, linux-leds, devicetree, linux-kernel

Sven,

On 2/6/21 2:14 PM, Sven Schuchmann wrote:
> Hello Dan,
> 
>> Von: Jacek Anaszewski <jacek.anaszewski@gmail.com>
>> Gesendet: Freitag, 5. Februar 2021 19:37
>> Hi Pavel,
>>
>> On 2/5/21 11:23 AM, Pavel Machek wrote:
>>> Hi!
>>>
>>>>>>        patternProperties:
>>>>>>          "(^led-[0-9a-f]$|led)":
>>>>>> @@ -99,6 +104,7 @@ examples:
>>>>>>                   reg = <0x1>;
>>>>>>                   color = <LED_COLOR_ID_RGB>;
>>>>>>                   function = LED_FUNCTION_CHARGING;
>>>>>> +               default-intensity = <100 0 0>;
>>
>> How will you know which array position is for which child LED?
>> I presume DT child nodes are not guaranteed to be parsed in the order
>> of declaration?
> 
> I tried to fiddle this out, but it seems Jacek is right over here.
> The multi-led definition looks like this (from the documentation leds-lp50xx.yaml)
> 
>          multi-led@1 {
>                 #address-cells = <1>;
>                 #size-cells = <0>;
>                 reg = <0x1>;
>                 color = <LED_COLOR_ID_RGB>;
>                 function = LED_FUNCTION_CHARGING;
> 
>                 led-0 {
>                     color = <LED_COLOR_ID_RED>;
>                 };
> 
>                 led-1 {
>                     color = <LED_COLOR_ID_GREEN>;
>                 };
> 
>                 led-2 {
>                     color = <LED_COLOR_ID_BLUE>;
>                 };
>            };
> 
> But it seems that the color definition of each led is ignored.
> By ignored I mean the driver does not take care which color
> is at which position. So if I change led-0 to be LED_COLOR_ID_BLUE
> and led-2 to be LED_COLOR_ID_RED nothing will change if I write
> from userspace. Could you help to clarify?
> Then it is even hard to know which led to set with default-intensity.

See Documentation/ABI/testing/sysfs-class-led-multicolor and
documentation of multi_index and multi_intensity files.
It is the multi_index file that tells what is the order of colors
in the multi_intensity file.

And that depends on the order of enumeration of the nodes by DT parser.

> Also it seems that the enumeration of the multi-leds should
> start with multi-led@0 (and not 1 as in the documentation).

The @unit-address part of node name must match the first address
specified in the reg property of the node, so this is correct.
-- 
Best regards,
Jacek Anaszewski

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-02-06 21:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04 14:37 [PATCH v2 1/4] leds: lp50xx: add setting of default intensity from DT Sven Schuchmann
2021-02-04 14:52 ` Pavel Machek
2021-02-05  9:57   ` AW: " Sven Schuchmann
2021-02-05 10:23     ` Pavel Machek
2021-02-05 18:37       ` Jacek Anaszewski
2021-02-06 13:14         ` AW: " Sven Schuchmann
2021-02-06 20:58           ` Jacek Anaszewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).