Re: [PATCH v2 2/3] dt-bindings: i2c: realtek,rtl9301-i2c: extend for RTL9310 support
From: Jonas Jelonek <jelonek.jonas@gmail.com>
Date: 2025-07-22 18:26:01
Also in:
linux-i2c, lkml
Hi Krzysztoof, On 21.07.2025 09:02, Krzysztof Kozlowski wrote:
quoted
quoted
quoted
+ minimum: 1 + maximum: 2 + patternProperties: - '^i2c@[0-7]$': + '^i2c@([0-9]|1[0-1])$': $ref: /schemas/i2c/i2c-controller.yaml unevaluatedProperties: falseAs mentioned last time, missing constraints. How did you solve this: "you should clearly narrow this per variant"? See example schema. It has EXACTLY this case. https://elixir.bootlin.com/linux/v5.19/source/Documentation/devicetree/bindings/example-schema.yaml#L212 You also need to narrow the number of children.I missed that from your previous review by mistake, sorry for that. I managed to narrow it per variant whether 'realtek,mst-id' is required or not. But I'm not really able to do the same for the different regex patterns or the number of children. Although I'm trying to follow various examples, dt_binding_check just fails not taking the regex patterns into account. Since you have a lot of expertise on that and I obviously fail to find documentation that helps me to do that properly, could you give me some hints on how that has to look? I'd really appreciate this.So in your if:then: block where you narrow mst-id, you add on same level as properties: patternProperties: YOUR_REGEX: false
How I thought of narrowing that in the first place was to make mst-id required for RTL9310 but optional for RTL9300. In terms of describing the hardware, this is valid for RTL9300 too (but there's no need for the driver or anything else to know that). But I don't mind if you'd rather have it only defined in the 'then' block, or just disallowed for RTL9300, effectively forbidding the usage for RTL9300. Either way, it seems I'm still doing it wrong with the regex. Adding as you suggested: if: properties: compatible: contains: const: realtek,rtl9301-i2c then: patternProperties: '^i2c@([0-9]|1[0-1])$': false breaks validation of the RTL9300 example. Probably I don't see how this is expected to look like in a working state. Doing it like the following, very verbose and redundant but at least obvious to me what it should achieve: if: ... then: patternProperties: '^i2c@([0-9]|1[0-1])$': ... else: patternProperties: '^i2c@[0-7]$': .... breaks validation of both example. To be honest I don't know why.
Best regards, Krzysztof
Best regards, Jonas Jelonek