This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SN65DSI84: DSI to LVDS bring up support

Part Number: SN65DSI84

Tool/software:

Hi Team

We are working on QCS615 processor with 6.6.52 Linux kernel, and our custom hardware have DSI to LVDS bridge(sn65dsi84) support, we are facing LVDS bring-up issue, where we see some noisy RGB lines on the LVDS display. 
Software details:
 
Linux Kernel: 6.6.52
Processor: QCS615
Bridge: SN65DSI84ZXHR
LVDS: ATM0700L6L
  1. Attached the dts file changes for reference. (qcs615-custom.dts)
  2. Used "ti-sn65dsi83.c" bridge driver and enabled the driver in defconfig file. 
  3. Used "panel-simple.c" file to pass LVDS timing parameter. (https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/drivers/gpu/drm/panel/panel-simple.c) and updated the timing as per our LVDS. (LVDS-timing-paramet-passed-through-panel-simple-driver-file.txt)
  4. Attached the boot-log for reference. (SN65DSI84.txt)
  5. Attached the LVDS datasheet for reference. (ATM0700L6L.pdf)

Request your support in this

Regards,

Shwetha Nayak

6746.ATM0700L6L.pdf

static const struct display_timing multi_inno_mi0800ft_9_timing = {
        .pixelclock = { 32000000, 40000000, 50000000 },
        .hactive = { 800, 800, 800 },
        .hfront_porch = { 16, 210, 354 },
        .hback_porch = { 46, 46, 46 },
        .hsync_len = { 1, 20, 40 },
        .vactive = { 600, 600, 600 },
        .vfront_porch = { 1, 12, 77 },
        .vback_porch = { 23, 23, 23 },
        .vsync_len = { 1, 10, 20 },
        .flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
                 DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE |
                 DISPLAY_FLAGS_SYNC_POSEDGE,
};
 
static const struct panel_desc multi_inno_mi0800ft_9 = {
        .timings = &multi_inno_mi0800ft_9_timing,
        .num_timings = 1,
        .bpc = 8,
        .size = {
                .width = 162,
                .height = 122,
        },
        .bus_format = MEDIA_BUS_FMT_RGB666_1X18, //MEDIA_BUS_FMT_RGB888_1X24,
        .bus_flags = DRM_BUS_FLAG_DE_HIGH |
                     DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE |
                     DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE,
        .connector_type = DRM_MODE_CONNECTOR_DPI,
};

  • Hi Team,

    Attaching the missing documents

    Regards,

    Shwetha Nayak

     1731.SN65DSI84.txt

    / {
    
        panel-lvds@0 {
            compatible = "multi-inno,mi0800ft-9"; // Or create a new compatible for ATM0700L6L
            status = "okay";
    
            width-mm = <162>;
            height-mm = <122>;
    
            ports {
                port {
                    lvds_panel_out: endpoint {
                        remote-endpoint = <&sn65dsi84_out>;
                    };
                };
            };
        };
    };
     
    &i2c1 {
    
        clock-frequency = <400000>;
        status = "okay";
        sn65dsi84: sn65dsi84@2c {
            compatible = "ti,sn65dsi84";
            reg = <0x2c>;
            enable-gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>; // Ensure this is correct on your board
            ti,dsi-lanes = <4>;
            ti,lvds-format = "jeida-24";           // <-- Enable this!
            ti,lvds-bpp = <18>;                    // <-- Match panel 24bpp
            status = "okay";
    
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
     
                port@0 {
                    reg = <0>;
                    sn65dsi84_in: endpoint {
                        data-lanes = <0 1 2 3>;
                        remote-endpoint = <&mdss_dsi0_out>;
                    };
                };
     
                port@2 {
                    reg = <2>;
                    sn65dsi84_out: endpoint {
                        data-lanes = <0 1 2 3>;
                        remote-endpoint = <&lvds_panel_out>;
                    };
                };
            };
        };
    };
     
    &mdss {
        status = "okay";
    };
     
    &mdss_dsi0 {
        vdda-supply = <&vreg_l11a>;
        status = "okay";
        ports {
    
            port@1 {
                reg = <1>;
                mdss_dsi0_out: endpoint {
                    remote-endpoint = <&sn65dsi84_in>;
                    data-lanes = <0 1 2 3>;
                    attach-bridge;
                };
            };
        };
    };
     
    &mdss_dsi0_phy {
        vdds-supply = <&vreg_l5a>;
        status = "okay";
    };
    
     
    

  • Hi Shwetha,

    Is this driver provided by TI? The only driver support we could share is linked in the previous thread: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/546145/question-about-sn65dsi84/


    For the DSI bridge initialization/configuration sequence, please use this guide: https://www.ti.com/lit/an/slla332b/slla332b.pdf?ts=1744759679816

    And you can download the DSI tuner tool from here: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/825302/sn65dsi83-dsi-tuner-tool-needed

    Best regards,
    Ikram

    Best regards,
    Ikram