On Fri, Sep 20, 2024 at 12:09:28PM +1200, Chris Packham wrote: > Add dtschema for the I2C controller on the RTL9300 SoC. The I2C > controllers on this SoC are part of the "switch" block which is > represented here as a syscon node. The SCL pins are dependent on the I2C > controller (GPIO8 for the first controller, GPIO 17 for the second). The > SDA pins can be assigned to either one of the I2C controllers (but not > both). > > Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx> > --- > > Notes: > Changes in v2: > - Use reg property for controller registers > - Remove global-control-offset (will be hard coded in driver) > - Integrated the multiplexing function. Child nodes now represent the > available SDA lines > > .../bindings/i2c/realtek,rtl9300-i2c.yaml | 82 +++++++++++++++++++ > MAINTAINERS | 6 ++ > 2 files changed, 88 insertions(+) > create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml > > diff --git a/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml > new file mode 100644 > index 000000000000..e8c37239b299 > --- /dev/null > +++ b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c.yaml > @@ -0,0 +1,82 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/i2c/realtek,rtl9300-i2c.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Realtek RTL I2C Controller > + > +maintainers: > + - Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx> > + > +description: > + The RTL9300 SoC has two I2C controllers. Each of these has an SCL line (which > + if not-used for SCL can be a GPIO). There are 8 common SDA lines that can be > + assigned to either I2C controller. > + > +properties: > + compatible: > + const: realtek,rtl9300-i2c > + > + reg: > + description: Register offset and size this I2C controller. > + > +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 > + > +unevaluatedProperties: false This goes after "required:" block. > + > +required: > + - compatible > + - reg > + > +examples: > + - | > + switch@1b000000 { > + compatible = "realtek,rtl9302c-switch", "syscon", "simple-mfd"; Drop... or put entire example in the parent device node. > + reg = <0x1b000000 0x10000>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + i2c@36c { > + compatible = "realtek,rtl9300-i2c"; Parent is 9302c, but this is 9300? > + reg = <0x36c 0x14>; > + clock-frequency = <100000>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + i2c@0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + gpio@20 { > + compatible = "nxp,pca9555"; Mixed indentation. > + gpio-controller; > + #gpio-cells = <2>; > + reg = <0x20>; > + }; > + }; Best regards, Krzysztof