diff mbox series

[v32,1/6] dt: bindings: lp50xx: Introduce the lp50xx family of RGB drivers

Message ID 20200722153146.8767-2-dmurphy@ti.com (mailing list archive)
State New, archived
Headers show
Series Multicolor Framework v32 | expand

Commit Message

Dan Murphy July 22, 2020, 3:31 p.m. UTC
Introduce the bindings for the Texas Instruments LP5036, LP5030, LP5024,
LP5018, LP5012 and LP5009 RGB LED device driver.  The LP5036/30/24/18/12/9
can control RGB LEDs individually or as part of a control bank group.
These devices have the ability to adjust the mixing control for the RGB
LEDs to obtain different colors independent of the overall brightness of
the LED grouping.

Datasheet:
http://www.ti.com/lit/ds/symlink/lp5012.pdf
http://www.ti.com/lit/ds/symlink/lp5024.pdf
http://www.ti.com/lit/ds/symlink/lp5036.pdf

Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 .../devicetree/bindings/leds/leds-lp50xx.yaml | 130 ++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/leds/leds-lp50xx.yaml

Comments

Dan Murphy July 28, 2020, 1:39 p.m. UTC | #1
Pavel

On 7/22/20 10:31 AM, Dan Murphy wrote:
> Introduce the bindings for the Texas Instruments LP5036, LP5030, LP5024,
> LP5018, LP5012 and LP5009 RGB LED device driver.  The LP5036/30/24/18/12/9
> can control RGB LEDs individually or as part of a control bank group.
> These devices have the ability to adjust the mixing control for the RGB
> LEDs to obtain different colors independent of the overall brightness of
> the LED grouping.

Were you going to pull this in as a user of the Multicolor framework?

Dan


>
> Datasheet:
> http://www.ti.com/lit/ds/symlink/lp5012.pdf
> http://www.ti.com/lit/ds/symlink/lp5024.pdf
> http://www.ti.com/lit/ds/symlink/lp5036.pdf
>
> Reviewed-by: Rob Herring <robh@kernel.org>
> Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
>   .../devicetree/bindings/leds/leds-lp50xx.yaml | 130 ++++++++++++++++++
>   1 file changed, 130 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
>
> diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> new file mode 100644
> index 000000000000..b2dd1672f12a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
> @@ -0,0 +1,130 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/leds-lp50xx.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: LED driver for LP50XX RGB LED from Texas Instruments.
> +
> +maintainers:
> +  - Dan Murphy <dmurphy@ti.com>
> +
> +description: |
> +  The LP50XX is multi-channel, I2C RGB LED Drivers that can group RGB LEDs into
> +  a LED group or control them individually.
> +
> +  The difference in these RGB LED drivers is the number of supported RGB
> +  modules.
> +
> +  For more product information please see the link below:
> +  https://www.ti.com/lit/ds/symlink/lp5012.pdf
> +  https://www.ti.com/lit/ds/symlink/lp5024.pdf
> +  https://www.ti.com/lit/ds/symlink/lp5036.pdf
> +
> +properties:
> +  compatible:
> +    enum:
> +      - ti,lp5009
> +      - ti,lp5012
> +      - ti,lp5018
> +      - ti,lp5024
> +      - ti,lp5030
> +      - ti,lp5036
> +
> +  reg:
> +    maxItems: 1
> +    description:
> +      I2C slave address
> +      lp5009/12 - 0x14, 0x15, 0x16, 0x17
> +      lp5018/24 - 0x28, 0x29, 0x2a, 0x2b
> +      lp5030/36 - 0x30, 0x31, 0x32, 0x33
> +
> +  enable-gpios:
> +    maxItems: 1
> +    description: GPIO pin to enable/disable the device.
> +
> +  vled-supply:
> +    description: LED supply.
> +
> +patternProperties:
> +  '^multi-led@[0-9a-f]$':
> +    type: object
> +    allOf:
> +      - $ref: leds-class-multicolor.yaml#
> +    properties:
> +      reg:
> +        minItems: 1
> +        maxItems: 12
> +        description:
> +          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.
> +
> +    patternProperties:
> +      "(^led-[0-9a-f]$|led)":
> +        type: object
> +        $ref: common.yaml#
> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +   #include <dt-bindings/gpio/gpio.h>
> +   #include <dt-bindings/leds/common.h>
> +
> +   i2c {
> +       #address-cells = <1>;
> +       #size-cells = <0>;
> +
> +       led-controller@14 {
> +           compatible = "ti,lp5009";
> +           reg = <0x14>;
> +           #address-cells = <1>;
> +           #size-cells = <0>;
> +           enable-gpios = <&gpio1 16>;
> +
> +           multi-led@1 {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               reg = <0x1>;
> +               color = <LED_COLOR_ID_MULTI>;
> +               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>;
> +               };
> +          };
> +
> +          multi-led@2 {
> +            #address-cells = <1>;
> +            #size-cells = <2>;
> +            reg = <0x2 0x3 0x5>;
> +            color = <LED_COLOR_ID_MULTI>;
> +            function = LED_FUNCTION_STANDBY;
> +
> +            led-6 {
> +              color = <LED_COLOR_ID_RED>;
> +            };
> +
> +            led-7 {
> +              color = <LED_COLOR_ID_GREEN>;
> +            };
> +
> +            led-8 {
> +              color = <LED_COLOR_ID_BLUE>;
> +            };
> +         };
> +       };
> +    };
> +
> +...
Dan Murphy Aug. 4, 2020, 7:55 p.m. UTC | #2
Pavel

