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: Problems with Bringup Step ext. clk. ext. timing.

Part Number: DS90UB941AS-Q1

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

  • Hi Ulrich,

    There are a couple things here that we should check.

    1. Please confirm that the external clock is in continuous mode.
    2. A common cause for end-to-end video failures is the lack of LP-11 transitions on the data lanes. Please check that the datalanes from the DSI source enter LP-11 (low power mode) at least once per frame.

    For information on how to check this please refer to Section 4.2 in the DS90UB941AS-Q1 DSI Bringup Guide

    Regards,

    Ben