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