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/i2c/i2c-mux-pinctrl.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-only
    2 %YAML 1.2
    3 ---
    4 $id: http://devicetree.org/schemas/i2c/i2c-mux-pinctrl.yaml#
    5 $schema: http://devicetree.org/meta-schemas/core.yaml#
    6 
    7 title: Pinctrl-based I2C Bus Mux
    8 
    9 maintainers:
   10   - Wolfram Sang <wsa@kernel.org>
   11 
   12 description: |
   13   This binding describes an I2C bus multiplexer that uses pin multiplexing to route the I2C
   14   signals, and represents the pin multiplexing configuration using the pinctrl device tree
   15   bindings.
   16 
   17                                  +-----+  +-----+
   18                                  | dev |  | dev |
   19     +------------------------+   +-----+  +-----+
   20     | SoC                    |      |        |
   21     |                   /----|------+--------+
   22     |   +---+   +------+     | child bus A, on first set of pins
   23     |   |I2C|---|Pinmux|     |
   24     |   +---+   +------+     | child bus B, on second set of pins
   25     |                   \----|------+--------+--------+
   26     |                        |      |        |        |
   27     +------------------------+  +-----+  +-----+  +-----+
   28                                 | dev |  | dev |  | dev |
   29                                 +-----+  +-----+  +-----+
   30 
   31   For each named state defined in the pinctrl-names property, an I2C child bus will be created.
   32   I2C child bus numbers are assigned based on the index into the pinctrl-names property.
   33 
   34   The only exception is that no bus will be created for a state named "idle". If such a state is
   35   defined, it must be the last entry in pinctrl-names. For example:
   36 
   37     pinctrl-names = "ddc", "pta", "idle"  ->  ddc = bus 0, pta = bus 1
   38     pinctrl-names = "ddc", "idle", "pta"  ->  Invalid ("idle" not last)
   39     pinctrl-names = "idle", "ddc", "pta"  ->  Invalid ("idle" not last)
   40 
   41   Whenever an access is made to a device on a child bus, the relevant pinctrl state will be
   42   programmed into hardware.
   43 
   44   If an idle state is defined, whenever an access is not being made to a device on a child bus,
   45   the idle pinctrl state will be programmed into hardware.
   46 
   47   If an idle state is not defined, the most recently used pinctrl state will be left programmed
   48   into hardware whenever no access is being made of a device on a child bus.
   49 
   50 properties:
   51   compatible:
   52     const: i2c-mux-pinctrl
   53 
   54   i2c-parent:
   55     $ref: /schemas/types.yaml#/definitions/phandle
   56     description: The phandle of the I2C bus that this multiplexer's master-side port is connected
   57       to.
   58 
   59 allOf:
   60   - $ref: i2c-mux.yaml
   61 
   62 unevaluatedProperties: false
   63 
   64 required:
   65   - compatible
   66   - i2c-parent
   67 
   68 examples:
   69   - |
   70     i2cmux {
   71       compatible = "i2c-mux-pinctrl";
   72       #address-cells = <1>;
   73       #size-cells = <0>;
   74 
   75       i2c-parent = <&i2c1>;
   76 
   77       pinctrl-names = "ddc", "pta", "idle";
   78       pinctrl-0 = <&state_i2cmux_ddc>;
   79       pinctrl-1 = <&state_i2cmux_pta>;
   80       pinctrl-2 = <&state_i2cmux_idle>;
   81 
   82       i2c@0 {
   83         reg = <0>;
   84         #address-cells = <1>;
   85         #size-cells = <0>;
   86 
   87         eeprom@50 {
   88           compatible = "atmel,24c02";
   89           reg = <0x50>;
   90         };
   91       };
   92 
   93       i2c@1 {
   94         reg = <1>;
   95         #address-cells = <1>;
   96         #size-cells = <0>;
   97 
   98         eeprom@50 {
   99           compatible = "atmel,24c02";
  100           reg = <0x50>;
  101         };
  102       };
  103     };

Cache object: 61ebd853ba9299b7d8b88732f0c06a81


[ 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.