xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4882a593Smuzhiyun# Copyright (C) 2019 Renesas Electronics Corp.
3*4882a593Smuzhiyun%YAML 1.2
4*4882a593Smuzhiyun---
5*4882a593Smuzhiyun$id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml#
6*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
7*4882a593Smuzhiyun
8*4882a593Smuzhiyuntitle: Maxim Integrated Quad GMSL Deserializer
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunmaintainers:
11*4882a593Smuzhiyun  - Jacopo Mondi <jacopo+renesas@jmondi.org>
12*4882a593Smuzhiyun  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
13*4882a593Smuzhiyun  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
14*4882a593Smuzhiyun  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
15*4882a593Smuzhiyun
16*4882a593Smuzhiyundescription: |
17*4882a593Smuzhiyun  The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia
18*4882a593Smuzhiyun  Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data
19*4882a593Smuzhiyun  lanes.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun  In addition to video data, the GMSL links carry a bidirectional control
22*4882a593Smuzhiyun  channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic
23*4882a593Smuzhiyun  not addressed to itself to the other side of the links, where a GMSL
24*4882a593Smuzhiyun  serializer will output it on a local I2C bus. In the other direction all I2C
25*4882a593Smuzhiyun  traffic received over GMSL by the MAX9286 is output on the local I2C bus.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunproperties:
28*4882a593Smuzhiyun  '#address-cells':
29*4882a593Smuzhiyun    const: 1
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun  '#size-cells':
32*4882a593Smuzhiyun    const: 0
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun  compatible:
35*4882a593Smuzhiyun    const: maxim,max9286
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun  reg:
38*4882a593Smuzhiyun    description: I2C device address
39*4882a593Smuzhiyun    maxItems: 1
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun  poc-supply:
42*4882a593Smuzhiyun    description: Regulator providing Power over Coax to the cameras
43*4882a593Smuzhiyun    maxItems: 1
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  enable-gpios:
46*4882a593Smuzhiyun    description: GPIO connected to the \#PWDN pin with inverted polarity
47*4882a593Smuzhiyun    maxItems: 1
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun  gpio-controller: true
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun  '#gpio-cells':
52*4882a593Smuzhiyun    const: 2
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun  ports:
55*4882a593Smuzhiyun    type: object
56*4882a593Smuzhiyun    description: |
57*4882a593Smuzhiyun      The connections to the MAX9286 GMSL and its endpoint nodes are modelled
58*4882a593Smuzhiyun      using the OF graph bindings in accordance with the video interface
59*4882a593Smuzhiyun      bindings defined in
60*4882a593Smuzhiyun      Documentation/devicetree/bindings/media/video-interfaces.txt.
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun      The following table lists the port number corresponding to each device
63*4882a593Smuzhiyun      port.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun        Port            Description
66*4882a593Smuzhiyun        ----------------------------------------
67*4882a593Smuzhiyun        Port 0          GMSL Input 0
68*4882a593Smuzhiyun        Port 1          GMSL Input 1
69*4882a593Smuzhiyun        Port 2          GMSL Input 2
70*4882a593Smuzhiyun        Port 3          GMSL Input 3
71*4882a593Smuzhiyun        Port 4          CSI-2 Output
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun    properties:
74*4882a593Smuzhiyun      '#address-cells':
75*4882a593Smuzhiyun        const: 1
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun      '#size-cells':
78*4882a593Smuzhiyun        const: 0
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun      port@[0-3]:
81*4882a593Smuzhiyun        type: object
82*4882a593Smuzhiyun        properties:
83*4882a593Smuzhiyun          reg:
84*4882a593Smuzhiyun            enum: [ 0, 1, 2, 3 ]
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun          endpoint:
87*4882a593Smuzhiyun            type: object
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun            properties:
90*4882a593Smuzhiyun              remote-endpoint:
91*4882a593Smuzhiyun                description: |
92*4882a593Smuzhiyun                 phandle to the remote GMSL source endpoint subnode in the
93*4882a593Smuzhiyun                 remote node port.
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun            required:
96*4882a593Smuzhiyun              - remote-endpoint
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun        required:
99*4882a593Smuzhiyun          - reg
100*4882a593Smuzhiyun          - endpoint
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun        additionalProperties: false
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun      port@4:
105*4882a593Smuzhiyun        type: object
106*4882a593Smuzhiyun        properties:
107*4882a593Smuzhiyun          reg:
108*4882a593Smuzhiyun            const: 4
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun          endpoint:
111*4882a593Smuzhiyun            type: object
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun            properties:
114*4882a593Smuzhiyun              remote-endpoint:
115*4882a593Smuzhiyun                description: phandle to the remote CSI-2 sink endpoint.
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun              data-lanes:
118*4882a593Smuzhiyun                description: array of physical CSI-2 data lane indexes.
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun            required:
121*4882a593Smuzhiyun              - remote-endpoint
122*4882a593Smuzhiyun              - data-lanes
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun        required:
125*4882a593Smuzhiyun          - reg
126*4882a593Smuzhiyun          - endpoint
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun        additionalProperties: false
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun    required:
131*4882a593Smuzhiyun      - port@4
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun  i2c-mux:
134*4882a593Smuzhiyun    type: object
135*4882a593Smuzhiyun    description: |
136*4882a593Smuzhiyun      Each GMSL link is modelled as a child bus of an i2c bus
137*4882a593Smuzhiyun      multiplexer/switch, in accordance with bindings described in
138*4882a593Smuzhiyun      Documentation/devicetree/bindings/i2c/i2c-mux.txt.
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun    properties:
141*4882a593Smuzhiyun      '#address-cells':
142*4882a593Smuzhiyun        const: 1
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun      '#size-cells':
145*4882a593Smuzhiyun        const: 0
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun    patternProperties:
148*4882a593Smuzhiyun      "^i2c@[0-3]$":
149*4882a593Smuzhiyun        type: object
150*4882a593Smuzhiyun        description: |
151*4882a593Smuzhiyun          Child node of the i2c bus multiplexer which represents a GMSL link.
152*4882a593Smuzhiyun          Each serializer device on the GMSL link remote end is represented with
153*4882a593Smuzhiyun          an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL
154*4882a593Smuzhiyun          channels.
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun        properties:
157*4882a593Smuzhiyun          '#address-cells':
158*4882a593Smuzhiyun            const: 1
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun          '#size-cells':
161*4882a593Smuzhiyun            const: 0
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun          reg:
164*4882a593Smuzhiyun            description: The index of the GMSL channel.
165*4882a593Smuzhiyun            maxItems: 1
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun        patternProperties:
168*4882a593Smuzhiyun          "^camera@[a-f0-9]+$":
169*4882a593Smuzhiyun            type: object
170*4882a593Smuzhiyun            description: |
171*4882a593Smuzhiyun              The remote camera device, composed by a GMSL serializer and a
172*4882a593Smuzhiyun              connected video source.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun            properties:
175*4882a593Smuzhiyun              compatible:
176*4882a593Smuzhiyun                description: The remote device compatible string.
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun              reg:
179*4882a593Smuzhiyun                minItems: 2
180*4882a593Smuzhiyun                maxItems: 3
181*4882a593Smuzhiyun                description: |
182*4882a593Smuzhiyun                  The I2C addresses to be assigned to the remote devices through
183*4882a593Smuzhiyun                  address reprogramming. The number of entries depends on the
184*4882a593Smuzhiyun                  requirements of the currently connected remote device.
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun              port:
187*4882a593Smuzhiyun                type: object
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun                properties:
190*4882a593Smuzhiyun                  endpoint:
191*4882a593Smuzhiyun                    type: object
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun                    properties:
194*4882a593Smuzhiyun                      remote-endpoint:
195*4882a593Smuzhiyun                        description: phandle to the MAX9286 sink endpoint.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun                    required:
198*4882a593Smuzhiyun                      - remote-endpoint
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun                    additionalProperties: false
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun                required:
203*4882a593Smuzhiyun                  - endpoint
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun                additionalProperties: false
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun            required:
208*4882a593Smuzhiyun              - compatible
209*4882a593Smuzhiyun              - reg
210*4882a593Smuzhiyun              - port
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun            additionalProperties: false
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun        additionalProperties: false
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun    additionalProperties: false
217*4882a593Smuzhiyun
218*4882a593Smuzhiyunrequired:
219*4882a593Smuzhiyun  - compatible
220*4882a593Smuzhiyun  - reg
221*4882a593Smuzhiyun  - ports
222*4882a593Smuzhiyun  - i2c-mux
223*4882a593Smuzhiyun  - gpio-controller
224*4882a593Smuzhiyun
225*4882a593SmuzhiyunadditionalProperties: false
226*4882a593Smuzhiyun
227*4882a593Smuzhiyunexamples:
228*4882a593Smuzhiyun  - |
229*4882a593Smuzhiyun    #include <dt-bindings/gpio/gpio.h>
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun    i2c@e66d8000 {
232*4882a593Smuzhiyun      #address-cells = <1>;
233*4882a593Smuzhiyun      #size-cells = <0>;
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun      reg = <0 0xe66d8000>;
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun      gmsl-deserializer@2c {
238*4882a593Smuzhiyun        compatible = "maxim,max9286";
239*4882a593Smuzhiyun        reg = <0x2c>;
240*4882a593Smuzhiyun        poc-supply = <&camera_poc_12v>;
241*4882a593Smuzhiyun        enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun        gpio-controller;
244*4882a593Smuzhiyun        #gpio-cells = <2>;
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun        ports {
247*4882a593Smuzhiyun          #address-cells = <1>;
248*4882a593Smuzhiyun          #size-cells = <0>;
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun          port@0 {
251*4882a593Smuzhiyun            reg = <0>;
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun            max9286_in0: endpoint {
254*4882a593Smuzhiyun              remote-endpoint = <&rdacm20_out0>;
255*4882a593Smuzhiyun            };
256*4882a593Smuzhiyun          };
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun          port@1 {
259*4882a593Smuzhiyun            reg = <1>;
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun            max9286_in1: endpoint {
262*4882a593Smuzhiyun              remote-endpoint = <&rdacm20_out1>;
263*4882a593Smuzhiyun            };
264*4882a593Smuzhiyun          };
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun          port@2 {
267*4882a593Smuzhiyun            reg = <2>;
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun            max9286_in2: endpoint {
270*4882a593Smuzhiyun              remote-endpoint = <&rdacm20_out2>;
271*4882a593Smuzhiyun            };
272*4882a593Smuzhiyun          };
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun          port@3 {
275*4882a593Smuzhiyun            reg = <3>;
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun            max9286_in3: endpoint {
278*4882a593Smuzhiyun              remote-endpoint = <&rdacm20_out3>;
279*4882a593Smuzhiyun            };
280*4882a593Smuzhiyun          };
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun          port@4 {
283*4882a593Smuzhiyun            reg = <4>;
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun            max9286_out: endpoint {
286*4882a593Smuzhiyun              data-lanes = <1 2 3 4>;
287*4882a593Smuzhiyun              remote-endpoint = <&csi40_in>;
288*4882a593Smuzhiyun            };
289*4882a593Smuzhiyun          };
290*4882a593Smuzhiyun        };
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun        i2c-mux {
293*4882a593Smuzhiyun          #address-cells = <1>;
294*4882a593Smuzhiyun          #size-cells = <0>;
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun          i2c@0 {
297*4882a593Smuzhiyun            #address-cells = <1>;
298*4882a593Smuzhiyun            #size-cells = <0>;
299*4882a593Smuzhiyun            reg = <0>;
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun            camera@51 {
302*4882a593Smuzhiyun              compatible = "imi,rdacm20";
303*4882a593Smuzhiyun              reg = <0x51>, <0x61>;
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun              port {
306*4882a593Smuzhiyun                rdacm20_out0: endpoint {
307*4882a593Smuzhiyun                  remote-endpoint = <&max9286_in0>;
308*4882a593Smuzhiyun                };
309*4882a593Smuzhiyun              };
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun            };
312*4882a593Smuzhiyun          };
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun          i2c@1 {
315*4882a593Smuzhiyun            #address-cells = <1>;
316*4882a593Smuzhiyun            #size-cells = <0>;
317*4882a593Smuzhiyun            reg = <1>;
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun            camera@52 {
320*4882a593Smuzhiyun              compatible = "imi,rdacm20";
321*4882a593Smuzhiyun              reg = <0x52>, <0x62>;
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun              port {
324*4882a593Smuzhiyun                rdacm20_out1: endpoint {
325*4882a593Smuzhiyun                  remote-endpoint = <&max9286_in1>;
326*4882a593Smuzhiyun                };
327*4882a593Smuzhiyun              };
328*4882a593Smuzhiyun            };
329*4882a593Smuzhiyun          };
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun          i2c@2 {
332*4882a593Smuzhiyun            #address-cells = <1>;
333*4882a593Smuzhiyun            #size-cells = <0>;
334*4882a593Smuzhiyun            reg = <2>;
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun            camera@53 {
337*4882a593Smuzhiyun              compatible = "imi,rdacm20";
338*4882a593Smuzhiyun              reg = <0x53>, <0x63>;
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun              port {
341*4882a593Smuzhiyun                rdacm20_out2: endpoint {
342*4882a593Smuzhiyun                  remote-endpoint = <&max9286_in2>;
343*4882a593Smuzhiyun                };
344*4882a593Smuzhiyun              };
345*4882a593Smuzhiyun            };
346*4882a593Smuzhiyun          };
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun          i2c@3 {
349*4882a593Smuzhiyun            #address-cells = <1>;
350*4882a593Smuzhiyun            #size-cells = <0>;
351*4882a593Smuzhiyun            reg = <3>;
352*4882a593Smuzhiyun
353*4882a593Smuzhiyun            camera@54 {
354*4882a593Smuzhiyun              compatible = "imi,rdacm20";
355*4882a593Smuzhiyun              reg = <0x54>, <0x64>;
356*4882a593Smuzhiyun
357*4882a593Smuzhiyun              port {
358*4882a593Smuzhiyun                rdacm20_out3: endpoint {
359*4882a593Smuzhiyun                  remote-endpoint = <&max9286_in3>;
360*4882a593Smuzhiyun                };
361*4882a593Smuzhiyun              };
362*4882a593Smuzhiyun            };
363*4882a593Smuzhiyun          };
364*4882a593Smuzhiyun        };
365*4882a593Smuzhiyun      };
366*4882a593Smuzhiyun    };
367