162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mux/gpio-mux.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: GPIO-based multiplexer controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Peter Rosin <peda@axentia.se>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |+
1362306a36Sopenharmony_ci  Define what GPIO pins are used to control a multiplexer. Or several
1462306a36Sopenharmony_ci  multiplexers, if the same pins control more than one multiplexer.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  The multiplexer state is defined as the number represented by the
1762306a36Sopenharmony_ci  multiplexer GPIO pins, where the first pin is the least significant
1862306a36Sopenharmony_ci  bit. An active pin is a binary 1, an inactive pin is a binary 0.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciproperties:
2162306a36Sopenharmony_ci  compatible:
2262306a36Sopenharmony_ci    const: gpio-mux
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  mux-gpios:
2562306a36Sopenharmony_ci    description:
2662306a36Sopenharmony_ci      List of gpios used to control the multiplexer, least significant bit first.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  '#mux-control-cells':
2962306a36Sopenharmony_ci    enum: [ 0, 1 ]
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  '#mux-state-cells':
3262306a36Sopenharmony_ci    enum: [ 1, 2 ]
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  idle-state:
3562306a36Sopenharmony_ci    default: -1
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cirequired:
3862306a36Sopenharmony_ci  - compatible
3962306a36Sopenharmony_ci  - mux-gpios
4062306a36Sopenharmony_cianyOf:
4162306a36Sopenharmony_ci  - required:
4262306a36Sopenharmony_ci      - "#mux-control-cells"
4362306a36Sopenharmony_ci  - required:
4462306a36Sopenharmony_ci      - "#mux-state-cells"
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciadditionalProperties: false
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciexamples:
4962306a36Sopenharmony_ci  - |
5062306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci    mux: mux-controller {
5362306a36Sopenharmony_ci        compatible = "gpio-mux";
5462306a36Sopenharmony_ci        #mux-control-cells = <0>;
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci        mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
5762306a36Sopenharmony_ci              <&pioA 1 GPIO_ACTIVE_HIGH>;
5862306a36Sopenharmony_ci    };
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci    adc-mux {
6162306a36Sopenharmony_ci        compatible = "io-channel-mux";
6262306a36Sopenharmony_ci        io-channels = <&adc 0>;
6362306a36Sopenharmony_ci        io-channel-names = "parent";
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci        mux-controls = <&mux>;
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci        channels = "sync-1", "in", "out", "sync-2";
6862306a36Sopenharmony_ci    };
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci    i2c-mux {
7162306a36Sopenharmony_ci        compatible = "i2c-mux";
7262306a36Sopenharmony_ci        i2c-parent = <&i2c1>;
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci        mux-controls = <&mux>;
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci        #address-cells = <1>;
7762306a36Sopenharmony_ci        #size-cells = <0>;
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci        i2c@0 {
8062306a36Sopenharmony_ci            reg = <0>;
8162306a36Sopenharmony_ci            #address-cells = <1>;
8262306a36Sopenharmony_ci            #size-cells = <0>;
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci            ssd1307: oled@3c {
8562306a36Sopenharmony_ci                reg = <0x3c>;
8662306a36Sopenharmony_ci            };
8762306a36Sopenharmony_ci        };
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        i2c@3 {
9062306a36Sopenharmony_ci            reg = <3>;
9162306a36Sopenharmony_ci            #address-cells = <1>;
9262306a36Sopenharmony_ci            #size-cells = <0>;
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci            pca9555: pca9555@20 {
9562306a36Sopenharmony_ci                reg = <0x20>;
9662306a36Sopenharmony_ci            };
9762306a36Sopenharmony_ci        };
9862306a36Sopenharmony_ci    };
9962306a36Sopenharmony_ci...
100