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