1*c66ec88fSEmmanuel VadotCadence MIPI-CSI2 TX controller 2*c66ec88fSEmmanuel Vadot=============================== 3*c66ec88fSEmmanuel Vadot 4*c66ec88fSEmmanuel VadotThe Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to 5*c66ec88fSEmmanuel Vadot4 CSI lanes in output, and up to 4 different pixel streams in input. 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel VadotRequired properties: 8*c66ec88fSEmmanuel Vadot - compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3" 9*c66ec88fSEmmanuel Vadot for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1 10*c66ec88fSEmmanuel Vadot - reg: base address and size of the memory mapped region 11*c66ec88fSEmmanuel Vadot - clocks: phandles to the clocks driving the controller 12*c66ec88fSEmmanuel Vadot - clock-names: must contain: 13*c66ec88fSEmmanuel Vadot * esc_clk: escape mode clock 14*c66ec88fSEmmanuel Vadot * p_clk: register bank clock 15*c66ec88fSEmmanuel Vadot * pixel_if[0-3]_clk: pixel stream output clock, one for each stream 16*c66ec88fSEmmanuel Vadot implemented in hardware, between 0 and 3 17*c66ec88fSEmmanuel Vadot 18*c66ec88fSEmmanuel VadotOptional properties 19*c66ec88fSEmmanuel Vadot - phys: phandle to the D-PHY. If it is set, phy-names need to be set 20*c66ec88fSEmmanuel Vadot - phy-names: must contain "dphy" 21*c66ec88fSEmmanuel Vadot 22*c66ec88fSEmmanuel VadotRequired subnodes: 23*c66ec88fSEmmanuel Vadot - ports: A ports node with one port child node per device input and output 24*c66ec88fSEmmanuel Vadot port, in accordance with the video interface bindings defined in 25*c66ec88fSEmmanuel Vadot Documentation/devicetree/bindings/media/video-interfaces.txt. The 26*c66ec88fSEmmanuel Vadot port nodes are numbered as follows. 27*c66ec88fSEmmanuel Vadot 28*c66ec88fSEmmanuel Vadot Port Description 29*c66ec88fSEmmanuel Vadot ----------------------------- 30*c66ec88fSEmmanuel Vadot 0 CSI-2 output 31*c66ec88fSEmmanuel Vadot 1 Stream 0 input 32*c66ec88fSEmmanuel Vadot 2 Stream 1 input 33*c66ec88fSEmmanuel Vadot 3 Stream 2 input 34*c66ec88fSEmmanuel Vadot 4 Stream 3 input 35*c66ec88fSEmmanuel Vadot 36*c66ec88fSEmmanuel Vadot The stream input port nodes are optional if they are not 37*c66ec88fSEmmanuel Vadot connected to anything at the hardware level or implemented 38*c66ec88fSEmmanuel Vadot in the design. Since there is only one endpoint per port, 39*c66ec88fSEmmanuel Vadot the endpoints are not numbered. 40*c66ec88fSEmmanuel Vadot 41*c66ec88fSEmmanuel VadotExample: 42*c66ec88fSEmmanuel Vadot 43*c66ec88fSEmmanuel Vadotcsi2tx: csi-bridge@0d0e1000 { 44*c66ec88fSEmmanuel Vadot compatible = "cdns,csi2tx"; 45*c66ec88fSEmmanuel Vadot reg = <0x0d0e1000 0x1000>; 46*c66ec88fSEmmanuel Vadot clocks = <&byteclock>, <&byteclock>, 47*c66ec88fSEmmanuel Vadot <&coreclock>, <&coreclock>, 48*c66ec88fSEmmanuel Vadot <&coreclock>, <&coreclock>; 49*c66ec88fSEmmanuel Vadot clock-names = "p_clk", "esc_clk", 50*c66ec88fSEmmanuel Vadot "pixel_if0_clk", "pixel_if1_clk", 51*c66ec88fSEmmanuel Vadot "pixel_if2_clk", "pixel_if3_clk"; 52*c66ec88fSEmmanuel Vadot 53*c66ec88fSEmmanuel Vadot ports { 54*c66ec88fSEmmanuel Vadot #address-cells = <1>; 55*c66ec88fSEmmanuel Vadot #size-cells = <0>; 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot port@0 { 58*c66ec88fSEmmanuel Vadot reg = <0>; 59*c66ec88fSEmmanuel Vadot 60*c66ec88fSEmmanuel Vadot csi2tx_out: endpoint { 61*c66ec88fSEmmanuel Vadot remote-endpoint = <&remote_in>; 62*c66ec88fSEmmanuel Vadot clock-lanes = <0>; 63*c66ec88fSEmmanuel Vadot data-lanes = <1 2>; 64*c66ec88fSEmmanuel Vadot }; 65*c66ec88fSEmmanuel Vadot }; 66*c66ec88fSEmmanuel Vadot 67*c66ec88fSEmmanuel Vadot port@1 { 68*c66ec88fSEmmanuel Vadot reg = <1>; 69*c66ec88fSEmmanuel Vadot 70*c66ec88fSEmmanuel Vadot csi2tx_in_stream0: endpoint { 71*c66ec88fSEmmanuel Vadot remote-endpoint = <&stream0_out>; 72*c66ec88fSEmmanuel Vadot }; 73*c66ec88fSEmmanuel Vadot }; 74*c66ec88fSEmmanuel Vadot 75*c66ec88fSEmmanuel Vadot port@2 { 76*c66ec88fSEmmanuel Vadot reg = <2>; 77*c66ec88fSEmmanuel Vadot 78*c66ec88fSEmmanuel Vadot csi2tx_in_stream1: endpoint { 79*c66ec88fSEmmanuel Vadot remote-endpoint = <&stream1_out>; 80*c66ec88fSEmmanuel Vadot }; 81*c66ec88fSEmmanuel Vadot }; 82*c66ec88fSEmmanuel Vadot 83*c66ec88fSEmmanuel Vadot port@3 { 84*c66ec88fSEmmanuel Vadot reg = <3>; 85*c66ec88fSEmmanuel Vadot 86*c66ec88fSEmmanuel Vadot csi2tx_in_stream2: endpoint { 87*c66ec88fSEmmanuel Vadot remote-endpoint = <&stream2_out>; 88*c66ec88fSEmmanuel Vadot }; 89*c66ec88fSEmmanuel Vadot }; 90*c66ec88fSEmmanuel Vadot 91*c66ec88fSEmmanuel Vadot port@4 { 92*c66ec88fSEmmanuel Vadot reg = <4>; 93*c66ec88fSEmmanuel Vadot 94*c66ec88fSEmmanuel Vadot csi2tx_in_stream3: endpoint { 95*c66ec88fSEmmanuel Vadot remote-endpoint = <&stream3_out>; 96*c66ec88fSEmmanuel Vadot }; 97*c66ec88fSEmmanuel Vadot }; 98*c66ec88fSEmmanuel Vadot }; 99*c66ec88fSEmmanuel Vadot}; 100