On 29/11/2022 15:09, Chuanhong Guo wrote: > This patch adds dt binding schema for WorldSemi WS2812B driven using SPI > bus. > > Signed-off-by: Chuanhong Guo <gch981213@xxxxxxxxx> > --- > .../bindings/leds/worldsemi,ws2812b-spi.yaml | 131 ++++++++++++++++++ > 1 file changed, 131 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/worldsemi,ws2812b-spi.yaml > > diff --git a/Documentation/devicetree/bindings/leds/worldsemi,ws2812b-spi.yaml b/Documentation/devicetree/bindings/leds/worldsemi,ws2812b-spi.yaml > new file mode 100644 > index 000000000000..8544bde4f261 > --- /dev/null > +++ b/Documentation/devicetree/bindings/leds/worldsemi,ws2812b-spi.yaml > @@ -0,0 +1,131 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/leds/worldsemi,ws2812b-spi.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: WS2812B LEDs driven using SPI > + > +maintainers: > + - Chuanhong Guo <gch981213@xxxxxxxxx> > + > +description: | > + WorldSemi WS2812B is a individually addressable LED chip that can be chained > + together and controlled individually using a single wire. > + This driver simulates the protocol used by this LED chip with SPI bus. Drop references to Linux driver, unless important for the binding. > + Typical setups includes connecting the data pin of the LED chain to MOSI as > + the only device or using CS and MOSI with a tri-state voltage-level shifter > + for the data pin. > + The SPI frequency needs to be 2.105MHz~2.85MHz for the timing to be correct > + and the controller needs to send all the bytes continuously. > + > +allOf: > + - $ref: /schemas/spi/spi-peripheral-props.yaml# > + > +properties: > + compatible: > + const: worldsemi,ws2812b-spi Drop "-spi". Compatibles are not supposed to include bus information. The same for file name. > + > + reg: > + description: The chip-select line on the SPI bus Drop description, it's obvious. > + maxItems: 1 > + > + spi-max-frequency: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + Maximum SPI clocking speed of the device in Hz. No need for ref and description. It comes from spi-peripheral-props. > + minimum: 2105000 > + maximum: 2850000 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > +patternProperties: > + "^multi-led(@[0-9a-f])?$": Why unit address is optional? > + type: object > + $ref: leds-class-multicolor.yaml# unevaluatedProperties: false > + > + properties: > + color-index: > + description: | > + A 3-item array specifying color of each components in this LED. It > + should be one of the LED_COLOR_ID_* prefixed definitions from the > + header include/dt-bindings/leds/common.h. Defaults to > + <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE> > + if unspecified. > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 3 Drop minItems.... but see comment below: > + maxItems: 3 Why this is different than other multi-color LEDs? I would expect here children with common.yaml. > + > + default-intensity: > + description: | > + An array of 3 integer specifying the default intensity of each color > + components in this LED. <255 255 255> if unspecified. > + $ref: /schemas/types.yaml#/definitions/uint32-array > + minItems: 3 Drop minItems.... but: > + maxItems: 3 > + items: > + minimum: 0 > + maximum: 255 default: 255 What controls the intensity? Don't you have PWM there? > + > + reg: > + description: | > + Which LED this node represents. The reg of the first LED on the chain > + is 0. maxItems: 1 > + > + required: > + - reg > + - color > + - function > + > +required: > + - compatible > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/leds/common.h> > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + ws2812b@0 { Node names should be generic. https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "worldsemi,ws2812b-spi"; > + reg = <0>; compatible is first property, reg is second. Best regards, Krzysztof