Message ID | 20210902234228.32223-1-samuel@sholland.org |
---|---|
State | New |
Headers | show |
Series | [1/2] dt-bindings: leds: Add Allwinner R329/D1 LED controller | expand |
Hi, On Thu, Sep 02, 2021 at 06:42:27PM -0500, Samuel Holland wrote: > The Allwinner R329 and D1 SoCs contain an LED controller designed to > drive a series of RGB LED pixels. It supports PIO and DMA transfers, and > has configurable timing and pixel format. > > Signed-off-by: Samuel Holland <samuel@sholland.org> > --- > .../leds/allwinner,sun50i-r329-ledc.yaml | 141 ++++++++++++++++++ > 1 file changed, 141 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml > > diff --git a/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml b/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml > new file mode 100644 > index 000000000000..bf883944e911 > --- /dev/null > +++ b/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml > @@ -0,0 +1,141 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/leds/allwinner,sun50i-r329-ledc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Allwinner sunxi LED Controller Bindings sunxi is ambiguous, it implies that it works with every Allwinner SoC, but actually supports only one. Please mention R329 everywhere you used sunxi. > + > +maintainers: > + - Samuel Holland <samuel@sholland.org> > + > +description: > + The LED controller found in Allwinner sunxi SoCs uses a one-wire serial > + interface to drive up to 1024 RGB LEDs. > + > +properties: > + compatible: > + oneOf: > + - const: allwinner,sun50i-r329-ledc > + - items: > + - enum: > + - allwinner,sun20i-d1-ledc > + - const: allwinner,sun50i-r329-ledc > + > + reg: > + maxItems: 1 > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > + clocks: > + items: > + - description: Bus clock > + - description: Module clock > + > + clock-names: > + items: > + - const: bus > + - const: mod > + > + resets: > + maxItems: 1 > + > + dmas: > + items: > + - description: TX DMA channel > + > + dma-names: > + items: > + - const: tx You don't need the items: here since you have a single item. > + interrupts: > + maxItems: 1 > + > + vled-supply: > + description: Regulator supplying power to external LEDs > + > + format: > + description: Pixel format (subpixel transmission order), default is "grb" > + enum: > + - "bgr" > + - "brg" > + - "gbr" > + - "grb" > + - "rbg" > + - "rgb" > + > + t0h-ns: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Length of high pulse when transmitting a "0" bit Every property with an -ns suffix is already a uint32 here: https://github.com/devicetree-org/dt-schema/blob/master/schemas/property-units.yaml#L54 Just make sure you have a single item Looks good otherwise, thanks Maxime > + t0l-ns: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Length of low pulse when transmitting a "0" bit > + > + t1h-ns: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Length of high pulse when transmitting a "1" bit > + > + t1h-ns: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Length of low pulse when transmitting a "1" bit > + > + treset-ns: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Minimum delay between transmission frames > + > +patternProperties: > + "^multi-led@[0-9a-f]+$": > + type: object > + $ref: leds-class-multicolor.yaml# > + properties: > + reg: > + minimum: 0 > + maximum: 1023 > + description: Index of the LED in the series (must be contiguous) > + > + required: > + - reg > + > +required: > + - compatible > + - reg > + - clocks > + - clock-names > + - resets > + - dmas > + - dma-names > + - interrupts > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/leds/common.h> > + > + ledc: led-controller@2008000 { > + compatible = "allwinner,sun20i-d1-ledc", > + "allwinner,sun50i-r329-ledc"; > + reg = <0x2008000 0x400>; > + #address-cells = <1>; > + #size-cells = <0>; > + clocks = <&ccu 12>, <&ccu 34>; > + clock-names = "bus", "mod"; > + resets = <&ccu 12>; > + dmas = <&dma 42>; > + dma-names = "tx"; > + interrupts = <36 IRQ_TYPE_LEVEL_HIGH>; > + > + multi-led@0 { > + reg = <0x0>; > + color = <LED_COLOR_ID_RGB>; > + function = LED_FUNCTION_INDICATOR; > + }; > + }; > + > +... > -- > 2.31.1 >
On Thu, 02 Sep 2021 18:42:27 -0500, Samuel Holland wrote: > The Allwinner R329 and D1 SoCs contain an LED controller designed to > drive a series of RGB LED pixels. It supports PIO and DMA transfers, and > has configurable timing and pixel format. > > Signed-off-by: Samuel Holland <samuel@sholland.org> > --- > .../leds/allwinner,sun50i-r329-ledc.yaml | 141 ++++++++++++++++++ > 1 file changed, 141 insertions(+) > create mode 100644 Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.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: ./Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml:83:3: [error] duplication of key "t1h-ns" in mapping (key-duplicates) dtschema/dtc warnings/errors: make[1]: *** Deleting file 'Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.example.dts' Traceback (most recent call last): File "/usr/local/bin/dt-extract-example", line 45, in <module> binding = yaml.load(open(args.yamlfile, encoding='utf-8').read()) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load return constructor.get_single_data() File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 122, in get_single_data return self.construct_document(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 132, in construct_document for _dummy in generator: File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 722, in construct_yaml_map value = self.construct_mapping(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 446, in construct_mapping return BaseConstructor.construct_mapping(self, node, deep=deep) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 264, in construct_mapping if self.check_mapping_key(node, key_node, mapping, key, value): File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 295, in check_mapping_key raise DuplicateKeyError(*args) ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping in "<unicode string>", line 17, column 3 found duplicate key "t1h-ns" with value "{}" (original value: "{}") in "<unicode string>", line 83, column 3 To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys make[1]: *** [Documentation/devicetree/bindings/Makefile:20: Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.example.dts] Error 1 Traceback (most recent call last): File "/usr/local/bin/dt-doc-validate", line 25, in check_doc testtree = dtschema.load(filename, line_number=line_number) File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 623, in load return yaml.load(f.read()) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load return constructor.get_single_data() File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 122, in get_single_data return self.construct_document(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 132, in construct_document for _dummy in generator: File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 722, in construct_yaml_map value = self.construct_mapping(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 446, in construct_mapping return BaseConstructor.construct_mapping(self, node, deep=deep) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 264, in construct_mapping if self.check_mapping_key(node, key_node, mapping, key, value): File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 295, in check_mapping_key raise DuplicateKeyError(*args) ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping in "<unicode string>", line 17, column 3 found duplicate key "t1h-ns" with value "{}" (original value: "{}") in "<unicode string>", line 83, column 3 To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/dt-doc-validate", line 67, in <module> ret = check_doc(f) File "/usr/local/bin/dt-doc-validate", line 30, in check_doc print(filename + ":", exc.path[-1], exc.message, file=sys.stderr) AttributeError: 'DuplicateKeyError' object has no attribute 'path' /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml: ignoring, error parsing file warning: no schema found in file: ./Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/patch/1523964 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.
diff --git a/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml b/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml new file mode 100644 index 000000000000..bf883944e911 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml @@ -0,0 +1,141 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/allwinner,sun50i-r329-ledc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Allwinner sunxi LED Controller Bindings + +maintainers: + - Samuel Holland <samuel@sholland.org> + +description: + The LED controller found in Allwinner sunxi SoCs uses a one-wire serial + interface to drive up to 1024 RGB LEDs. + +properties: + compatible: + oneOf: + - const: allwinner,sun50i-r329-ledc + - items: + - enum: + - allwinner,sun20i-d1-ledc + - const: allwinner,sun50i-r329-ledc + + reg: + maxItems: 1 + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + + clocks: + items: + - description: Bus clock + - description: Module clock + + clock-names: + items: + - const: bus + - const: mod + + resets: + maxItems: 1 + + dmas: + items: + - description: TX DMA channel + + dma-names: + items: + - const: tx + + interrupts: + maxItems: 1 + + vled-supply: + description: Regulator supplying power to external LEDs + + format: + description: Pixel format (subpixel transmission order), default is "grb" + enum: + - "bgr" + - "brg" + - "gbr" + - "grb" + - "rbg" + - "rgb" + + t0h-ns: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Length of high pulse when transmitting a "0" bit + + t0l-ns: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Length of low pulse when transmitting a "0" bit + + t1h-ns: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Length of high pulse when transmitting a "1" bit + + t1h-ns: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Length of low pulse when transmitting a "1" bit + + treset-ns: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Minimum delay between transmission frames + +patternProperties: + "^multi-led@[0-9a-f]+$": + type: object + $ref: leds-class-multicolor.yaml# + properties: + reg: + minimum: 0 + maximum: 1023 + description: Index of the LED in the series (must be contiguous) + + required: + - reg + +required: + - compatible + - reg + - clocks + - clock-names + - resets + - dmas + - dma-names + - interrupts + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/leds/common.h> + + ledc: led-controller@2008000 { + compatible = "allwinner,sun20i-d1-ledc", + "allwinner,sun50i-r329-ledc"; + reg = <0x2008000 0x400>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&ccu 12>, <&ccu 34>; + clock-names = "bus", "mod"; + resets = <&ccu 12>; + dmas = <&dma 42>; + dma-names = "tx"; + interrupts = <36 IRQ_TYPE_LEVEL_HIGH>; + + multi-led@0 { + reg = <0x0>; + color = <LED_COLOR_ID_RGB>; + function = LED_FUNCTION_INDICATOR; + }; + }; + +...
The Allwinner R329 and D1 SoCs contain an LED controller designed to drive a series of RGB LED pixels. It supports PIO and DMA transfers, and has configurable timing and pixel format. Signed-off-by: Samuel Holland <samuel@sholland.org> --- .../leds/allwinner,sun50i-r329-ledc.yaml | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/allwinner,sun50i-r329-ledc.yaml