diff mbox series

[1/2] regulator: dt-bindings: maxim,max8997: correct array of voltages

Message ID 20220331211653.175200-1-krzysztof.kozlowski@linaro.org (mailing list archive)
State New
Headers show
Series [1/2] regulator: dt-bindings: maxim,max8997: correct array of voltages | expand

Commit Message

Krzysztof Kozlowski March 31, 2022, 9:16 p.m. UTC
uint32-array with voltages should be within one bracket pair <>, not
each number in its own <>.  Also the number of elements in the array
should be defined within "items:".

This fixes DT schema warnings like:

  maxim,max8997.example.dtb: pmic@66: max8997,pmic-buck1-dvs-voltage:
    [[1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1000000, 950000]] is too short

Fixes: 1d2104f21618 ("regulator: dt-bindings: maxim,max8997: convert to dtschema")
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

---

Patch is independent of DTS.
---
 .../bindings/regulator/maxim,max8997.yaml     | 55 +++++++++++--------
 1 file changed, 31 insertions(+), 24 deletions(-)

Comments

Geert Uytterhoeven April 1, 2022, 7:46 a.m. UTC | #1
On Thu, Mar 31, 2022 at 11:17 PM Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
> uint32-array with voltages should be within one bracket pair <>, not
> each number in its own <>.  Also the number of elements in the array
> should be defined within "items:".
>
> This fixes DT schema warnings like:
>
>   maxim,max8997.example.dtb: pmic@66: max8997,pmic-buck1-dvs-voltage:
>     [[1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1000000, 950000]] is too short
>
> Fixes: 1d2104f21618 ("regulator: dt-bindings: maxim,max8997: convert to dtschema")
> Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Thanks!
Warning going, and if I add one entry too much, it still complains, so:
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Rob Herring (Arm) April 3, 2022, 3:11 p.m. UTC | #2
On Thu, Mar 31, 2022 at 11:16:52PM +0200, Krzysztof Kozlowski wrote:
> uint32-array with voltages should be within one bracket pair <>, not
> each number in its own <>.  Also the number of elements in the array
> should be defined within "items:".

Which encoding an array uses has been a source of pain.

> 
> This fixes DT schema warnings like:
> 
>   maxim,max8997.example.dtb: pmic@66: max8997,pmic-buck1-dvs-voltage:
>     [[1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1000000, 950000]] is too short

These exist due to the move from validating yaml files to DTBs and I 
haven't come up with how to fix the warning. The schema was correct as 
it was. The change leaks the encoding (everything is a matrix) into the 
schema which we don't want to do.

The issue is in the if/then schema, the tools don't know if the type is 
an array or matrix. It gets it wrong (or different from the top-level) 
and thus the warning. I think the fix will be using the extracted type 
information to do the right transformation. The code for all this is 
pretty horrible and I've lost count of how many times I've re-written 
it. I think a lot of it can be removed when/if support for yaml encoded 
DT is removed which I think can happen in a kernel cycle or 2.

Perhaps in the short term the example can just be removed or commented 
out though that doesn't help on dts files.

Rob
Krzysztof Kozlowski April 3, 2022, 3:46 p.m. UTC | #3
On 03/04/2022 17:11, Rob Herring wrote:
> On Thu, Mar 31, 2022 at 11:16:52PM +0200, Krzysztof Kozlowski wrote:
>> uint32-array with voltages should be within one bracket pair <>, not
>> each number in its own <>.  Also the number of elements in the array
>> should be defined within "items:".
> 
> Which encoding an array uses has been a source of pain.
> 
>>
>> This fixes DT schema warnings like:
>>
>>   maxim,max8997.example.dtb: pmic@66: max8997,pmic-buck1-dvs-voltage:
>>     [[1350000, 1300000, 1250000, 1200000, 1150000, 1100000, 1000000, 950000]] is too short
> 
> These exist due to the move from validating yaml files to DTBs and I 
> haven't come up with how to fix the warning. The schema was correct as 
> it was. The change leaks the encoding (everything is a matrix) into the 
> schema which we don't want to do.
> 
> The issue is in the if/then schema, the tools don't know if the type is 
> an array or matrix. It gets it wrong (or different from the top-level) 
> and thus the warning. I think the fix will be using the extracted type 
> information to do the right transformation. The code for all this is 
> pretty horrible and I've lost count of how many times I've re-written 
> it. I think a lot of it can be removed when/if support for yaml encoded 
> DT is removed which I think can happen in a kernel cycle or 2.
> 
> Perhaps in the short term the example can just be removed or commented 
> out though that doesn't help on dts files.

I think I already might be adding the same pattern to other bindings I
convert, so maybe I should add at least comments to such cases so we can
fix it later.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/regulator/maxim,max8997.yaml b/Documentation/devicetree/bindings/regulator/maxim,max8997.yaml
index d5a44ca3df04..6305a9abaead 100644
--- a/Documentation/devicetree/bindings/regulator/maxim,max8997.yaml
+++ b/Documentation/devicetree/bindings/regulator/maxim,max8997.yaml
@@ -32,8 +32,9 @@  properties:
 
   max8997,pmic-buck1-dvs-voltage:
     $ref: /schemas/types.yaml#/definitions/uint32-array
-    minItems: 1
-    maxItems: 8
+    items:
+      minItems: 1
+      maxItems: 8
     description: |
       A set of 8 voltage values in micro-volt (uV) units for buck1 when
       changing voltage using GPIO DVS.
@@ -44,8 +45,9 @@  properties:
 
   max8997,pmic-buck2-dvs-voltage:
     $ref: /schemas/types.yaml#/definitions/uint32-array
-    minItems: 1
-    maxItems: 8
+    items:
+      minItems: 1
+      maxItems: 8
     description: |
       A set of 8 voltage values in micro-volt (uV) units for buck2 when
       changing voltage using GPIO DVS.
@@ -56,8 +58,9 @@  properties:
 
   max8997,pmic-buck5-dvs-voltage:
     $ref: /schemas/types.yaml#/definitions/uint32-array
-    minItems: 1
-    maxItems: 8
+    items:
+      minItems: 1
+      maxItems: 8
     description: |
       A set of 8 voltage values in micro-volt (uV) units for buck5 when
       changing voltage using GPIO DVS.
@@ -267,14 +270,17 @@  if:
 then:
   properties:
     max8997,pmic-buck1-dvs-voltage:
-      minItems: 8
-      maxItems: 8
+      items:
+        minItems: 8
+        maxItems: 8
     max8997,pmic-buck2-dvs-voltage:
-      minItems: 8
-      maxItems: 8
+      items:
+        minItems: 8
+        maxItems: 8
     max8997,pmic-buck5-dvs-voltage:
-      minItems: 8
-      maxItems: 8
+      items:
+        minItems: 8
+        maxItems: 8
 
 examples:
   - |
@@ -303,20 +309,21 @@  examples:
                                              <&gpx0 6 GPIO_ACTIVE_HIGH>,
                                              <&gpl0 0 GPIO_ACTIVE_HIGH>;
 
-            max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
-                                             <1250000>, <1200000>,
-                                             <1150000>, <1100000>,
-                                             <1000000>, <950000>;
+            max8997,pmic-buck1-dvs-voltage = <1350000 1300000
+                                              1250000 1200000
+                                              1150000 1100000
+                                              1000000  950000>;
+
+            max8997,pmic-buck2-dvs-voltage = <1100000 1000000
+                                               950000  900000
+                                              1100000 1000000
+                                               950000  900000>;
 
-            max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
-                                             <950000>,  <900000>,
-                                             <1100000>, <1000000>,
-                                             <950000>,  <900000>;
 
-            max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
-                                             <1200000>, <1200000>,
-                                             <1200000>, <1200000>,
-                                             <1200000>, <1200000>;
+            max8997,pmic-buck5-dvs-voltage = <1200000 1200000
+                                              1200000 1200000
+                                              1200000 1200000
+                                              1200000 1200000>;
 
             pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
             pinctrl-names = "default";