xref: /openbmc/linux/Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.yaml (revision e9ab77a4f2aa1de5982a041ffbc1facc96ef0d40)
1*e9ab77a4SJonathan Cameron# SPDX-License-Identifier: GPL-2.0
2*e9ab77a4SJonathan Cameron%YAML 1.2
3*e9ab77a4SJonathan Cameron---
4*e9ab77a4SJonathan Cameron$id: http://devicetree.org/schemas/iio/multiplexer/io-channel-mux.yaml#
5*e9ab77a4SJonathan Cameron$schema: http://devicetree.org/meta-schemas/core.yaml#
6*e9ab77a4SJonathan Cameron
7*e9ab77a4SJonathan Camerontitle: I/O channel multiplexer bindings
8*e9ab77a4SJonathan Cameron
9*e9ab77a4SJonathan Cameronmaintainers:
10*e9ab77a4SJonathan Cameron  - Peter Rosin <peda@axentia.se>
11*e9ab77a4SJonathan Cameron
12*e9ab77a4SJonathan Camerondescription: |
13*e9ab77a4SJonathan Cameron  If a multiplexer is used to select which hardware signal is fed to
14*e9ab77a4SJonathan Cameron  e.g. an ADC channel, these bindings describe that situation.
15*e9ab77a4SJonathan Cameron
16*e9ab77a4SJonathan Cameron  For each non-empty string in the channels property, an io-channel will be
17*e9ab77a4SJonathan Cameron  created. The number of this io-channel is the same as the index into the list
18*e9ab77a4SJonathan Cameron  of strings in the channels property, and also matches the mux controller
19*e9ab77a4SJonathan Cameron  state. The mux controller state is described in
20*e9ab77a4SJonathan Cameron  Documentation/devicetree/bindings/mux/mux-controller.yaml
21*e9ab77a4SJonathan Cameron
22*e9ab77a4SJonathan Cameronproperties:
23*e9ab77a4SJonathan Cameron
24*e9ab77a4SJonathan Cameron  compatible:
25*e9ab77a4SJonathan Cameron    const: io-channel-mux
26*e9ab77a4SJonathan Cameron
27*e9ab77a4SJonathan Cameron  io-channels:
28*e9ab77a4SJonathan Cameron    maxItems: 1
29*e9ab77a4SJonathan Cameron    description: Channel node of the parent channel that has multiplexed input.
30*e9ab77a4SJonathan Cameron
31*e9ab77a4SJonathan Cameron  io-channel-names:
32*e9ab77a4SJonathan Cameron    const: parent
33*e9ab77a4SJonathan Cameron
34*e9ab77a4SJonathan Cameron  mux-controls: true
35*e9ab77a4SJonathan Cameron  mux-control-names: true
36*e9ab77a4SJonathan Cameron
37*e9ab77a4SJonathan Cameron  channels:
38*e9ab77a4SJonathan Cameron    $ref: /schemas/types.yaml#/definitions/string-array
39*e9ab77a4SJonathan Cameron    description:
40*e9ab77a4SJonathan Cameron      List of strings, labeling the mux controller states.
41*e9ab77a4SJonathan Cameron
42*e9ab77a4SJonathan Cameronrequired:
43*e9ab77a4SJonathan Cameron  - compatible
44*e9ab77a4SJonathan Cameron  - io-channels
45*e9ab77a4SJonathan Cameron  - io-channel-names
46*e9ab77a4SJonathan Cameron  - mux-controls
47*e9ab77a4SJonathan Cameron  - channels
48*e9ab77a4SJonathan Cameron
49*e9ab77a4SJonathan CameronadditionalProperties: false
50*e9ab77a4SJonathan Cameron
51*e9ab77a4SJonathan Cameronexamples:
52*e9ab77a4SJonathan Cameron  - |
53*e9ab77a4SJonathan Cameron    #include <dt-bindings/gpio/gpio.h>
54*e9ab77a4SJonathan Cameron    mux: mux-controller {
55*e9ab77a4SJonathan Cameron      compatible = "gpio-mux";
56*e9ab77a4SJonathan Cameron      #mux-control-cells = <0>;
57*e9ab77a4SJonathan Cameron
58*e9ab77a4SJonathan Cameron      mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
59*e9ab77a4SJonathan Cameron                  <&pioA 1 GPIO_ACTIVE_HIGH>;
60*e9ab77a4SJonathan Cameron    };
61*e9ab77a4SJonathan Cameron
62*e9ab77a4SJonathan Cameron    adc-mux {
63*e9ab77a4SJonathan Cameron      compatible = "io-channel-mux";
64*e9ab77a4SJonathan Cameron      io-channels = <&adc 0>;
65*e9ab77a4SJonathan Cameron      io-channel-names = "parent";
66*e9ab77a4SJonathan Cameron
67*e9ab77a4SJonathan Cameron      mux-controls = <&mux>;
68*e9ab77a4SJonathan Cameron      channels = "sync", "in", "system-regulator";
69*e9ab77a4SJonathan Cameron    };
70*e9ab77a4SJonathan Cameron...
71