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

📄 philips_dtv_nim.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的设备库的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
    if (adapter == vaaNone)
    {
        *mode = pVD->adapterTable[0].decInput;
        return TMLIBDEV_OK;
    }

    for (i = 0; i < pVD->numAdapters; i++)
    {
        /* Find the right instance of the adapter */
        if ((pVD->adapterTable[i].instNum == adapterInstance) &&
            (pVD->adapterTable[i].adapterType == adapter))
        {
            *mode = pVD->adapterTable[i].decInput;
            return TMLIBDEV_OK;
        }
    }

    /* Right adapter was not found -> return error */
    return BOARD_ERR_UNSUPPORTED_ADAPTER;
}

static tmLibdevErr_t mapMode2Adapter(pboardVIDec_t pVD, UInt mode, tmVideoAnalogAdapter_t *adapter, UInt *adapterInstance)
{
    UInt i; 

    for (i = 0; i < pVD->numAdapters; i++)
    {
        /* Find the right instance of the adapter */
        if (pVD->adapterTable[i].decInput == mode)
        {
            *adapter            = pVD->adapterTable[i].adapterType;
            *adapterInstance    = pVD->adapterTable[i].instNum;
            return TMLIBDEV_OK;
        }
    }

    /* Right adapter was not found -> return error */
    return BOARD_ERR_UNSUPPORTED_ADAPTER;
}

static tmLibdevErr_t getNumberOfUnits(UInt32 *pNumberOfUnits, Char *searchString)
{
    UInt32        i = 0;
    tsaRegFind_t  findInfo;
    tmLibdevErr_t err;

    err = tsaRegFindFirstEntry(searchString, &findInfo);
    if (err)
    {
        *pNumberOfUnits = 0;
        return TMLIBDEV_OK;
    }

    i++;

    while (tsaRegFindNextEntry(searchString, &findInfo) == TMLIBDEV_OK)
        i++;

    *pNumberOfUnits = i;

    return TMLIBDEV_OK;
}

static tmLibdevErr_t nimAudDemInit(unitSelect_t unitID, pboardTvAudDemParameters_t params)
{
    tda9850Param_t  t;
    tmLibdevErr_t   err;

    t.iicAddress    = TDA9850_IIC_ADDRESS_1;
    t.audioMode     = params->audioMode;

    if (unitID == audDemUnitID0)
        t.iicDirection  = IIC_DIRECTION_NIM1;
    else if (unitID == audDemUnitID1)
        t.iicDirection  = IIC_DIRECTION_NIM2;

    err = tda9850Init(unitID, &t);
    if (err != TMLIBDEV_OK)
        return err;

    return TMLIBDEV_OK;
}

static tmLibdevErr_t nimAudDemConfig(unitSelect_t unitID, UInt32 command, Pointer Value)
{
    tmLibdevErr_t err;

    switch (command)
    {
    case TVAUDDEM_CONFIG_ENABLE_STEREO:
        err = tda9850SetStereo(unitID, True);
        break;
    case TVAUDDEM_CONFIG_DISABLE_STEREO:
        err = tda9850SetStereo(unitID, False);
        break;
    case TVAUDDEM_CONFIG_ENABLE_SAP:
        err = tda9850SetStereo(unitID, True);
        break;
    case TVAUDDEM_CONFIG_DISABLE_SAP:
        err = tda9850SetStereo(unitID, False);
        break;
    default:
        err = TVAUDDEM_ERR_UNSUPPORTED_CONFIG_COMMAND;
        break;
    }
    return err;
}

static tmLibdevErr_t nim_TP_Init_1(void)
{
    tmLibdevErr_t rval;

    rval = iicDirectionSelect(IIC_DIRECTION_NIM1);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* J7 (VSB input) is the default TP input on the NIM board */    
    rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x4F);

    iicDirectionUnSelect(IIC_DIRECTION_NIM1);

    return rval;
}

static tmLibdevErr_t nim_TP_Init_2(void)
{
    tmLibdevErr_t rval;

    rval = iicDirectionSelect(IIC_DIRECTION_NIM2);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* J7 (VSB input) is the default TP input on the NIM board */    
    rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x4F);

    iicDirectionUnSelect(IIC_DIRECTION_NIM2);

    return rval;
}

static tmLibdevErr_t nim_TP_Term(void)
{
    return TMLIBDEV_OK;
}

static tmLibdevErr_t nim_TP_Config(UInt32 address, UInt32 value)
{
    return TMLIBDEV_OK;
}


