| # SPDX-License-Identifier: GPL-2.0 |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mux/gpio-mux.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: GPIO-based multiplexer controller |
| |
| maintainers: |
| - Peter Rosin <peda@axentia.se> |
| |
| description: |+ |
| Define what GPIO pins are used to control a multiplexer. Or several |
| multiplexers, if the same pins control more than one multiplexer. |
| |
| The multiplexer state is defined as the number represented by the |
| multiplexer GPIO pins, where the first pin is the least significant |
| bit. An active pin is a binary 1, an inactive pin is a binary 0. |
| |
| properties: |
| compatible: |
| const: gpio-mux |
| |
| mux-gpios: |
| description: |
| List of gpios used to control the multiplexer, least significant bit first. |
| |
| '#mux-control-cells': |
| enum: [ 0, 1 ] |
| |
| '#mux-state-cells': |
| enum: [ 1, 2 ] |
| |
| idle-state: |
| default: -1 |
| |
| required: |
| - compatible |
| - mux-gpios |
| anyOf: |
| - required: |
| - "#mux-control-cells" |
| - required: |
| - "#mux-state-cells" |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| |
| mux: 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 = <&mux>; |
| |
| channels = "sync-1", "in", "out", "sync-2"; |
| }; |
| |
| i2c-mux { |
| compatible = "i2c-mux"; |
| i2c-parent = <&i2c1>; |
| |
| mux-controls = <&mux>; |
| |
| #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>; |
| }; |
| }; |
| }; |
| ... |