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.

DS90UB953-Q1: Issue with TPG generation

Part Number: DS90UB953-Q1
Other Parts Discussed in Thread: DS90UB951-Q1, DS90UB958-Q1

Hi,

Firstly, my actual part number is DS90UB951-Q1 which is not in the list. Hence using the nearest cousin. Apologies for that.

I am trying to generate a Test pattern from Serializer with the following configuraitons

- 3848x2168 (4K) resolution @ 30fps

- RAW12 data type.

I have attached the register configuration that I am currently using (The CSI Enable will be set at a later point in code)

#if GENERATE_SER_TEST_PATTERN 
	slave_id = SER_SLAVE_ADDR 

#else
	slave_id = DES_SLAVE_ADDR 

	/* Pre-requisite
	* 1. Disable video forwarding
	* 2. Configure Tx operating speed
	* 3. Enable Transmitter for port 0
	*/
	reg_addr = 0x20;
	reg_data = 0x30;

	reg_addr = 0x1F;
	reg_data = 0x00;

	reg_addr = 0x33;
	reg_data = 0x00;

#endif

	/* Access indirect pat gen registers*/
	reg_addr = 0xB0;
	reg_data = 0x00;

	/* Enable pattern Generator*/
	reg_addr = 0xB1;
	reg_data = 0x01;
	reg_addr = 0xB2;
	reg_data = 0x01;

	/* Gen color bar pattern, 8 Color bars, and a block size of 3*/
	reg_addr = 0xB1;
	reg_data = 0x02;
	reg_addr = 0xB2;
	reg_data = 0xB3;

	/* Data format RAW12, Virtual channel identifier to 0*/
	reg_addr = 0xB1;
	reg_data = 0x03;
	reg_addr = 0xB2;
	reg_data = 0x2C;

	/* PGEN line length*/
	reg_addr = 0xB1;
	reg_data = 0x04;
	reg_addr = 0xB2;
	reg_data = 0x16;

	reg_addr = 0xB1;
	reg_data = 0x05;
	reg_addr = 0xB2;
	reg_data = 0x8C;

	/* PGEN bar size*/
	reg_addr = 0xB1;
	reg_data = 0x06;
	reg_addr = 0xB2;
	reg_data = 0x02;

	reg_addr = 0xB1;
	reg_data = 0x07;
	reg_addr = 0xB2;
	reg_data = 0xD2;

	/* PGEN active Line per frame*/
	reg_addr = 0xB1;
	reg_data = 0x08;
	reg_addr = 0xB2;
	reg_data = 0x08;

	reg_addr = 0xB1;
	reg_data = 0x09;
	reg_addr = 0xB2;
	reg_data = 0x78;

	/* PGEN total line per frame*/
	reg_addr = 0xB1;
	reg_data = 0x0A;
	reg_addr = 0xB2;
	reg_data = 0x09;

	reg_addr = 0xB1;
	reg_data = 0x0B;
	reg_addr = 0xB2;
	reg_data = 0x20;

	/* Setup Line Period*/
	reg_addr = 0xB1;
	reg_data = 0x0C;
	reg_addr = 0xB2;
	reg_data = 0x05;

	reg_addr = 0xB1;
	reg_data = 0x0D;
	reg_addr = 0xB2;
	reg_data = 0x93;

	/* Vertical Back Porch*/
	reg_addr = 0xB1;
	reg_data = 0x0E;
	reg_addr = 0xB2;
	reg_data = 0xA8;

	/* Vertical Front Porch*/
	reg_addr = 0xB1;
	reg_data = 0x0F;
	reg_addr = 0xB2;
	reg_data = 0x00;

  /* Configure Color values*/
	reg_addr = 0xB1;
	reg_data = 0x10;
	reg_addr = 0xB2;

	reg_data = 0x88;
	reg_addr = 0xB1;
	reg_data = 0x11;
	reg_addr = 0xB2;
	reg_data = 0xFF;

	reg_addr = 0xB1;
	reg_data = 0x12;
	reg_addr = 0xB2;
	reg_data = 0xF8;


The same configuration works for deserializer as shown in the below image (Ignore the color as it is done by incorrect post processing)

However, When I apply the same register configurations for Serializer, I get something completely different. It looks like below images

 https://lh3.googleusercontent.com/-I0hbpM7lwio/X38oZxGxTBI/AAAAAAAADF4/Bi_8rn1vKikYmvN6Mf6DpbmBmqXK9DQPgCK8BGAsYHg/s0/2020-10-08.png

When I dumped the Registers from (0x4C - 0x7F) of my DS90UB958-Q1 deserializer during streaming, I see that there are a lot of errors on the Channel. Attached the logs for reference

