162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/multiplexer/io-channel-mux.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: I/O channel multiplexer
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Peter Rosin <peda@axentia.se>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  If a multiplexer is used to select which hardware signal is fed to
1462306a36Sopenharmony_ci  e.g. an ADC channel, these bindings describe that situation.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  For each non-empty string in the channels property, an io-channel will be
1762306a36Sopenharmony_ci  created. The number of this io-channel is the same as the index into the list
1862306a36Sopenharmony_ci  of strings in the channels property, and also matches the mux controller
1962306a36Sopenharmony_ci  state. The mux controller state is described in
2062306a36Sopenharmony_ci  Documentation/devicetree/bindings/mux/mux-controller.yaml
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  compatible:
2562306a36Sopenharmony_ci    const: io-channel-mux
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  io-channels:
2862306a36Sopenharmony_ci    maxItems: 1
2962306a36Sopenharmony_ci    description: Channel node of the parent channel that has multiplexed input.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  io-channel-names:
3262306a36Sopenharmony_ci    const: parent
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  mux-controls: true
3562306a36Sopenharmony_ci  mux-control-names: true
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  channels:
3862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
3962306a36Sopenharmony_ci    description:
4062306a36Sopenharmony_ci      List of strings, labeling the mux controller states. An empty
4162306a36Sopenharmony_ci      string for a state means that the channel is not available.
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  settle-time-us:
4462306a36Sopenharmony_ci    default: 0
4562306a36Sopenharmony_ci    description:
4662306a36Sopenharmony_ci      Time required for analog signals to settle after muxing.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  "#io-channel-cells":
4962306a36Sopenharmony_ci    const: 1
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cirequired:
5262306a36Sopenharmony_ci  - compatible
5362306a36Sopenharmony_ci  - io-channels
5462306a36Sopenharmony_ci  - io-channel-names
5562306a36Sopenharmony_ci  - mux-controls
5662306a36Sopenharmony_ci  - channels
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciadditionalProperties: false
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciexamples:
6162306a36Sopenharmony_ci  - |
6262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
6362306a36Sopenharmony_ci    mux: mux-controller {
6462306a36Sopenharmony_ci      compatible = "gpio-mux";
6562306a36Sopenharmony_ci      #mux-control-cells = <0>;
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci      mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
6862306a36Sopenharmony_ci                  <&pioA 1 GPIO_ACTIVE_HIGH>;
6962306a36Sopenharmony_ci    };
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci    adc-mux {
7262306a36Sopenharmony_ci      compatible = "io-channel-mux";
7362306a36Sopenharmony_ci      io-channels = <&adc 0>;
7462306a36Sopenharmony_ci      io-channel-names = "parent";
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci      mux-controls = <&mux>;
7762306a36Sopenharmony_ci      channels = "sync", "in", "system-regulator";
7862306a36Sopenharmony_ci    };
7962306a36Sopenharmony_ci...
80