⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proviewdtv_tda9975.c

📁 ti的数字电视芯片 tvp9000的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    {
        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 + -