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@xxxxxxxxx> --- .../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@xxxxxxxxx> + +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 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@xxxxxxxxx> +L: linux-leds@xxxxxxxxxxxxxxx +S: Maintained +F: Documentation/devicetree/bindings/leds/ti,lp5812.yaml + TEXAS INSTRUMENTS' LB8864 LED BACKLIGHT DRIVER M: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxxxx> L: linux-leds@xxxxxxxxxxxxxxx -- 2.25.1