========= Reg dump [0] ========
value @ 0x4C is [0x1]
value @ 0x4D is [0x38]
value @ 0x4E is [0xfb]
value @ 0x4F is [0x0]
value @ 0x50 is [0x0]
value @ 0x51 is [0x0]
value @ 0x52 is [0x0]
value @ 0x53 is [0x4]
value @ 0x54 is [0x6]
value @ 0x55 is [0x0]
value @ 0x56 is [0x0]
value @ 0x57 is [0x0]
value @ 0x58 is [0x5a]
value @ 0x59 is [0x0]
value @ 0x5A is [0x0]
value @ 0x5B is [0x30]
value @ 0x5C is [0x30]
value @ 0x5D is [0x20]
value @ 0x5E is [0x0]
value @ 0x5F is [0x0]
value @ 0x60 is [0x0]
value @ 0x61 is [0x0]
value @ 0x62 is [0x0]
value @ 0x63 is [0x0]
value @ 0x64 is [0x0]
value @ 0x65 is [0x20]
value @ 0x66 is [0x0]
value @ 0x67 is [0x0]
value @ 0x68 is [0x0]
value @ 0x69 is [0x0]
value @ 0x6A is [0x0]
value @ 0x6B is [0x0]
value @ 0x6C is [0x0]
value @ 0x6D is [0x7c]
value @ 0x6E is [0x88]
value @ 0x6F is [0x88]
value @ 0x70 is [0x2b]
value @ 0x71 is [0x2c]
value @ 0x72 is [0xe4]
value @ 0x73 is [0x1]
value @ 0x74 is [0xc4]
value @ 0x75 is [0x16]
value @ 0x76 is [0x8c]
value @ 0x77 is [0xc1]
value @ 0x78 is [0x0]
value @ 0x79 is [0x1]
value @ 0x7A is [0xf]
value @ 0x7B is [0xff]
value @ 0x7C is [0x0]
value @ 0x7D is [0x0]
value @ 0x7E is [0x0]
value @ 0x7F is [0x0]


========= Reg dump [1] ========
value @ 0x4C is [0x1]
value @ 0x4D is [0x37]
value @ 0x4E is [0x3c]
value @ 0x4F is [0x79]
value @ 0x50 is [0x40]
value @ 0x51 is [0x0]
value @ 0x52 is [0x0]
value @ 0x53 is [0x4]
value @ 0x54 is [0x6]
value @ 0x55 is [0x1]
value @ 0x56 is [0x33]
value @ 0x57 is [0x0]
value @ 0x58 is [0x5a]
value @ 0x59 is [0x0]
value @ 0x5A is [0x0]
value @ 0x5B is [0x30]
value @ 0x5C is [0x30]
value @ 0x5D is [0x20]
value @ 0x5E is [0x0]
value @ 0x5F is [0x0]
value @ 0x60 is [0x0]
value @ 0x61 is [0x0]
value @ 0x62 is [0x0]
value @ 0x63 is [0x0]
value @ 0x64 is [0x0]
value @ 0x65 is [0x20]
value @ 0x66 is [0x0]
value @ 0x67 is [0x0]
value @ 0x68 is [0x0]
value @ 0x69 is [0x0]
value @ 0x6A is [0x0]
value @ 0x6B is [0x0]
value @ 0x6C is [0x0]
value @ 0x6D is [0x7c]
value @ 0x6E is [0x88]
value @ 0x6F is [0x88]
value @ 0x70 is [0x2b]
value @ 0x71 is [0x2c]
value @ 0x72 is [0xe4]
value @ 0x73 is [0x1]
value @ 0x74 is [0xc4]
value @ 0x75 is [0x16]
value @ 0x76 is [0x8c]
value @ 0x77 is [0xc1]
value @ 0x78 is [0x0]
value @ 0x79 is [0x1]
value @ 0x7A is [0xf]
value @ 0x7B is [0xff]
value @ 0x7C is [0x0]
value @ 0x7D is [0x0]
value @ 0x7E is [0x0]
value @ 0x7F is [0x0]

========= Reg dump [2] ========
value @ 0x4C is [0x1]
value @ 0x4D is [0x30]
value @ 0x4E is [0x79]
value @ 0x4F is [0x2a]
value @ 0x50 is [0x58]
value @ 0x51 is [0x0]
value @ 0x52 is [0x0]
value @ 0x53 is [0x4]
value @ 0x54 is [0x6]
value @ 0x55 is [0x0]
value @ 0x56 is [0xdc]
value @ 0x57 is [0x0]
value @ 0x58 is [0x5a]
value @ 0x59 is [0x0]
value @ 0x5A is [0x0]
value @ 0x5B is [0x30]
value @ 0x5C is [0x30]
value @ 0x5D is [0x20]
value @ 0x5E is [0x0]
value @ 0x5F is [0x0]
value @ 0x60 is [0x0]
value @ 0x61 is [0x0]
value @ 0x62 is [0x0]
value @ 0x63 is [0x0]
value @ 0x64 is [0x0]
value @ 0x65 is [0x20]
value @ 0x66 is [0x0]
value @ 0x67 is [0x0]
value @ 0x68 is [0x0]
value @ 0x69 is [0x0]
value @ 0x6A is [0x0]
value @ 0x6B is [0x0]
value @ 0x6C is [0x0]
value @ 0x6D is [0x7c]
value @ 0x6E is [0x88]
value @ 0x6F is [0x88]
value @ 0x70 is [0x2b]
value @ 0x71 is [0x2c]
value @ 0x72 is [0xe4]
value @ 0x73 is [0x0]
value @ 0x74 is [0xa]
value @ 0x75 is [0x16]
value @ 0x76 is [0x8c]
value @ 0x77 is [0xc1]
value @ 0x78 is [0x0]
value @ 0x79 is [0x1]
value @ 0x7A is [0xf]
value @ 0x7B is [0xff]
value @ 0x7C is [0x0]
value @ 0x7D is [0x0]
value @ 0x7E is [0x0]
value @ 0x7F is [0x0]

