Re: [PATCH 4/5] dt-bindings: i2c: Add RTL9300 I2C multiplexer

Rob Herring
2024-09-18T14:25:36Z

On Wed, Sep 18, 2024 at 11:29:31AM +1200, Chris Packham wrote:
> An extension of the RTL9300 SoC is to support multiplexing by selecting
> the SDA pins that are being used dynamically. Add a binding that allows
> us to describe hardware that makes use of this.
>
> Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
> ---
> .../bindings/i2c/realtek,rtl9300-i2c-mux.yaml | 82 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 83 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c-mux.yaml
>
> diff --git a/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c-mux.yaml b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c-mux.yaml
> new file mode 100644
> index 000000000000..a64879d0fda7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/realtek,rtl9300-i2c-mux.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-mux.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Realtek RTL I2C Multiplexer
> +
> +maintainers:
> + - Chris Packham <chris.packham@alliedtelesis.co.nz>
> +
> +description: |
> + The I2C controllers on the RTL9300 support a level of multiplexing. In the
> + simple case the rtl9300-i2c binding can provide a single SDA pin per
> + controller. This binding allows a more than one SDA line to be used per
> + controller providing a level of multiplexing.
> +
> +properties:
> + compatible:
> + const: realtek,rtl9300-i2c-mux
> +
> + i2c-parent:
> + description: phandle of the I2C bus controller that this multiplexer
> + operates on.
> + $ref: /schemas/types.yaml#/definitions/phandle

The mux isn't a separate device, so I think this should just be part of
the i2c parent:

i2c-mux@36c {
i2c@0 {
...
};
i2c@1 {
...
};
...
};

And then you can get rid of the SDA pin property. If you only use 1 pin,
then there is just 1 'i2c' child node with an address matching the SDA
pin.

Rob