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

title: Common multiplexer controller provider bindings

maintainers:
  - Peter Rosin <peda@axentia.se>

description: |
  A multiplexer (or mux) controller will have one, or several, consumer devices
  that uses the mux controller. Thus, a mux controller can possibly control
  several parallel multiplexers. Presumably there will be at least one
  multiplexer needed by each consumer, but a single mux controller can of course
  control several multiplexers for a single consumer.

  A mux controller provides a number of states to its consumers, and the state
  space is a simple zero-based enumeration. I.e. 0-1 for a 2-way multiplexer,
  0-7 for an 8-way multiplexer, etc.


  Mux controller nodes
  --------------------

  Mux controller nodes must specify the number of cells used for the
  specifier using the '#mux-control-cells' property.

  Optionally, mux controller nodes can also specify the state the mux should
  have when it is idle. The idle-state property is used for this. If the
  idle-state is not present, the mux controller is typically left as is when
  it is idle. For multiplexer chips that expose several mux controllers, the
  idle-state property is an array with one idle state for each mux controller.

  The special value (-1) may be used to indicate that the mux should be left
  as is when it is idle. This is the default, but can still be useful for
  mux controller chips with more than one mux controller, particularly when
  there is a need to "step past" a mux controller and set some other idle
  state for a mux controller with a higher index.

  Some mux controllers have the ability to disconnect the input/output of the
  multiplexer. Using this disconnected high-impedance state as the idle state
  is indicated with idle state (-2).

  These constants are available in

        #include <dt-bindings/mux/mux.h>

  as MUX_IDLE_AS_IS (-1) and MUX_IDLE_DISCONNECT (-2).

  An example mux controller node look like this (the adg972a chip is a triple
  4-way multiplexer):

    mux: mux-controller@50 {
      compatible = "adi,adg792a";
      reg = <0x50>;
      #mux-control-cells = <1>;

      idle-state = <MUX_IDLE_DISCONNECT MUX_IDLE_AS_IS 2>;
    };

select:
  anyOf:
    - properties:
        $nodename:
          pattern: '^mux-controller'
    - required:
        - '#mux-control-cells'

properties:
  $nodename:
    pattern: '^mux-controller(@.*|-[0-9a-f]+)?$'

  '#mux-control-cells':
    enum: [ 0, 1 ]

  idle-state:
    $ref: /schemas/types.yaml#/definitions/int32
    minimum: -2

  idle-states:
    description: |
      Mux controller nodes can specify the state the mux should have when it is
      idle. If the idle-state is not present, the mux controller is typically
      left as is when it is idle. For multiplexer chips that expose several mux
      controllers, the idle-state property is an array with one idle state for
      each mux controller.

      The special value (-1) may be used to indicate that the mux should be left
      as is when it is idle. This is the default, but can still be useful for
      mux controller chips with more than one mux controller, particularly when
      there is a need to "step past" a mux controller and set some other idle
      state for a mux controller with a higher index.

      Some mux controllers have the ability to disconnect the input/output of the
      multiplexer. Using this disconnected high-impedance state as the idle state
      is indicated with idle state (-2).
    $ref: /schemas/types.yaml#/definitions/int32-array
    items:
      minimum: -2

additionalProperties: true

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

    /* One consumer of a 2-way mux controller (one GPIO-line) */
    mux: mux-controller {
        compatible = "gpio-mux";
        #mux-control-cells = <0>;

        mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>;
    };

    adc-mux {
        compatible = "io-channel-mux";
        io-channels = <&adc 0>;
        io-channel-names = "parent";

        mux-controls = <&mux>;
        mux-control-names = "adc";

        channels = "sync", "in";
    };

  - |
    #include <dt-bindings/gpio/gpio.h>

    /*
     * Two consumers (one for an ADC line and one for an i2c bus) of
     * parallel 4-way multiplexers controlled by the same two GPIO-lines.
     */
    mux2: mux-controller {
        compatible = "gpio-mux";
        #mux-control-cells = <0>;

        mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
              <&pioA 1 GPIO_ACTIVE_HIGH>;
    };

    adc-mux {
        compatible = "io-channel-mux";
        io-channels = <&adc 0>;
        io-channel-names = "parent";

        mux-controls = <&mux2>;

        channels = "sync-1", "in", "out", "sync-2";
    };

    i2c-mux {
        compatible = "i2c-mux";
        i2c-parent = <&i2c1>;

        mux-controls = <&mux2>;

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

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

            ssd1307: oled@3c {
                reg = <0x3c>;
            };
        };

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

            pca9555: pca9555@20 {
                reg = <0x20>;
            };
        };
    };
...
