RGB444 trhandfer to YPBPR with 720P
The red color is not correct, it changed to be Green. But other color can be displayed correctly.
the register are set as below:
static struct ths8200_std_info ths8200_video_720p_info[] =
{ /*720p*/
{THS8200_DTG2_CNTL, THS8200_DTG2_CNTL_720P_DEFAULT},
{THS8200_DTG1_SPEC_A, THS8200_DTG1_SPEC_A_720P_DEFAULT},
{THS8200_DTG1_SPEC_B, THS8200_DTG1_SPEC_B_720P_DEFAULT},
{THS8200_DTG1_SPEC_C, THS8200_DTG1_SPEC_C_720P_DEFAULT},
{THS8200_DTG1_SPEC_D_LSB, THS8200_DTG1_SPEC_D_LSB_720P_DEFAULT},
{THS8200_DTG1_SPEC_E_LSB, THS8200_DTG1_SPEC_E_LSB_720P_DEFAULT},
{THS8200_DTG1_SPEC_DEH_MSB, THS8200_DTG1_SPEC_DEH_MSB_720P_DEFAULT},
{THS8200_DTG1_SPEC_K_LSB, THS8200_DTG1_SPEC_K_LSB_720P_DEFAULT},
{THS8200_DTG1_TOT_PIXELS_MSB, THS8200_DTG1_TOT_PIXELS_MSB_720P_DEFAULT},
{THS8200_DTG1_TOT_PIXELS_LSB, THS8200_DTG1_TOT_PIXELS_LSB_720P_DEFAULT},
{THS8200_DTG1_MODE, THS8200_DTG1_MODE_720P_DEFAULT},
{THS8200_DTG1_FRAME_FIELD_SZ_MSB, THS8200_DTG1_FRAME_FIELD_SZ_MSB_720P_DEFAULT},
{THS8200_DTG1_FRAME_SZ_LSB, THS8200_DTG1_FRAME_SZ_LSB_720P_DEFAULT},
{THS8200_DTG1_FIELD_SZ_LSB, THS8200_DTG1_FIELD_SZ_LSB_720P_DEFAULT},
{THS8200_DTG2_HS_IN_DLY_LSB, THS8200_DTG2_HS_IN_DLY_LSB_720P_DEFAULT},
{THS8200_DTG2_VS_IN_DLY_MSB, THS8200_DTG2_VS_IN_DLY_MSB_720P_DEFAULT},
{THS8200_DTG2_VS_IN_DLY_LSB, THS8200_DTG2_VS_IN_DLY_LSB_720P_DEFAULT},
{0, 0},
};
/* set color space conversion registers */
err |= ths8200_i2c_write(THS8200_CSC_R11, 0x00);
err |= ths8200_i2c_write(THS8200_CSC_R12, 0xDA);
err |= ths8200_i2c_write(THS8200_CSC_R21, 0x80);
err |= ths8200_i2c_write(THS8200_CSC_R22, 0x78);
err |= ths8200_i2c_write(THS8200_CSC_R31, 0x02);
err |= ths8200_i2c_write(THS8200_CSC_R32, 0x0C);
err |= ths8200_i2c_write(THS8200_CSC_G11, 0x02);
err |= ths8200_i2c_write(THS8200_CSC_G12, 0xDC);
err |= ths8200_i2c_write(THS8200_CSC_G21, 0x81);
err |= ths8200_i2c_write(THS8200_CSC_G22, 0x94);
err |= ths8200_i2c_write(THS8200_CSC_G31, 0x81);
err |= ths8200_i2c_write(THS8200_CSC_G32, 0xDC);
err |= ths8200_i2c_write(THS8200_CSC_B11, 0x00);
err |= ths8200_i2c_write(THS8200_CSC_B12, 0x4A);
err |= ths8200_i2c_write(THS8200_CSC_B21, 0x02);
err |= ths8200_i2c_write(THS8200_CSC_B22, 0x0C);
err |= ths8200_i2c_write(THS8200_CSC_B31, 0x80);
err |= ths8200_i2c_write(THS8200_CSC_B32, 0x30);
err |= ths8200_i2c_write(THS8200_CSC_OFFS1, 0x00);
err |= ths8200_i2c_write(THS8200_CSC_OFFS12, 0x08);
err |= ths8200_i2c_write(THS8200_CSC_OFFS23, 0x02);
err |= ths8200_i2c_write(THS8200_CSC_OFFS3, 0x00);
/* 30bit RGB 4:4:4 input data format */
err |= ths8200_i2c_write(THS8200_DATA_CNTL,THS8200_DATA_CNTL_MODE_30BIT_YCBCR);
#endif
err |= ths8200_i2c_write(THS8200_DTG1_Y_SYNC1_LSB,THS8200_DTG1_CBCR_SYNC1_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_Y_SYNC2_LSB,THS8200_DTG1_Y_SYNC2_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_Y_SYNC3_LSB,THS8200_DTG1_Y_SYNC3_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_CBCR_SYNC1_LSB,THS8200_DTG1_CBCR_SYNC1_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_CBCR_SYNC2_LSB,THS8200_DTG1_CBCR_SYNC2_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_CBCR_SYNC3_LSB,THS8200_DTG1_CBCR_SYNC3_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_Y_SYNC_MSB,THS8200_DTG1_Y_SYNC_MSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_CBCR_SYNC_MSB,THS8200_DTG1_CBCR_SYNC_MSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_SPEC_H_LSB,THS8200_DTG1_SPEC_H_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_SPEC_K_MSB,THS8200_DTG1_SPEC_K_MSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_FLD_FLIP_LINECNT_MSB,THS8200_DTG1_FLD_FLIP_LINECNT_MSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG1_LINECNT_LSB,THS8200_DTG1_LINECNT_LSB_DEFAULT);
err |= ths8200_i2c_write(THS8200_DTG2_HS_IN_DLY_MSB,THS8200_DTG2_HS_IN_DLY_MSB_DEFAULT);
Any suggestion?
Thanks