18c2ecf20Sopenharmony_ciCadence MIPI-CSI2 TX controller
28c2ecf20Sopenharmony_ci===============================
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciThe Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to
58c2ecf20Sopenharmony_ci4 CSI lanes in output, and up to 4 different pixel streams in input.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciRequired properties:
88c2ecf20Sopenharmony_ci  - compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3"
98c2ecf20Sopenharmony_ci    for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1
108c2ecf20Sopenharmony_ci  - reg: base address and size of the memory mapped region
118c2ecf20Sopenharmony_ci  - clocks: phandles to the clocks driving the controller
128c2ecf20Sopenharmony_ci  - clock-names: must contain:
138c2ecf20Sopenharmony_ci    * esc_clk: escape mode clock
148c2ecf20Sopenharmony_ci    * p_clk: register bank clock
158c2ecf20Sopenharmony_ci    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
168c2ecf20Sopenharmony_ci                         implemented in hardware, between 0 and 3
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciOptional properties
198c2ecf20Sopenharmony_ci  - phys: phandle to the D-PHY. If it is set, phy-names need to be set
208c2ecf20Sopenharmony_ci  - phy-names: must contain "dphy"
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 output
318c2ecf20Sopenharmony_ci           1    Stream 0 input
328c2ecf20Sopenharmony_ci           2    Stream 1 input
338c2ecf20Sopenharmony_ci           3    Stream 2 input
348c2ecf20Sopenharmony_ci           4    Stream 3 input
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci           The stream input 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_ciExample:
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_cicsi2tx: csi-bridge@0d0e1000 {
448c2ecf20Sopenharmony_ci	compatible = "cdns,csi2tx";
458c2ecf20Sopenharmony_ci	reg = <0x0d0e1000 0x1000>;
468c2ecf20Sopenharmony_ci	clocks = <&byteclock>, <&byteclock>,
478c2ecf20Sopenharmony_ci		 <&coreclock>, <&coreclock>,
488c2ecf20Sopenharmony_ci		 <&coreclock>, <&coreclock>;
498c2ecf20Sopenharmony_ci	clock-names = "p_clk", "esc_clk",
508c2ecf20Sopenharmony_ci		      "pixel_if0_clk", "pixel_if1_clk",
518c2ecf20Sopenharmony_ci		      "pixel_if2_clk", "pixel_if3_clk";
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci	ports {
548c2ecf20Sopenharmony_ci		#address-cells = <1>;
558c2ecf20Sopenharmony_ci		#size-cells = <0>;
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci		port@0 {
588c2ecf20Sopenharmony_ci			reg = <0>;
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci			csi2tx_out: endpoint {
618c2ecf20Sopenharmony_ci				remote-endpoint = <&remote_in>;
628c2ecf20Sopenharmony_ci				clock-lanes = <0>;
638c2ecf20Sopenharmony_ci				data-lanes = <1 2>;
648c2ecf20Sopenharmony_ci			};
658c2ecf20Sopenharmony_ci		};
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci		port@1 {
688c2ecf20Sopenharmony_ci			reg = <1>;
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci			csi2tx_in_stream0: endpoint {
718c2ecf20Sopenharmony_ci				remote-endpoint = <&stream0_out>;
728c2ecf20Sopenharmony_ci			};
738c2ecf20Sopenharmony_ci		};
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci		port@2 {
768c2ecf20Sopenharmony_ci			reg = <2>;
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci			csi2tx_in_stream1: endpoint {
798c2ecf20Sopenharmony_ci				remote-endpoint = <&stream1_out>;
808c2ecf20Sopenharmony_ci			};
818c2ecf20Sopenharmony_ci		};
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci		port@3 {
848c2ecf20Sopenharmony_ci			reg = <3>;
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci			csi2tx_in_stream2: endpoint {
878c2ecf20Sopenharmony_ci				remote-endpoint = <&stream2_out>;
888c2ecf20Sopenharmony_ci			};
898c2ecf20Sopenharmony_ci		};
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci		port@4 {
928c2ecf20Sopenharmony_ci			reg = <4>;
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci			csi2tx_in_stream3: endpoint {
958c2ecf20Sopenharmony_ci				remote-endpoint = <&stream3_out>;
968c2ecf20Sopenharmony_ci			};
978c2ecf20Sopenharmony_ci		};
988c2ecf20Sopenharmony_ci	};
998c2ecf20Sopenharmony_ci};
100