On 17/10/24 08:50, Chris Packham wrote: > > On 16/10/24 19:41, Krzysztof Kozlowski wrote: >> On Wed, Oct 16, 2024 at 11:59:45AM +1300, Chris Packham wrote: >>> +properties: >>> + compatible: >>> + oneOf: >>> + - items: >>> + - enum: >>> + - realtek,rtl9302b-i2c >>> + - realtek,rtl9302c-i2c >>> + - realtek,rtl9303-i2c >>> + - const: realtek,rtl9301-i2c >>> + - const: realtek,rtl9301-i2c >>> + >>> + reg: >>> + description: Register offset and size this I2C controller. >>> + >>> + "#address-cells": >>> + const: 1 >>> + >>> + "#size-cells": >>> + const: 0 >>> + >>> +patternProperties: >>> + '^i2c@[0-7]$': >>> + $ref: /schemas/i2c/i2c-controller.yaml >>> + unevaluatedProperties: false >>> + >>> + properties: >>> + reg: >>> + description: The SDA pin associated with the I2C bus. >>> + maxItems: 1 >>> + >>> + required: >>> + - reg >>> + >>> +required: >>> + - compatible >>> + - reg >>> + >>> +unevaluatedProperties: false >> This has to be: additionalProperties: false > > Hmm, when I do that the dt_binding_check complains > > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > ethernet-switch@1b000000: i2c@36c:i2c@0: '#address-cells', > '#size-cells', 'gpio@20' do not match any of the regexes: > 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > ethernet-switch@1b000000: i2c@36c:i2c@2: '#address-cells', > '#size-cells', 'gpio@20' do not match any of the regexes: > 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > ethernet-switch@1b000000: i2c@388:i2c@7: '#address-cells', > '#size-cells', 'gpio@20' do not match any of the regexes: > 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/mfd/realtek,rtl9301-switch.yaml# > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > i2c@36c: i2c@0: '#address-cells', '#size-cells', 'gpio@20' do not > match any of the regexes: 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml# > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > i2c@36c: i2c@2: '#address-cells', '#size-cells', 'gpio@20' do not > match any of the regexes: 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml# > Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.example.dtb: > i2c@388: i2c@7: '#address-cells', '#size-cells', 'gpio@20' do not > match any of the regexes: 'pinctrl-[0-9]+' > from schema $id: > http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml# > > Those properties should be getting defined via the i2c-controller.yaml > schema so I must be missing something, I'm just not sure what. Silly me. I removed the wrong unevaluatedProperties. If I fix up the one you actually pointed out it's fine. v7 coming soon. > >> >>> + >>> +examples: >>> + - | >>> + i2c@36c { >>> + compatible = "realtek,rtl9301-i2c"; >>> + reg = <0x36c 0x14>; >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + >>> + i2c@0 { >>> + reg = <0>; >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + gpio@20 { >>> + compatible = "nxp,pca9555"; >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x20>; >>> + }; >>> + }; >>> + >>> + i2c@2 { >>> + reg = <2>; >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + gpio@20 { >>> + compatible = "nxp,pca9555"; >>> + gpio-controller; >>> + #gpio-cells = <2>; >>> + reg = <0x20>; >>> + }; >>> + }; >>> + }; >>> + i2c@388 { >>> + compatible = "realtek,rtl9301-i2c"; >>> + reg = <0x388 0x14>; >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + >>> + i2c@7 { >>> + reg = <7>; >>> + #address-cells = <1>; >>> + #size-cells = <0>; >>> + }; >>> + }; >> Yoy have now multiple same examples. Keep only one, complete in the >> parent >> schema. > > OK. I'll keep one example of a controller with a non-zero channel in > the i2c binding and leave a more complete example in the mfd. > >>> diff --git >>> a/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml >>> b/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml >>> new file mode 100644 >>> index 000000000000..f053303ab1e6 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/mfd/realtek,rtl9301-switch.yaml >>> @@ -0,0 +1,114 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >> Best regards, >> Krzysztof >>