On Tue, May 11, 2021 at 03:48:34PM -0500, Doug Zobel wrote: > Add a new device tree object for LP5562 predfined led patterns. If you are going to define something generic looking, put it in a generic binding. I don't know that this belongs in DT though. Won't a user want to create their own patterns? That means there should be a sysfs interface (which we either already have or has been attempted IIRC). > > Signed-off-by: Doug Zobel <dougdev334@xxxxxxxxx> > --- > .../devicetree/bindings/leds/leds-lp55xx.yaml | 103 +++++++++++++++++- > 1 file changed, 102 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/leds/leds-lp55xx.yaml b/Documentation/devicetree/bindings/leds/leds-lp55xx.yaml > index f552cd143d5b..2524a84fe688 100644 > --- a/Documentation/devicetree/bindings/leds/leds-lp55xx.yaml > +++ b/Documentation/devicetree/bindings/leds/leds-lp55xx.yaml > @@ -100,6 +100,31 @@ patternProperties: > $ref: /schemas/types.yaml#/definitions/string > description: name of channel > > + "(^pattern@[0-9a-f]$|pattern)": > + type: object > + $ref: common.yaml# > + description: | > + LP5562 sepcific object. LED pattern program saved to and run on LP5562. > + properties: > + pat-name: > + $ref: /schemas/types.yaml#/definitions/string > + description: Name of pattern program > + > + pat-r: > + $ref: /schemas/types.yaml#/definitions/uint8-array > + description: | > + Program data for red channel. See LP5562 datasheet for program format specification. > + > + pat-g: > + $ref: /schemas/types.yaml#/definitions/uint8-array > + description: | > + Program data for green channel. See LP5562 datasheet for program format specification. > + > + pat-b: > + $ref: /schemas/types.yaml#/definitions/uint8-array > + description: | > + Program data for blue channel. See LP5562 datasheet for program format specification. > + > required: > - compatible > - reg > @@ -223,6 +248,82 @@ examples: > }; > }; > }; > - }; > > + led-controller@30 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "ti,lp5562"; > + reg = <0x30>; > + > + led@0 { > + reg = <0>; > + chan-name = "red"; > + color = <LED_COLOR_ID_RED>; > + }; > + > + led@1 { > + reg = <1>; > + chan-name = "green"; > + color = <LED_COLOR_ID_GREEN>; > + }; > + > + led@2 { > + reg = <2>; > + chan-name = "blue"; > + color = <LED_COLOR_ID_BLUE>; > + }; > + > + pattern@1 { > + /* Pulsing blue pattern > + * Blue: > + * 027F: Ramp up 50% > + * 027F: Ramp up 50% > + * 4600: Wait 100ms > + * 02FF: Ramp down 50% > + * 02FF: Ramp down 50% > + * 4600: Wait 100ms > + * 0000: Goto start > + */ > + pat-name = "Pulsing Blue"; > + pat-b = [02 7f 02 7f 46 00 02 ff 02 ff 46 00 00 00]; > + }; > + > + pattern@2 { > + /* > + * HSV rainbow > + * Red: > + * 40FF: Set PWM 255 > + * 41FF: Ramp down 50% > + * 41FF: Ramp down 50% > + * 41FF: Wait 1/2 ramp time > + * 41FF: Wait 1/2 ramp time > + * 417F: Ramp up 50% > + * 417F: Ramp up 50% > + * 0000: Goto start > + * Green: > + * 4000: Set PWM 0 > + * 417F: Ramp up 50% > + * 417F: Ramp up 50% > + * 41FF: Ramp down 50% > + * 41FF: Ramp down 50% > + * 41FF: Wait 1/2 ramp time > + * 41FF: Wait 1/2 ramp time > + * 0000: Goto start > + * Blue: > + * 4000: Set PWM 0 > + * 41FF: Wait 1/2 ramp time > + * 41FF: Wait 1/2 ramp time > + * 417F: Ramp up 50% > + * 417F: Ramp up 50% > + * 41FF: Ramp down 50% > + * 41FF: Ramp down 50% > + * 0000: Goto start > + */ > + pat-name = "HSV Rainbow"; > + pat-r = [40 ff 41 FF 41 FF 41 FF 41 FF 41 7F 41 7F 00 00]; > + pat-g = [40 00 41 7F 41 7F 41 FF 41 FF 41 FF 41 FF 00 00]; > + pat-b = [40 00 41 FF 41 FF 41 7F 41 7F 41 FF 41 FF 00 00]; > + }; > + }; > + }; > ... > -- > 2.20.1 >