All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nam Tran <trannamatk@gmail.com>
To: lee@kernel.org
Cc: pavel@kernel.org, krzk+dt@kernel.org, robh@kernel.org,
	conor+dt@kernel.org, corbet@lwn.net, linux-leds@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-doc@vger.kernel.org, Nam Tran <trannamatk@gmail.com>
Subject: [PATCH v9 1/4] dt-bindings: leds: add TI/National Semiconductor LP5812 LED Driver
Date: Wed, 11 Jun 2025 00:43:15 +0700	[thread overview]
Message-ID: <20250610174319.183375-2-trannamatk@gmail.com> (raw)
In-Reply-To: <20250610174319.183375-1-trannamatk@gmail.com>

The LP5812 is a 4×3 RGB LED driver with an autonomous animation
engine and time-cross-multiplexing (TCM) support for up to 12 LEDs
or 4 RGB LEDs. It supports both analog (256 levels) and PWM (8-bit)
dimming, including exponential PWM for smooth brightness control.

Signed-off-by: Nam Tran <trannamatk@gmail.com>
---
 .../devicetree/bindings/leds/ti,lp5812.yaml   | 264 ++++++++++++++++++
 MAINTAINERS                                   |   6 +
 2 files changed, 270 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/leds/ti,lp5812.yaml

