On 28/08/2024 14:45, Laurent Pinchart wrote: > Hi Krzysztof, > > On Sun, Aug 18, 2024 at 08:48:54PM +0200, Krzysztof Kozlowski wrote: >> On 18/08/2024 19:51, Laurent Pinchart wrote: >>> On Sun, Aug 18, 2024 at 07:44:22PM +0200, Krzysztof Kozlowski wrote: >>>> On 18/08/2024 19:41, Laurent Pinchart wrote: >>>>> On Sun, Aug 18, 2024 at 07:30:02PM +0200, Krzysztof Kozlowski wrote: >>>>>> Each variable-length property like interrupts or resets must have fixed >>>>>> constraints on number of items for given variant in binding. The >>>>>> clauses in "if:then:" block should define both limits: upper and lower. >>>>> >>>>> I thought that, when only one of minItems or maxItems was specified, the >>>>> other automatically defaulted to the same value. I'm pretty sure I >>>>> recall Rob asking me to drop one of the two in some bindings. Has the >>>>> rule changes ? Is it documented somewhere ? >>>> >>>> New dtschema changed it and, even if previous behavior is restored, the >>>> size in if:then: always had to be constrained. You could have skipped >>>> one side of limit if it was equal to outer/top-level limit, e.g: >>>> >>>> properties: >>>> clocks: >>>> minItems: 1 >>>> maxItems: 2 >>>> >>>> >>>> if:then:properties: >>>> clocks: >>>> minItems: 2 >>> >>> Where can I find a description of the behaviour of the new dtschema >>> (hopefully with some documentation) ? >> >> No clue, but I feel there is some core concept missing. Your earlier >> statement: >> "I thought that, when only one of minItems or maxItems was specified, the" >> >> was never logically correct for the "if:then", except for the case I >> mentioned above. That's why all schema used as examples had it explicit: >> >> My talk from 2022, page 30: >> https://static.sched.com/hosted_files/osseu2022/bd/How%20to%20Get%20Your%20DT%20Schema%20Bindings%20Accepted%20in%20Less%20than%2010%20Iterations%20-%20Krzysztof%20Kozlowski%2C%20Linaro.pdf?_gl=1*kmzqmt*_gcl_au*MTU2MzQ1MjY0Mi4xNzIxNzE0NDc1 >> all constraints defined,. >> >> My talk from 2023, page 34: >> https://static.sched.com/hosted_files/eoss2023/a8/How%20to%20Get%20Your%20DT%20Schema%20Bindings%20Accepted%20in%20Less%20than%2010%20Iterations%20-%20Krzysztof%20Kozlowski%2C%20Linaro%20-%20ELCE%202023.pdf?_gl=1*1jgx6d3*_gcl_au*MTU2MzQ1MjY0Mi4xNzIxNzE0NDc1 >> >> Recently, I started using other example as "useful reference": >> https://elixir.bootlin.com/linux/v6.8/source/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml#L132 >> >> That's nothing. All three above reference examples I keep giving are >> already there and repeated in emails all the time. >> >> So aren't you confusing the entire "skip one limit" for top-level >> properties? This patch is not about it all and dtschema did not change. > > There must have been a misunderstanding indeed, I interpreted "New > dtschema changed it" as meaning there were now new rules. Is that > incorrect ? For the binding with a property defined only in top-level properties: no changes, no new rules. For the binding with top-level and if:then:else: dtschema since few months changed interpretation. > > If you don't mind clarifying, what is the current recommendation to > indicate that a property has a fixed number of items ? Which of the > following three options is preferred ? > Answer below assumes we have clocks defined in top-level properties and there is no if:then:else customizing it. > properties: > clocks: > minItems: 2 That's wrong, because items are unconstrained. > > properties: > clocks: > maxItems: 2 This one is preferred. > > properties: > clocks: > minItems: 2 > maxItems: 2 This one is correct, but less preferred. Best regards, Krzysztof