Cadence MIPI-CSI2 TX controller
===============================

The Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to
4 CSI lanes in output, and up to 4 different pixel streams in input.

Required properties:
  - compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3"
    for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1
  - reg: base address and size of the memory mapped region
  - clocks: phandles to the clocks driving the controller
  - clock-names: must contain:
    * esc_clk: escape mode clock
    * p_clk: register bank clock
    * pixel_if[0-3]_clk: pixel stream output clock, one for each stream
                         implemented in hardware, between 0 and 3

Optional properties
  - phys: phandle to the D-PHY. If it is set, phy-names need to be set
  - phy-names: must contain "dphy"

Required subnodes:
  - ports: A ports node with one port child node per device input and output
           port, in accordance with the video interface bindings defined in
           Documentation/devicetree/bindings/media/video-interfaces.txt. The
           port nodes are numbered as follows.

           Port Description
           -----------------------------
           0    CSI-2 output
           1    Stream 0 input
           2    Stream 1 input
           3    Stream 2 input
           4    Stream 3 input

           The stream input port nodes are optional if they are not
           connected to anything at the hardware level or implemented
           in the design. Since there is only one endpoint per port,
           the endpoints are not numbered.

Example:

csi2tx: csi-bridge@0d0e1000 {
	compatible = "cdns,csi2tx";
	reg = <0x0d0e1000 0x1000>;
	clocks = <&byteclock>, <&byteclock>,
		 <&coreclock>, <&coreclock>,
		 <&coreclock>, <&coreclock>;
	clock-names = "p_clk", "esc_clk",
		      "pixel_if0_clk", "pixel_if1_clk",
		      "pixel_if2_clk", "pixel_if3_clk";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;

			csi2tx_out: endpoint {
				remote-endpoint = <&remote_in>;
				clock-lanes = <0>;
				data-lanes = <1 2>;
			};
		};

		port@1 {
			reg = <1>;

			csi2tx_in_stream0: endpoint {
				remote-endpoint = <&stream0_out>;
			};
		};

		port@2 {
			reg = <2>;

			csi2tx_in_stream1: endpoint {
				remote-endpoint = <&stream1_out>;
			};
		};

		port@3 {
			reg = <3>;

			csi2tx_in_stream2: endpoint {
				remote-endpoint = <&stream2_out>;
			};
		};

		port@4 {
			reg = <4>;

			csi2tx_in_stream3: endpoint {
				remote-endpoint = <&stream3_out>;
			};
		};
	};
};