On 7/28/20 8:39 AM, Dan Murphy wrote:
> Pavel
>
> On 7/22/20 10:31 AM, Dan Murphy wrote:
>> Introduce the bindings for the Texas Instruments LP5036, LP5030, LP5024,
>> LP5018, LP5012 and LP5009 RGB LED device driver.  The 
>> LP5036/30/24/18/12/9
>> can control RGB LEDs individually or as part of a control bank group.
>> These devices have the ability to adjust the mixing control for the RGB
>> LEDs to obtain different colors independent of the overall brightness of
>> the LED grouping.
>
> Were you going to pull this in as a user of the Multicolor framework?
>
Gentle ping.  I saw you were going to push the Omnia these should be 
ready too


> Dan
>
>
>>
>> Datasheet:
>> http://www.ti.com/lit/ds/symlink/lp5012.pdf
>> http://www.ti.com/lit/ds/symlink/lp5024.pdf
>> http://www.ti.com/lit/ds/symlink/lp5036.pdf
>>
>> Reviewed-by: Rob Herring <robh@kernel.org>
>> Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> ---
>>   .../devicetree/bindings/leds/leds-lp50xx.yaml | 130 ++++++++++++++++++
>>   1 file changed, 130 insertions(+)
>>   create mode 100644 
>> Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml 
>> b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
>> new file mode 100644
>> index 000000000000..b2dd1672f12a
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
>> @@ -0,0 +1,130 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/leds/leds-lp50xx.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: LED driver for LP50XX RGB LED from Texas Instruments.
>> +
>> +maintainers:
>> +  - Dan Murphy <dmurphy@ti.com>
>> +
>> +description: |
>> +  The LP50XX is multi-channel, I2C RGB LED Drivers that can group 
>> RGB LEDs into
>> +  a LED group or control them individually.
>> +
>> +  The difference in these RGB LED drivers is the number of supported 
>> RGB
>> +  modules.
>> +
>> +  For more product information please see the link below:
>> +  https://www.ti.com/lit/ds/symlink/lp5012.pdf
>> +  https://www.ti.com/lit/ds/symlink/lp5024.pdf
>> +  https://www.ti.com/lit/ds/symlink/lp5036.pdf
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - ti,lp5009
>> +      - ti,lp5012
>> +      - ti,lp5018
>> +      - ti,lp5024
>> +      - ti,lp5030
>> +      - ti,lp5036
>> +
>> +  reg:
>> +    maxItems: 1
>> +    description:
>> +      I2C slave address
>> +      lp5009/12 - 0x14, 0x15, 0x16, 0x17
>> +      lp5018/24 - 0x28, 0x29, 0x2a, 0x2b
>> +      lp5030/36 - 0x30, 0x31, 0x32, 0x33
>> +
>> +  enable-gpios:
>> +    maxItems: 1
>> +    description: GPIO pin to enable/disable the device.
>> +
>> +  vled-supply:
>> +    description: LED supply.
>> +
>> +patternProperties:
>> +  '^multi-led@[0-9a-f]$':
>> +    type: object
>> +    allOf:
>> +      - $ref: leds-class-multicolor.yaml#
>> +    properties:
>> +      reg:
>> +        minItems: 1
>> +        maxItems: 12
>> +        description:
>> +          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.
>> +
>> +    patternProperties:
>> +      "(^led-[0-9a-f]$|led)":
>> +        type: object
>> +        $ref: common.yaml#
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +
>> +examples:
>> +  - |
>> +   #include <dt-bindings/gpio/gpio.h>
>> +   #include <dt-bindings/leds/common.h>
>> +
>> +   i2c {
>> +       #address-cells = <1>;
>> +       #size-cells = <0>;
>> +
>> +       led-controller@14 {
>> +           compatible = "ti,lp5009";
>> +           reg = <0x14>;
>> +           #address-cells = <1>;
>> +           #size-cells = <0>;
>> +           enable-gpios = <&gpio1 16>;
>> +
>> +           multi-led@1 {
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               reg = <0x1>;
>> +               color = <LED_COLOR_ID_MULTI>;
>> +               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>;
>> +               };
>> +          };
>> +
>> +          multi-led@2 {
>> +            #address-cells = <1>;
>> +            #size-cells = <2>;
>> +            reg = <0x2 0x3 0x5>;
>> +            color = <LED_COLOR_ID_MULTI>;
>> +            function = LED_FUNCTION_STANDBY;
>> +
>> +            led-6 {
>> +              color = <LED_COLOR_ID_RED>;
>> +            };
>> +
>> +            led-7 {
>> +              color = <LED_COLOR_ID_GREEN>;
>> +            };
>> +
>> +            led-8 {
>> +              color = <LED_COLOR_ID_BLUE>;
>> +            };
>> +         };
>> +       };
>> +    };
>> +
>> +...
Dan Murphy Aug. 7, 2020, 1:42 p.m. UTC | #3
Pavel

