Hi together,
We cannot start the ext. timing. and ext. Clock mode.
We already validate the deep physical layer with an high speed differential oscilloscope.
We are using a continuous DSI Clock. May this cause a configuration error? We always see framing errors, when we are read out the 941.
##EXT CLK EXT Timing Mode --- NOT Working i2cset -y 16 0xc 0x1 0xe #Diasalbe DSI, DSI_Reset,Digial_Reset1 sleep 1 i2cset -y 16 0xc 0x1e 0x1 #PORT0_SEL =0-> Write to Port0 i2cset -y 16 0xc 0x4f 0x8c #DSI_cont_clk 4 Lanes i2cset -y 16 0xc 0x5b 0x4 #Auto-Detect FPD-Link III mode i2cset -y 16 0xc 0x40 0x4 #ind registers Port 0 i2cset -y 16 0xc 0x41 0x21 #ind register 0x21 i2cset -y 16 0xc 0x42 0x60 #VS active low, HS active lo i2cset -y 16 0xc 0x40 0x4 #ind registers Port 0 i2cset -y 16 0xc 0x41 0x5 #ind register 0x5 i2cset -y 16 0xc 0x42 0x14 #TSKIP_CNT Reset=0x3A, amount of data that will be ignored at end of transmission detection i2cset -y 16 0xc 0x66 0x00 #PATGEN_ID -> 0x0 i2cset -y 16 0xc 0x67 0x00 # Reset value Red = 0 i2cset -y 16 0xc 0x66 0x01 #PATGEN_ID -> 0x1 i2cset -y 16 0xc 0x67 0x00 # Reset value Green = 0 i2cset -y 16 0xc 0x66 0x02 #PATGEN_ID -> 0x2 i2cset -y 16 0xc 0x67 0x00 # Reset value blue = 0 i2cset -y 16 0xc 0x66 0x03 #PGCDC1 --> PGCDC1 i2cset -y 16 0xc 0x67 0x03 # int. PCLK = 66.6MHz i2cset -y 16 0xc 0x66 0x04 #PATGEN_ID -> PGTFS1 i2cset -y 16 0xc 0x67 0x70 # Horizontal Width default is 48h i2cset -y 16 0xc 0x66 0x05 #PATGEN_ID -> PGTFS2 i2cset -y 16 0xc 0x67 0xe6 # Total vertical Width lsb=eh (5h); horizonatl msb=6h (4h) i2cset -y 16 0xc 0x66 0x06 #PATGEN_ID -> PCTFS3 i2cset -y 16 0xc 0x67 0x2e # Total vertical Width msb= 2eh (1eh) i2cset -y 16 0xc 0x66 0x07 #PATGEN_ID -> PGAFS1 i2cset -y 16 0xc 0x67 0x00 # Active Horizontal Width lsb(8)= 00 (20h) i2cset -y 16 0xc 0x66 0x08 #PATGEN_ID -> PGAFS2 i2cset -y 16 0xc 0x67 0x05 # Active Vertical Width (lsb4)= 0(0) Active Horizontal Width (msb4)=5h(3h) i2cset -y 16 0xc 0x66 0x09 #PATGEN_ID -> PGAFS3 i2cset -y 16 0xc 0x67 0x2d # Active Vertical Width (msb8)=2Dh(1Eh) i2cset -y 16 0xc 0x66 0x0a #PATGEN_ID -> PGHSW i2cset -y 16 0xc 0x67 0x50 # Horizontal Sync Width 50h(Ah) i2cset -y 16 0xc 0x66 0x0b #PATGEN_ID -> PGVSW i2cset -y 16 0xc 0x67 0x05 # Vertical Sync Width 05h(2h) i2cset -y 16 0xc 0x66 0x0c #PATGEN_ID -> PGHBP i2cset -y 16 0xc 0x67 0xd8 # Horizontal Back Porch Width =d8h (Ah) i2cset -y 16 0xc 0x66 0x0d #PATGEN_ID -> PGVBP i2cset -y 16 0xc 0x67 0x16 # Vertical back Porch Width 16h(2h) i2cset -y 16 0xc 0x66 0x0e #PATGEN_ID -> PBSC i2cset -y 16 0xc 0x67 0x00 # Horizontal Sync Disable =0(0) ; Vertical Sync Polarity=0(1)# in int. timing mode inverting; ext. timing mode no effect i2cset -y 16 0xc 0x66 0x0f #PATGEN_ID -> PGFT i2cset -y 16 0xc 0x67 0x1e # Frame Time 1e(1e) i2cset -y 16 0xc 0x66 0x10 #PATGEN_ID -> PGTSC i2cset -y 16 0xc 0x67 0x0e # PATGEN_TSLOT (0xe)0xC number of enabled timeslots i2cset -y 16 0xc 0x66 0x11 #PATGEN_ID -> PGSO1 i2cset -y 16 0xc 0x67 0x21 # Timslot source default i2cset -y 16 0xc 0x66 0x12 #PATGEN_ID -> PGTSO2 i2cset -y 16 0xc 0x67 0x43 # Timslot source default i2cset -y 16 0xc 0x66 0x13 #PATGEN_ID -> PGTSO3 i2cset -y 16 0xc 0x67 0x65 # Timslot source default i2cset -y 16 0xc 0x66 0x14 #PATGEN_ID -> PGTSO4 i2cset -y 16 0xc 0x67 0x87 # Timslot source default i2cset -y 16 0xc 0x66 0x15 #PATGEN_ID -> PGTSO5 i2cset -y 16 0xc 0x67 0xa9 # Timslot source default i2cset -y 16 0xc 0x66 0x16 #PATGEN_ID -> PGTSO6 i2cset -y 16 0xc 0x67 0xcb # Timslot source default i2cset -y 16 0xc 0x66 0x17 #PATGEN_ID -> PGTSO7 i2cset -y 16 0xc 0x67 0xed # Timslot source default i2cset -y 16 0xc 0x66 0x18 #PATGEN_ID -> PGTSO8 i2cset -y 16 0xc 0x67 0x0f # Timslot source default i2cset -y 16 0xc 0x66 0x19 #PATGEN_ID ->PGBE i2cset -y 16 0xc 0x67 0x00 # PATGEN_BIST_ERRS clear on read default i2cset -y 16 0xc 0x66 0x1a #PATGEN_ID ->PGCDC2 i2cset -y 16 0xc 0x67 0x01 # Clock Divider value M is default value 1h i2cset -y 16 0xc 0x65 0x0 #ext. timing, i2cset -y 16 0xc 0x64 0xc1 #change Fixed pattern to 1100(0001); enable Pattern Generator i2cset -y 16 0xc 0x0 0x0 #SER_ID is from IDX Pin # start debugging i2cset -y 16 0xc 0x4 0x20 #GENDERAL_CFG2: Clear CRC Error Counter sleep .1 i2cset -y 16 0xc 0x4 0x0 #GENDERAL_CFG2: "Clear CRC Error Counter" off sleep 1 val=`i2cget -y 16 0xc 0xc` echo "GENERAL_STS Register (Address = 0xC): ${val}" val=`i2cget -y 16 0xc 0x1f` echo "FREQ_COUNTER Register (Address = 0x1F): ${val}" val=`i2cget -y 16 0xc 0x50` echo "BRIDGE_STS Register (Address = 0x50): ${val}" val=`i2cget -y 16 0xc 0x5a` echo "DUAL_STS_DUAL_STS_P1 Register (Address = 0x5A): ${val}" val=`i2cget -y 16 0xc 0x5f` echo "DSI_FREQ_DSI_FREQ_P1 Register (Address = 0x5F): ${val}" i2cset -y 16 0xc 0x40 0x4 i2cset -y 16 0xc 0x41 0x6 val=`i2cget -y 16 0xc 0x42` echo "DPHY_LP_POLARITY Register (Offset = 0x6): ${val}" i2cset -y 16 0xc 0x41 0xf val=`i2cget -y 16 0xc 0x42` echo "DPHY_STATUS Register (Offset = 0xF): ${val}" i2cset -y 16 0xc 0x41 0x10 val=`i2cget -y 16 0xc 0x42` echo "DPHY_DLANE0_ERR Register (Offset = 0x10): ${val}" i2cset -y 16 0xc 0x41 0x11 val=`i2cget -y 16 0xc 0x42` echo "DPHY_DLANE1_ERR Register (Offset = 0x11): ${val}" i2cset -y 16 0xc 0x41 0x12 val=`i2cget -y 16 0xc 0x42` echo "DPHY_DLANE2_ERR Register (Offset = 0x12): ${val}" i2cset -y 16 0xc 0x41 0x13 val=`i2cget -y 16 0xc 0x42` echo "DPHY_DLANE3_ERR Register (Offset = 0x13): ${val}" i2cset -y 16 0xc 0x41 0x14 val=`i2cget -y 16 0xc 0x42` echo "DPHY_ERR_CLK_LANE Register (Offset = 0x14): ${val}" i2cset -y 16 0xc 0x41 0x15 val=`i2cget -y 16 0xc 0x42` echo "DPHY_SYNC_STS Register (Offset = 0x15): ${val}" i2cset -y 16 0xc 0x41 0x22 val=`i2cget -y 16 0xc 0x42` echo "DSI_ERR_CFG_0 Register (Offset = 0x22): ${val}" i2cset -y 16 0xc 0x41 0x23 val=`i2cget -y 16 0xc 0x42` echo "DSI_ERR_CFG_1 Register (Offset = 0x23): ${val}" i2cset -y 16 0xc 0x41 0x28 val=`i2cget -y 16 0xc 0x42` echo "DSI_STATUS Register (Offset = 0x28): ${val}" i2cset -y 16 0xc 0x41 0x2a val=`i2cget -y 16 0xc 0x42` echo "DSI_VC_DTYPE Register (Offset = 0x2A): ${val}" i2cset -y 16 0xc 0x41 0x2b val=`i2cget -y 16 0xc 0x42` echo "DSI_ERR_RPT_0 Register (Offset = 0x2B): ${val}" i2cset -y 16 0xc 0x41 0x2c val=`i2cget -y 16 0xc 0x42` echo "DSI_ERR_RPT_1 Register (Offset = 0x2C): ${val}" i2cset -y 16 0xc 0x41 0x2d val=`i2cget -y 16 0xc 0x42` echo "DSI_ERR_RPT_2 Register (Offset = 0x2D): ${val}" i2cset -y 16 0xc 0x41 0x3a val=`i2cget -y 16 0xc 0x42` echo "DSI_PCLK_DIV_M Register (Offset = 0x3A): ${val}" i2cset -y 16 0xc 0x41 0x3b val=`i2cget -y 16 0xc 0x42` echo "DSI_PCLK_DIV_N Register (Offset = 0x3B): ${val}"
When we change in line 68 to:
i2cset -y 16 0xc 0x65 0xc #ext. clk, int. timing
Then we see an Test pattern on screen with int timing.
Is it possible, that a continuous clk prevent the application processor to configure with the 941?
Do you see an other error in our script?
Thanks for all answers
Ulrich