[PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML

Stanislav Jakubek posted 1 patch 3 weeks, 5 days ago
.../bindings/iio/adc/sprd,sc2720-adc.yaml     |  17 --
.../bindings/leds/sprd,sc2731-bltc.yaml       |  31 ---
.../devicetree/bindings/mfd/sprd,sc2731.yaml  | 244 ++++++++++++++++++
.../bindings/mfd/sprd,sc27xx-pmic.txt         |  40 ---
.../bindings/nvmem/sprd,sc2731-efuse.yaml     |  29 ---
.../bindings/power/supply/sc2731-charger.yaml |  21 +-
.../bindings/power/supply/sc27xx-fg.yaml      |  38 +--
.../regulator/sprd,sc2731-regulator.yaml      |  21 --
.../bindings/rtc/sprd,sc2731-rtc.yaml         |  16 --
9 files changed, 246 insertions(+), 211 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/sprd,sc2731.yaml
delete mode 100644 Documentation/devicetree/bindings/mfd/sprd,sc27xx-pmic.txt
[PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Stanislav Jakubek 3 weeks, 5 days ago
Convert the Spreadtrum SC27xx PMIC bindings to DT schema. Adjust the
filename to match the compatible of the only in-tree user, SC2731.
Change #interrupt-cells value to 1, as according to [1] that is the
correct value.
Move partial examples of child nodes in the child node schemas to this new
MFD schema to have one complete example.

[1] https://lore.kernel.org/lkml/b6a32917d1e231277d240a4084bebb6ad91247e3.1550060544.git.baolin.wang@linaro.org/

Signed-off-by: Stanislav Jakubek <stano.jakubek@gmail.com>
---
Changes in V2:
- rebase on next-20241029
- drop partial examples in child node schemas, move them here (Rob)

Link to V1: https://lore.kernel.org/lkml/Zr3X1RoQs7ElTnlJ@standask-GA-A55M-S2HP/

 .../bindings/iio/adc/sprd,sc2720-adc.yaml     |  17 --
 .../bindings/leds/sprd,sc2731-bltc.yaml       |  31 ---
 .../devicetree/bindings/mfd/sprd,sc2731.yaml  | 244 ++++++++++++++++++
 .../bindings/mfd/sprd,sc27xx-pmic.txt         |  40 ---
 .../bindings/nvmem/sprd,sc2731-efuse.yaml     |  29 ---
 .../bindings/power/supply/sc2731-charger.yaml |  21 +-
 .../bindings/power/supply/sc27xx-fg.yaml      |  38 +--
 .../regulator/sprd,sc2731-regulator.yaml      |  21 --
 .../bindings/rtc/sprd,sc2731-rtc.yaml         |  16 --
 9 files changed, 246 insertions(+), 211 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/sprd,sc2731.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/sprd,sc27xx-pmic.txt

diff --git a/Documentation/devicetree/bindings/iio/adc/sprd,sc2720-adc.yaml b/Documentation/devicetree/bindings/iio/adc/sprd,sc2720-adc.yaml
index 8181cf9a8e07..a678323d78e3 100644
--- a/Documentation/devicetree/bindings/iio/adc/sprd,sc2720-adc.yaml
+++ b/Documentation/devicetree/bindings/iio/adc/sprd,sc2720-adc.yaml
@@ -80,23 +80,6 @@ required:
 additionalProperties: false
 
 examples:
-  - |
-    #include <dt-bindings/interrupt-controller/irq.h>
-    pmic {
-        #address-cells = <1>;
-        #size-cells = <0>;
-        adc@480 {
-            compatible = "sprd,sc2731-adc";
-            reg = <0x480>;
-            interrupt-parent = <&sc2731_pmic>;
-            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
-            #io-channel-cells = <1>;
-            hwlocks = <&hwlock 4>;
-            nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
-            nvmem-cell-names = "big_scale_calib", "small_scale_calib";
-        };
-    };
-
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
     pmic {
diff --git a/Documentation/devicetree/bindings/leds/sprd,sc2731-bltc.yaml b/Documentation/devicetree/bindings/leds/sprd,sc2731-bltc.yaml
index 5853410c7a45..97535d6dc47a 100644
--- a/Documentation/devicetree/bindings/leds/sprd,sc2731-bltc.yaml
+++ b/Documentation/devicetree/bindings/leds/sprd,sc2731-bltc.yaml
@@ -50,35 +50,4 @@ required:
   - '#size-cells'
 
 additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/leds/common.h>
-
-    pmic {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      led-controller@200 {
-        compatible = "sprd,sc2731-bltc";
-        reg = <0x200>;
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        led@0 {
-          reg = <0x0>;
-          color = <LED_COLOR_ID_RED>;
-        };
-
-        led@1 {
-          reg = <0x1>;
-          color = <LED_COLOR_ID_GREEN>;
-        };
-
-        led@2 {
-          reg = <0x2>;
-          color = <LED_COLOR_ID_BLUE>;
-        };
-      };
-    };
 ...
diff --git a/Documentation/devicetree/bindings/mfd/sprd,sc2731.yaml b/Documentation/devicetree/bindings/mfd/sprd,sc2731.yaml
new file mode 100644
index 000000000000..bd5f2504b44b
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/sprd,sc2731.yaml
@@ -0,0 +1,244 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/sprd,sc2731.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Spreadtrum SC27xx PMIC
+
+maintainers:
+  - Orson Zhai <orsonzhai@gmail.com>
+  - Baolin Wang <baolin.wang7@gmail.com>
+  - Chunyan Zhang <zhang.lyra@gmail.com>
+
+description: |
+  Spreadtrum PMICs belonging to the SC27xx series integrate all mobile handset
+  power management, audio codec, battery management and user interface support
+  functions in a single chip. They have 6 major functional blocks:
+    - DCDCs to support CPU, memory
+    - LDOs to support both internal and external requirements
+    - Battery management system, such as charger, fuel gauge
+    - Audio codec
+    - User interface functions, such as indicator, flash LED and so on
+    - IC level interface, such as power on/off control, RTC, typec and so on
+
+properties:
+  $nodename:
+    pattern: '^pmic@[0-9a-f]+$'
+
+  compatible:
+    enum:
+      - sprd,sc2720
+      - sprd,sc2721
+      - sprd,sc2723
+      - sprd,sc2730
+      - sprd,sc2731
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+  spi-max-frequency: true
+
+  '#address-cells':
+    const: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  regulators:
+    type: object
+    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
+
+patternProperties:
+  "^adc@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
+
+  "^charger@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/power/supply/sc2731-charger.yaml#
+
+  "^efuse@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#
+
+  "^fuel-gauge@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/power/supply/sc27xx-fg.yaml#
+
+  "^gpio@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/gpio/sprd,gpio-eic.yaml#
+
+  "^led-controller@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/leds/sprd,sc2731-bltc.yaml#
+
+  "^rtc@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/rtc/sprd,sc2731-rtc.yaml#
+
+  "^vibrator@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/input/sprd,sc27xx-vibrator.yaml#
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - spi-max-frequency
+  - '#address-cells'
+  - '#interrupt-cells'
+  - '#size-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/leds/common.h>
+
+    spi {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      sc2731_pmic: pmic@0 {
+        compatible = "sprd,sc2731";
+        reg = <0>;
+        interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-controller;
+        spi-max-frequency = <26000000>;
+        #address-cells = <1>;
+        #interrupt-cells = <1>;
+        #size-cells = <0>;
+
+        charger@0 {
+          compatible = "sprd,sc2731-charger";
+          reg = <0x0>;
+          phys = <&ssphy>;
+          monitored-battery = <&bat>;
+        };
+
+        led-controller@200 {
+          compatible = "sprd,sc2731-bltc";
+          reg = <0x200>;
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          led@0 {
+            reg = <0x0>;
+            color = <LED_COLOR_ID_RED>;
+          };
+
+          led@1 {
+            reg = <0x1>;
+            color = <LED_COLOR_ID_GREEN>;
+          };
+
+          led@2 {
+            reg = <0x2>;
+            color = <LED_COLOR_ID_BLUE>;
+          };
+        };
+
+        rtc@280 {
+          compatible = "sprd,sc2731-rtc";
+          reg = <0x280>;
+          interrupt-parent = <&sc2731_pmic>;
+          interrupts = <2>;
+        };
+
+        pmic_eic: gpio@300 {
+          compatible = "sprd,sc2731-eic";
+          reg = <0x300>;
+          interrupt-parent = <&sc2731_pmic>;
+          interrupts = <5>;
+          gpio-controller;
+          #gpio-cells = <2>;
+          interrupt-controller;
+          #interrupt-cells = <2>;
+        };
+
+        efuse@380 {
+          compatible = "sprd,sc2731-efuse";
+          reg = <0x380>;
+          hwlocks = <&hwlock 12>;
+          #address-cells = <1>;
+          #size-cells = <1>;
+
+          /* Data cells */
+          fgu_calib: calib@6 {
+            reg = <0x6 0x2>;
+            bits = <0 9>;
+          };
+
+          adc_big_scale: calib@24 {
+            reg = <0x24 0x2>;
+          };
+
+          adc_small_scale: calib@26 {
+            reg = <0x26 0x2>;
+          };
+        };
+
+        adc@480 {
+          compatible = "sprd,sc2731-adc";
+          reg = <0x480>;
+          interrupt-parent = <&sc2731_pmic>;
+          interrupts = <0>;
+          #io-channel-cells = <1>;
+          hwlocks = <&hwlock 4>;
+          nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
+          nvmem-cell-names = "big_scale_calib", "small_scale_calib";
+        };
+
+        fuel-gauge@a00 {
+          compatible = "sprd,sc2731-fgu";
+          reg = <0xa00>;
+          battery-detect-gpios = <&pmic_eic 9 GPIO_ACTIVE_HIGH>;
+          interrupt-parent = <&sc2731_pmic>;
+          interrupts = <4>;
+          io-channels = <&pmic_adc 5>, <&pmic_adc 14>;
+          io-channel-names = "bat-temp", "charge-vol";
+          nvmem-cells = <&fgu_calib>;
+          nvmem-cell-names = "fgu_calib";
+          monitored-battery = <&bat>;
+          sprd,calib-resistance-micro-ohms = <21500>;
+        };
+
+        vibrator@ec8 {
+          compatible = "sprd,sc2731-vibrator";
+          reg = <0xec8>;
+        };
+
+        regulators {
+          compatible = "sprd,sc2731-regulator";
+
+          BUCK_CPU0 {
+            regulator-name = "vddarm0";
+            regulator-min-microvolt = <400000>;
+            regulator-max-microvolt = <1996875>;
+            regulator-ramp-delay = <25000>;
+            regulator-always-on;
+          };
+
+          LDO_CAMA0 {
+            regulator-name = "vddcama0";
+            regulator-min-microvolt = <1200000>;
+            regulator-max-microvolt = <3750000>;
+            regulator-enable-ramp-delay = <100>;
+          };
+        };
+      };
+    };
+...
diff --git a/Documentation/devicetree/bindings/mfd/sprd,sc27xx-pmic.txt b/Documentation/devicetree/bindings/mfd/sprd,sc27xx-pmic.txt
deleted file mode 100644
index 21b9a897fca5..000000000000
--- a/Documentation/devicetree/bindings/mfd/sprd,sc27xx-pmic.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Spreadtrum SC27xx Power Management Integrated Circuit (PMIC)
-
-The Spreadtrum SC27xx series PMICs contain SC2720, SC2721, SC2723, SC2730
-and SC2731. The Spreadtrum PMIC belonging to SC27xx series integrates all
-mobile handset power management, audio codec, battery management and user
-interface support function in a single chip. It has 6 major functional
-blocks:
-- DCDCs to support CPU, memory.
-- LDOs to support both internal and external requirement.
-- Battery management system, such as charger, fuel gauge.
-- Audio codec.
-- User interface function, such as indicator, flash LED and so on.
-- IC level interface, such as power on/off control, RTC and typec and so on.
-
-Required properties:
-- compatible: Should be one of the following:
-	"sprd,sc2720"
-	"sprd,sc2721"
-	"sprd,sc2723"
-	"sprd,sc2730"
-	"sprd,sc2731"
-- reg: The address of the device chip select, should be 0.
-- spi-max-frequency: Typically set to 26000000.
-- interrupts: The interrupt line the device is connected to.
-- interrupt-controller: Marks the device node as an interrupt controller.
-- #interrupt-cells: The number of cells to describe an PMIC IRQ, must be 2.
-- #address-cells: Child device offset number of cells, must be 1.
-- #size-cells: Child device size number of cells, must be 0.
-
-Example:
-pmic@0 {
-	compatible = "sprd,sc2731";
-	reg = <0>;
-	spi-max-frequency = <26000000>;
-	interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
-	interrupt-controller;
-	#interrupt-cells = <2>;
-	#address-cells = <1>;
-	#size-cells = <0>;
-};
diff --git a/Documentation/devicetree/bindings/nvmem/sprd,sc2731-efuse.yaml b/Documentation/devicetree/bindings/nvmem/sprd,sc2731-efuse.yaml
index dc25fe3d1841..8672bde24a9b 100644
--- a/Documentation/devicetree/bindings/nvmem/sprd,sc2731-efuse.yaml
+++ b/Documentation/devicetree/bindings/nvmem/sprd,sc2731-efuse.yaml
@@ -36,33 +36,4 @@ allOf:
   - $ref: nvmem-deprecated-cells.yaml#
 
 unevaluatedProperties: false
-
-examples:
-  - |
-    pmic {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      efuse@380 {
-        compatible = "sprd,sc2731-efuse";
-        reg = <0x380>;
-        hwlocks = <&hwlock 12>;
-        #address-cells = <1>;
-        #size-cells = <1>;
-
-        /* Data cells */
-        fgu_calib: calib@6 {
-          reg = <0x6 0x2>;
-          bits = <0 9>;
-        };
-
-        adc_big_scale: calib@24 {
-          reg = <0x24 0x2>;
-        };
-
-        adc_small_scale: calib@26 {
-          reg = <0x26 0x2>;
-        };
-      };
-    };
 ...
diff --git a/Documentation/devicetree/bindings/power/supply/sc2731-charger.yaml b/Documentation/devicetree/bindings/power/supply/sc2731-charger.yaml
index a846a4d14ca9..f5aa72502b4e 100644
--- a/Documentation/devicetree/bindings/power/supply/sc2731-charger.yaml
+++ b/Documentation/devicetree/bindings/power/supply/sc2731-charger.yaml
@@ -30,23 +30,4 @@ properties:
       - constant-charge-voltage-max-microvolt: maximum constant input voltage.
 
 additionalProperties: false
-
-examples:
-  - |
-    bat: battery {
-      compatible = "simple-battery";
-      charge-term-current-microamp = <120000>;
-      constant-charge-voltage-max-microvolt = <4350000>;
-    };
-
-    pmic {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      battery@a00 {
-        compatible = "sprd,sc2731-charger";
-        reg = <0x0>;
-        phys = <&ssphy>;
-        monitored-battery = <&bat>;
-      };
-    };
+...
diff --git a/Documentation/devicetree/bindings/power/supply/sc27xx-fg.yaml b/Documentation/devicetree/bindings/power/supply/sc27xx-fg.yaml
index 9108a2841caf..9495397c9269 100644
--- a/Documentation/devicetree/bindings/power/supply/sc27xx-fg.yaml
+++ b/Documentation/devicetree/bindings/power/supply/sc27xx-fg.yaml
@@ -65,40 +65,4 @@ required:
   - monitored-battery
 
 additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/gpio/gpio.h>
-    bat: battery {
-      compatible = "simple-battery";
-      charge-full-design-microamp-hours = <1900000>;
-      constant-charge-voltage-max-microvolt = <4350000>;
-      ocv-capacity-celsius = <20>;
-      ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>,
-                             <4022000 85>, <3983000 80>, <3949000 75>,
-                             <3917000 70>, <3889000 65>, <3864000 60>,
-                             <3835000 55>, <3805000 50>, <3787000 45>,
-                             <3777000 40>, <3773000 35>, <3770000 30>,
-                             <3765000 25>, <3752000 20>, <3724000 15>,
-                             <3680000 10>, <3605000 5>, <3400000 0>;
-                             // ...
-    };
-
-    pmic {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      battery@a00 {
-        compatible = "sprd,sc2731-fgu";
-        reg = <0xa00>;
-        battery-detect-gpios = <&pmic_eic 9 GPIO_ACTIVE_HIGH>;
-        interrupt-parent = <&sc2731_pmic>;
-        interrupts = <4>;
-        io-channels = <&pmic_adc 5>, <&pmic_adc 14>;
-        io-channel-names = "bat-temp", "charge-vol";
-        nvmem-cells = <&fgu_calib>;
-        nvmem-cell-names = "fgu_calib";
-        monitored-battery = <&bat>;
-        sprd,calib-resistance-micro-ohms = <21500>;
-      };
-    };
+...
diff --git a/Documentation/devicetree/bindings/regulator/sprd,sc2731-regulator.yaml b/Documentation/devicetree/bindings/regulator/sprd,sc2731-regulator.yaml
index ffb2924dde36..9bd752bab68e 100644
--- a/Documentation/devicetree/bindings/regulator/sprd,sc2731-regulator.yaml
+++ b/Documentation/devicetree/bindings/regulator/sprd,sc2731-regulator.yaml
@@ -43,25 +43,4 @@ required:
   - compatible
 
 additionalProperties: false
-
-examples:
-  - |
-    regulators {
-      compatible = "sprd,sc2731-regulator";
-
-      BUCK_CPU0 {
-        regulator-name = "vddarm0";
-        regulator-min-microvolt = <400000>;
-        regulator-max-microvolt = <1996875>;
-        regulator-ramp-delay = <25000>;
-        regulator-always-on;
-      };
-
-      LDO_CAMA0 {
-        regulator-name = "vddcama0";
-        regulator-min-microvolt = <1200000>;
-        regulator-max-microvolt = <3750000>;
-        regulator-enable-ramp-delay = <100>;
-      };
-    };
 ...
diff --git a/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml b/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
index f3d20e976965..5756f617df36 100644
--- a/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
+++ b/Documentation/devicetree/bindings/rtc/sprd,sc2731-rtc.yaml
@@ -30,20 +30,4 @@ allOf:
   - $ref: rtc.yaml#
 
 unevaluatedProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/interrupt-controller/irq.h>
-
-    pmic {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      rtc@280 {
-        compatible = "sprd,sc2731-rtc";
-        reg = <0x280>;
-        interrupt-parent = <&sc2731_pmic>;
-        interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
-      };
-    };
 ...
-- 
2.43.0
Re: [PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Krzysztof Kozlowski 3 weeks, 4 days ago
On Tue, Oct 29, 2024 at 08:02:03PM +0100, Stanislav Jakubek wrote:

Thank you for your patch. There is something to discuss/improve.

> +description: |
> +  Spreadtrum PMICs belonging to the SC27xx series integrate all mobile handset
> +  power management, audio codec, battery management and user interface support
> +  functions in a single chip. They have 6 major functional blocks:
> +    - DCDCs to support CPU, memory
> +    - LDOs to support both internal and external requirements
> +    - Battery management system, such as charger, fuel gauge
> +    - Audio codec
> +    - User interface functions, such as indicator, flash LED and so on
> +    - IC level interface, such as power on/off control, RTC, typec and so on
> +
> +properties:
> +  $nodename:
> +    pattern: '^pmic@[0-9a-f]+$'
> +
> +  compatible:
> +    enum:
> +      - sprd,sc2720
> +      - sprd,sc2721
> +      - sprd,sc2723
> +      - sprd,sc2730
> +      - sprd,sc2731
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  interrupt-controller: true
> +  spi-max-frequency: true

This means:
1. You forgot to ref spi-peripheral-props
2. This is not needed and use use unevaluatedProperties: false.

Just like all SPI devices.

Unless this is not SPI?


> +
> +  '#address-cells':
> +    const: 1
> +
> +  '#interrupt-cells':
> +    const: 1
> +
> +  '#size-cells':
> +    const: 0
> +
> +  regulators:
> +    type: object
> +    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
> +
> +patternProperties:
> +  "^adc@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
> +
> +  "^charger@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/power/supply/sc2731-charger.yaml#
> +
> +  "^efuse@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#

I don't think this was merged. You still have dependency.

Try yourself - apply this patch on the maintainers tree and test it.

You can solve it by listing here compatibles and additionalProperties:
true (see Qcom mdss bindings)



> +
> +  "^fuel-gauge@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/power/supply/sc27xx-fg.yaml#
> +
> +  "^gpio@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/gpio/sprd,gpio-eic.yaml#
> +
> +  "^led-controller@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/leds/sprd,sc2731-bltc.yaml#
> +
> +  "^rtc@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/rtc/sprd,sc2731-rtc.yaml#
> +
> +  "^vibrator@[0-9a-f]+$":
> +    type: object
> +    $ref: /schemas/input/sprd,sc27xx-vibrator.yaml#
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-controller
> +  - spi-max-frequency
> +  - '#address-cells'

Keep consistent quotes, either ' or ".

> +  - '#interrupt-cells'
> +  - '#size-cells'

Best regards,
Krzysztof
Re: [PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Stanislav Jakubek 3 weeks, 4 days ago
On Wed, Oct 30, 2024 at 07:43:04AM +0100, Krzysztof Kozlowski wrote:
> On Tue, Oct 29, 2024 at 08:02:03PM +0100, Stanislav Jakubek wrote:
> 
> Thank you for your patch. There is something to discuss/improve.
> 
> > +  interrupt-controller: true
> > +  spi-max-frequency: true
> 
> This means:
> 1. You forgot to ref spi-peripheral-props
> 2. This is not needed and use use unevaluatedProperties: false.

Ack, will reference spi-peripheral-props.

> 
> Just like all SPI devices.
> 
> Unless this is not SPI?

As far as I understand it, it kind of is SPI and kind of isn't.
See /schemas/spi/sprd,spi-adi.yaml.

> 
> 
> > +
> > +  '#address-cells':
> > +    const: 1
> > +
> > +  '#interrupt-cells':
> > +    const: 1
> > +
> > +  '#size-cells':
> > +    const: 0
> > +
> > +  regulators:
> > +    type: object
> > +    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
> > +
> > +patternProperties:
> > +  "^adc@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
> > +
> > +  "^charger@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/power/supply/sc2731-charger.yaml#
> > +
> > +  "^efuse@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#
> 
> I don't think this was merged. You still have dependency.

This is in next-20241029, which this patch is based on.

> 
> Try yourself - apply this patch on the maintainers tree and test it.
> 
> You can solve it by listing here compatibles and additionalProperties:
> true (see Qcom mdss bindings)
> 
> 
> 
> > +
> > +  "^fuel-gauge@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/power/supply/sc27xx-fg.yaml#
> > +
> > +  "^gpio@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/gpio/sprd,gpio-eic.yaml#
> > +
> > +  "^led-controller@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/leds/sprd,sc2731-bltc.yaml#
> > +
> > +  "^rtc@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/rtc/sprd,sc2731-rtc.yaml#
> > +
> > +  "^vibrator@[0-9a-f]+$":
> > +    type: object
> > +    $ref: /schemas/input/sprd,sc27xx-vibrator.yaml#
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - interrupts
> > +  - interrupt-controller
> > +  - spi-max-frequency
> > +  - '#address-cells'
> 
> Keep consistent quotes, either ' or ".

Ack.

Thanks for the review,
Stanislav

> 
> > +  - '#interrupt-cells'
> > +  - '#size-cells'
> 
> Best regards,
> Krzysztof
>
Re: [PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Krzysztof Kozlowski 3 weeks, 4 days ago
On 30/10/2024 08:42, Stanislav Jakubek wrote:
>>
>>> +
>>> +  '#address-cells':
>>> +    const: 1
>>> +
>>> +  '#interrupt-cells':
>>> +    const: 1
>>> +
>>> +  '#size-cells':
>>> +    const: 0
>>> +
>>> +  regulators:
>>> +    type: object
>>> +    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
>>> +
>>> +patternProperties:
>>> +  "^adc@[0-9a-f]+$":
>>> +    type: object
>>> +    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
>>> +
>>> +  "^charger@[0-9a-f]+$":
>>> +    type: object
>>> +    $ref: /schemas/power/supply/sc2731-charger.yaml#
>>> +
>>> +  "^efuse@[0-9a-f]+$":
>>> +    type: object
>>> +    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#
>>
>> I don't think this was merged. You still have dependency.
> 
> This is in next-20241029, which this patch is based on.

Try what I wrote below and see if this works...

Best regards,
Krzysztof
Re: [PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Stanislav Jakubek 3 weeks, 4 days ago
On Wed, Oct 30, 2024 at 08:48:25AM +0100, Krzysztof Kozlowski wrote:
> On 30/10/2024 08:42, Stanislav Jakubek wrote:
> >>
> >>> +
> >>> +  '#address-cells':
> >>> +    const: 1
> >>> +
> >>> +  '#interrupt-cells':
> >>> +    const: 1
> >>> +
> >>> +  '#size-cells':
> >>> +    const: 0
> >>> +
> >>> +  regulators:
> >>> +    type: object
> >>> +    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
> >>> +
> >>> +patternProperties:
> >>> +  "^adc@[0-9a-f]+$":
> >>> +    type: object
> >>> +    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
> >>> +
> >>> +  "^charger@[0-9a-f]+$":
> >>> +    type: object
> >>> +    $ref: /schemas/power/supply/sc2731-charger.yaml#
> >>> +
> >>> +  "^efuse@[0-9a-f]+$":
> >>> +    type: object
> >>> +    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#
> >>
> >> I don't think this was merged. You still have dependency.
> > 
> > This is in next-20241029, which this patch is based on.
> 
> Try what I wrote below and see if this works...

I assume you meant the MFD maintainers' tree here.
Yes, that tree doesn't have the nvmem patch this depends on.

Would the approach with listing the compatibles and additionalProperties:
true be considered a temporary workaround?

If so, should I split this into 2 patches?
- 1st patch with the nvmem workaround above
- 2nd with adding the nvmem $ref back (which would get merged later)

Regards,
Stanislav

> 
> Best regards,
> Krzysztof
>
Re: [PATCH v2] dt-bindings: mfd: sprd,sc2731: convert to YAML
Posted by Krzysztof Kozlowski 3 weeks, 3 days ago
On 30/10/2024 09:14, Stanislav Jakubek wrote:
> On Wed, Oct 30, 2024 at 08:48:25AM +0100, Krzysztof Kozlowski wrote:
>> On 30/10/2024 08:42, Stanislav Jakubek wrote:
>>>>
>>>>> +
>>>>> +  '#address-cells':
>>>>> +    const: 1
>>>>> +
>>>>> +  '#interrupt-cells':
>>>>> +    const: 1
>>>>> +
>>>>> +  '#size-cells':
>>>>> +    const: 0
>>>>> +
>>>>> +  regulators:
>>>>> +    type: object
>>>>> +    $ref: /schemas/regulator/sprd,sc2731-regulator.yaml#
>>>>> +
>>>>> +patternProperties:
>>>>> +  "^adc@[0-9a-f]+$":
>>>>> +    type: object
>>>>> +    $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml#
>>>>> +
>>>>> +  "^charger@[0-9a-f]+$":
>>>>> +    type: object
>>>>> +    $ref: /schemas/power/supply/sc2731-charger.yaml#
>>>>> +
>>>>> +  "^efuse@[0-9a-f]+$":
>>>>> +    type: object
>>>>> +    $ref: /schemas/nvmem/sprd,sc2731-efuse.yaml#
>>>>
>>>> I don't think this was merged. You still have dependency.
>>>
>>> This is in next-20241029, which this patch is based on.
>>
>> Try what I wrote below and see if this works...
> 
> I assume you meant the MFD maintainers' tree here.
> Yes, that tree doesn't have the nvmem patch this depends on.
> 
> Would the approach with listing the compatibles and additionalProperties:
> true be considered a temporary workaround?

Not really, it's a correct approach. The node will be validated anyway
by efuse/child schema.

Best regards,
Krzysztof