Merge commit '81fd23e2b3ccf71c807e671444e8accaba98ca53' of https://git.pengutronix...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / media / i2c / maxim,max9286.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 # Copyright (C) 2019 Renesas Electronics Corp.
3 %YAML 1.2
4 ---
5 $id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
7
8 title: Maxim Integrated Quad GMSL Deserializer
9
10 maintainers:
11   - Jacopo Mondi <jacopo+renesas@jmondi.org>
12   - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
13   - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
14   - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
15
16 description: |
17   The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia
18   Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data
19   lanes.
20
21   In addition to video data, the GMSL links carry a bidirectional control
22   channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic
23   not addressed to itself to the other side of the links, where a GMSL
24   serializer will output it on a local I2C bus. In the other direction all I2C
25   traffic received over GMSL by the MAX9286 is output on the local I2C bus.
26
27 properties:
28   '#address-cells':
29     const: 1
30
31   '#size-cells':
32     const: 0
33
34   compatible:
35     const: maxim,max9286
36
37   reg:
38     description: I2C device address
39     maxItems: 1
40
41   poc-supply:
42     description: Regulator providing Power over Coax to the cameras
43
44   enable-gpios:
45     description: GPIO connected to the \#PWDN pin with inverted polarity
46     maxItems: 1
47
48   gpio-controller: true
49
50   '#gpio-cells':
51     const: 2
52
53   maxim,reverse-channel-microvolt:
54     minimum: 30000
55     maximum: 200000
56     default: 170000
57     description: |
58       Initial amplitude of the reverse control channel, in micro volts.
59
60       The initial amplitude shall be adjusted to a value compatible with the
61       configuration of the connected remote serializer.
62
63       Some camera modules (for example RDACM20) include an on-board MCU that
64       pre-programs the embedded serializer with power supply noise immunity
65       (high-threshold) enabled. A typical value of the deserializer's reverse
66       channel amplitude to communicate with pre-programmed serializers is
67       170000 micro volts.
68
69       A typical value for the reverse channel amplitude to communicate with
70       a remote serializer whose high-threshold noise immunity is not enabled
71       is 100000 micro volts
72
73   ports:
74     $ref: /schemas/graph.yaml#/properties/ports
75
76     properties:
77       port@0:
78         $ref: /schemas/graph.yaml#/properties/port
79         description: GMSL Input 0
80
81       port@1:
82         $ref: /schemas/graph.yaml#/properties/port
83         description: GMSL Input 1
84
85       port@2:
86         $ref: /schemas/graph.yaml#/properties/port
87         description: GMSL Input 2
88
89       port@3:
90         $ref: /schemas/graph.yaml#/properties/port
91         description: GMSL Input 3
92
93       port@4:
94         $ref: /schemas/graph.yaml#/$defs/port-base
95         unevaluatedProperties: false
96         description: CSI-2 Output
97
98         properties:
99           endpoint:
100             $ref: /schemas/media/video-interfaces.yaml#
101             unevaluatedProperties: false
102
103             properties:
104               data-lanes: true
105
106             required:
107               - data-lanes
108
109     required:
110       - port@4
111
112   i2c-mux:
113     type: object
114     $ref: /schemas/i2c/i2c-mux.yaml#
115     unevaluatedProperties: false
116     description: |
117       Each GMSL link is modelled as a child bus of an i2c bus multiplexer/switch.
118
119     patternProperties:
120       "^i2c@[0-3]$":
121         type: object
122         description: |
123           Child node of the i2c bus multiplexer which represents a GMSL link.
124           Each serializer device on the GMSL link remote end is represented with
125           an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL
126           channels.
127
128         properties:
129           reg:
130             description: The index of the GMSL channel.
131             maxItems: 1
132
133         patternProperties:
134           "^camera@[a-f0-9]+$":
135             type: object
136             description: |
137               The remote camera device, composed by a GMSL serializer and a
138               connected video source.
139
140             properties:
141               compatible:
142                 description: The remote device compatible string.
143
144               reg:
145                 minItems: 2
146                 maxItems: 3
147                 description: |
148                   The I2C addresses to be assigned to the remote devices through
149                   address reprogramming. The number of entries depends on the
150                   requirements of the currently connected remote device.
151
152               port:
153                 $ref: /schemas/graph.yaml#/properties/port
154                 description: Connection to the MAX9286 sink.
155
156             required:
157               - compatible
158               - reg
159               - port
160
161             additionalProperties: false
162
163 required:
164   - compatible
165   - reg
166   - ports
167   - i2c-mux
168   - gpio-controller
169
170 additionalProperties: false
171
172 examples:
173   - |
174     #include <dt-bindings/gpio/gpio.h>
175
176     i2c@e66d8000 {
177       #address-cells = <1>;
178       #size-cells = <0>;
179
180       reg = <0 0xe66d8000>;
181
182       gmsl-deserializer@2c {
183         compatible = "maxim,max9286";
184         reg = <0x2c>;
185         poc-supply = <&camera_poc_12v>;
186         enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
187
188         gpio-controller;
189         #gpio-cells = <2>;
190
191         maxim,reverse-channel-microvolt = <170000>;
192
193         ports {
194           #address-cells = <1>;
195           #size-cells = <0>;
196
197           port@0 {
198             reg = <0>;
199
200             max9286_in0: endpoint {
201               remote-endpoint = <&rdacm20_out0>;
202             };
203           };
204
205           port@1 {
206             reg = <1>;
207
208             max9286_in1: endpoint {
209               remote-endpoint = <&rdacm20_out1>;
210             };
211           };
212
213           port@2 {
214             reg = <2>;
215
216             max9286_in2: endpoint {
217               remote-endpoint = <&rdacm20_out2>;
218             };
219           };
220
221           port@3 {
222             reg = <3>;
223
224             max9286_in3: endpoint {
225               remote-endpoint = <&rdacm20_out3>;
226             };
227           };
228
229           port@4 {
230             reg = <4>;
231
232             max9286_out: endpoint {
233               data-lanes = <1 2 3 4>;
234               remote-endpoint = <&csi40_in>;
235             };
236           };
237         };
238
239         i2c-mux {
240           #address-cells = <1>;
241           #size-cells = <0>;
242
243           i2c@0 {
244             #address-cells = <1>;
245             #size-cells = <0>;
246             reg = <0>;
247
248             camera@51 {
249               compatible = "imi,rdacm20";
250               reg = <0x51>, <0x61>;
251
252               port {
253                 rdacm20_out0: endpoint {
254                   remote-endpoint = <&max9286_in0>;
255                 };
256               };
257
258             };
259           };
260
261           i2c@1 {
262             #address-cells = <1>;
263             #size-cells = <0>;
264             reg = <1>;
265
266             camera@52 {
267               compatible = "imi,rdacm20";
268               reg = <0x52>, <0x62>;
269
270               port {
271                 rdacm20_out1: endpoint {
272                   remote-endpoint = <&max9286_in1>;
273                 };
274               };
275             };
276           };
277
278           i2c@2 {
279             #address-cells = <1>;
280             #size-cells = <0>;
281             reg = <2>;
282
283             camera@53 {
284               compatible = "imi,rdacm20";
285               reg = <0x53>, <0x63>;
286
287               port {
288                 rdacm20_out2: endpoint {
289                   remote-endpoint = <&max9286_in2>;
290                 };
291               };
292             };
293           };
294
295           i2c@3 {
296             #address-cells = <1>;
297             #size-cells = <0>;
298             reg = <3>;
299
300             camera@54 {
301               compatible = "imi,rdacm20";
302               reg = <0x54>, <0x64>;
303
304               port {
305                 rdacm20_out3: endpoint {
306                   remote-endpoint = <&max9286_in3>;
307                 };
308               };
309             };
310           };
311         };
312       };
313     };