# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/i2c/i2c-demux-pinctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Pinctrl-based I2C Bus Demultiplexer

maintainers:
  - Wolfram Sang <wsa+renesas@sang-engineering.com>

description: |
  This binding describes an I2C bus demultiplexer that uses pin multiplexing to
  route the I2C signals, and represents the pin multiplexing configuration
  using the pinctrl device tree bindings.  This may be used to select one I2C
  IP core at runtime which may have a better feature set for a given task than
  another I2C IP core on the SoC.  The most simple example is to fall back to
  GPIO bitbanging if your current runtime configuration hits an errata of the
  internal IP core.

      +-------------------------------+
      | SoC                           |
      |                               |   +-----+  +-----+
      |   +------------+              |   | dev |  | dev |
      |   |I2C IP Core1|--\           |   +-----+  +-----+
      |   +------------+   \-------+  |      |        |
      |                    |Pinctrl|--|------+--------+
      |   +------------+   +-------+  |
      |   |I2C IP Core2|--/           |
      |   +------------+              |
      |                               |
      +-------------------------------+

allOf:
  - $ref: /schemas/i2c/i2c-controller.yaml#

properties:
  compatible:
    const: i2c-demux-pinctrl

  i2c-parent:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      maxItems: 1
    description:
      List of phandles of I2C masters available for selection.  The first one
      will be used as default.

  i2c-bus-name:
    $ref: /schemas/types.yaml#/definitions/string
    description:
      The name of this bus.  Also needed as pinctrl-name for the I2C parents.

required:
  - compatible
  - i2c-parent
  - i2c-bus-name

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    gpioi2c2: i2c-9 {
        #address-cells = <1>;
        #size-cells = <0>;
        compatible = "i2c-gpio";
        scl-gpios = <&gpio5 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        sda-gpios = <&gpio5 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        i2c-gpio,delay-us = <5>;

        // The I2C controller must have its status "disabled".  The I2C bus
        // demultiplexer will enable it at runtime when needed.
        status = "disabled";
    };

    iic2: i2c@e6520000 {
        reg = <0xe6520000 0x425>;
        pinctrl-0 = <&iic2_pins>;
        // The pinctrl property for the parent I2C controller needs a pinctrl
        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
        // node, not "default"!
        pinctrl-names = "i2c-hdmi";

        clock-frequency = <100000>;

        // The I2C controller must have its status "disabled".  The I2C bus
        // demultiplexer will enable it at runtime when needed.
        status = "disabled";
    };

    i2c2: i2c@e6530000 {
        reg = <0 0xe6530000 0 0x40>;
        pinctrl-0 = <&i2c2_pins>;
        // The pinctrl property for the parent I2C controller needs a pinctrl
        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
        // node, not "default"!
        pinctrl-names = "i2c-hdmi";

        clock-frequency = <100000>;

        // The I2C controller must have its status "disabled".  The I2C bus
        // demultiplexer will enable it at runtime when needed.
        status = "disabled";
    };

    // Example for a bus to be demuxed.  It contains various I2C clients for
    // HDMI, so the bus is named "i2c-hdmi":
    i2chdmi: i2c-mux3 {
            compatible = "i2c-demux-pinctrl";
            i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
            i2c-bus-name = "i2c-hdmi";
            #address-cells = <1>;
            #size-cells = <0>;

            ak4643: codec@12 {
                    compatible = "asahi-kasei,ak4643";
                    #sound-dai-cells = <0>;
                    reg = <0x12>;
            };

            composite-in@20 {
                    compatible = "adi,adv7180";
                    reg = <0x20>;

                    port {
                            adv7180: endpoint {
                                    bus-width = <8>;
                                    remote-endpoint = <&vin1ep0>;
                            };
                    };
            };

            hdmi@39 {
                    compatible = "adi,adv7511w";
                    reg = <0x39>;
                    interrupt-parent = <&gpio1>;
                    interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
                    clocks = <&cec_clock>;
                    clock-names = "cec";

                    avdd-supply = <&fixedregulator1v8>;
                    dvdd-supply = <&fixedregulator1v8>;
                    pvdd-supply = <&fixedregulator1v8>;
                    dvdd-3v-supply = <&fixedregulator3v3>;
                    bgvdd-supply = <&fixedregulator1v8>;

                    adi,input-depth = <8>;
                    adi,input-colorspace = "rgb";
                    adi,input-clock = "1x";

                    ports {
                            #address-cells = <1>;
                            #size-cells = <0>;

                            port@0 {
                                    reg = <0>;
                                    adv7511_in: endpoint {
                                            remote-endpoint = <&lvds0_out>;
                                    };
                            };

                            port@1 {
                                    reg = <1>;
                                    adv7511_out: endpoint {
                                            remote-endpoint = <&hdmi_con_out>;
                                    };
                            };
                    };
            };
    };
