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: No display issue

Part Number: SN65DSI84
Other Parts Discussed in Thread: SN65DSI83

Hi,

My customer has a problem that there's no display of SN65DSI84, but the backlight was on.

Read the register 0xE5 value is  0x3d.

According to the spec of the Initialization Sequence for SN65dSI84, the register 0xE5 data should be 0x00. Is that correct?

Could you share the experience that could help us to fix the issue?

  • Hi David,

    The defect is reproduced randomly, and the fail rate is low.

    According to the spec of the Initialization Sequence for SN65dSI84, we need to reset Init seq 2 when the value register 0xE5  is not  equal to 0x00.

    Is there any reference source code or could you share the experience to share us to reset init seq 2 ?

    Best Regards

    Jarvis.chen

  • Jarvis

    Are you referring to section 7.4.3 Initialization Sequence? You write 0xFF to register 0xE5 to clear it.

    Thanks

    David 

  • Hi David,

    Yes, I had modified the code to write 0xFF to register 0xE5 to clear it, and it will show register 0xE5 to 0x00 when normal display.

    We also could reproduce the defect  randomly with low fail rate , and the register 0xE5  was show 0x70.

    =========================================================================

    static int sn65dsi83_brg_start_stream(struct sn65dsi83_brg *brg)
    {
    int regval;

    int PLL_EN;
    int SOFT_RESET;

    struct i2c_client *client = I2C_CLIENT(brg);

    dev_info(&client->dev, "\n",__func__);
    /* Set the PLL_EN bit (CSR 0x0D.0) */
    SN65DSI83_WRITE(SN65DSI83_PLL_EN, 0x1);
    /* Wait for the PLL_LOCK bit to be set (CSR 0x0A.7) */
    mdelay(200);

    /* Perform SW reset to apply changes */
    SN65DSI83_WRITE(SN65DSI83_SOFT_RESET, 0x01);

    /* Read CHA Error register */
    regval = SN65DSI83_READ(SN65DSI83_CHA_ERR);

    dev_info(&client->dev, " CHA (0x%02x) = 0x%02x",
    SN65DSI83_CHA_ERR, regval);

    /* set 0xff to register 0xE5*/
    SN65DSI83_WRITE(SN65DSI83_CHA_ERR, 0xff);
    regval = SN65DSI83_READ(SN65DSI83_CHA_ERR);
    dev_info(&client->dev, "SetFF: CHA (0x%02x) = 0x%02x",
    SN65DSI83_CHA_ERR, regval);
    msleep(10);

    /* Read after set 0xff to clear register 0xE5*/
    regval = SN65DSI83_READ(SN65DSI83_CHA_ERR);
    dev_info(&client->dev, "ReadafterFF: CHA (0x%02x) = 0x%02x",
    SN65DSI83_CHA_ERR, regval);

    mdelay(1000);

    return 0;
    }

    ==========================================================================

    Best Regards

    Jarvis.chen

  • Jarvis

    Have they tried to enable the test pattern see if it is works? This will help isolating the problem between the DSI side and the LVDS side. 

    Have you had a chance to walk through the debug FAQ in my previous response?

    Thanks
    David

  • Hi David,

    1. Do you mean to run the DSI tuner with EVM board and enable the test pattern?

    2. According to to the  Initialization Sequence for SN65dSI84, that had described to re-run  seq 2 (After power is applied and stable, the DSI CLK lanes MUST be in HS state and the DSI data lanes MUST be driven
    to LP11 state) when register 0xE5 is not equal to 0x00.

    Do you have any experience or reference source code to re-run the seq 2?

    Best Regards

    Jarvis.chen

  • Jarvis

    1. Do you mean to run the DSI tuner with EVM board and enable the test pattern? 

    You can use the DSI tuner to generate register programming value to enable the test pattern or setting the CHA_TEST_PATTERN bit at address 0x3C.

    2. According to to the  Initialization Sequence for SN65dSI84, that had described to re-run  seq 2 (After power is applied and stable, the DSI CLK lanes MUST be in HS state and the DSI data lanes MUST be driven
    to LP11 state) when register 0xE5 is not equal to 0x00.

    This depends on the MIPI source, I do not have code for this. But if you see register 0xE5 reports back 0x70

    1. Try to change the EQ at register 0x11 and see if it helps

    2. Double check the timing on the DSI interface to makes sure there is no setup/hold timing violation when the error happens.

    Thanks

    David