static tmLibdevErr_t 
nim_VI_Init_1(pboardVIParam_t param)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;

    rval = iicDirectionSelect(IIC_DIRECTION_NIM1);
    if (rval != TMLIBDEV_OK)
        return rval;

    switch (param->videoStandard)
    {
    case vasNTSC :
    case vasPAL  :
        rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x6F);
        if (rval)
            goto nim_VI_Init_1_Exit;
        if (* (UInt32 *) nim_vi_1.vDec.handle == id7114)
        {
            rval = saa7114InitM(&nim_vi_1.vDec, param); 
            strcpy(nim_vi_1.codecName, "SAA 7114");
        }
        else
        {
            rval = saa7112InitM(&nim_vi_1.vDec, param); 
            strcpy(nim_vi_1.codecName, "SAA 7112");
        }
        break;

    case vasNone : /* vasNone is J7 at this point */ 
        strcpy(nim_vi_1.codecName, "No codec");    
        rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x4F);
        tmAssert((rval == TMLIBDEV_OK), rval);
        break;

    default :
        rval = VI_ERR_STANDARD_NOT_SUPPORTED;
    }

nim_VI_Init_1_Exit:
    iicDirectionUnSelect(IIC_DIRECTION_NIM1);
    return rval;
}

static tmLibdevErr_t 
nim_VI_Init_2(pboardVIParam_t param)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;

    rval = iicDirectionSelect(IIC_DIRECTION_NIM2);
    if (rval != TMLIBDEV_OK)
        return rval;

    switch (param->videoStandard)
    {
    case vasNTSC :
    case vasPAL  :
        rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x6F);
        if (rval)
            goto nim_VI_Init_2_Exit;
        if (* (UInt32 *) nim_vi_2.vDec.handle == id7114)
	    {
            rval = saa7114InitM(&nim_vi_2.vDec, param); 
            strcpy(nim_vi_2.codecName, "SAA 7114");
	    }
		else
		{
            rval = saa7112InitM(&nim_vi_2.vDec, param); 
            strcpy(nim_vi_2.codecName, "SAA 7112");
		}
        break;

    case vasNone : /* vasNone is J7 at this point */ 
        strcpy(nim_vi_2.codecName, "VSB");    
        rval = iicWriteReg(VIDMUX_IIC_EXPANDER_ADDRESS, -1, 0x4F);
        tmAssert((rval == TMLIBDEV_OK), rval);
        break;

    default :
        rval = VI_ERR_STANDARD_NOT_SUPPORTED;
    }

nim_VI_Init_2_Exit:
    iicDirectionUnSelect(IIC_DIRECTION_NIM2);
    return rval;
}

static tmLibdevErr_t 
nim_VI_GetStandard_1(tmVideoAnalogStandard_t *standard)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_1.vDec;
    
    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* for now only look at the analog inputs */

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
        rval = saa7114GetStandardM(pVD, standard);
    else
        rval = saa7112GetStandardM(pVD, standard);

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_GetStandard_2(tmVideoAnalogStandard_t *standard)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_2.vDec;
    
    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* for now only look at the analog inputs */

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
        rval = saa7114GetStandardM(pVD, standard);
    else
        rval = saa7112GetStandardM(pVD, standard);

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t nim_VI_GetStatus(pboardVIDec_t pVD, tmVideoStatusType_t type, UInt *state)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
        rval = saa7114GetStatus(pVD, type, state);
    else
        rval = saa7112GetStatus(pVD, type, state);

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_GetAdapterStandard(pboardVIDec_t pVD, tmVideoAnalogAdapter_t adapter, UInt adapterNum, tmVideoAnalogStandard_t *standard)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
        rval = saa7114GetAdapterVideoStandard(pVD, adapter, adapterNum, standard);
    else
        rval = saa7112GetAdapterVideoStandard(pVD, adapter, adapterNum, standard);

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetHue_1(UInt value)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_1.vDec;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
    {
        rval = saa7114SetHueM(pVD, value);
    }
    else
    {
        rval = saa7112SetHueM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetHue_2(UInt value)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_2.vDec;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
    {
        rval = saa7114SetHueM(pVD, value);
    }
    else
    {
        rval = saa7112SetHueM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetSaturation_1(UInt value)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_1.vDec;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
    {
        rval = saa7114SetSaturationM(pVD, value);
    }
    else
    {
        rval = saa7112SetSaturationM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetSaturation_2(UInt value)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_2.vDec;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
    {
        rval = saa7114SetSaturationM(pVD, value);
    }
    else
    {
        rval = saa7112SetSaturationM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_Configure_1(UInt32 subaddr, UInt32 value)
{
    tmLibdevErr_t rval = TMLIBDEV_OK;
    pboardVIDec_t pVD  = &nim_vi_1.vDec;

    rval = iicDirectionSelect(pVD->iicDirection);
    if (rval != TMLIBDEV_OK)
        return rval;

    /* Check if we have a 7114 connected, otherwise use 7112 */
    if (* (UInt32 *) pVD->handle == id7114)
    {
        rval = saa7114ConfigureM(pVD, subaddr, value);
    }
    else
    {
        rval = saa7112ConfigureM(pVD, subaddr, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -