diff mbox series

dt-bindings: mmc: renesas,sdhi: add top-level constraints

Message ID 20240818172923.121867-1-krzysztof.kozlowski@linaro.org (mailing list archive)
State New
Headers show
Series dt-bindings: mmc: renesas,sdhi: add top-level constraints | expand

Commit Message

Krzysztof Kozlowski Aug. 18, 2024, 5:29 p.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.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Geert Uytterhoeven Aug. 19, 2024, 1:38 p.m. UTC | #1
Hi Krzysztof,

On Sun, Aug 18, 2024 at 7:29 PM Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> 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.
>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Thanks for your patch!

> --- a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> +++ b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> @@ -77,9 +77,13 @@ properties:
>      minItems: 1
>      maxItems: 3
>
> -  clocks: true
> +  clocks:
> +    minItems: 1
> +    maxItems: 4
>
> -  clock-names: true
> +  clock-names:
> +    minItems: 1
> +    maxItems: 4
>
>    dmas:
>      minItems: 4

I am a bit puzzled by all these add-top-level-constraint patches.
E.g. this file already constrains all of them below.

To me, it feels the same as a patch for driver code that would do:

    +   if (param < 16 || param > 512)
    +           return -EINVAL;
    +
        if (hw_variant_a) {
                if (param < 16 || param > 256)
                        return -EINVAL;
                ...
        } else if (hw_variant_b) {
                if (param < 32 || param > 512)
                        return -EINVAL;
                ...
        } else /* hw_variant_c */ {
                if (param < 32 || param > 384)
                        return -EINVAL;
                ...
        }

What's the point?
Thanks!

Gr{oetje,eeting}s,

                        Geert
Rob Herring (Arm) Aug. 19, 2024, 5:53 p.m. UTC | #2
On Mon, Aug 19, 2024 at 03:38:48PM +0200, Geert Uytterhoeven wrote:
> Hi Krzysztof,
> 
> On Sun, Aug 18, 2024 at 7:29 PM Krzysztof Kozlowski
> <krzysztof.kozlowski@linaro.org> 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.
> >
> > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> Thanks for your patch!
> 
> > --- a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> > +++ b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> > @@ -77,9 +77,13 @@ properties:
> >      minItems: 1
> >      maxItems: 3
> >
> > -  clocks: true
> > +  clocks:
> > +    minItems: 1
> > +    maxItems: 4
> >
> > -  clock-names: true
> > +  clock-names:
> > +    minItems: 1
> > +    maxItems: 4
> >
> >    dmas:
> >      minItems: 4
> 
> I am a bit puzzled by all these add-top-level-constraint patches.
> E.g. this file already constrains all of them below.
> 
> To me, it feels the same as a patch for driver code that would do:
> 
>     +   if (param < 16 || param > 512)
>     +           return -EINVAL;
>     +
>         if (hw_variant_a) {
>                 if (param < 16 || param > 256)
>                         return -EINVAL;
>                 ...
>         } else if (hw_variant_b) {
>                 if (param < 32 || param > 512)
>                         return -EINVAL;
>                 ...
>         } else /* hw_variant_c */ {
>                 if (param < 32 || param > 384)
>                         return -EINVAL;
>                 ...
>         }
> 
> What's the point?

if/then schemas can be incomplete and we don't enforce they are missing 
constraints. We could change that, but we'd have to do that everywhere. 
It would make the schemas longer. 

If you have a new chip not yet documented, but matches the fallback 
compatible (as many Renesas bindings have), then you at least 
get constraints within the existing bounds.

The keywords didn't exist when we started out. It is somewhat academic 
because we know what the implementation supports, but it is entirely 
possible a json-schema implementation doesn't support if/then schemas. 
The spec says unknown keywords are ignored.

Rob
Rob Herring (Arm) Aug. 19, 2024, 5:54 p.m. UTC | #3
On Sun, 18 Aug 2024 19:29:23 +0200, 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.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>  Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Ulf Hansson Aug. 20, 2024, 11:50 a.m. UTC | #4
On Sun, 18 Aug 2024 at 19:29, Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> 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.
>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Applied for next, thanks!

Kind regards
Uffe


> ---
>  Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> index 1155b1d79df5..6d4a1faa1c4b 100644
> --- a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> +++ b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
> @@ -77,9 +77,13 @@ properties:
>      minItems: 1
>      maxItems: 3
>
> -  clocks: true
> +  clocks:
> +    minItems: 1
> +    maxItems: 4
>
> -  clock-names: true
> +  clock-names:
> +    minItems: 1
> +    maxItems: 4
>
>    dmas:
>      minItems: 4
> --
> 2.43.0
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
index 1155b1d79df5..6d4a1faa1c4b 100644
--- a/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
+++ b/Documentation/devicetree/bindings/mmc/renesas,sdhi.yaml
@@ -77,9 +77,13 @@  properties:
     minItems: 1
     maxItems: 3
 
-  clocks: true
+  clocks:
+    minItems: 1
+    maxItems: 4
 
-  clock-names: true
+  clock-names:
+    minItems: 1
+    maxItems: 4
 
   dmas:
     minItems: 4