Skip to contentSkip to conversation

dt-bindings: leds: lacie,netxbig-leds: Convert to DT schema

PATCH Superseded Udaya Kiran Challa 3 participants 3 messages Aug 21 – Aug 31

Subsystems (2)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 000000000000..02759ecb32d0
@@ -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
#1 lore raw
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…

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
new file mode 100644
index 0000000000000..02759ecb32d04

[ ... ]

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
maintainer
#2 lore raw
In reply to Udaya Kiran Challa
Quoted 49 lines · Udaya Kiran Challa

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 +23 -0
new file mode 100644
index 000000000000..02759ecb32d0
@@ -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