📄 proviewdtv_tda9975.c
字号:
{
return;
}
TDA9975_AVIPage();
if(out == YUV_422_CCIR656_FORMAT)
{
/*Out: 8bits(Cb-Y-Cr-Y) on VPA*/
buffer[0] = 0xea;
buffer[1] = 0x80;
I2C_Write_TDA9975(buffer, 2);
/*4:2:2 CCIR 656 format*/
buffer[0] = 0xe5;
buffer[1] = 0x62;
I2C_Write_TDA9975(buffer, 2);
}
else if(out == YUV_422_SEMIPLANAR_FORMAT)
{
/*Out: 16bits
8bits (Y) on VPA
8bits (Cb-Cr) on VPB
*/
buffer[0] = 0xea;
buffer[1] = 0xB2;
I2C_Write_TDA9975(buffer, 2);
/*4:2:2 semi-planar format*/
buffer[0] = 0xe5;
buffer[1] = 0x61;
I2C_Write_TDA9975(buffer, 2);
}
else
{
/*YUV 4:4:4*/
buffer[0] = 0xea;
buffer[1] = 0x86;
I2C_Write_TDA9975(buffer, 2);
/*4:2:2 semi-planar format*/
buffer[0] = 0xe5;
buffer[1] = 0x60;
I2C_Write_TDA9975(buffer, 2);
}
}
void TDA9975_Test480IColorBar(void)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_480IColorBar[i][0];
buffer[1] = TDA9975_480IColorBar[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantInputPort = VIDEO_INPUT_TEST;
g_UserWantSource = TDA9975_SOURCE_TEST;
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = 0;
g_TDA9975InputFormat = VIDEO_INPUT_480I60;
g_TDA9975OutputFormat = YUV_422_CCIR656_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_Test480PColorBar(void)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_480PColorBar[i][0];
buffer[1] = TDA9975_480PColorBar[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantInputPort = VIDEO_INPUT_TEST;
g_UserWantSource = TDA9975_SOURCE_TEST;
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = 0;
g_TDA9975InputFormat = VIDEO_INPUT_480P60;
g_TDA9975OutputFormat = YUV_422_SEMIPLANAR_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_Test480IYUV444ColorBar(void)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_480IYUV444ColorBar[i][0];
buffer[1] = TDA9975_480IYUV444ColorBar[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantInputPort = VIDEO_INPUT_TEST;
g_UserWantSource = TDA9975_SOURCE_TEST;
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = 0;
g_TDA9975InputFormat = VIDEO_INPUT_480P60;
g_TDA9975OutputFormat = YUV_444_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_YPbPr480I(int userwantsource)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_480IYPbPr[i][0];
buffer[1] = TDA9975_480IYPbPr[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantSource = userwantsource;
g_UserWantInputPort = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975InputFormat = VIDEO_INPUT_480I60;
g_TDA9975OutputFormat = YUV_422_CCIR656_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_YPbPr480P(int userwantsource)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_480PYPbPr[i][0];
buffer[1] = TDA9975_480PYPbPr[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantSource = userwantsource;
g_UserWantInputPort = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975InputFormat = VIDEO_INPUT_480P60;
g_TDA9975OutputFormat = YUV_422_SEMIPLANAR_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_YPbPr720P(int userwantsource)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_720PYPbPr[i][0];
buffer[1] = TDA9975_720PYPbPr[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantSource = userwantsource;
g_UserWantInputPort = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975InputFormat = VIDEO_INPUT_720P60;
g_TDA9975OutputFormat = YUV_422_SEMIPLANAR_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
void TDA9975_YPbPr1080I(int userwantsource)
{
unsigned char buffer[2];
int i;
TDA9975_InitAVI();
TDA9975_AVIPage();
for(i = 0; ;i++)
{
buffer[0] = TDA9975_1080IYPbPr[i][0];
buffer[1] = TDA9975_1080IYPbPr[i][1];
if(buffer[0] == 0xFF && buffer[1] == 0xFF)
{
break;
}
I2C_Write_TDA9975(buffer, 2);
}
TDA9975_Delay(60);
g_UserWantSource = userwantsource;
g_UserWantInputPort = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975Status = TDA9975_RET_OK;
g_TDA9975InputPorts = g_TDA9975PortMap[g_UserWantSource];
g_TDA9975InputFormat = VIDEO_INPUT_1080I60;
g_TDA9975OutputFormat = YUV_422_SEMIPLANAR_FORMAT;
TDA9975_OutputEnable(g_TDA9975OutputFormat);
}
int TDA9975_HDCP(unsigned char keyh,
unsigned char keyl)
{
unsigned char buffer[2];
TDA9975_AVIPage();
buffer[0] = 0xF5; /* Subaddress of PD_CTRL2 */
buffer[1] = 0x08; /* HDMI clock = MCLK */
I2C_Write_TDA9975(buffer, 2);
TDA9975_HDMIPage();
buffer[0] = 0x40; /* Subaddress of HDCP_CTRL */
buffer[1] = 0x02; /* Encrypted, disable HDCP */
I2C_Write_TDA9975(buffer, 2);
#if 0
buffer[0] = 0x41;
buffer[1] = 0x74;
I2C_Write_TDA9975(buffer, 2);
#endif
buffer[0] = 0x42;
buffer[1] = keyh;
I2C_Write_TDA9975(buffer, 2);
buffer[0] = 0x43;
buffer[1] = keyl;
I2C_Write_TDA9975(buffer, 2);
buffer[0] = 0x49;
buffer[1] = 0x81;
I2C_Write_TDA9975(buffer, 2);
buffer[0] = 0x50 ; /* Subaddress of HDCP_KIDX */
buffer[1] = 0x00 ; /* Index first secret key */
I2C_Write_TDA9975(buffer, 2);
buffer[0] = 0x34 ; /* Subaddress of OTP_CTRL */
buffer[1] = 0x06 ; /* Start download process */
I2C_Write_TDA9975(buffer, 2);
TDA9975_Delay(100);
buffer[0] = 0x40 ; /* Subaddress of HDCP_CTRL */
buffer[1] = 0x01 ; /* Enable HDCP */
I2C_Write_TDA9975(buffer, 2);
TDA9975_AVIPage();
buffer[0] = 0xF5; /* Subaddress of PD_CTRL2 */
buffer[1] = 0x00; /* normal operation */
I2C_Write_TDA9975(buffer, 2);
return TDA9975_RET_OK;
}
int TDA9975_VideoInActivityDetect(void)
{
unsigned char vai_flag[4];
static int videoin = 0;
int ret = -1;
#if 0
unsigned long gpio;
gpio = tvpGpioRead();
if((gpio & VAI_GPIO_MASK) == VAI_FLAG_INVALID)
{
return videoin;
}
#endif
TDA9975_AVIPage();
ret = I2C_Read_TDA9975(VAI_FLAGS0, &vai_flag[0], 1);
ret |= I2C_Read_TDA9975(VAI_FLAGS1, &vai_flag[1], 1);
ret |= I2C_Read_TDA9975(VAI_FLAGS2, &vai_flag[2], 1);
ret |= I2C_Read_TDA9975(VAI_FLAGS3, &vai_flag[3], 1);
if(ret != 0)
{
return 0;
}
/*judge the pll_lock is ok?*/
//if((vai_flag[1] & 0x80) == 0x80)
{
if((vai_flag[0] & 0x40) == 0x40
|| (vai_flag[0] & 0x20) == 0x20
|| (vai_flag[0] & 0x10) == 0x10)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -