Re: [PATCH v2 2/9] dt-bindings: net: snps,dwmac: Update the maxitems number of resets and reset-names
From: Krzysztof Kozlowski <hidden>
Date: 2022-12-27 08:19:20
Also in:
linux-devicetree, linux-riscv, lkml
On 27/12/2022 08:48, yanhong wang wrote:
On 2022/12/20 17:21, Krzysztof Kozlowski wrote:quoted
On 20/12/2022 07:48, yanhong wang wrote:quoted
quoted
quoted
diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index e26c3e76ebb7..7870228b4cd3 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml@@ -133,12 +133,19 @@ properties: - ptp_ref resets: - maxItems: 1 - description: - MAC Reset signal. + minItems: 1 + maxItems: 3 + additionalItems: true + items: + - description: MAC Reset signal reset-names: - const: stmmaceth + minItems: 1 + maxItems: 3 + additionalItems: true + contains: + enum: + - stmmacethNo, this is highly unspecific and you know affect all the schemas using snps,dwmac.yaml. Both lists must be specific - for your device and for others.I have tried to define the resets in "starfive,jh71x0-dwmac.yaml", but it can not over-write the maxItems limit in "snps,dwmac.yaml",therefore, it will report error "reset-names: ['stmmaceth', 'ahb'] is too long" running "make dt_binding_check". Do you have any suggestions to deal with this situation?The solution is not to affect all schemas with allowing anything as reset. If you need more items for your case, you can change snps,dwmac.yaml and add constraints in allOf:if:then: allowing it only for your compatible. There are plenty of examples how this is done, e.g.: https://elixir.bootlin.com/linux/v5.19-rc6/source/Documentation/devicetree/bindings/clock/samsung,exynos7-clock.yaml#L57Thanks. Refer to the definition in the example and update the definition as follows: snps,dwmac.yaml[Partial Content]: properties: resets: maxItems: 1 description: MAC Reset signal. reset-names: const: stmmaceth allOf: - if: properties: compatible: contains: const: starfive,jh7110-dwmac then: properties: resets: minItems: 2 maxItems: 2 reset-names: items: - const: stmmaceth - const: ahb required: - resets - reset-names starfive,jh7110-dwmac.yaml[Partial Content]: properties: resets: items: - description: MAC Reset signal. - description: AHB Reset signal. reset-names: items: - const: stmmaceth - const: ahb allOf: - $ref: snps,dwmac.yaml# It will also report error "reset-names: ['stmmaceth', 'ahb'] is too long" running "make dt_binding_check" with 'starfive,jh7110-dwmac.yaml'. Do you have any better suggestions to solve this problem?
Because it is not correct. The top-level properties must have the widest constraints which in allOf:if:then:else you are further narrowing for all of variants. ALL. https://elixir.bootlin.com/linux/v5.19-rc6/source/Documentation/devicetree/bindings/clock/samsung,exynos7-clock.yaml#L57 Best regards, Krzysztof