On 8/4/20 2:55 PM, Dan Murphy wrote:
> Pavel
>
> On 7/28/20 8:39 AM, Dan Murphy wrote:
>> Pavel
>>
>> On 7/22/20 10:31 AM, Dan Murphy wrote:
>>> Introduce the bindings for the Texas Instruments LP5036, LP5030, 
>>> LP5024,
>>> LP5018, LP5012 and LP5009 RGB LED device driver.  The 
>>> LP5036/30/24/18/12/9
>>> can control RGB LEDs individually or as part of a control bank group.
>>> These devices have the ability to adjust the mixing control for the RGB
>>> LEDs to obtain different colors independent of the overall 
>>> brightness of
>>> the LED grouping.
>>
>> Were you going to pull this in as a user of the Multicolor framework?
>>
> Gentle ping.  I saw you were going to push the Omnia these should be 
> ready too
>
Did you need me to rebase these patches and add the Ack from Linus on 
the defconfig patch?

Dan
Pavel Machek Aug. 11, 2020, 10:20 a.m. UTC | #4
Hi!
On Wed 2020-07-22 10:31:41, Dan Murphy wrote:
> Introduce the bindings for the Texas Instruments LP5036, LP5030, LP5024,
> LP5018, LP5012 and LP5009 RGB LED device driver.  The LP5036/30/24/18/12/9
> can control RGB LEDs individually or as part of a control bank group.
> These devices have the ability to adjust the mixing control for the RGB
> LEDs to obtain different colors independent of the overall brightness of
> the LED grouping.
> 
> Datasheet:
> http://www.ti.com/lit/ds/symlink/lp5012.pdf
> http://www.ti.com/lit/ds/symlink/lp5024.pdf
> http://www.ti.com/lit/ds/symlink/lp5036.pdf
> 
> Reviewed-by: Rob Herring <robh@kernel.org>
> Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> Signed-off-by: Dan Murphy <dmurphy@ti.com>

Acked-by: Pavel Machek <pavel@ucw.cz>

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

These are just examples, but we should really separate "MULTI" colors
and "RGB".

Best regards,
									Pavel
Pavel Machek Aug. 11, 2020, 10:32 a.m. UTC | #5
On Fri 2020-08-07 08:42:32, Dan Murphy wrote:
> Pavel
> 
> On 8/4/20 2:55 PM, Dan Murphy wrote:
> > Pavel
> > 
> > On 7/28/20 8:39 AM, Dan Murphy wrote:
> > > Pavel
> > > 
> > > On 7/22/20 10:31 AM, Dan Murphy wrote:
> > > > Introduce the bindings for the Texas Instruments LP5036, LP5030,
> > > > LP5024,
> > > > LP5018, LP5012 and LP5009 RGB LED device driver.  The
> > > > LP5036/30/24/18/12/9
> > > > can control RGB LEDs individually or as part of a control bank group.
> > > > These devices have the ability to adjust the mixing control for the RGB
> > > > LEDs to obtain different colors independent of the overall
> > > > brightness of
> > > > the LED grouping.
> > > 
> > > Were you going to pull this in as a user of the Multicolor framework?
> > > 
> > Gentle ping.  I saw you were going to push the Omnia these should be
> > ready too
> > 
> Did you need me to rebase these patches and add the Ack from Linus on the
> defconfig patch?