========= Reg dump [3] ========
value @ 0x4C is [0x1]
value @ 0x4D is [0x30]
value @ 0x4E is [0x3a]
value @ 0x4F is [0x0]
value @ 0x50 is [0x0]
value @ 0x51 is [0x0]
value @ 0x52 is [0x0]
value @ 0x53 is [0x4]
value @ 0x54 is [0x6]
value @ 0x55 is [0x0]
value @ 0x56 is [0x0]
value @ 0x57 is [0x0]
value @ 0x58 is [0x5a]
value @ 0x59 is [0x0]
value @ 0x5A is [0x0]
value @ 0x5B is [0x30]
value @ 0x5C is [0x30]
value @ 0x5D is [0x20]
value @ 0x5E is [0x0]
value @ 0x5F is [0x0]
value @ 0x60 is [0x0]
value @ 0x61 is [0x0]
value @ 0x62 is [0x0]
value @ 0x63 is [0x0]
value @ 0x64 is [0x0]
value @ 0x65 is [0x20]
value @ 0x66 is [0x0]
value @ 0x67 is [0x0]
value @ 0x68 is [0x0]
value @ 0x69 is [0x0]
value @ 0x6A is [0x0]
value @ 0x6B is [0x0]
value @ 0x6C is [0x0]
value @ 0x6D is [0x7c]
value @ 0x6E is [0x88]
value @ 0x6F is [0x88]
value @ 0x70 is [0x2b]
value @ 0x71 is [0x2c]
value @ 0x72 is [0xe4]
value @ 0x73 is [0x0]
value @ 0x74 is [0x4b]
value @ 0x75 is [0xfe]
value @ 0x76 is [0x0]
value @ 0x77 is [0xc1]
value @ 0x78 is [0x0]
value @ 0x79 is [0x1]
value @ 0x7A is [0xf]
value @ 0x7B is [0xff]
value @ 0x7C is [0x0]
value @ 0x7D is [0x0]
value @ 0x7E is [0x0]
value @ 0x7F is [0x0]

========= Reg dump [4] ========
value @ 0x4C is [0x1]
value @ 0x4D is [0x30]
value @ 0x4E is [0xf3]
value @ 0x4F is [0x0]
value @ 0x50 is [0x0]
value @ 0x51 is [0x0]
value @ 0x52 is [0x0]
value @ 0x53 is [0x4]
value @ 0x54 is [0x6]
value @ 0x55 is [0x0]
value @ 0x56 is [0x0]
value @ 0x57 is [0x0]
value @ 0x58 is [0x5a]
value @ 0x59 is [0x0]
value @ 0x5A is [0x0]
value @ 0x5B is [0x30]
value @ 0x5C is [0x30]
value @ 0x5D is [0x20]
value @ 0x5E is [0x0]
value @ 0x5F is [0x0]
value @ 0x60 is [0x0]
value @ 0x61 is [0x0]
value @ 0x62 is [0x0]
value @ 0x63 is [0x0]
value @ 0x64 is [0x0]
value @ 0x65 is [0x20]
value @ 0x66 is [0x0]
value @ 0x67 is [0x0]
value @ 0x68 is [0x0]
value @ 0x69 is [0x0]
value @ 0x6A is [0x0]
value @ 0x6B is [0x0]
value @ 0x6C is [0x0]
value @ 0x6D is [0x7c]
value @ 0x6E is [0x88]
value @ 0x6F is [0x88]
value @ 0x70 is [0x2b]
value @ 0x71 is [0x2c]
value @ 0x72 is [0xe4]
value @ 0x73 is [0x0]
value @ 0x74 is [0x4b]
value @ 0x75 is [0xfe]
value @ 0x76 is [0x0]
value @ 0x77 is [0xc1]
value @ 0x78 is [0x0]
value @ 0x79 is [0x1]
value @ 0x7A is [0x0]
value @ 0x7B is [0x0]
value @ 0x7C is [0x0]
value @ 0x7D is [0x0]
value @ 0x7E is [0x0]
value @ 0x7F is [0x0]

Could someone shed a light on what the issue might be?

Please let me know if anything else is required.