On Tue, 25 Jan 2022 16:12:25 +0100 sven@xxxxxxxxxxxxxxxx wrote: > From: Sven Schwermer <sven.schwermer@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > > This allows to group multiple PWM-connected monochrome LEDs into > multicolor LEDs, e.g. RGB LEDs. > > Signed-off-by: Sven Schwermer <sven.schwermer@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > --- > .../bindings/leds/leds-pwm-multicolor.yaml | 76 +++++++++++++++++++ > 1 file changed, 76 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml > > diff --git a/Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml b/Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml > new file mode 100644 > index 000000000000..b82b26f2e140 > --- /dev/null > +++ b/Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml > @@ -0,0 +1,76 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/leds/leds-pwm-multicolor.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Multi-color LEDs connected to PWM > + > +maintainers: > + - Sven Schwermer <sven.schwermer@xxxxxxxxxxxxxxxxxxxxxxxxxxx> > + > +description: | > + This driver combines several monochrome PWM LEDs into one multi-color > + LED using the multicolor LED class. > + > +properties: > + compatible: > + const: pwm-leds-multicolor > + > +patternProperties: > + '^multi-led@[0-9a-f]$': > + type: object > + allOf: > + - $ref: leds-class-multicolor.yaml# > + > + patternProperties: > + "^led-[0-9a-z]+$": > + type: object > + properties: > + pwms: > + maxItems: 1 > + > + pwm-names: true > + > + color: > + $ref: common.yaml#/properties/color > + > + required: > + - pwms > + - color > + > +required: > + - compatible > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/leds/common.h> > + > + rgb-led { > + compatible = "pwm-leds-multicolor"; > + > + multi-led@0 { > + color = <LED_COLOR_ID_RGB>; > + function = LED_FUNCTION_INDICATOR; > + max-brightness = <65535>; > + > + led-red { > + pwms = <&pwm1 0 1000000>; > + color = <LED_COLOR_ID_RED>; > + }; > + > + led-green { > + pwms = <&pwm2 0 1000000>; > + color = <LED_COLOR_ID_GREEN>; > + }; > + > + led-blue { > + pwms = <&pwm3 0 1000000>; > + color = <LED_COLOR_ID_BLUE>; > + }; > + }; what about multi-led@0 { color = <LED_COLOR_ID_RGB>; function = LED_FUNCTION_INDICATOR; pwms = <&pwm1 0 1000000>, <&pwm2 0 1000000>, <&pwm3 0 1000000>; channels = <LED_COLOR_ID_RED>, <LED_COLOR_ID_GREEN>, <LED_COLOR_ID_BLUE>; }; I am not saying that it is necessarily better, just comenting that maybe it is, since it saves some space. `pwms` is phandle-array, so it can contain references to multiple pwms, and we have functions which make getting these pwms in driver code easy... Also this example won't compile with make dt_bindings_check because you don't have pwm1, pwm2 and pwm3 defined... Marek