xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/media/cdns,csi2rx.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunCadence MIPI-CSI2 RX controller
2*4882a593Smuzhiyun===============================
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunThe Cadence MIPI-CSI2 RX controller is a CSI-2 bridge supporting up to 4 CSI
5*4882a593Smuzhiyunlanes in input, and 4 different pixel streams in output.
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunRequired properties:
8*4882a593Smuzhiyun  - compatible: must be set to "cdns,csi2rx" and an SoC-specific compatible
9*4882a593Smuzhiyun  - reg: base address and size of the memory mapped region
10*4882a593Smuzhiyun  - clocks: phandles to the clocks driving the controller
11*4882a593Smuzhiyun  - clock-names: must contain:
12*4882a593Smuzhiyun    * sys_clk: main clock
13*4882a593Smuzhiyun    * p_clk: register bank clock
14*4882a593Smuzhiyun    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
15*4882a593Smuzhiyun                         implemented in hardware, between 0 and 3
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunOptional properties:
18*4882a593Smuzhiyun  - phys: phandle to the external D-PHY, phy-names must be provided
19*4882a593Smuzhiyun  - phy-names: must contain "dphy", if the implementation uses an
20*4882a593Smuzhiyun               external D-PHY
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 input
31*4882a593Smuzhiyun           1    Stream 0 output
32*4882a593Smuzhiyun           2    Stream 1 output
33*4882a593Smuzhiyun           3    Stream 2 output
34*4882a593Smuzhiyun           4    Stream 3 output
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun           The stream output 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*4882a593Smuzhiyun
42*4882a593SmuzhiyunExample:
43*4882a593Smuzhiyun
44*4882a593Smuzhiyuncsi2rx: csi-bridge@0d060000 {
45*4882a593Smuzhiyun	compatible = "cdns,csi2rx";
46*4882a593Smuzhiyun	reg = <0x0d060000 0x1000>;
47*4882a593Smuzhiyun	clocks = <&byteclock>, <&byteclock>
48*4882a593Smuzhiyun		 <&coreclock>, <&coreclock>,
49*4882a593Smuzhiyun		 <&coreclock>, <&coreclock>;
50*4882a593Smuzhiyun	clock-names = "sys_clk", "p_clk",
51*4882a593Smuzhiyun		      "pixel_if0_clk", "pixel_if1_clk",
52*4882a593Smuzhiyun		      "pixel_if2_clk", "pixel_if3_clk";
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	ports {
55*4882a593Smuzhiyun		#address-cells = <1>;
56*4882a593Smuzhiyun		#size-cells = <0>;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		port@0 {
59*4882a593Smuzhiyun			reg = <0>;
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun			csi2rx_in_sensor: endpoint {
62*4882a593Smuzhiyun				remote-endpoint = <&sensor_out_csi2rx>;
63*4882a593Smuzhiyun				clock-lanes = <0>;
64*4882a593Smuzhiyun				data-lanes = <1 2>;
65*4882a593Smuzhiyun			};
66*4882a593Smuzhiyun		};
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun		port@1 {
69*4882a593Smuzhiyun			reg = <1>;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun			csi2rx_out_grabber0: endpoint {
72*4882a593Smuzhiyun				remote-endpoint = <&grabber0_in_csi2rx>;
73*4882a593Smuzhiyun			};
74*4882a593Smuzhiyun		};
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun		port@2 {
77*4882a593Smuzhiyun			reg = <2>;
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun			csi2rx_out_grabber1: endpoint {
80*4882a593Smuzhiyun				remote-endpoint = <&grabber1_in_csi2rx>;
81*4882a593Smuzhiyun			};
82*4882a593Smuzhiyun		};
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun		port@3 {
85*4882a593Smuzhiyun			reg = <3>;
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun			csi2rx_out_grabber2: endpoint {
88*4882a593Smuzhiyun				remote-endpoint = <&grabber2_in_csi2rx>;
89*4882a593Smuzhiyun			};
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun		port@4 {
93*4882a593Smuzhiyun			reg = <4>;
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun			csi2rx_out_grabber3: endpoint {
96*4882a593Smuzhiyun				remote-endpoint = <&grabber3_in_csi2rx>;
97*4882a593Smuzhiyun			};
98*4882a593Smuzhiyun		};
99*4882a593Smuzhiyun	};
100*4882a593Smuzhiyun};
101