diff mbox series

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

Message ID 20240818172937.121928-1-krzysztof.kozlowski@linaro.org (mailing list archive)
State New
Headers show
Series [1/2] media: dt-bindings: renesas,fcp: 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 and clock-names.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 .../devicetree/bindings/media/renesas,fcp.yaml    | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Comments

Laurent Pinchart Aug. 18, 2024, 5:37 p.m. UTC | #1
Hi Krzysztof,

Thank you for the patch.

On Sun, Aug 18, 2024 at 07:29:36PM +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 and clock-names.

In this specific case I think it's fine, but generally speaking, how do
you handle that rule when different variants have completely different
clocks, not just lack some of the clocks ?

> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>  .../devicetree/bindings/media/renesas,fcp.yaml    | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/media/renesas,fcp.yaml b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
> index c6abe719881b..68c088821b22 100644
> --- a/Documentation/devicetree/bindings/media/renesas,fcp.yaml
> +++ b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
> @@ -34,9 +34,15 @@ properties:
>    reg:
>      maxItems: 1
>  
> -  clocks: true
> +  clocks:
> +    minItems: 1
> +    maxItems: 3
>  
> -  clock-names: true
> +  clock-names:
> +    items:
> +      - const: aclk
> +      - const: pclk
> +      - const: vclk
>  
>    iommus:
>      maxItems: 1
> @@ -71,11 +77,6 @@ allOf:
>              - description: Main clock
>              - description: Register access clock
>              - description: Video clock
> -        clock-names:
> -          items:
> -            - const: aclk
> -            - const: pclk
> -            - const: vclk

Any specific reason to move the clock names but not the descriptions ?
The assymetry bothers me.

>        required:
>          - clock-names
>      else:
Krzysztof Kozlowski Aug. 18, 2024, 5:45 p.m. UTC | #2
On 18/08/2024 19:37, Laurent Pinchart wrote:
> Hi Krzysztof,
> 
> Thank you for the patch.
> 
> On Sun, Aug 18, 2024 at 07:29:36PM +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 and clock-names.
> 
> In this specific case I think it's fine, but generally speaking, how do
> you handle that rule when different variants have completely different
> clocks, not just lack some of the clocks ?

I don't understand the problem. We handle it as usual, as in all
bindings. Here there is no such case, thus names go to the top.

>>  
>> -  clock-names: true
>> +  clock-names:
>> +    items:
>> +      - const: aclk
>> +      - const: pclk
>> +      - const: vclk
>>  
>>    iommus:
>>      maxItems: 1
>> @@ -71,11 +77,6 @@ allOf:
>>              - description: Main clock
>>              - description: Register access clock
>>              - description: Video clock
>> -        clock-names:
>> -          items:
>> -            - const: aclk
>> -            - const: pclk
>> -            - const: vclk
> 
> Any specific reason to move the clock names but not the descriptions ?
> The assymetry bothers me.

The other variant does not have description of the first clock, so
moving it would be incorrect. Moving names is correct, because other
variant does not have clock-names at all.

Best regards,
Krzysztof
Laurent Pinchart Aug. 18, 2024, 5:50 p.m. UTC | #3
On Sun, Aug 18, 2024 at 07:45:55PM +0200, Krzysztof Kozlowski wrote:
> On 18/08/2024 19:37, Laurent Pinchart wrote:
> > On Sun, Aug 18, 2024 at 07:29:36PM +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 and clock-names.
> > 
> > In this specific case I think it's fine, but generally speaking, how do
> > you handle that rule when different variants have completely different
> > clocks, not just lack some of the clocks ?
> 
> I don't understand the problem. We handle it as usual, as in all
> bindings. Here there is no such case, thus names go to the top.

That answers the question, the clock names would still be
variant-specific in that case.

While the change here won't cause validation failures, I think it's
confusing to define the clock names at the top level, knowing they don't
apply to some of the variants, if we don't also define the description
there. I'd move either both or neither.

