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