diff mbox series

[v2,1/2] media: dt-bindings: renesas,fcp: add top-level constraints

Message ID 20250128095355.65766-1-krzysztof.kozlowski@linaro.org (mailing list archive)
State New
Delegated to: Kieran Bingham
Headers show
Series [v2,1/2] media: dt-bindings: renesas,fcp: add top-level constraints | expand

Commit Message

Krzysztof Kozlowski Jan. 28, 2025, 9:53 a.m. UTC
Properties with variable number of items per each device are expected to
have widest constraints in top-level "properties:" block and further
customized (narrowed) in "if:then:".  Add missing top-level constraints
for clocks and clock-names.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

---

Changes in v2:
1. Add tag
2. Move clocks description to top level
---
 .../bindings/media/renesas,fcp.yaml           | 23 ++++++++++---------
 1 file changed, 12 insertions(+), 11 deletions(-)

Comments

Rob Herring Jan. 28, 2025, 4:10 p.m. UTC | #1
On Tue, Jan 28, 2025 at 10:53:54AM +0100, Krzysztof Kozlowski wrote:
> Properties with variable number of items per each device are expected to
> have widest constraints in top-level "properties:" block and further
> customized (narrowed) in "if:then:".  Add missing top-level constraints
> for clocks and clock-names.
> 
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

How did you find these? The below dtschema patch will find them. 
Unfortunately, there's a lot of false positives. We could eliminate some 
of them, but not sure we could get to 0. The main problem is if the 
constraints are somewhere else (e.g. reset-gpios) or via a $ref.

8<-------------------------------------------------------

diff --git a/dtschema/meta-schemas/cell.yaml b/dtschema/meta-schemas/cell.yaml
index 3f61ed93593b..b4f0d9ea0559 100644
--- a/dtschema/meta-schemas/cell.yaml
+++ b/dtschema/meta-schemas/cell.yaml
@@ -7,6 +7,7 @@ $id: http://devicetree.org/meta-schemas/cell.yaml#
 $schema: https://json-schema.org/draft/2019-09/schema
 
 array:
+  type: object
   description: cell array properties must define how many entries and what the
     entries are when there is more than one entry.
   anyOf:
diff --git a/dtschema/meta-schemas/core.yaml b/dtschema/meta-schemas/core.yaml
index c8cd03439239..233a2afd696b 100644
--- a/dtschema/meta-schemas/core.yaml
+++ b/dtschema/meta-schemas/core.yaml
@@ -16,7 +16,9 @@ allOf:
 
 definitions:
   unit-suffix-properties:
-    $ref: cell.yaml#/array
+    oneOf:
+      - $ref: cell.yaml#/array
+      - type: boolean
     propertyNames:
       description: Standard unit suffix properties don't need a type $ref
       not:
@@ -44,7 +46,9 @@ definitions:
   core-properties:
     properties:
       ranges:
-        $ref: cell.yaml#/array
+        oneOf:
+          - $ref: cell.yaml#/array
+          - type: boolean
       reg:
         $ref: cell.yaml#/array
       compatible:
diff --git a/dtschema/meta-schemas/string-array.yaml b/dtschema/meta-schemas/string-array.yaml
index f5234c6c2fc6..4d4824bc108b 100644
--- a/dtschema/meta-schemas/string-array.yaml
+++ b/dtschema/meta-schemas/string-array.yaml
@@ -5,7 +5,8 @@
 ---
 $id: http://devicetree.org/meta-schemas/string-array.yaml#
 $schema: https://json-schema.org/draft/2019-09/schema
-#type: object
+
+type: object
 
 if:
   not:
Krzysztof Kozlowski Jan. 28, 2025, 4:32 p.m. UTC | #2
On 28/01/2025 17:10, Rob Herring wrote:
> On Tue, Jan 28, 2025 at 10:53:54AM +0100, Krzysztof Kozlowski wrote:
>> Properties with variable number of items per each device are expected to
>> have widest constraints in top-level "properties:" block and further
>> customized (narrowed) in "if:then:".  Add missing top-level constraints
>> for clocks and clock-names.
>>
>> Acked-by: Conor Dooley <conor.dooley@microchip.com>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> How did you find these? The below dtschema patch will find them. 

Don't remember, v1 was in August, but I think purely manual - by
reviewing other people's code and then looking at the existing binding file.

> Unfortunately, there's a lot of false positives. We could eliminate some 
> of them, but not sure we could get to 0. The main problem is if the 
> constraints are somewhere else (e.g. reset-gpios) or via a $ref.
> 
> 8<-------------------------------------------------------
> 
> diff --git a/dtschema/meta-schemas/cell.yaml b/dtschema/meta-schemas/cell.yaml
> index 3f61ed93593b..b4f0d9ea0559 100644
> --- a/dtschema/meta-schemas/cell.yaml
> +++ b/dtschema/meta-schemas/cell.yaml
> @@ -7,6 +7,7 @@ $id: http://devicetree.org/meta-schemas/cell.yaml#
>  $schema: https://json-schema.org/draft/2019-09/schema


I'll give it a try, maybe will point few more cases.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/renesas,fcp.yaml b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
index f94dacd96278..acc08ba7940b 100644
--- a/Documentation/devicetree/bindings/media/renesas,fcp.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
@@ -35,9 +35,18 @@  properties:
   reg:
     maxItems: 1
 
-  clocks: true
+  clocks:
+    minItems: 1
+    items:
+      - description: Main clock
+      - description: Register access clock
+      - description: Video clock
 
-  clock-names: true
+  clock-names:
+    items:
+      - const: aclk
+      - const: pclk
+      - const: vclk
 
   iommus:
     maxItems: 1
@@ -69,15 +78,7 @@  allOf:
     then:
       properties:
         clocks:
-          items:
-            - description: Main clock
-            - description: Register access clock
-            - description: Video clock
-        clock-names:
-          items:
-            - const: aclk
-            - const: pclk
-            - const: vclk
+          minItems: 3
       required:
         - clock-names
     else: