The LP5812 is a 4x3 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>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
.../devicetree/bindings/leds/ti,lp5812.yaml | 229 ++++++++++++++++++
MAINTAINERS | 6 +
2 files changed, 235 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..848cd4f51901
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/ti,lp5812.yaml
@@ -0,0 +1,229 @@
+# 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 4x3 Matrix RGB LED Driver with Autonomous Control
+
+maintainers:
+ - Nam Tran <trannamatk@gmail.com>
+
+description: |
+ The LP5812 is a 4x3 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:
+ reg:
+ minimum: 0
+ maximum: 3
+
+ required:
+ - reg
+
+ "^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:
+ 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-max-microamp = <25500>;
+ };
+
+ led@1 {
+ reg = <0x1>;
+ label = "LED1";
+ led-max-microamp = <25500>;
+ };
+
+ led@2 {
+ reg = <0x2>;
+ label = "LED2";
+ led-max-microamp = <25500>;
+ };
+
+ led@3 {
+ reg = <0x3>;
+ label = "LED3";
+ led-max-microamp = <25500>;
+ };
+
+ 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-max-microamp = <25500>;
+ };
+
+ led@5 {
+ reg = <0x5>;
+ color = <LED_COLOR_ID_RED>;
+ led-max-microamp = <25500>;
+ };
+
+ led@6 {
+ reg = <0x6>;
+ color = <LED_COLOR_ID_BLUE>;
+ led-max-microamp = <25500>;
+ };
+ };
+
+ 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-max-microamp = <25500>;
+ };
+
+ led@8 {
+ reg = <0x8>;
+ color = <LED_COLOR_ID_RED>;
+ led-max-microamp = <25500>;
+ };
+
+ led@9 {
+ reg = <0x9>;
+ color = <LED_COLOR_ID_BLUE>;
+ led-max-microamp = <25500>;
+ };
+ };
+
+ 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-max-microamp = <25500>;
+ };
+
+ led@b {
+ reg = <0xb>;
+ color = <LED_COLOR_ID_RED>;
+ led-max-microamp = <25500>;
+ };
+
+ led@c {
+ reg = <0xc>;
+ color = <LED_COLOR_ID_BLUE>;
+ led-max-microamp = <25500>;
+ };
+ };
+
+ 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-max-microamp = <25500>;
+ };
+
+ led@e {
+ reg = <0xe>;
+ color = <LED_COLOR_ID_RED>;
+ led-max-microamp = <25500>;
+ };
+
+ led@f {
+ reg = <0xf>;
+ color = <LED_COLOR_ID_BLUE>;
+ led-max-microamp = <25500>;
+ };
+ };
+ };
+ };
+
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 4f03e230f3c5..99512777b890 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -24823,6 +24823,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
On Mon, 18 Aug 2025 08:26:51 +0700, Nam Tran wrote: > The LP5812 is a 4x3 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> > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > --- > .../devicetree/bindings/leds/ti,lp5812.yaml | 229 ++++++++++++++++++ > MAINTAINERS | 6 + > 2 files changed, 235 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/ti,lp5812.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250818012654.143058-2-trannamatk@gmail.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Sun, 17 Aug 2025, Rob Herring (Arm) wrote: > On Mon, 18 Aug 2025 08:26:51 +0700, Nam Tran wrote: > > The LP5812 is a 4x3 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> > > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> > > --- > > .../devicetree/bindings/leds/ti,lp5812.yaml | 229 ++++++++++++++++++ > > MAINTAINERS | 6 + > > 2 files changed, 235 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/leds/ti,lp5812.yaml > > > > My bot found errors running 'make dt_binding_check' on your patch: > > yamllint warnings/errors: > > dtschema/dtc warnings/errors: > > > doc reference errors (make refcheckdocs): > > See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250818012654.143058-2-trannamatk@gmail.com > I do not see any errors/warnings here. > The base for the series is generally the latest rc1. A different dependency > should be noted in *this* patch. > > If you already ran 'make dt_binding_check' and didn't see the above > error(s), then make sure 'yamllint' is installed and dt-schema is up to > date: > > pip3 install dtschema --upgrade > > Please check and re-submit after running the above command yourself. Note > that DT_SCHEMA_FILES can be set to your schema file to speed up checking > your schema. However, it must be unset to test all examples with your schema. I followed the guideline and ran make dt_binding_check with the latest dt-schema installed (pip3 install dtschema --upgrade). I don’t see any errors or warnings for my ti,lp5812.yaml schema. When I unset DT_SCHEMA_FILES and run the full check against all examples, I do get errors/warnings - but they come from other existing schemas, not from my patch, e.g.: Documentation/devicetree/bindings/net/nfc/ti,trf7970a.yaml: properties:ti,rx-gain-reduction-db: '$ref' should not be valid under {'const': '$ref'} Documentation/devicetree/bindings/regulator/infineon,ir38060.yaml: maintainers:0: 'Not Me.' does not match '@' Documentation/devicetree/bindings/leds/issi,is31fl319x.yaml: properties:audio-gain-db: '$ref' should not be valid under {'const': '$ref'} Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml: properties:fsl,phy-pcs-tx-deemph-3p5db-attenuation-db: '$ref' should not be valid under {'const': '$ref'} My schema (ti,lp5812.yaml) passes cleanly without any issues. Best regards, Nam Tran
© 2016 - 2025 Red Hat, Inc.