The patches look quite close, yes. If you could fix review
comments/adds acks...

I'm not sure about the defconfig patch, I may not be right person to
take it.

Best regards,
									Pavel
Dan Murphy Aug. 11, 2020, 5:07 p.m. UTC | #6
Pavel

On 8/11/20 5:20 AM, Pavel Machek wrote:
> Hi!
> On Wed 2020-07-22 10:31:41, Dan Murphy wrote:
>> Introduce the bindings for the Texas Instruments LP5036, LP5030, LP5024,
>> LP5018, LP5012 and LP5009 RGB LED device driver.  The LP5036/30/24/18/12/9
>> can control RGB LEDs individually or as part of a control bank group.
>> These devices have the ability to adjust the mixing control for the RGB
>> LEDs to obtain different colors independent of the overall brightness of
>> the LED grouping.
>>
>> Datasheet:
>> http://www.ti.com/lit/ds/symlink/lp5012.pdf
>> http://www.ti.com/lit/ds/symlink/lp5024.pdf
>> http://www.ti.com/lit/ds/symlink/lp5036.pdf
>>
>> Reviewed-by: Rob Herring <robh@kernel.org>
>> Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> Acked-by: Pavel Machek <pavel@ucw.cz>
>
>> +           multi-led@1 {
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               reg = <0x1>;
>> +               color = <LED_COLOR_ID_MULTI>;
>> +               function = LED_FUNCTION_CHARGING;
> These are just examples, but we should really separate "MULTI" colors
> and "RGB".

If we do then the LP55xx was not updated when the change was made.

I will change it to RGB since I have to touch this file and probably 
submit the LP55xx patch as well.

Dan


> Best regards,
> 									Pavel
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
new file mode 100644
index 000000000000..b2dd1672f12a
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/leds-lp50xx.yaml
@@ -0,0 +1,130 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/leds-lp50xx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: LED driver for LP50XX RGB LED from Texas Instruments.
+
+maintainers:
+  - Dan Murphy <dmurphy@ti.com>
+
+description: |
+  The LP50XX is multi-channel, I2C RGB LED Drivers that can group RGB LEDs into
+  a LED group or control them individually.
+
+  The difference in these RGB LED drivers is the number of supported RGB
+  modules.
+
+  For more product information please see the link below:
+  https://www.ti.com/lit/ds/symlink/lp5012.pdf
+  https://www.ti.com/lit/ds/symlink/lp5024.pdf
+  https://www.ti.com/lit/ds/symlink/lp5036.pdf
+
+properties:
+  compatible:
+    enum:
+      - ti,lp5009
+      - ti,lp5012
+      - ti,lp5018
+      - ti,lp5024
+      - ti,lp5030
+      - ti,lp5036
+
+  reg:
+    maxItems: 1
+    description:
+      I2C slave address
+      lp5009/12 - 0x14, 0x15, 0x16, 0x17
+      lp5018/24 - 0x28, 0x29, 0x2a, 0x2b
+      lp5030/36 - 0x30, 0x31, 0x32, 0x33
+
+  enable-gpios:
+    maxItems: 1
+    description: GPIO pin to enable/disable the device.
+
+  vled-supply:
+    description: LED supply.
+
+patternProperties:
+  '^multi-led@[0-9a-f]$':
+    type: object
+    allOf:
+      - $ref: leds-class-multicolor.yaml#
+    properties:
+      reg:
+        minItems: 1
+        maxItems: 12
+        description:
+          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.
+
+    patternProperties:
+      "(^led-[0-9a-f]$|led)":
+        type: object
+        $ref: common.yaml#
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+   #include <dt-bindings/gpio/gpio.h>
+   #include <dt-bindings/leds/common.h>
+
+   i2c {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       led-controller@14 {
+           compatible = "ti,lp5009";
+           reg = <0x14>;
+           #address-cells = <1>;
+           #size-cells = <0>;
+           enable-gpios = <&gpio1 16>;
+
+           multi-led@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x1>;
+               color = <LED_COLOR_ID_MULTI>;
+               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>;
+               };
+          };
+
+          multi-led@2 {
+            #address-cells = <1>;
+            #size-cells = <2>;
+            reg = <0x2 0x3 0x5>;
+            color = <LED_COLOR_ID_MULTI>;
+            function = LED_FUNCTION_STANDBY;
+
+            led-6 {
+              color = <LED_COLOR_ID_RED>;
+            };
+
+            led-7 {
+              color = <LED_COLOR_ID_GREEN>;
+            };
+
+            led-8 {
+              color = <LED_COLOR_ID_BLUE>;
+            };
+         };
+       };
+    };
+
+...