18c2ecf20Sopenharmony_ciCadence MIPI-CSI2 RX controller
28c2ecf20Sopenharmony_ci===============================
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciThe Cadence MIPI-CSI2 RX controller is a CSI-2 bridge supporting up to 4 CSI
58c2ecf20Sopenharmony_cilanes in input, and 4 different pixel streams in output.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciRequired properties:
88c2ecf20Sopenharmony_ci  - compatible: must be set to "cdns,csi2rx" and an SoC-specific compatible
98c2ecf20Sopenharmony_ci  - reg: base address and size of the memory mapped region
108c2ecf20Sopenharmony_ci  - clocks: phandles to the clocks driving the controller
118c2ecf20Sopenharmony_ci  - clock-names: must contain:
128c2ecf20Sopenharmony_ci    * sys_clk: main clock
138c2ecf20Sopenharmony_ci    * p_clk: register bank clock
148c2ecf20Sopenharmony_ci    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
158c2ecf20Sopenharmony_ci                         implemented in hardware, between 0 and 3
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciOptional properties:
188c2ecf20Sopenharmony_ci  - phys: phandle to the external D-PHY, phy-names must be provided
198c2ecf20Sopenharmony_ci  - phy-names: must contain "dphy", if the implementation uses an
208c2ecf20Sopenharmony_ci               external D-PHY
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciRequired subnodes:
238c2ecf20Sopenharmony_ci  - ports: A ports node with one port child node per device input and output
248c2ecf20Sopenharmony_ci           port, in accordance with the video interface bindings defined in
258c2ecf20Sopenharmony_ci           Documentation/devicetree/bindings/media/video-interfaces.txt. The
268c2ecf20Sopenharmony_ci           port nodes are numbered as follows:
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci           Port Description
298c2ecf20Sopenharmony_ci           -----------------------------
308c2ecf20Sopenharmony_ci           0    CSI-2 input
318c2ecf20Sopenharmony_ci           1    Stream 0 output
328c2ecf20Sopenharmony_ci           2    Stream 1 output
338c2ecf20Sopenharmony_ci           3    Stream 2 output
348c2ecf20Sopenharmony_ci           4    Stream 3 output
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci           The stream output port nodes are optional if they are not
378c2ecf20Sopenharmony_ci           connected to anything at the hardware level or implemented
388c2ecf20Sopenharmony_ci           in the design.Since there is only one endpoint per port,
398c2ecf20Sopenharmony_ci           the endpoints are not numbered.
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciExample:
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_cicsi2rx: csi-bridge@0d060000 {
458c2ecf20Sopenharmony_ci	compatible = "cdns,csi2rx";
468c2ecf20Sopenharmony_ci	reg = <0x0d060000 0x1000>;
478c2ecf20Sopenharmony_ci	clocks = <&byteclock>, <&byteclock>
488c2ecf20Sopenharmony_ci		 <&coreclock>, <&coreclock>,
498c2ecf20Sopenharmony_ci		 <&coreclock>, <&coreclock>;
508c2ecf20Sopenharmony_ci	clock-names = "sys_clk", "p_clk",
518c2ecf20Sopenharmony_ci		      "pixel_if0_clk", "pixel_if1_clk",
528c2ecf20Sopenharmony_ci		      "pixel_if2_clk", "pixel_if3_clk";
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	ports {
558c2ecf20Sopenharmony_ci		#address-cells = <1>;
568c2ecf20Sopenharmony_ci		#size-cells = <0>;
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci		port@0 {
598c2ecf20Sopenharmony_ci			reg = <0>;
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci			csi2rx_in_sensor: endpoint {
628c2ecf20Sopenharmony_ci				remote-endpoint = <&sensor_out_csi2rx>;
638c2ecf20Sopenharmony_ci				clock-lanes = <0>;
648c2ecf20Sopenharmony_ci				data-lanes = <1 2>;
658c2ecf20Sopenharmony_ci			};
668c2ecf20Sopenharmony_ci		};
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci		port@1 {
698c2ecf20Sopenharmony_ci			reg = <1>;
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci			csi2rx_out_grabber0: endpoint {
728c2ecf20Sopenharmony_ci				remote-endpoint = <&grabber0_in_csi2rx>;
738c2ecf20Sopenharmony_ci			};
748c2ecf20Sopenharmony_ci		};
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci		port@2 {
778c2ecf20Sopenharmony_ci			reg = <2>;
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci			csi2rx_out_grabber1: endpoint {
808c2ecf20Sopenharmony_ci				remote-endpoint = <&grabber1_in_csi2rx>;
818c2ecf20Sopenharmony_ci			};
828c2ecf20Sopenharmony_ci		};
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci		port@3 {
858c2ecf20Sopenharmony_ci			reg = <3>;
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci			csi2rx_out_grabber2: endpoint {
888c2ecf20Sopenharmony_ci				remote-endpoint = <&grabber2_in_csi2rx>;
898c2ecf20Sopenharmony_ci			};
908c2ecf20Sopenharmony_ci		};
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci		port@4 {
938c2ecf20Sopenharmony_ci			reg = <4>;
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci			csi2rx_out_grabber3: endpoint {
968c2ecf20Sopenharmony_ci				remote-endpoint = <&grabber3_in_csi2rx>;
978c2ecf20Sopenharmony_ci			};
988c2ecf20Sopenharmony_ci		};
998c2ecf20Sopenharmony_ci	};
1008c2ecf20Sopenharmony_ci};
101