# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: GPIO-based I2C Bus Mux

maintainers:
  - Wolfram Sang <wsa@kernel.org>

description: |
  This binding describes an I2C bus multiplexer that uses GPIOs to route the I2C signals.

                                  +-----+  +-----+
                                  | dev |  | dev |
    +------------+                +-----+  +-----+
    | SoC        |                   |        |
    |            |          /--------+--------+
    |   +------+ |  +------+    child bus A, on GPIO value set to 0
    |   | I2C  |-|--| Mux  |
    |   +------+ |  +--+---+    child bus B, on GPIO value set to 1
    |            |     |    \----------+--------+--------+
    |   +------+ |     |               |        |        |
    |   | GPIO |-|-----+            +-----+  +-----+  +-----+
    |   +------+ |                  | dev |  | dev |  | dev |
    +------------+                  +-----+  +-----+  +-----+

  For each I2C child node, an I2C child bus will be created. They will be numbered based on their
  order in the device tree.

  Whenever an access is made to a device on a child bus, the value set in the relevant node's reg
  property will be output using the list of GPIOs, the first in the list holding the least-
  significant value.

  If an idle state is defined, using the idle-state (optional) property, whenever an access is not
  being made to a device on a child bus, the GPIOs will be set according to the idle value.

  If an idle state is not defined, the most recently used value will be left programmed into
  hardware whenever no access is being made to a device on a child bus.

properties:
  compatible:
    const: i2c-mux-gpio

  i2c-parent:
    description: phandle of the I2C bus that this multiplexer's master-side port is connected to
    $ref: /schemas/types.yaml#/definitions/phandle

  mux-gpios:
    description: list of GPIOs used to control the muxer
    minItems: 1
    maxItems: 4  # Should be enough

  idle-state:
    description: Value to set the muxer to when idle. When no value is given, it defaults to the
      last value used.
    $ref: /schemas/types.yaml#/definitions/uint32

  settle-time-us:
    description: Delay to wait before doing any transfer when a new bus gets selected.

allOf:
  - $ref: i2c-mux.yaml

unevaluatedProperties: false

required:
  - compatible
  - i2c-parent
  - mux-gpios

examples:
  - |
    i2cmux {
      compatible = "i2c-mux-gpio";
      #address-cells = <1>;
      #size-cells = <0>;
      mux-gpios = <&gpio1 22 0>, <&gpio1 23 0>;
      i2c-parent = <&i2c1>;

      i2c@1 {
        reg = <1>;
        #address-cells = <1>;
        #size-cells = <0>;

        ssd1307: oled@3c {
          compatible = "solomon,ssd1307fb-i2c";
          reg = <0x3c>;
          pwms = <&pwm 4 3000>;
          reset-gpios = <&gpio2 7 1>;
        };
      };

      i2c@3 {
        reg = <3>;
        #address-cells = <1>;
        #size-cells = <0>;

        pca9555: pca9555@20 {
          compatible = "nxp,pca9555";
          gpio-controller;
          #gpio-cells = <2>;
          reg = <0x20>;
        };
      };
    };