> >>  
> >> -  clock-names: true
> >> +  clock-names:
> >> +    items:
> >> +      - const: aclk
> >> +      - const: pclk
> >> +      - const: vclk
> >>  
> >>    iommus:
> >>      maxItems: 1
> >> @@ -71,11 +77,6 @@ allOf:
> >>              - description: Main clock
> >>              - description: Register access clock
> >>              - description: Video clock
> >> -        clock-names:
> >> -          items:
> >> -            - const: aclk
> >> -            - const: pclk
> >> -            - const: vclk
> > 
> > Any specific reason to move the clock names but not the descriptions ?
> > The assymetry bothers me.
> 
> The other variant does not have description of the first clock, so
> moving it would be incorrect. Moving names is correct, because other
> variant does not have clock-names at all.

I don't think it's incorrect, when the FCP has a single clock, it's the
main clock.
Krzysztof Kozlowski Aug. 18, 2024, 6:51 p.m. UTC | #4
On 18/08/2024 19:50, Laurent Pinchart wrote:
> On Sun, Aug 18, 2024 at 07:45:55PM +0200, Krzysztof Kozlowski wrote:
>> On 18/08/2024 19:37, Laurent Pinchart wrote:
>>> On Sun, Aug 18, 2024 at 07:29:36PM +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 and clock-names.
>>>
>>> In this specific case I think it's fine, but generally speaking, how do
>>> you handle that rule when different variants have completely different
>>> clocks, not just lack some of the clocks ?
>>
>> I don't understand the problem. We handle it as usual, as in all
>> bindings. Here there is no such case, thus names go to the top.
> 
> That answers the question, the clock names would still be
> variant-specific in that case.
> 
> While the change here won't cause validation failures, I think it's
> confusing to define the clock names at the top level, knowing they don't
> apply to some of the variants, if we don't also define the description
> there. I'd move either both or neither.

First, they apply to ALL variants using clock-names.
Second, we want such lists, like clocks/resets/interrupts, to share as
much as possible between variants, e.g. keep the same order. Having
clock-names listed at top-level encourages this and prevents people from
adding new binding with:

"vclk", "aclk", "pclk",
"new_clock_but_i_want_to_mess_order_of_everything_because_i_can"

> 
>>>>  
>>>> -  clock-names: true
>>>> +  clock-names:
>>>> +    items:
>>>> +      - const: aclk
>>>> +      - const: pclk
>>>> +      - const: vclk
>>>>  
>>>>    iommus:
>>>>      maxItems: 1
>>>> @@ -71,11 +77,6 @@ allOf:
>>>>              - description: Main clock
>>>>              - description: Register access clock
>>>>              - description: Video clock
>>>> -        clock-names:
>>>> -          items:
>>>> -            - const: aclk
>>>> -            - const: pclk
>>>> -            - const: vclk
>>>
>>> Any specific reason to move the clock names but not the descriptions ?
>>> The assymetry bothers me.
>>
>> The other variant does not have description of the first clock, so
>> moving it would be incorrect. Moving names is correct, because other
>> variant does not have clock-names at all.
> 
> I don't think it's incorrect, when the FCP has a single clock, it's the
> main clock.

Could be main clock, could be something else for me - I did not
investigate enough. If it is main clock, I will move the description as
well.

Best regards,
Krzysztof
Conor Dooley Aug. 19, 2024, 5:14 p.m. UTC | #5
On Sun, Aug 18, 2024 at 07:29:36PM +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 and clock-names.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Acked-by: Conor Dooley <conor.dooley@microchip.com>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/renesas,fcp.yaml b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
index c6abe719881b..68c088821b22 100644
--- a/Documentation/devicetree/bindings/media/renesas,fcp.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,fcp.yaml
@@ -34,9 +34,15 @@  properties:
   reg:
     maxItems: 1
 
-  clocks: true
+  clocks:
+    minItems: 1
+    maxItems: 3
 
-  clock-names: true
+  clock-names:
+    items:
+      - const: aclk
+      - const: pclk
+      - const: vclk
 
   iommus:
     maxItems: 1
@@ -71,11 +77,6 @@  allOf:
             - description: Main clock
             - description: Register access clock
             - description: Video clock
-        clock-names:
-          items:
-            - const: aclk
-            - const: pclk
-            - const: vclk
       required:
         - clock-names
     else: