# 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

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' or '#mux-state-cells' property.
  The value of '#mux-state-cells' will always be one greater than the value
  of '#mux-control-cells'.

  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:
    - required:
        - '#mux-control-cells'
    - required:
        - '#mux-state-cells'

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

  '#mux-state-cells':
    enum: [ 1, 2 ]

  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>;
            };
        };
    };

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

    mux1: mux-controller {
        compatible = "gpio-mux";
        #mux-state-cells = <1>;
        mux-gpios = <&exp_som 2 GPIO_ACTIVE_HIGH>;
    };

    transceiver4: can-phy4 {
        compatible = "ti,tcan1042";
        #phy-cells = <0>;
        max-bitrate = <5000000>;
        standby-gpios = <&exp_som 7 GPIO_ACTIVE_HIGH>;
        mux-states = <&mux1 1>;
    };
...
