xref: /freebsd/sys/contrib/device-tree/Bindings/media/i2c/ti,ds90ub960.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/i2c/ti,ds90ub960.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments DS90UB9XX Family FPD-Link Deserializer Hubs
8
9maintainers:
10  - Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
11
12description:
13  The TI DS90UB9XX devices are FPD-Link video deserializers with I2C and GPIO
14  forwarding.
15
16allOf:
17  - $ref: /schemas/i2c/i2c-atr.yaml#
18
19properties:
20  compatible:
21    enum:
22      - ti,ds90ub960-q1
23      - ti,ds90ub9702-q1
24
25  reg:
26    maxItems: 1
27
28  clocks:
29    maxItems: 1
30    description:
31      Reference clock connected to the REFCLK pin.
32
33  clock-names:
34    items:
35      - const: refclk
36
37  powerdown-gpios:
38    maxItems: 1
39    description:
40      Specifier for the GPIO connected to the PDB pin.
41
42  i2c-alias-pool:
43    minItems: 1
44    maxItems: 32
45
46  links:
47    type: object
48    additionalProperties: false
49
50    properties:
51      '#address-cells':
52        const: 1
53
54      '#size-cells':
55        const: 0
56
57      ti,manual-strobe:
58        type: boolean
59        description:
60          Enable manual strobe position and EQ level
61
62    patternProperties:
63      '^link@[0-3]$':
64        type: object
65        additionalProperties: false
66        properties:
67          reg:
68            description: The link number
69            maxItems: 1
70
71          '#address-cells':
72            const: 1
73
74          '#size-cells':
75            const: 0
76
77          i2c-alias:
78            $ref: /schemas/types.yaml#/definitions/uint32
79            description:
80              The I2C address used for the serializer. Transactions to this
81              address on the I2C bus where the deserializer resides are
82              forwarded to the serializer.
83
84          ti,rx-mode:
85            $ref: /schemas/types.yaml#/definitions/uint32
86            enum:
87              - 0 # RAW10
88              - 1 # RAW12 HF
89              - 2 # RAW12 LF
90              - 3 # CSI2 SYNC
91              - 4 # CSI2 NON-SYNC
92            description:
93              FPD-Link Input Mode. This should reflect the hardware and the
94              default mode of the connected device.
95
96          ti,cdr-mode:
97            $ref: /schemas/types.yaml#/definitions/uint32
98            enum:
99              - 0 # FPD-Link III
100              - 1 # FPD-Link IV
101            description:
102              FPD-Link CDR Mode. This should reflect the hardware and the
103              default mode of the connected device.
104
105          ti,strobe-pos:
106            $ref: /schemas/types.yaml#/definitions/int32
107            minimum: -13
108            maximum: 13
109            description: Manual strobe position
110
111          ti,eq-level:
112            $ref: /schemas/types.yaml#/definitions/uint32
113            maximum: 14
114            description: Manual EQ level
115
116        patternProperties:
117          '^serializer(@[0-9a-f]+)*$':
118            type: object
119            description: FPD-Link Serializer node
120
121        required:
122          - reg
123          - i2c-alias
124          - ti,rx-mode
125
126  ports:
127    $ref: /schemas/graph.yaml#/properties/ports
128
129    properties:
130      port@0:
131        $ref: /schemas/graph.yaml#/$defs/port-base
132        unevaluatedProperties: false
133        description: FPD-Link input 0
134
135        properties:
136          endpoint:
137            $ref: /schemas/media/video-interfaces.yaml#
138            unevaluatedProperties: false
139            description:
140              Endpoint for FPD-Link port. If the RX mode for this port is RAW,
141              hsync-active and vsync-active must be defined.
142
143      port@1:
144        $ref: /schemas/graph.yaml#/$defs/port-base
145        unevaluatedProperties: false
146        description: FPD-Link input 1
147
148        properties:
149          endpoint:
150            $ref: /schemas/media/video-interfaces.yaml#
151            unevaluatedProperties: false
152            description:
153              Endpoint for FPD-Link port. If the RX mode for this port is RAW,
154              hsync-active and vsync-active must be defined.
155
156      port@2:
157        $ref: /schemas/graph.yaml#/$defs/port-base
158        unevaluatedProperties: false
159        description: FPD-Link input 2
160
161        properties:
162          endpoint:
163            $ref: /schemas/media/video-interfaces.yaml#
164            unevaluatedProperties: false
165            description:
166              Endpoint for FPD-Link port. If the RX mode for this port is RAW,
167              hsync-active and vsync-active must be defined.
168
169      port@3:
170        $ref: /schemas/graph.yaml#/$defs/port-base
171        unevaluatedProperties: false
172        description: FPD-Link input 3
173
174        properties:
175          endpoint:
176            $ref: /schemas/media/video-interfaces.yaml#
177            unevaluatedProperties: false
178            description:
179              Endpoint for FPD-Link port. If the RX mode for this port is RAW,
180              hsync-active and vsync-active must be defined.
181
182      port@4:
183        $ref: /schemas/graph.yaml#/$defs/port-base
184        unevaluatedProperties: false
185        description: CSI-2 Output 0
186
187        properties:
188          endpoint:
189            $ref: /schemas/media/video-interfaces.yaml#
190            unevaluatedProperties: false
191
192            properties:
193              data-lanes:
194                minItems: 1
195                maxItems: 4
196              link-frequencies:
197                maxItems: 1
198
199            required:
200              - data-lanes
201              - link-frequencies
202
203      port@5:
204        $ref: /schemas/graph.yaml#/$defs/port-base
205        unevaluatedProperties: false
206        description: CSI-2 Output 1
207
208        properties:
209          endpoint:
210            $ref: /schemas/media/video-interfaces.yaml#
211            unevaluatedProperties: false
212
213            properties:
214              data-lanes:
215                minItems: 1
216                maxItems: 4
217              link-frequencies:
218                maxItems: 1
219
220            required:
221              - data-lanes
222              - link-frequencies
223
224    required:
225      - port@0
226      - port@1
227      - port@2
228      - port@3
229      - port@4
230      - port@5
231
232required:
233  - compatible
234  - reg
235  - clocks
236  - clock-names
237  - ports
238
239unevaluatedProperties: false
240
241examples:
242  - |
243    #include <dt-bindings/gpio/gpio.h>
244
245    i2c {
246      clock-frequency = <400000>;
247      #address-cells = <1>;
248      #size-cells = <0>;
249
250      deser@3d {
251        compatible = "ti,ds90ub960-q1";
252        reg = <0x3d>;
253
254        clock-names = "refclk";
255        clocks = <&fixed_clock>;
256
257        powerdown-gpios = <&pca9555 7 GPIO_ACTIVE_LOW>;
258
259        i2c-alias-pool = <0x4a 0x4b 0x4c 0x4d 0x4e 0x4f>;
260
261        ports {
262          #address-cells = <1>;
263          #size-cells = <0>;
264
265          /* Port 0, Camera 0 */
266          port@0 {
267            reg = <0>;
268
269            ub960_fpd3_1_in: endpoint {
270              remote-endpoint = <&ub953_1_out>;
271            };
272          };
273
274          /* Port 1, Camera 1 */
275          port@1 {
276            reg = <1>;
277
278            ub960_fpd3_2_in: endpoint {
279              remote-endpoint = <&ub913_2_out>;
280              hsync-active = <0>;
281              vsync-active = <1>;
282            };
283          };
284
285          /* Port 2, unconnected */
286          port@2 {
287            reg = <2>;
288          };
289
290          /* Port 3, unconnected */
291          port@3 {
292            reg = <3>;
293          };
294
295          /* Port 4, CSI-2 TX */
296          port@4 {
297            reg = <4>;
298            ds90ub960_0_csi_out: endpoint {
299              data-lanes = <1 2 3 4>;
300              link-frequencies = /bits/ 64 <800000000>;
301              remote-endpoint = <&csi2_phy0>;
302            };
303          };
304
305          /* Port 5, unconnected */
306          port@5 {
307            reg = <5>;
308          };
309        };
310
311        links {
312          #address-cells = <1>;
313          #size-cells = <0>;
314
315          /* Link 0 has DS90UB953 serializer and IMX274 sensor */
316
317          link@0 {
318            #address-cells = <1>;
319            #size-cells = <0>;
320
321            reg = <0>;
322            i2c-alias = <0x44>;
323
324            ti,rx-mode = <3>;
325
326            serializer1: serializer@30 {
327              compatible = "ti,ds90ub953-q1";
328              reg = <0x30>;
329
330              gpio-controller;
331              #gpio-cells = <2>;
332
333              #clock-cells = <0>;
334
335              ports {
336                #address-cells = <1>;
337                #size-cells = <0>;
338
339                port@0 {
340                  reg = <0>;
341                  ub953_1_in: endpoint {
342                    data-lanes = <1 2 3 4>;
343                    remote-endpoint = <&sensor_1_out>;
344                  };
345                };
346
347                port@1 {
348                  reg = <1>;
349
350                  ub953_1_out: endpoint {
351                    remote-endpoint = <&ub960_fpd3_1_in>;
352                  };
353                };
354              };
355
356              i2c {
357                #address-cells = <1>;
358                #size-cells = <0>;
359
360                sensor@1a {
361                  compatible = "sony,imx274";
362                  reg = <0x1a>;
363
364                  reset-gpios = <&serializer1 0 GPIO_ACTIVE_LOW>;
365
366                  port {
367                    sensor_1_out: endpoint {
368                      remote-endpoint = <&ub953_1_in>;
369                    };
370                  };
371                };
372              };
373            };
374          };  /* End of link@0 */
375
376          /* Link 1 has DS90UB913 serializer and MT9V111 sensor */
377
378          link@1 {
379            reg = <1>;
380            i2c-alias = <0x45>;
381
382            ti,rx-mode = <0>;
383
384            serializer2: serializer {
385              compatible = "ti,ds90ub913a-q1";
386
387              gpio-controller;
388              #gpio-cells = <2>;
389
390              clocks = <&clk_cam_48M>;
391              clock-names = "clkin";
392
393              #clock-cells = <0>;
394
395              ports {
396                #address-cells = <1>;
397                #size-cells = <0>;
398
399                port@0 {
400                  reg = <0>;
401                  ub913_2_in: endpoint {
402                    remote-endpoint = <&sensor_2_out>;
403                    pclk-sample = <1>;
404                  };
405                };
406
407                port@1 {
408                  reg = <1>;
409
410                  ub913_2_out: endpoint {
411                    remote-endpoint = <&ub960_fpd3_2_in>;
412                  };
413                };
414              };
415
416              i2c {
417                #address-cells = <1>;
418                #size-cells = <0>;
419
420                sensor@48 {
421                  compatible = "aptina,mt9v111";
422                  reg = <0x48>;
423
424                  clocks = <&serializer2>;
425
426                  port {
427                    sensor_2_out: endpoint {
428                      remote-endpoint = <&ub913_2_in>;
429                    };
430                  };
431                };
432              };
433            };
434          }; /* End of link@1 */
435        };
436      };
437    };
438...
439