# 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:
    - properties:
        $nodename:
          pattern: '^mux-controller'
    - required:
        - '#mux-control-cells'
    - required:
        - '#mux-state-cells'

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

  '#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>;
    };
...
