File Index
Files and directories
Sign in
FILE

i2c-demux-pinctrl.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.yaml YAML
  1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/i2c/i2c-demux-pinctrl.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: Pinctrl-based I2C Bus Demultiplexer
  8
  9maintainers:
 10  - Wolfram Sang <wsa+renesas@sang-engineering.com>
 11
 12description: |
 13  This binding describes an I2C bus demultiplexer that uses pin multiplexing to
 14  route the I2C signals, and represents the pin multiplexing configuration
 15  using the pinctrl device tree bindings.  This may be used to select one I2C
 16  IP core at runtime which may have a better feature set for a given task than
 17  another I2C IP core on the SoC.  The most simple example is to fall back to
 18  GPIO bitbanging if your current runtime configuration hits an errata of the
 19  internal IP core.
 20
 21      +-------------------------------+
 22      | SoC                           |
 23      |                               |   +-----+  +-----+
 24      |   +------------+              |   | dev |  | dev |
 25      |   |I2C IP Core1|--\           |   +-----+  +-----+
 26      |   +------------+   \-------+  |      |        |
 27      |                    |Pinctrl|--|------+--------+
 28      |   +------------+   +-------+  |
 29      |   |I2C IP Core2|--/           |
 30      |   +------------+              |
 31      |                               |
 32      +-------------------------------+
 33
 34allOf:
 35  - $ref: /schemas/i2c/i2c-controller.yaml#
 36
 37properties:
 38  compatible:
 39    const: i2c-demux-pinctrl
 40
 41  i2c-parent:
 42    $ref: /schemas/types.yaml#/definitions/phandle-array
 43    items:
 44      maxItems: 1
 45    description:
 46      List of phandles of I2C masters available for selection.  The first one
 47      will be used as default.
 48
 49  i2c-bus-name:
 50    $ref: /schemas/types.yaml#/definitions/string
 51    description:
 52      The name of this bus.  Also needed as pinctrl-name for the I2C parents.
 53
 54required:
 55  - compatible
 56  - i2c-parent
 57  - i2c-bus-name
 58
 59unevaluatedProperties: false
 60
 61examples:
 62  - |
 63    #include <dt-bindings/gpio/gpio.h>
 64    #include <dt-bindings/interrupt-controller/irq.h>
 65
 66    gpioi2c2: i2c-9 {
 67        #address-cells = <1>;
 68        #size-cells = <0>;
 69        compatible = "i2c-gpio";
 70        scl-gpios = <&gpio5 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 71        sda-gpios = <&gpio5 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 72        i2c-gpio,delay-us = <5>;
 73
 74        // The I2C controller must have its status "disabled".  The I2C bus
 75        // demultiplexer will enable it at runtime when needed.
 76        status = "disabled";
 77    };
 78
 79    iic2: i2c@e6520000 {
 80        reg = <0xe6520000 0x425>;
 81        pinctrl-0 = <&iic2_pins>;
 82        // The pinctrl property for the parent I2C controller needs a pinctrl
 83        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
 84        // node, not "default"!
 85        pinctrl-names = "i2c-hdmi";
 86
 87        clock-frequency = <100000>;
 88
 89        // The I2C controller must have its status "disabled".  The I2C bus
 90        // demultiplexer will enable it at runtime when needed.
 91        status = "disabled";
 92    };
 93
 94    i2c2: i2c@e6530000 {
 95        reg = <0 0xe6530000 0 0x40>;
 96        pinctrl-0 = <&i2c2_pins>;
 97        // The pinctrl property for the parent I2C controller needs a pinctrl
 98        // state with the same name as i2c-bus-name in the I2C bus demultiplexer
 99        // node, not "default"!
100        pinctrl-names = "i2c-hdmi";
101
102        clock-frequency = <100000>;
103
104        // The I2C controller must have its status "disabled".  The I2C bus
105        // demultiplexer will enable it at runtime when needed.
106        status = "disabled";
107    };
108
109    // Example for a bus to be demuxed.  It contains various I2C clients for
110    // HDMI, so the bus is named "i2c-hdmi":
111    i2chdmi: i2c-mux3 {
112        compatible = "i2c-demux-pinctrl";
113        i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
114        i2c-bus-name = "i2c-hdmi";
115        #address-cells = <1>;
116        #size-cells = <0>;
117
118        ak4643: codec@12 {
119            compatible = "asahi-kasei,ak4643";
120            #sound-dai-cells = <0>;
121            reg = <0x12>;
122        };
123
124        composite-in@20 {
125            compatible = "adi,adv7180";
126            reg = <0x20>;
127
128            port {
129                adv7180: endpoint {
130                    bus-width = <8>;
131                    remote-endpoint = <&vin1ep0>;
132                };
133            };
134        };
135
136        hdmi@39 {
137            compatible = "adi,adv7511w";
138            reg = <0x39>;
139            interrupt-parent = <&gpio1>;
140            interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
141            clocks = <&cec_clock>;
142            clock-names = "cec";
143
144            avdd-supply = <&fixedregulator1v8>;
145            dvdd-supply = <&fixedregulator1v8>;
146            pvdd-supply = <&fixedregulator1v8>;
147            dvdd-3v-supply = <&fixedregulator3v3>;
148            bgvdd-supply = <&fixedregulator1v8>;
149
150            adi,input-depth = <8>;
151            adi,input-colorspace = "rgb";
152            adi,input-clock = "1x";
153
154            ports {
155                #address-cells = <1>;
156                #size-cells = <0>;
157
158                port@0 {
159                    reg = <0>;
160                    adv7511_in: endpoint {
161                        remote-endpoint = <&lvds0_out>;
162                    };
163                };
164
165                port@1 {
166                    reg = <1>;
167                    adv7511_out: endpoint {
168                        remote-endpoint = <&hdmi_con_out>;
169                    };
170                };
171            };
172        };
173    };
~/ Read-only file preview.