162306a36Sopenharmony_ciCadence MIPI-CSI2 TX controller
262306a36Sopenharmony_ci===============================
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciThe Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to
562306a36Sopenharmony_ci4 CSI lanes in output, and up to 4 different pixel streams in input.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciRequired properties:
862306a36Sopenharmony_ci  - compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3"
962306a36Sopenharmony_ci    for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1
1062306a36Sopenharmony_ci  - reg: base address and size of the memory mapped region
1162306a36Sopenharmony_ci  - clocks: phandles to the clocks driving the controller
1262306a36Sopenharmony_ci  - clock-names: must contain:
1362306a36Sopenharmony_ci    * esc_clk: escape mode clock
1462306a36Sopenharmony_ci    * p_clk: register bank clock
1562306a36Sopenharmony_ci    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
1662306a36Sopenharmony_ci                         implemented in hardware, between 0 and 3
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciOptional properties
1962306a36Sopenharmony_ci  - phys: phandle to the D-PHY. If it is set, phy-names need to be set
2062306a36Sopenharmony_ci  - phy-names: must contain "dphy"
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciRequired subnodes:
2362306a36Sopenharmony_ci  - ports: A ports node with one port child node per device input and output
2462306a36Sopenharmony_ci           port, in accordance with the video interface bindings defined in
2562306a36Sopenharmony_ci           Documentation/devicetree/bindings/media/video-interfaces.txt. The
2662306a36Sopenharmony_ci           port nodes are numbered as follows.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci           Port Description
2962306a36Sopenharmony_ci           -----------------------------
3062306a36Sopenharmony_ci           0    CSI-2 output
3162306a36Sopenharmony_ci           1    Stream 0 input
3262306a36Sopenharmony_ci           2    Stream 1 input
3362306a36Sopenharmony_ci           3    Stream 2 input
3462306a36Sopenharmony_ci           4    Stream 3 input
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci           The stream input port nodes are optional if they are not
3762306a36Sopenharmony_ci           connected to anything at the hardware level or implemented
3862306a36Sopenharmony_ci           in the design. Since there is only one endpoint per port,
3962306a36Sopenharmony_ci           the endpoints are not numbered.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciExample:
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cicsi2tx: csi-bridge@0d0e1000 {
4462306a36Sopenharmony_ci	compatible = "cdns,csi2tx";
4562306a36Sopenharmony_ci	reg = <0x0d0e1000 0x1000>;
4662306a36Sopenharmony_ci	clocks = <&byteclock>, <&byteclock>,
4762306a36Sopenharmony_ci		 <&coreclock>, <&coreclock>,
4862306a36Sopenharmony_ci		 <&coreclock>, <&coreclock>;
4962306a36Sopenharmony_ci	clock-names = "p_clk", "esc_clk",
5062306a36Sopenharmony_ci		      "pixel_if0_clk", "pixel_if1_clk",
5162306a36Sopenharmony_ci		      "pixel_if2_clk", "pixel_if3_clk";
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	ports {
5462306a36Sopenharmony_ci		#address-cells = <1>;
5562306a36Sopenharmony_ci		#size-cells = <0>;
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci		port@0 {
5862306a36Sopenharmony_ci			reg = <0>;
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci			csi2tx_out: endpoint {
6162306a36Sopenharmony_ci				remote-endpoint = <&remote_in>;
6262306a36Sopenharmony_ci				clock-lanes = <0>;
6362306a36Sopenharmony_ci				data-lanes = <1 2>;
6462306a36Sopenharmony_ci			};
6562306a36Sopenharmony_ci		};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci		port@1 {
6862306a36Sopenharmony_ci			reg = <1>;
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci			csi2tx_in_stream0: endpoint {
7162306a36Sopenharmony_ci				remote-endpoint = <&stream0_out>;
7262306a36Sopenharmony_ci			};
7362306a36Sopenharmony_ci		};
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci		port@2 {
7662306a36Sopenharmony_ci			reg = <2>;
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci			csi2tx_in_stream1: endpoint {
7962306a36Sopenharmony_ci				remote-endpoint = <&stream1_out>;
8062306a36Sopenharmony_ci			};
8162306a36Sopenharmony_ci		};
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci		port@3 {
8462306a36Sopenharmony_ci			reg = <3>;
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci			csi2tx_in_stream2: endpoint {
8762306a36Sopenharmony_ci				remote-endpoint = <&stream2_out>;
8862306a36Sopenharmony_ci			};
8962306a36Sopenharmony_ci		};
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci		port@4 {
9262306a36Sopenharmony_ci			reg = <4>;
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci			csi2tx_in_stream3: endpoint {
9562306a36Sopenharmony_ci				remote-endpoint = <&stream3_out>;
9662306a36Sopenharmony_ci			};
9762306a36Sopenharmony_ci		};
9862306a36Sopenharmony_ci	};
9962306a36Sopenharmony_ci};
100