xref: /freebsd/sys/contrib/device-tree/Bindings/media/cdns,csi2tx.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotCadence MIPI-CSI2 TX controller
2*c66ec88fSEmmanuel Vadot===============================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotThe Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to
5*c66ec88fSEmmanuel Vadot4 CSI lanes in output, and up to 4 different pixel streams in input.
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel VadotRequired properties:
8*c66ec88fSEmmanuel Vadot  - compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3"
9*c66ec88fSEmmanuel Vadot    for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1
10*c66ec88fSEmmanuel Vadot  - reg: base address and size of the memory mapped region
11*c66ec88fSEmmanuel Vadot  - clocks: phandles to the clocks driving the controller
12*c66ec88fSEmmanuel Vadot  - clock-names: must contain:
13*c66ec88fSEmmanuel Vadot    * esc_clk: escape mode clock
14*c66ec88fSEmmanuel Vadot    * p_clk: register bank clock
15*c66ec88fSEmmanuel Vadot    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
16*c66ec88fSEmmanuel Vadot                         implemented in hardware, between 0 and 3
17*c66ec88fSEmmanuel Vadot
18*c66ec88fSEmmanuel VadotOptional properties
19*c66ec88fSEmmanuel Vadot  - phys: phandle to the D-PHY. If it is set, phy-names need to be set
20*c66ec88fSEmmanuel Vadot  - phy-names: must contain "dphy"
21*c66ec88fSEmmanuel Vadot
22*c66ec88fSEmmanuel VadotRequired subnodes:
23*c66ec88fSEmmanuel Vadot  - ports: A ports node with one port child node per device input and output
24*c66ec88fSEmmanuel Vadot           port, in accordance with the video interface bindings defined in
25*c66ec88fSEmmanuel Vadot           Documentation/devicetree/bindings/media/video-interfaces.txt. The
26*c66ec88fSEmmanuel Vadot           port nodes are numbered as follows.
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel Vadot           Port Description
29*c66ec88fSEmmanuel Vadot           -----------------------------
30*c66ec88fSEmmanuel Vadot           0    CSI-2 output
31*c66ec88fSEmmanuel Vadot           1    Stream 0 input
32*c66ec88fSEmmanuel Vadot           2    Stream 1 input
33*c66ec88fSEmmanuel Vadot           3    Stream 2 input
34*c66ec88fSEmmanuel Vadot           4    Stream 3 input
35*c66ec88fSEmmanuel Vadot
36*c66ec88fSEmmanuel Vadot           The stream input port nodes are optional if they are not
37*c66ec88fSEmmanuel Vadot           connected to anything at the hardware level or implemented
38*c66ec88fSEmmanuel Vadot           in the design. Since there is only one endpoint per port,
39*c66ec88fSEmmanuel Vadot           the endpoints are not numbered.
40*c66ec88fSEmmanuel Vadot
41*c66ec88fSEmmanuel VadotExample:
42*c66ec88fSEmmanuel Vadot
43*c66ec88fSEmmanuel Vadotcsi2tx: csi-bridge@0d0e1000 {
44*c66ec88fSEmmanuel Vadot	compatible = "cdns,csi2tx";
45*c66ec88fSEmmanuel Vadot	reg = <0x0d0e1000 0x1000>;
46*c66ec88fSEmmanuel Vadot	clocks = <&byteclock>, <&byteclock>,
47*c66ec88fSEmmanuel Vadot		 <&coreclock>, <&coreclock>,
48*c66ec88fSEmmanuel Vadot		 <&coreclock>, <&coreclock>;
49*c66ec88fSEmmanuel Vadot	clock-names = "p_clk", "esc_clk",
50*c66ec88fSEmmanuel Vadot		      "pixel_if0_clk", "pixel_if1_clk",
51*c66ec88fSEmmanuel Vadot		      "pixel_if2_clk", "pixel_if3_clk";
52*c66ec88fSEmmanuel Vadot
53*c66ec88fSEmmanuel Vadot	ports {
54*c66ec88fSEmmanuel Vadot		#address-cells = <1>;
55*c66ec88fSEmmanuel Vadot		#size-cells = <0>;
56*c66ec88fSEmmanuel Vadot
57*c66ec88fSEmmanuel Vadot		port@0 {
58*c66ec88fSEmmanuel Vadot			reg = <0>;
59*c66ec88fSEmmanuel Vadot
60*c66ec88fSEmmanuel Vadot			csi2tx_out: endpoint {
61*c66ec88fSEmmanuel Vadot				remote-endpoint = <&remote_in>;
62*c66ec88fSEmmanuel Vadot				clock-lanes = <0>;
63*c66ec88fSEmmanuel Vadot				data-lanes = <1 2>;
64*c66ec88fSEmmanuel Vadot			};
65*c66ec88fSEmmanuel Vadot		};
66*c66ec88fSEmmanuel Vadot
67*c66ec88fSEmmanuel Vadot		port@1 {
68*c66ec88fSEmmanuel Vadot			reg = <1>;
69*c66ec88fSEmmanuel Vadot
70*c66ec88fSEmmanuel Vadot			csi2tx_in_stream0: endpoint {
71*c66ec88fSEmmanuel Vadot				remote-endpoint = <&stream0_out>;
72*c66ec88fSEmmanuel Vadot			};
73*c66ec88fSEmmanuel Vadot		};
74*c66ec88fSEmmanuel Vadot
75*c66ec88fSEmmanuel Vadot		port@2 {
76*c66ec88fSEmmanuel Vadot			reg = <2>;
77*c66ec88fSEmmanuel Vadot
78*c66ec88fSEmmanuel Vadot			csi2tx_in_stream1: endpoint {
79*c66ec88fSEmmanuel Vadot				remote-endpoint = <&stream1_out>;
80*c66ec88fSEmmanuel Vadot			};
81*c66ec88fSEmmanuel Vadot		};
82*c66ec88fSEmmanuel Vadot
83*c66ec88fSEmmanuel Vadot		port@3 {
84*c66ec88fSEmmanuel Vadot			reg = <3>;
85*c66ec88fSEmmanuel Vadot
86*c66ec88fSEmmanuel Vadot			csi2tx_in_stream2: endpoint {
87*c66ec88fSEmmanuel Vadot				remote-endpoint = <&stream2_out>;
88*c66ec88fSEmmanuel Vadot			};
89*c66ec88fSEmmanuel Vadot		};
90*c66ec88fSEmmanuel Vadot
91*c66ec88fSEmmanuel Vadot		port@4 {
92*c66ec88fSEmmanuel Vadot			reg = <4>;
93*c66ec88fSEmmanuel Vadot
94*c66ec88fSEmmanuel Vadot			csi2tx_in_stream3: endpoint {
95*c66ec88fSEmmanuel Vadot				remote-endpoint = <&stream3_out>;
96*c66ec88fSEmmanuel Vadot			};
97*c66ec88fSEmmanuel Vadot		};
98*c66ec88fSEmmanuel Vadot	};
99*c66ec88fSEmmanuel Vadot};
100