The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/mux/mux-controller.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # SPDX-License-Identifier: GPL-2.0
    2 %YAML 1.2
    3 ---
    4 $id: http://devicetree.org/schemas/mux/mux-controller.yaml#
    5 $schema: http://devicetree.org/meta-schemas/core.yaml#
    6 
    7 title: Common multiplexer controller provider bindings
    8 
    9 maintainers:
   10   - Peter Rosin <peda@axentia.se>
   11 
   12 description: |
   13   A multiplexer (or mux) controller will have one, or several, consumer devices
   14   that uses the mux controller. Thus, a mux controller can possibly control
   15   several parallel multiplexers. Presumably there will be at least one
   16   multiplexer needed by each consumer, but a single mux controller can of course
   17   control several multiplexers for a single consumer.
   18 
   19   A mux controller provides a number of states to its consumers, and the state
   20   space is a simple zero-based enumeration. I.e. 0-1 for a 2-way multiplexer,
   21   0-7 for an 8-way multiplexer, etc.
   22 
   23 
   24   Mux controller nodes
   25   --------------------
   26 
   27   Mux controller nodes must specify the number of cells used for the
   28   specifier using the '#mux-control-cells' or '#mux-state-cells' property.
   29   The value of '#mux-state-cells' will always be one greater than the value
   30   of '#mux-control-cells'.
   31 
   32   Optionally, mux controller nodes can also specify the state the mux should
   33   have when it is idle. The idle-state property is used for this. If the
   34   idle-state is not present, the mux controller is typically left as is when
   35   it is idle. For multiplexer chips that expose several mux controllers, the
   36   idle-state property is an array with one idle state for each mux controller.
   37 
   38   The special value (-1) may be used to indicate that the mux should be left
   39   as is when it is idle. This is the default, but can still be useful for
   40   mux controller chips with more than one mux controller, particularly when
   41   there is a need to "step past" a mux controller and set some other idle
   42   state for a mux controller with a higher index.
   43 
   44   Some mux controllers have the ability to disconnect the input/output of the
   45   multiplexer. Using this disconnected high-impedance state as the idle state
   46   is indicated with idle state (-2).
   47 
   48   These constants are available in
   49 
   50         #include <dt-bindings/mux/mux.h>
   51 
   52   as MUX_IDLE_AS_IS (-1) and MUX_IDLE_DISCONNECT (-2).
   53 
   54   An example mux controller node look like this (the adg972a chip is a triple
   55   4-way multiplexer):
   56 
   57     mux: mux-controller@50 {
   58       compatible = "adi,adg792a";
   59       reg = <0x50>;
   60       #mux-control-cells = <1>;
   61 
   62       idle-state = <MUX_IDLE_DISCONNECT MUX_IDLE_AS_IS 2>;
   63     };
   64 
   65 select:
   66   anyOf:
   67     - properties:
   68         $nodename:
   69           pattern: '^mux-controller'
   70     - required:
   71         - '#mux-control-cells'
   72     - required:
   73         - '#mux-state-cells'
   74 
   75 properties:
   76   $nodename:
   77     pattern: '^mux-controller(@.*|-[0-9a-f]+)?$'
   78 
   79   '#mux-control-cells':
   80     enum: [ 0, 1 ]
   81 
   82   '#mux-state-cells':
   83     enum: [ 1, 2 ]
   84 
   85   idle-state:
   86     $ref: /schemas/types.yaml#/definitions/int32
   87     minimum: -2
   88 
   89   idle-states:
   90     description: |
   91       Mux controller nodes can specify the state the mux should have when it is
   92       idle. If the idle-state is not present, the mux controller is typically
   93       left as is when it is idle. For multiplexer chips that expose several mux
   94       controllers, the idle-state property is an array with one idle state for
   95       each mux controller.
   96 
   97       The special value (-1) may be used to indicate that the mux should be left
   98       as is when it is idle. This is the default, but can still be useful for
   99       mux controller chips with more than one mux controller, particularly when
  100       there is a need to "step past" a mux controller and set some other idle
  101       state for a mux controller with a higher index.
  102 
  103       Some mux controllers have the ability to disconnect the input/output of the
  104       multiplexer. Using this disconnected high-impedance state as the idle state
  105       is indicated with idle state (-2).
  106     $ref: /schemas/types.yaml#/definitions/int32-array
  107     items:
  108       minimum: -2
  109 
  110 additionalProperties: true
  111 
  112 examples:
  113   - |
  114     #include <dt-bindings/gpio/gpio.h>
  115 
  116     /* One consumer of a 2-way mux controller (one GPIO-line) */
  117     mux: mux-controller {
  118         compatible = "gpio-mux";
  119         #mux-control-cells = <0>;
  120 
  121         mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>;
  122     };
  123 
  124     adc-mux {
  125         compatible = "io-channel-mux";
  126         io-channels = <&adc 0>;
  127         io-channel-names = "parent";
  128 
  129         mux-controls = <&mux>;
  130         mux-control-names = "adc";
  131 
  132         channels = "sync", "in";
  133     };
  134 
  135   - |
  136     #include <dt-bindings/gpio/gpio.h>
  137 
  138     /*
  139      * Two consumers (one for an ADC line and one for an i2c bus) of
  140      * parallel 4-way multiplexers controlled by the same two GPIO-lines.
  141      */
  142     mux2: mux-controller {
  143         compatible = "gpio-mux";
  144         #mux-control-cells = <0>;
  145 
  146         mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
  147               <&pioA 1 GPIO_ACTIVE_HIGH>;
  148     };
  149 
  150     adc-mux {
  151         compatible = "io-channel-mux";
  152         io-channels = <&adc 0>;
  153         io-channel-names = "parent";
  154 
  155         mux-controls = <&mux2>;
  156 
  157         channels = "sync-1", "in", "out", "sync-2";
  158     };
  159 
  160     i2c-mux {
  161         compatible = "i2c-mux";
  162         i2c-parent = <&i2c1>;
  163 
  164         mux-controls = <&mux2>;
  165 
  166         #address-cells = <1>;
  167         #size-cells = <0>;
  168 
  169         i2c@0 {
  170             reg = <0>;
  171             #address-cells = <1>;
  172             #size-cells = <0>;
  173 
  174             ssd1307: oled@3c {
  175                 reg = <0x3c>;
  176             };
  177         };
  178 
  179         i2c@3 {
  180             reg = <3>;
  181             #address-cells = <1>;
  182             #size-cells = <0>;
  183 
  184             pca9555: pca9555@20 {
  185                 reg = <0x20>;
  186             };
  187         };
  188     };
  189 
  190   - |
  191     #include <dt-bindings/gpio/gpio.h>
  192 
  193     mux1: mux-controller {
  194         compatible = "gpio-mux";
  195         #mux-state-cells = <1>;
  196         mux-gpios = <&exp_som 2 GPIO_ACTIVE_HIGH>;
  197     };
  198 
  199     transceiver4: can-phy4 {
  200         compatible = "ti,tcan1042";
  201         #phy-cells = <0>;
  202         max-bitrate = <5000000>;
  203         standby-gpios = <&exp_som 7 GPIO_ACTIVE_HIGH>;
  204         mux-states = <&mux1 1>;
  205     };
  206 ...

Cache object: 59ba1e4e1ae0ac08349bf5794ed95a42


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.