diff --git a/Documentation/devicetree/bindings/leds/ti,lp5812.yaml b/Documentation/devicetree/bindings/leds/ti,lp5812.yaml
new file mode 100644
index 000000000000..bbb4e293dac3
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/ti,lp5812.yaml
@@ -0,0 +1,264 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/ti,lp5812.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI LP5812 4×3 Matrix RGB LED Driver with Autonomous Control
+
+maintainers:
+  - Nam Tran <trannamatk@gmail.com>
+
+description: |
+  The LP5812 is a 4×3 matrix RGB LED driver with I2C interface
+  and autonomous animation engine control.
+  For more product information please see the link below:
+  https://www.ti.com/product/LP5812#tech-docs
+
+properties:
+  compatible:
+    const: ti,lp5812
+
+  reg:
+    maxItems: 1
+
+  vcc-supply:
+    description: Regulator providing power to the 'VCC' pin.
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  "^led@[0-3]$":
+    type: object
+    $ref: common.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      led-cur:
+        $ref: /schemas/types.yaml#/definitions/uint8
+        description: |
+          LED current in 0.1 mA steps (e.g., 150 = 15.0 mA; 0 if not connected)
+        minimum: 0
+        maximum: 255
+
+      max-cur:
+        $ref: /schemas/types.yaml#/definitions/uint8
+        description: Maximum allowed current in 0.1 mA steps
+
+      reg:
+        minimum: 0
+        maximum: 3
+
+  '^multi-led@[4-7]$':
+    type: object
+    $ref: leds-class-multicolor.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      reg:
+        minimum: 4
+        maximum: 7
+
+      '#address-cells':
+        const: 1
+
+      '#size-cells':
+        const: 0
+
+    patternProperties:
+      "^led@[4-9a-f]$":
+        type: object
+        $ref: common.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          led-cur:
+            $ref: /schemas/types.yaml#/definitions/uint8
+            description: |
+              LED current in 0.1 mA steps (e.g., 150 = 15.0 mA; 0 if not connected)
+            minimum: 0
+            maximum: 255
+
+          max-cur:
+            $ref: /schemas/types.yaml#/definitions/uint8
+            description: Maximum allowed current in 0.1 mA steps
+
+          reg:
+            minimum: 4
+            maximum: 15
+
+        required:
+          - reg
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/leds/common.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        led-controller@1b {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "ti,lp5812";
+            reg = <0x1b>;
+            vcc-supply = <&vdd_3v3_reg>;
+
+            led@0 {
+              reg = <0x0>;
+              label = "LED0";
+              led-cur = /bits/ 8 <0x96>;
+              max-cur = /bits/ 8 <0xff>;
+            };
+
+            led@1 {
+              reg = <0x1>;
+              label = "LED1";
+              led-cur = /bits/ 8 <0x96>;
+              max-cur = /bits/ 8 <0xff>;
+            };
+
+            led@2 {
+              reg = <0x2>;
+              label = "LED2";
+              led-cur = /bits/ 8 <0x96>;
+              max-cur = /bits/ 8 <0xff>;
+            };
+
+            led@3 {
+              reg = <0x3>;
+              label = "LED3";
+              led-cur = /bits/ 8 <0x96>;
+              max-cur = /bits/ 8 <0xff>;
+            };
+
+            multi-led@4 {
+              #address-cells = <1>;
+              #size-cells = <0>;
+              reg = <0x4>;
+              color = <LED_COLOR_ID_RGB>;
+              label = "LED_A";
+
+              led@4 {
+                reg = <0x4>;
+                color = <LED_COLOR_ID_GREEN>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@5 {
+                reg = <0x5>;
+                color = <LED_COLOR_ID_RED>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@6 {
+                reg = <0x6>;
+                color = <LED_COLOR_ID_BLUE>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+            };
+
+            multi-led@5 {
+              #address-cells = <1>;
+              #size-cells = <0>;
+              reg = <0x5>;
+              color = <LED_COLOR_ID_RGB>;
+              label = "LED_B";
+
+              led@7 {
+                reg = <0x7>;
+                color = <LED_COLOR_ID_GREEN>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@8 {
+                reg = <0x8>;
+                color = <LED_COLOR_ID_RED>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@9 {
+                reg = <0x9>;
+                color = <LED_COLOR_ID_BLUE>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+            };
+
+            multi-led@6 {
+              #address-cells = <1>;
+              #size-cells = <0>;
+              reg = <0x6>;
+              color = <LED_COLOR_ID_RGB>;
+              label = "LED_C";
+
+              led@a {
+                reg = <0xa>;
+                color = <LED_COLOR_ID_GREEN>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@b {
+                reg = <0xb>;
+                color = <LED_COLOR_ID_RED>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@c {
+                reg = <0xc>;
+                color = <LED_COLOR_ID_BLUE>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+            };
+
+            multi-led@7 {
+              #address-cells = <1>;
+              #size-cells = <0>;
+              reg = <0x7>;
+              color = <LED_COLOR_ID_RGB>;
+              label = "LED_D";
+
+              led@d {
+                reg = <0xd>;
+                color = <LED_COLOR_ID_GREEN>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@e {
+                reg = <0xe>;
+                color = <LED_COLOR_ID_RED>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+
+              led@f {
+                reg = <0xf>;
+                color = <LED_COLOR_ID_BLUE>;
+                led-cur = /bits/ 8 <0x96>;
+                max-cur = /bits/ 8 <0xff>;
+              };
+            };
+        };
+    };
+
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index a92290fffa16..83a779dc9bcd 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -24561,6 +24561,12 @@ S:	Supported
 F:	Documentation/devicetree/bindings/iio/dac/ti,dac7612.yaml
 F:	drivers/iio/dac/ti-dac7612.c
 
+TEXAS INSTRUMENTS' LP5812 RGB LED DRIVER
+M:	Nam Tran <trannamatk@gmail.com>
+L:	linux-leds@vger.kernel.org
+S:	Maintained
+F:	Documentation/devicetree/bindings/leds/ti,lp5812.yaml
+
 TEXAS INSTRUMENTS' LB8864 LED BACKLIGHT DRIVER
 M:	Alexander Sverdlin <alexander.sverdlin@siemens.com>
 L:	linux-leds@vger.kernel.org
-- 
2.25.1


  reply	other threads:[~2025-06-10 17:43 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 17:43 [PATCH v9 0/4] leds: add new LED driver for TI LP5812 Nam Tran
2025-06-10 17:43 ` Nam Tran [this message]
2025-06-11  8:24   ` [PATCH v9 1/4] dt-bindings: leds: add TI/National Semiconductor LP5812 LED Driver Krzysztof Kozlowski
2025-06-17 16:29     ` Nam Tran
2025-06-10 17:43 ` [PATCH v5] test Nam Tran
2025-06-12 10:03   ` Lee Jones
2025-06-17 17:46     ` Nam Tran
2025-06-10 17:43 ` [PATCH v9 2/4] leds: add TI/National Semiconductor LP5812 LED Driver Nam Tran
2025-06-10 18:13   ` Randy Dunlap
2025-06-17 16:50     ` Nam Tran
2025-06-10 21:07   ` Christophe JAILLET
2025-06-17 17:30     ` Nam Tran
2025-06-16 18:37   ` kernel test robot
2025-06-10 17:43 ` [PATCH v9 3/4] docs: ABI: Document LP5812 LED sysfs interfaces Nam Tran
2025-06-10 17:43 ` [PATCH v9 4/4] docs: leds: Document TI LP5812 LED driver Nam Tran
2025-06-10 17:55 ` [PATCH v9 0/4] leds: add new LED driver for TI LP5812 Nam Tran
2025-06-11  6:59 ` Krzysztof Kozlowski
2025-06-17 15:40   ` Nam Tran

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250610174319.183375-2-trannamatk@gmail.com \
    --to=trannamatk@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@kernel.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.