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.

DS90UB941AS-Q1: The causes and impacts of EOT Error

Part Number: DS90UB941AS-Q1
目前我们对应的xx车厂6125平台项目,车机偶现闪屏丢色现象,经过确认是7911问题导致,7911修改后,丢色闪屏现象目前未发现,但是读取941寄存器,仍然有EOT error发生。
TI AFE反馈EOT Error会影响到DSI 视频流中出现数据错误, 从而可能会有闪屏的现象。
LT7911D-0x114-test1 是7911芯片修改DATA TX THS-TRAI后的测试报告(10f 是报NG的),从报告来看是通过了。
但是使用0x114的版本,从log来看,还是有EOT发生,需要帮忙确认EOT error是怎么导致的, 1. 7911测试报告中的参数设定是否合理;2. 这EOT波形是否正常。
In the 6125 platform project , there is occasional screen flicker and color loss phenomenon on the IPC. After confirmation, it is caused by the 7911 chip problem. After the modification of 7911 chip, the color flicker phenomenon has not been found yet. However, when reading the 941 register, there is still an EOT error.
The feedback from TI AFE regarding EOT Error may affect the occurrence of data errors in the DSI video stream, leading to the possibility of screen flicker.

LT7911D-0x114-test1 is the test report of the 7911 chip after modifying the DATA TX THS-TRAI (10f is reported as NG), and according to the report, it has passed.
However, using version 0x114, from the log, there are still EOT occurrences. We need help to confirm how the EOT error is caused. 1 Is the parameter settings in the 7911 test report reasonable; 2. Is the EOT waveform correct .LT7911D-0x10F-test1.pdfLT7911D-0x114-test1.pdf
  • Hey Shen,

    I will review and get back to you within 1-2 business days.

    Regards,
    Fadi A.

  • Hey Shen,

    If those are transient errors and not accumulating during run-time. Please try attached script to clear the transient EOT errors and check again during runtime to see if you still see EoT error accumulation.

    import time 
    serAddr = 0x18
    
    time.sleep(0.5)
    print "inital dump"
    Reg_C_0 = board.ReadI2C(serAddr,0x0C)
    print "reg. 0x0C = ", hex(Reg_C_0)
    print "#port0 reg dump"
    board.WriteI2C(serAddr,0x40,0x5)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x28_Port0 = ", hex(Reg_28_0)
    
    board.WriteI2C(serAddr,0x41,0x22)
    Reg_22_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x22_Port0 = ", hex(Reg_22_0)
    
    board.WriteI2C(serAddr,0x41,0x23)
    Reg_23_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x23_Port0 = ", hex(Reg_23_0)
    
    board.WriteI2C(serAddr,0x41,0x29)
    Reg_29_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x29_Port0 = ", hex(Reg_29_0)
    
    board.WriteI2C(serAddr,0x41,0x2B)
    Reg_2B_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2B_Port0 = ", hex(Reg_2B_0)
    
    board.WriteI2C(serAddr,0x41,0x2C)
    Reg_2C_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2C_Port0 = ", hex(Reg_2C_0)
    
    board.WriteI2C(serAddr,0x41,0x2D)
    Reg_2D_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2D_Port0 = ", hex(Reg_2D_0)
    
    
    board.WriteI2C(serAddr,0x41,0xF)
    Reg_F_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0xF_Port0 = ", hex(Reg_F_0)
    
    board.WriteI2C(serAddr,0x41,0x10)
    Reg_10_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x10_Port0 = ", hex(Reg_10_0)
    
    board.WriteI2C(serAddr,0x41,0x11)
    Reg_11_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x11_Port0 = ", hex(Reg_11_0)
    
    board.WriteI2C(serAddr,0x41,0x12)
    Reg_12_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x12_Port0 = ", hex(Reg_12_0)
    
    
    board.WriteI2C(serAddr,0x41,0x13)
    Reg_13_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x13_Port0 = ", hex(Reg_13_0)
    
    board.WriteI2C(serAddr,0x41,0x14)
    Reg_14_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x14_Port0 = ", hex(Reg_14_0)
    
    
    
    #re-read 0x0C main page
    print "re-read 0x0C main page"
    Reg_C_1 = board.ReadI2C(serAddr,0x0C)
    print "reg. 0x0C = ", hex(Reg_C_1)
    
    print "#port1 reg dump"
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    board.WriteI2C(serAddr,0x41,0x22)
    Reg_22_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x22_Port1 = ", hex(Reg_22_1)
    
    board.WriteI2C(serAddr,0x41,0x23)
    Reg_23_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x23_Port1 = ", hex(Reg_23_1)
    
    
    board.WriteI2C(serAddr,0x41,0x29)
    Reg_29_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x29_Port1 = ", hex(Reg_29_1)
    
    board.WriteI2C(serAddr,0x41,0x2B)
    Reg_2B_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2B_Port1 = ", hex(Reg_2B_1)
    
    board.WriteI2C(serAddr,0x41,0x2C)
    Reg_2C_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2C_Port1 = ", hex(Reg_2C_1)
    
    board.WriteI2C(serAddr,0x41,0x2D)
    Reg_2D_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2D_Port1 = ", hex(Reg_2D_1)
    
    board.WriteI2C(serAddr,0x41,0xF)
    Reg_F_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0xF_Port1 = ", hex(Reg_F_1)
    
    board.WriteI2C(serAddr,0x41,0x10)
    Reg_10_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x10_Port1 = ", hex(Reg_10_1)
    
    board.WriteI2C(serAddr,0x41,0x11)
    Reg_11_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x11_Port1 = ", hex(Reg_11_1)
    
    board.WriteI2C(serAddr,0x41,0x12)
    Reg_12_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x12_Port1 = ", hex(Reg_12_1)
    
    
    board.WriteI2C(serAddr,0x41,0x13)
    Reg_13_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x13_Port1 = ", hex(Reg_13_1)
    
    board.WriteI2C(serAddr,0x41,0x14)
    Reg_14_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x14_Port1 = ", hex(Reg_14_1)
    
    #After both ports clear
    #re-read 0x0C main page
    print "After both ports clear re-read 0x0C main page"
    time.sleep(0.5)
    Reg_C_0_1 = board.ReadI2C(serAddr,0x0C)
    print "Final reg. 0x0C dump = ", hex(Reg_C_0_1)
    
    board.WriteI2C(serAddr,0x40,0x5)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_0 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port0 = ", hex(Reg_28_0)
    
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    print "After both ports clear re-read 0x0C main page"
    
    #re-read 0x0C main page
    Reg_C_1 = board.ReadI2C(serAddr,0x0C)
    print "reg. 0x0C = ", hex(Reg_C_1)
    
    print "#port1 reg dump"
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    board.WriteI2C(serAddr,0x41,0x22)
    board.WriteI2C(serAddr,0x42,0x00)
    Reg_22_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x22_Port1 = ", hex(Reg_22_1)
    
    board.WriteI2C(serAddr,0x41,0x23)
    board.WriteI2C(serAddr,0x42,0x00)
    Reg_23_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x23_Port1 = ", hex(Reg_23_1)
    
    
    board.WriteI2C(serAddr,0x41,0x29)
    Reg_29_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x29_Port1 = ", hex(Reg_29_1)
    
    board.WriteI2C(serAddr,0x41,0x2B)
    Reg_2B_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2B_Port1 = ", hex(Reg_2B_1)
    
    board.WriteI2C(serAddr,0x41,0x2C)
    Reg_2C_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2C_Port1 = ", hex(Reg_2C_1)
    
    board.WriteI2C(serAddr,0x41,0x2D)
    Reg_2D_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2D_Port1 = ", hex(Reg_2D_1)
    
    board.WriteI2C(serAddr,0x41,0xF)
    Reg_F_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0xF_Port1 = ", hex(Reg_F_1)
    
    board.WriteI2C(serAddr,0x41,0x10)
    Reg_10_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x10_Port1 = ", hex(Reg_10_1)
    
    board.WriteI2C(serAddr,0x41,0x11)
    Reg_11_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x11_Port1 = ", hex(Reg_11_1)
    
    board.WriteI2C(serAddr,0x41,0x12)
    Reg_12_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x12_Port1 = ", hex(Reg_12_1)
    
    
    board.WriteI2C(serAddr,0x41,0x13)
    Reg_13_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x13_Port1 = ", hex(Reg_13_1)
    
    board.WriteI2C(serAddr,0x41,0x14)
    Reg_14_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x14_Port1 = ", hex(Reg_14_1)
    
    #After both ports clear
    #re-read 0x0C main page
    time.sleep(0.5)
    Reg_C_0_1 = board.ReadI2C(serAddr,0x0C)
    print "Final reg. 0x0C dump = ", hex(Reg_C_0_1)
    
    board.WriteI2C(serAddr,0x40,0x5)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_0 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port0 = ", hex(Reg_28_0)
    
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    print "re-read 0x0C main page"
    Reg_C_1 = board.ReadI2C(serAddr,0x0C)
    print "reg. 0x0C = ", hex(Reg_C_1)
    
    print "#port1 reg dump"
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    board.WriteI2C(serAddr,0x41,0x22)
    board.WriteI2C(serAddr,0x42,0x00)
    Reg_22_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x22_Port1 = ", hex(Reg_22_1)
    
    board.WriteI2C(serAddr,0x41,0x23)
    board.WriteI2C(serAddr,0x42,0x00)
    Reg_23_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x23_Port1 = ", hex(Reg_23_1)
    
    
    board.WriteI2C(serAddr,0x41,0x29)
    Reg_29_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x29_Port1 = ", hex(Reg_29_1)
    
    board.WriteI2C(serAddr,0x41,0x2B)
    Reg_2B_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2B_Port1 = ", hex(Reg_2B_1)
    
    board.WriteI2C(serAddr,0x41,0x2C)
    Reg_2C_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2C_Port1 = ", hex(Reg_2C_1)
    
    board.WriteI2C(serAddr,0x41,0x2D)
    Reg_2D_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2D_Port1 = ", hex(Reg_2D_1)
    
    board.WriteI2C(serAddr,0x41,0xF)
    Reg_F_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0xF_Port1 = ", hex(Reg_F_1)
    
    board.WriteI2C(serAddr,0x41,0x10)
    Reg_10_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x10_Port1 = ", hex(Reg_10_1)
    
    board.WriteI2C(serAddr,0x41,0x11)
    Reg_11_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x11_Port1 = ", hex(Reg_11_1)
    
    board.WriteI2C(serAddr,0x41,0x12)
    Reg_12_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x12_Port1 = ", hex(Reg_12_1)
    
    
    board.WriteI2C(serAddr,0x41,0x13)
    Reg_13_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x13_Port1 = ", hex(Reg_13_1)
    
    board.WriteI2C(serAddr,0x41,0x14)
    Reg_14_1 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x14_Port1 = ", hex(Reg_14_1)
    
    
    #re-read port0 only:
    Reg_C_0 = board.ReadI2C(serAddr,0x0C)
    print "reg. 0x0C = ", hex(Reg_C_0)
    
    print "#port0 reg dump"
    board.WriteI2C(serAddr,0x40,0x5)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x28_Port0 = ", hex(Reg_28_0)
    
    board.WriteI2C(serAddr,0x41,0x22)
    Reg_22_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x22_Port0 = ", hex(Reg_22_0)
    
    board.WriteI2C(serAddr,0x41,0x23)
    Reg_23_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x23_Port0 = ", hex(Reg_23_0)
    
    board.WriteI2C(serAddr,0x41,0x29)
    Reg_29_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x29_Port0 = ", hex(Reg_29_0)
    
    board.WriteI2C(serAddr,0x41,0x2B)
    Reg_2B_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2B_Port0 = ", hex(Reg_2B_0)
    
    board.WriteI2C(serAddr,0x41,0x2C)
    Reg_2C_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2C_Port0 = ", hex(Reg_2C_0)
    
    board.WriteI2C(serAddr,0x41,0x2D)
    Reg_2D_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x2D_Port0 = ", hex(Reg_2D_0)
    
    
    board.WriteI2C(serAddr,0x41,0xF)
    Reg_F_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0xF_Port0 = ", hex(Reg_F_0)
    
    board.WriteI2C(serAddr,0x41,0x10)
    Reg_10_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x10_Port0 = ", hex(Reg_10_0)
    
    board.WriteI2C(serAddr,0x41,0x11)
    Reg_11_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x11_Port0 = ", hex(Reg_11_0)
    
    board.WriteI2C(serAddr,0x41,0x12)
    Reg_12_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x12_Port0 = ", hex(Reg_12_0)
    
    
    board.WriteI2C(serAddr,0x41,0x13)
    Reg_13_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x13_Port0 = ", hex(Reg_13_0)
    
    board.WriteI2C(serAddr,0x41,0x14)
    Reg_14_0 = board.ReadI2C(serAddr,0x42,1)
    print "reg. 0x14_Port0 = ", hex(Reg_14_0)
    
    
    #re-read 0x0C main page
    time.sleep(0.5)
    Reg_C_0_1 = board.ReadI2C(serAddr,0x0C)
    print "Final reg. 0x0C dump = ", hex(Reg_C_0_1)
    
    board.WriteI2C(serAddr,0x40,0x5)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_0 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port0 = ", hex(Reg_28_0)
    
    board.WriteI2C(serAddr,0x40,0x9)
    board.WriteI2C(serAddr,0x41,0x28)
    Reg_28_1 = board.ReadI2C(serAddr,0x42,1)
    print "Final reg. 0x28_Port1 = ", hex(Reg_28_1)
    
    print "End of Script Run"
    
    #read all registers
    # 0xC GENERAL_STS 
    # 0x28 DSI_STATUS Section 8.6.2.20
    # 0x22 DSI_ERR_CFG_0 Section 8.6.2.18
    # 0x23 DSI_ERR_CFG_1 Section 8.6.2.19
    # 0x29 DSI_ERR_COUNT Section 8.6.2.21
    # 0x2B DSI_ERR_RPT_0 Section 8.6.2.23
    # 0x2C DSI_ERR_RPT_1 Section 8.6.2.24
    # 0x2D DSI_ERR_RPT_2 Section 8.6.2.25
    # 0xF DPHY_STATUS Section 8.6.2.9
    # 0x10 DPHY_DLANE0_ERR Section 8.6.2.10
    # 0x11 DPHY_DLANE1_ERR Section 8.6.2.11
    # 0x12 DPHY_DLANE2_ERR Section 8.6.2.12
    # 0x13 DPHY_DLANE3_ERR Section 8.6.2.13
    # 0x14 DPHY_ERR_CLK_LANE Section 8.6.2.14
    
    
    
    

    Another cause of EoT error could be incorrect tskip programming or if the DSI source is not sending those EoT packets the 941AS will flag these as EoT errors. You can apply an EoT mask to avoid this issue. See DSI bring-up Guide sections:

    4.4 THS-SKIP Configuration

    4.5 End of Transmission Packets (EoTp)

    5518.DSI Bringup Guide (2).pdf

    Regards,
    Fadi A.