Message ID | 20220125151226.31049-2-sven@svenschwermer.de |
---|---|
State | Superseded |
Headers | show |
Series | [RFC,v2,1/2] dt-bindings: leds: Add multicolor PWM LED bindings | expand |
On Tue, 25 Jan 2022 16:12:25 +0100, sven@svenschwermer.de wrote: > From: Sven Schwermer <sven.schwermer@disruptive-technologies.com> > > This allows to group multiple PWM-connected monochrome LEDs into > multicolor LEDs, e.g. RGB LEDs. > > Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com> > --- > .../bindings/leds/leds-pwm-multicolor.yaml | 76 +++++++++++++++++++ > 1 file changed, 76 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/leds-pwm-multicolor.yaml > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13): yamllint warnings/errors: dtschema/dtc warnings/errors: Documentation/devicetree/bindings/leds/leds-pwm-multicolor.example.dts:24.25-43.15: Warning (unit_address_vs_reg): /example-0/rgb-led/multi-led@0: node has a unit name, but no reg or ranges property doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/patch/1584106 This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1. 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.
Hi Marek, On 1/25/22 21:27, Marek BehĂșn wrote: > 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... This this nice. I misunderstood the requirements by the multicolor LED class so I didn't think this was possible. I will change my patch. > Also this example won't compile with > make dt_bindings_check > because you don't have pwm1, pwm2 > and pwm3 defined... Yes, it does. The checker compiles the example DTS snippets with this in the header: /plugin/; // silence any missing phandle references Best regards, Sven
On 1/25/22 21:27, Marek BehĂșn wrote: > 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... I have had another look at this. It seems like if you specify more than one PWM instance in the `pwms` property, the device tree must specify `pwm-names` in order for the driver to be able to request the correct instance (see `of_pwm_get`). In this case, the device tree would need to contain some strings in `pwm-names` that allow the driver to match them against the color IDs. Alternatively, I could re-implement the PWM instance request logic. Both options seem not ideal. For the next version of this patch series, I'll go with my original approach. I'm open for alternatives :) Best regards, Sven
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@disruptive-technologies.com> + +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>; + }; + }; + }; + +...