dt-bindings: leds: lacie,netxbig-leds: Convert to DT schema
Subsystems (2)
PATCH v2 1/1 dt-bindings: leds: lacie,netxbig-leds: Convert to DT schema
Convert lacie,netxbig-leds devicetree binding from legacy text format to DT schema.
---
Changelog:
Changes since v1:
- Use pattenProperties for LED child nodes instead of additionalProperties
- Explicitly list the two optional properties supported by the binding
- Place the top-level required block after child-node definition
Link to v1:https://lore.kernel.org/all/[email protected]/
--- .../bindings/leds/lacie,netxbig-leds.yaml | 144 ++++++++++++++++++ .../devicetree/bindings/leds/leds-netxbig.txt | 92 ----------- 2 files changed, 144 insertions(+), 92 deletions(-) create mode 100644 Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml delete mode 100644 Documentation/devicetree/bindings/leds/leds-netxbig.txt
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +144 -0
@@ -0,0 +1,144 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/lacie,netxbig-leds.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: LaCie/Seagate netxbig CPLD LEDs + +maintainers: + - Simon Guinot <[email protected]> + +description: | + Binding for the CPLD LEDs (GPIO extension bus) found on some LaCie/Seagate + boards (Example: 2Big/5Big Network v2, 2Big NAS). + +properties: + compatible: + const: lacie,netxbig-leds + + gpio-ext: + description: Phandle for the gpio-ext bus. + $ref: /schemas/types.yaml#/definitions/phandle + + timers: + description: | + Timer array. Each timer entry is represented by three integers: + Mode (gpio-ext bus), delay_on and delay_off. + $ref: /schemas/types.yaml#/definitions/uint32-array + +patternProperties: + "^(?!gpio-ext$|pinctrl-[0-9]+$)[a-z][a-z0-9]*(-[a-z0-9]+)+$": + type: object + additionalProperties: false + + properties: + label: + description: | + Name for this LED. If omitted, the label is taken from the node name. + $ref: /schemas/types.yaml#/definitions/string + + mode-addr: + description: Mode register address on gpio-ext bus. + $ref: /schemas/types.yaml#/definitions/uint32 + + mode-val: + description: | + Mode to value mapping. Each entry is represented by two integers: + a mode and the corresponding value on the gpio-ext bus. + $ref: /schemas/types.yaml#/definitions/uint32-array + + bright-addr: + description: Brightness register address on gpio-ext bus. + $ref: /schemas/types.yaml#/definitions/uint32 + + max-brightness: + description: Maximum brightness value. + $ref: /schemas/types.yaml#/definitions/uint32 + + linux,default-trigger: + description: Trigger assigned to the LED. + $ref: /schemas/types.yaml#/definitions/string + + required: + - mode-addr + - mode-val + - bright-addr + - max-brightness + +required: + - compatible + - gpio-ext + +additionalProperties: false + +examples: + - | + #include <dt-bindings/leds/leds-netxbig.h> + + netxbig-leds { + compatible = "lacie,netxbig-leds"; + + gpio-ext = <&netxbig_gpio_ext>; + + timers = <NETXBIG_LED_TIMER1 500 500 + NETXBIG_LED_TIMER2 500 1000>; + + blue-power { + label = "netxbig:blue:power"; + mode-addr = <0>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 1 + NETXBIG_LED_TIMER1 3 + NETXBIG_LED_TIMER2 7>; + bright-addr = <1>; + max-brightness = <7>; + }; + red-power { + label = "netxbig:red:power"; + mode-addr = <0>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 2 + NETXBIG_LED_TIMER1 4>; + bright-addr = <1>; + max-brightness = <7>; + }; + blue-sata0 { + label = "netxbig:blue:sata0"; + mode-addr = <3>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 7 + NETXBIG_LED_SATA 1 + NETXBIG_LED_TIMER1 3>; + bright-addr = <2>; + max-brightness = <7>; + }; + red-sata0 { + label = "netxbig:red:sata0"; + mode-addr = <3>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 2 + NETXBIG_LED_TIMER1 4>; + bright-addr = <2>; + max-brightness = <7>; + }; + blue-sata1 { + label = "netxbig:blue:sata1"; + mode-addr = <4>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 7 + NETXBIG_LED_SATA 1 + NETXBIG_LED_TIMER1 3>; + bright-addr = <2>; + max-brightness = <7>; + }; + red-sata1 { + label = "netxbig:red:sata1"; + mode-addr = <4>; + mode-val = <NETXBIG_LED_OFF 0 + NETXBIG_LED_ON 2 + NETXBIG_LED_TIMER1 4>; + bright-addr = <2>; + max-brightness = <7>; + }; + };
Documentation/devicetree/bindings/leds/leds-netxbig.txt deleted +0 -92
92 lines not on this page · raw message
Signature · 1 line
2.34.1
[email protected]
AI reviewThank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] The YAML binding schema for LED child nodes explicitly forbids standard LED properties by using…
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The YAML binding schema for LED child nodes explicitly forbids standard LED properties by using 'additionalProperties: false' without referencing the common LED schema.
- [Medium] The regular expression used in patternProperties to match child nodes is brittle: it arbitrarily rejects valid single-word node names and would erroneously match hyphenated top-level properties. --
--- Patch [1]: [PATCH v2] dt-bindings: leds: lacie,netxbig-leds: Convert to DT schema --- commit a7a7b0d43884f0f2164a9d243e2d08d00c94a010
Author: Udaya Kiran Challa <[email protected]>
dt-bindings: leds: lacie,netxbig-leds: Convert to DT schema
This commit converts the LaCie/Seagate netxbig CPLD LEDs devicetree binding from the legacy text format to the YAML DT schema.
Link to v1:https://lore.kernel.org/all/[email protected]/
Quoted 5 lines
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +0
-0
[ ... ]
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml line 31
Quoted 2 lines
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +2
-0+patternProperties: + "^(?!gpio-ext$|pinctrl-[0-9]+$)[a-z][a-z0-9]*(-[a-z0-9]+)+$":
[Severity: Medium]
Does this regular expression arbitrarily reject valid single-word node names like led or sata?
The regex requires at least one hyphen. A child node simply named led would fail to match here, fall through to the top-level
additionalProperties: false, and be completely rejected.
It could also erroneously match future standard hyphenated properties like power-domains and expect them to contain LED properties.
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml line 36
Quoted 5 lines
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +5
-0+ type: object + additionalProperties: false + + properties: + label:
[Severity: Medium]
Does setting additionalProperties: false here without referencing the common LED schema prevent the use of standard properties like color and function?
Because the schema validator will reject any unlisted properties, device trees cannot be modernized to use standard LED subsystem properties, which are explicitly recommended over the deprecated label property.
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
Rob Herring
maintainerQuoted 49 lines · Udaya Kiran Challa
Convert lacie,netxbig-leds devicetree binding from legacy text format to DT schema.
Signed-off-by Udaya Kiran Challa <[email protected]>---
Changelog:Changes since v1:
- Use pattenProperties for LED child nodes instead of additionalProperties
- Explicitly list the two optional properties supported by the binding
- Place the top-level required block after child-node definitionLink to v1:https://lore.kernel.org/all/[email protected]/
--- .../bindings/leds/lacie,netxbig-leds.yaml | 144 ++++++++++++++++++ .../devicetree/bindings/leds/leds-netxbig.txt | 92 ----------- 2 files changed, 144 insertions(+), 92 deletions(-) create mode 100644 Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml delete mode 100644 Documentation/devicetree/bindings/leds/leds-netxbig.txtDocumentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +23
-0@@ -0,0 +1,144 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/lacie,netxbig-leds.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: LaCie/Seagate netxbig CPLD LEDs + +maintainers: + - Simon Guinot <[email protected]> + +description: | + Binding for the CPLD LEDs (GPIO extension bus) found on some LaCie/Seagate + boards (Example: 2Big/5Big Network v2, 2Big NAS). + +properties: + compatible: + const: lacie,netxbig-leds + + gpio-ext: + description: Phandle for the gpio-ext bus. + $ref: /schemas/types.yaml#/definitions/phandle +
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml line 33
Quoted 10 lines
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +10
-0+ timers: + description: | + Timer array. Each timer entry is represented by three integers: + Mode (gpio-ext bus), delay_on and delay_off. + $ref: /schemas/types.yaml#/definitions/uint32-array + +patternProperties: + "^(?!gpio-ext$|pinctrl-[0-9]+$)[a-z][a-z0-9]*(-[a-z0-9]+)+$": + type: object + additionalProperties: false
You need a $ref to led common.yaml.
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml line 39
Quoted 6 lines
Documentation/devicetree/bindings/leds/lacie,netxbig-leds.yaml new file +6
-0+ + properties: + label: + description: | + Name for this LED. If omitted, the label is taken from the node name. + $ref: /schemas/types.yaml#/definitions/string
And drop the type on all the common properties.
Rob