Lontium LT6911UXC 4k60 Streaming

Hello,

We currently are successfully operating an LT6911UXC HDMI to CSI chip @ 4k30 using the ZHAW Driver with some minor modifications (to implement the compatibilty with the lane_polarity=“6” property for the csi-brick).

                lt6911uxc_zhaw_b@2b {
                    compatible = "lontium,lt6911uxc_zhaw";
                    reg = <0x2b>;
                    status = LT6911_EN;
                    devnode = "video1";
                    sensor_model="lt6911";

                    /* Physical dimensions of sensor */
                    physical_w = "3.674";
                    physical_h = "2.738";

                    /* Interrupt */
                    interrupt-parent = <&gpio_aon>;
                    interrupts = <TEGRA234_AON_GPIO(CC, 1) IRQ_TYPE_LEVEL_HIGH>;

                    refclk_hz = <27000000>; /* 40 - 50 MHz */

                    /* CSI Output */
                    csi_port = <1>;		/* Enable TX0 only */

                    mode0 { // 1920 x 1080, 60 FPS
                        num_lanes = "4";
                        tegra_sinterface = "serial_a";
                        phy_mode = "DPHY";
                        discontinuous_clk = "yes";
                        dpcm_enable = "false";
                        cil_settletime = "0";
                        lane_polarity = "6";		
                        
                        active_w = "1920";
                        active_h = "1080";
                        mode_type = "rgb";
                        pixel_phase = "rgb888";
                        csi_pixel_bit_depth = "24";
                        readout_orientation = "0";
                        line_length = "1920";
                        pix_clk_hz = "220000000";
                        default_framerate = "60000000"; /* 60.0 fps */
                    };

                    mode1 { // 3840 x 2160, 30 FPS
                        num_lanes = "4";
                        tegra_sinterface = "serial_a";
                        phy_mode = "DPHY";
                        discontinuous_clk = "yes";
                        dpcm_enable = "false";
                        cil_settletime = "0";
                        lane_polarity = "0";		
                        
                        active_w = "3840";
                        active_h = "2160";
                        mode_type = "rgb";
                        pixel_phase = "rgb888";
                        csi_pixel_bit_depth = "24";
                        readout_orientation = "0";
                        line_length = "3840";
                        pix_clk_hz = "297000000";
                        default_framerate = "30000000"; /* 30.0 fps */
                    };
                    ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                            reg = <0>;
                            status = LT6911_EN;
                            hdmi2csi_lt6911_out1: endpoint {
                                status = LT6911_EN;
                                port-index = <0>;
                                bus-width = <4>;
                                remote-endpoint = <&hdmi2csi_csi_in1>;
                            };
                        };
                    };
                };

Now we want to run the same chip on 4k60, for which 8 lane CSI is needed. We therefore need to configure two CSI Bricks with the correct lane_polarity since we had to swap polarity of some differential pairs on both CSI interfaces (CSI Brick one: lane_polarity = “6”, CSI Brick two: lane_polarity = “2”). For this reason, gang mode is not an options (since we did not see a way to do that with num-lanes/bus-width=8).

The best solution would be to add the second CSI brick under the same device tree node, looking something like this:

                lt6911uxc_zhaw_b@2b {
                    
                  .....
                  .....
                  .....


                    ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                            reg = <0>;
                            status = LT6911_EN;
                            hdmi2csi_lt6911_out0: endpoint {
                                status = LT6911_EN;
                                **lane_polarity="6";**
                                port-index = <0>;
                                bus-width = <4>;
                                remote-endpoint = <&hdmi2csi_csi_in0>;
                            };
                        };
                        port@1 {
                            reg = <1>;
                            status = LT6911_EN;
                            hdmi2csi_lt6911_out1: endpoint {
                                status = LT6911_EN;
                                **lane_polarity="2";**
                                port-index = <0>;
                                bus-width = <4>;
                                remote-endpoint = <&hdmi2csi_csi_in1>;
                            };
                        };
                    };
                };

Is there a way to define the modes under the ports (so that we can define the lane_polarity for each port independently?). If i try to do this, my Jetson Linux crashes instantly…

Thanks for your help!

FYI, we don’t implement gang mode within Xavier/Orin VI driver.

do you need 8-lane CSI to enable 4K60?
according to View Jetson Orin Technical Specifications, Orin it should already have higher CSI capability to handle it.

Hie @JerryChang

We are in close contact with Lontium and they told us we need 8 lanes 4k60

Also when we read out the Phy-Configuration of Lt6911, we get “Mipi Lanes = 8” when changing to 4k60 input.

hello parg,

even though you enable gain mode, it’ll only support with VI mode (without ISP).

All of that doesn’t matter since it is running on 4k30 flawlessly now. (The only information regarding v4l2 that we need is lane_polarity. The other stuff is there because we thought it is needed due to the documentation in the sensor programming guide from nvidia)

The question is if we can define two ports port@0 for lower 4 lanes and port@1 for upper four lanes with different lane_polarities.

We already managed to stream right and left image half independently and stitching them together in userspace is okay for us.

We just want to define the whole Hardware under one device-tree node without programming some sort of “dummy-driver” only used to configure lane polarity of upper 4 lanes

Is this possible with the tegra camera stuff? If so, how?

hello parg,

it’s VI driver for handling 8-lane configure (i.e. gang_mode) to utilize CSI-A/B and CSI-C/D.
you should try num_lanes = "8"; and tegra_sinterface = "serial_a"; in the device tree,
and, please configure lane_polarity = "6" for polarity swap on CSI0_D1 and CSI1_D0.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.