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.

DS90UH949A-Q1: Example script about writing EDID to Internal SRAM from ALP that uses I2C

Part Number: DS90UH949A-Q1
Other Parts Discussed in Thread: ALP

Hi Team,

We are trying to bring up panel by using 949+948. I find below link in E2E.

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/761584/ds90uh949-q1-how-to-refresh-edid/2815112?tisearch=e2e-sitesearch&keymatch=edid_load.py#2815112

As title, I would like to know if we have example script about writing EDID to Internal SRAM from ALP that uses I2C.

I can just write below EDID information in it. Is it correct?

Regards,

Roy

  • Hi Roy, 

    Here are the steps you would go about writing EDID to the internal SRAM via ALP. 

    1. Set register 0x48 to 0xD which will enable APB interface, direct the message to EDID SRAM, and enable auto address increment. 

    2. Set register 0x49 to 0x00 for 8-bit register address. 

    3. Start writing EDID data to register 0x4B one byte at a time.

    There are 3rd party EDID editors (such as Deltacast) that can help you translate the timing into a binary/hex format to write into ALP. 

    Best,

    Shu

  • The below example script has a function to write to the EDID and you just have populate the exEDID field with the EDID data. 

    Best,

    Shu

    # Script to load EDID using built-in ALP routines
    
    exEDID = [0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
    		0x10,0xAC,0x4D,0x40,0x4D,0x4E,0x35,0x30,
    		0x29,0x14,0x01,0x04,0xA3,0x2F,0x1E,0x78,
    		0x3E,0xEE,0x95,0xA3,0x54,0x4C,0x99,0x26,
    		0x0F,0x50,0x54,0xA5,0x4B,0x00,0x71,0x4F,
    		0x81,0x80,0xB3,0x00,0x01,0x01,0x01,0x01,
    		0x01,0x01,0x01,0x01,0x01,0x01,0x7C,0x2E,
    		0x90,0xA0,0x60,0x1A,0x1E,0x40,0x30,0x20,
    		0x36,0x00,0xDA,0x28,0x11,0x00,0x00,0x1A,
    		0x00,0x00,0x00,0xFF,0x00,0x55,0x38,0x32,
    		0x39,0x4B,0x30,0x41,0x36,0x30,0x35,0x4E,
    		0x4D,0x0A,0x00,0x00,0x00,0xFC,0x00,0x44,
    		0x45,0x4C,0x4C,0x20,0x50,0x32,0x32,0x31,
    		0x30,0x0A,0x20,0x20,0x00,0x00,0x00,0xFD,
    		0x00,0x38,0x4B,0x1E,0x53,0x10,0x00,0x0A,
    		0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x70,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    		0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
    
    
    # Write to EDID (start offset, data, length)
    board.EDID_Write(0x0, exEDID, 256)
    
    # Readback EDID
    read_edid = board.EDID_Read(0x0, 256)
    print "EDID readback:"
    print read_edid
    
    
    

  • Hi Shu,

    Can you help modify the EDID file for us? The resolution is showing as top side. Thank you.

    Regards,

    Roy

  • Hi Shu,

    Update the timing table. The related Horizontal value should *2 because we use dual oLDI and so EDID resolution should be 1920*720(Hactive * Vactive)

      

    Regard,.

    Roy

  • Hi Roy, 

    I can help modify the EDID file, please allow me 1-2 business days to complete that request. 

    Best,

    Shu

  • Hi Roy, 

    Please see the attached EDID file. 

    Best,

    Shu

    # Script to load EDID using built-in ALP routines
    
    exEDID = [0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
            0x04,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
            0x01,0x00,0x01,0x04,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x0D,0x25,
            0x80,0xA0,0x70,0xD0,0x28,0x20,0x00,0x00,
            0x00,0x00,0x20,0xF8,0x82,0x00,0x00,0x00,
            0x8E,0x12,0xC0,0x50,0x30,0xD0,0x28,0x20,
            0x00,0x00,0x00,0x00,0x10,0xF8,0x42,0x00,
            0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D]
    
    
    # Write to EDID (start offset, data, length)
    board.EDID_Write(0x0, exEDID, 256)
    
    # Readback EDID
    read_edid = board.EDID_Read(0x0, 256)
    print "EDID readback:"
    print read_edid
    
    
    

  • Hi Shu,

    I meet some problems using the EDID file that you provided.

    Also, I tried using our 1080p EDID example and the system can work in that EDID. And so I think the root cause if from EDID file. 

    # Script to load EDID using built-in ALP routines
    
    # Load EDID with 1080p 2-channel EDID
    TXN_1080p_2ch = [0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x53,0x0E,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,
            0xA3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
            0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
            0x01,0x01,0x01,0x01,0x02,0x3A,0x80,0x18,0x71,0x38,
            0x2D,0x40,0x58,0x58,0x45,0x00,0x80,0x38,0x74,0x00,
            0x00,0x18,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x9A,0x02,0x03,
            0x11,0x40,0x41,0x90,0x23,0x09,0x04,0x04,0x66,0x03,
            0x0C,0x00,0x00,0x00,0x80,0x02,0x3A,0x80,0x18,0x71,
            0x38,0x2D,0x40,0x58,0x58,0x45,0x00,0x80,0x38,0x74,
            0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0xFF,0x8E]
    
    # Write to EDID (start offset, data, length)
    board.EDID_Write(0x0, TXN_1080p_2ch, 256)
    
    # Readback EDID
    read_edid = board.EDID_Read(0x0, 256)
    print "EDID readback:"
    print read_edid
    
    
    

    Regards,

    Roy

  • Hi Su,

    Below is our desired timing.

    Horizontal Active: 1920
    Horizontal Blanking: 80
    Vertical Active: 720
    Vertical Blanking: 40
    Horizontal Sync Offset: 79
    Horizontal Sync Pulse: 1
    Vertical Sync Offset: 39
    Vertical Sync Pulse: 1

    Regards,

    Roy

  • Hi Roy, 

    This is the 3rd party EDID generator that I am using. Can you provide the highlighted parameters? The timing you provided doesn't have enough information for me to populate all the necessary parameters and will cause an incorrect EDID.

    Also note that the H. Blank = H. Front Porch + H. Sync Width + H. Back Porch  (same applies for Vertical)

    Best,

    Shu

  • Hi Shu,

    Please see below. Thank you.

    I download the program, but I'm not sure how to generate the corresponding EDID array. Thank you.

    Roy

  • Hi Roy, 

    Please see the attached screenshot, I highlighted all the buttons you need to generate the EDID.

    The script with the new EDID information is also attached.

    Best,

    Shu

    # Script to load EDID using built-in ALP routines
    
    exEDID = [0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
            0x04,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
            0x01,0x00,0x01,0x04,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x0A,0x23,
            0x80,0x50,0x70,0xD0,0x28,0x20,0x4F,0x01,
            0x71,0x08,0xD0,0xF8,0x72,0x00,0x00,0x00,
            0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95]
    
    
    # Write to EDID (start offset, data, length)
    board.EDID_Write(0x0, exEDID, 256)
    
    # Readback EDID
    read_edid = board.EDID_Read(0x0, 256)
    print "EDID readback:"
    print read_edid
    
    
    

  • Hi Shu,

    Thank you for your help.

    I ran the script in 949 with ALP demo mode. It looks the issue same as before. Can you help check the EDID format? Thank you.

    Regards,

    Roy

  • Hi Roy, 

    Try this one. Sorry I just noticed that the tool I use generate 128 byte EDIDs rather than our sample scripts 256. I modified the length of the EDID write and read functions at the bottom. 

    Best,

    Shu

    # Script to load EDID using built-in ALP routines
    
    exEDID = [0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
            0x04,0x21,0x00,0x00,0x00,0x00,0x00,0x00,
            0x01,0x00,0x01,0x04,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
            0x01,0x00,0x01,0x00,0x01,0x00,0x0A,0x23,
            0x80,0x50,0x70,0xD0,0x28,0x20,0x4F,0x01,
            0x71,0x08,0xD0,0xF8,0x72,0x00,0x00,0x00,
            0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95]
    
    
    # Write to EDID (start offset, data, length)
    board.EDID_Write(0x0, exEDID, 128)
    
    # Readback EDID
    read_edid = board.EDID_Read(0x0, 128)
    print "EDID readback:"
    print read_edid