xref: /linux/Documentation/devicetree/bindings/media/i2c/maxim,max96714.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1*331a1c04SJulien Massot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*331a1c04SJulien Massot# Copyright (C) 2024 Collabora Ltd.
3*331a1c04SJulien Massot%YAML 1.2
4*331a1c04SJulien Massot---
5*331a1c04SJulien Massot$id: http://devicetree.org/schemas/media/i2c/maxim,max96714.yaml#
6*331a1c04SJulien Massot$schema: http://devicetree.org/meta-schemas/core.yaml#
7*331a1c04SJulien Massot
8*331a1c04SJulien Massottitle: Maxim MAX96714 GMSL2 to CSI-2 Deserializer
9*331a1c04SJulien Massot
10*331a1c04SJulien Massotmaintainers:
11*331a1c04SJulien Massot  - Julien Massot <julien.massot@collabora.com>
12*331a1c04SJulien Massot
13*331a1c04SJulien Massotdescription:
14*331a1c04SJulien Massot  The MAX96714 deserializer converts GMSL2 serial inputs into MIPI
15*331a1c04SJulien Massot  CSI-2 D-PHY formatted output. The device allows the GMSL2 link to
16*331a1c04SJulien Massot  simultaneously transmit bidirectional control-channel data while forward
17*331a1c04SJulien Massot  video transmissions are in progress. The MAX96714 can connect to one
18*331a1c04SJulien Massot  remotely located serializer using industry-standard coax or STP
19*331a1c04SJulien Massot  interconnects. The device cans operate in pixel or tunnel mode. In pixel mode
20*331a1c04SJulien Massot  the MAX96714 can select individual video stream, while the tunnel mode forward all
21*331a1c04SJulien Massot  the MIPI data received by the serializer.
22*331a1c04SJulien Massot
23*331a1c04SJulien Massot  The GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the
24*331a1c04SJulien Massot  forward direction and 187.5Mbps in the reverse direction.
25*331a1c04SJulien Massot  MAX96714F only supports a fixed rate of 3Gbps in the forward direction.
26*331a1c04SJulien Massot
27*331a1c04SJulien Massotproperties:
28*331a1c04SJulien Massot  compatible:
29*331a1c04SJulien Massot    oneOf:
30*331a1c04SJulien Massot      - const: maxim,max96714f
31*331a1c04SJulien Massot      - items:
32*331a1c04SJulien Massot          - enum:
33*331a1c04SJulien Massot              - maxim,max96714
34*331a1c04SJulien Massot          - const: maxim,max96714f
35*331a1c04SJulien Massot
36*331a1c04SJulien Massot  reg:
37*331a1c04SJulien Massot    maxItems: 1
38*331a1c04SJulien Massot
39*331a1c04SJulien Massot  powerdown-gpios:
40*331a1c04SJulien Massot    maxItems: 1
41*331a1c04SJulien Massot    description:
42*331a1c04SJulien Massot      Specifier for the GPIO connected to the PWDNB pin.
43*331a1c04SJulien Massot
44*331a1c04SJulien Massot  ports:
45*331a1c04SJulien Massot    $ref: /schemas/graph.yaml#/properties/ports
46*331a1c04SJulien Massot
47*331a1c04SJulien Massot    properties:
48*331a1c04SJulien Massot      port@0:
49*331a1c04SJulien Massot        $ref: /schemas/graph.yaml#/properties/port
50*331a1c04SJulien Massot        unevaluatedProperties: false
51*331a1c04SJulien Massot        description: GMSL Input
52*331a1c04SJulien Massot        properties:
53*331a1c04SJulien Massot          endpoint:
54*331a1c04SJulien Massot            $ref: /schemas/media/video-interfaces.yaml#
55*331a1c04SJulien Massot            unevaluatedProperties: false
56*331a1c04SJulien Massot            description:
57*331a1c04SJulien Massot              Endpoint for GMSL2-Link port.
58*331a1c04SJulien Massot
59*331a1c04SJulien Massot      port@1:
60*331a1c04SJulien Massot        $ref: /schemas/graph.yaml#/$defs/port-base
61*331a1c04SJulien Massot        unevaluatedProperties: false
62*331a1c04SJulien Massot        description: CSI-2 Output port
63*331a1c04SJulien Massot
64*331a1c04SJulien Massot        properties:
65*331a1c04SJulien Massot          endpoint:
66*331a1c04SJulien Massot            $ref: /schemas/media/video-interfaces.yaml#
67*331a1c04SJulien Massot            unevaluatedProperties: false
68*331a1c04SJulien Massot
69*331a1c04SJulien Massot            properties:
70*331a1c04SJulien Massot              data-lanes:
71*331a1c04SJulien Massot                minItems: 1
72*331a1c04SJulien Massot                maxItems: 4
73*331a1c04SJulien Massot
74*331a1c04SJulien Massot              lane-polarities:
75*331a1c04SJulien Massot                minItems: 1
76*331a1c04SJulien Massot                maxItems: 5
77*331a1c04SJulien Massot
78*331a1c04SJulien Massot              link-frequencies:
79*331a1c04SJulien Massot                maxItems: 1
80*331a1c04SJulien Massot
81*331a1c04SJulien Massot            required:
82*331a1c04SJulien Massot              - data-lanes
83*331a1c04SJulien Massot
84*331a1c04SJulien Massot    required:
85*331a1c04SJulien Massot      - port@1
86*331a1c04SJulien Massot
87*331a1c04SJulien Massot  i2c-gate:
88*331a1c04SJulien Massot    $ref: /schemas/i2c/i2c-gate.yaml
89*331a1c04SJulien Massot    unevaluatedProperties: false
90*331a1c04SJulien Massot    description:
91*331a1c04SJulien Massot      The MAX96714 will pass through and forward the I2C requests from the
92*331a1c04SJulien Massot      incoming I2C bus over the GMSL2 link. Therefore it supports an i2c-gate
93*331a1c04SJulien Massot      subnode to configure a serializer.
94*331a1c04SJulien Massot
95*331a1c04SJulien Massot  port0-poc-supply:
96*331a1c04SJulien Massot    description: Regulator providing Power over Coax for the GMSL port
97*331a1c04SJulien Massot
98*331a1c04SJulien Massotrequired:
99*331a1c04SJulien Massot  - compatible
100*331a1c04SJulien Massot  - reg
101*331a1c04SJulien Massot  - ports
102*331a1c04SJulien Massot
103*331a1c04SJulien MassotadditionalProperties: false
104*331a1c04SJulien Massot
105*331a1c04SJulien Massotexamples:
106*331a1c04SJulien Massot  - |
107*331a1c04SJulien Massot    #include <dt-bindings/gpio/gpio.h>
108*331a1c04SJulien Massot    #include <dt-bindings/media/video-interfaces.h>
109*331a1c04SJulien Massot
110*331a1c04SJulien Massot    i2c {
111*331a1c04SJulien Massot        #address-cells = <1>;
112*331a1c04SJulien Massot        #size-cells = <0>;
113*331a1c04SJulien Massot
114*331a1c04SJulien Massot        deserializer@28 {
115*331a1c04SJulien Massot            compatible = "maxim,max96714f";
116*331a1c04SJulien Massot            reg = <0x28>;
117*331a1c04SJulien Massot            powerdown-gpios = <&main_gpio0 37 GPIO_ACTIVE_LOW>;
118*331a1c04SJulien Massot
119*331a1c04SJulien Massot            ports {
120*331a1c04SJulien Massot                #address-cells = <1>;
121*331a1c04SJulien Massot                #size-cells = <0>;
122*331a1c04SJulien Massot                port@0 {
123*331a1c04SJulien Massot                    reg = <0>;
124*331a1c04SJulien Massot                    max96714_gmsl_in: endpoint {
125*331a1c04SJulien Massot                        remote-endpoint = <&max96917f_gmsl_out>;
126*331a1c04SJulien Massot                    };
127*331a1c04SJulien Massot                };
128*331a1c04SJulien Massot
129*331a1c04SJulien Massot                port@1 {
130*331a1c04SJulien Massot                    reg = <1>;
131*331a1c04SJulien Massot                    max96714_csi_out: endpoint {
132*331a1c04SJulien Massot                        data-lanes = <1 2 3 4>;
133*331a1c04SJulien Massot                        link-frequencies = /bits/ 64 <400000000>;
134*331a1c04SJulien Massot                        remote-endpoint = <&csi_in>;
135*331a1c04SJulien Massot                    };
136*331a1c04SJulien Massot                };
137*331a1c04SJulien Massot            };
138*331a1c04SJulien Massot
139*331a1c04SJulien Massot            i2c-gate {
140*331a1c04SJulien Massot                #address-cells = <1>;
141*331a1c04SJulien Massot                #size-cells = <0>;
142*331a1c04SJulien Massot
143*331a1c04SJulien Massot                serializer@40 {
144*331a1c04SJulien Massot                    compatible = "maxim,max96717f";
145*331a1c04SJulien Massot                    reg = <0x40>;
146*331a1c04SJulien Massot                    gpio-controller;
147*331a1c04SJulien Massot                    #gpio-cells = <2>;
148*331a1c04SJulien Massot                    #clock-cells = <0>;
149*331a1c04SJulien Massot
150*331a1c04SJulien Massot                    ports {
151*331a1c04SJulien Massot                        #address-cells = <1>;
152*331a1c04SJulien Massot                        #size-cells = <0>;
153*331a1c04SJulien Massot
154*331a1c04SJulien Massot                        port@0 {
155*331a1c04SJulien Massot                            reg = <0>;
156*331a1c04SJulien Massot                            max96717f_csi_in: endpoint {
157*331a1c04SJulien Massot                                data-lanes = <1 2>;
158*331a1c04SJulien Massot                                lane-polarities = <1 0 1>;
159*331a1c04SJulien Massot                                remote-endpoint = <&sensor_out>;
160*331a1c04SJulien Massot                            };
161*331a1c04SJulien Massot                        };
162*331a1c04SJulien Massot
163*331a1c04SJulien Massot                        port@1 {
164*331a1c04SJulien Massot                            reg = <1>;
165*331a1c04SJulien Massot                            max96917f_gmsl_out: endpoint {
166*331a1c04SJulien Massot                                remote-endpoint = <&max96714_gmsl_in>;
167*331a1c04SJulien Massot                            };
168*331a1c04SJulien Massot                        };
169*331a1c04SJulien Massot                    };
170*331a1c04SJulien Massot                };
171*331a1c04SJulien Massot            };
172*331a1c04SJulien Massot        };
173*331a1c04SJulien Massot    };
174*331a1c04SJulien Massot...
175