dt-bindings: leds: add TI/National Semiconductor LP5812 LED Driver

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.

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Nam Tran <trannamatk@gmail.com>
Link: https://patch.msgid.link/20251221041950.4631-2-trannamatk@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Nam Tran 2025-12-21 11:19:48 +07:00 committed by Lee Jones
parent a18983b95a
commit 2fe4df9fa9
2 changed files with 252 additions and 0 deletions

View file

@ -0,0 +1,246 @@
# 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
ti,scan-mode:
description: |
Selects the LED scan mode of the LP5812. The device supports
three modes:
- Direct-drive mode (by default if 'ti,scan-mode' is omitted)
drives up to 4 LEDs directly by internal current sinks (LED0-LED3).
- TCM-drive mode ("tcm:<n>:<order...>") drives up to 12 LEDs
(4 RGB) using 1-4 scan multiplexing. The <n> specifies the number
of scans (1-4), and <order...> defines the scan order of the outputs.
- Mix-drive mode ("mix:<n>:<direct>:<order...>") combines
direct-drive and TCM-drive outputs. The <n> specifies the number
of scans, <direct> selects the direct-drive outputs, and <order...>
defines the scan order.
$ref: /schemas/types.yaml#/definitions/string
pattern: '^(tcm|mix):[1-4](:[0-3]){1,4}$'
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>;
ti,scan-mode = "tcm:4:0:1:2:3";
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>;
};
};
};
};
...

View file

@ -25836,6 +25836,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