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

📄 philips_dtv_nim.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的设备库的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
    return (rval);
}

static tmLibdevErr_t 
nim_VI_Configure_2(UInt32 subaddr, UInt32 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 = saa7114ConfigureM(pVD, subaddr, value);
    }
    else
    {
        rval = saa7112ConfigureM(pVD, subaddr, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetContrast_1(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 = saa7114SetContrastM(pVD, value);
    }
    else
    {
        rval = saa7112SetContrastM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetContrast_2(UInt32 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 = saa7114SetContrastM(pVD, value);
    }
    else
    {
        rval = saa7112SetContrastM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetBrightness_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 = saa7114SetBrightnessM(pVD, value);
    }
    else
    {
        rval = saa7112SetBrightnessM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t 
nim_VI_SetBrightness_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 = saa7114SetBrightnessM(pVD, value);
    }
    else
    {
        rval = saa7112SetBrightnessM(pVD, value);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t nim_VI_SetSourceType(pboardVIDec_t pVD, tmVideoSourceType_t type)
{
    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 = saa7114SetSourceType(pVD, type);
    }
    else
    {
        rval = saa7112SetSourceType(pVD, type);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t nim_VI_GetVSyncFallingEdge(pboardVIDec_t pVD, UInt *lineNumber)
{
    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 = saa7114GetVSyncFallingEdge(pVD, lineNumber);
    }
    else
    {
        rval = saa7112GetVSyncFallingEdge(pVD, lineNumber);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

static tmLibdevErr_t nim_VI_GetDefaultAcquisitionWnd(pboardVIDec_t pVD, UInt *beginX, UInt *beginY, UInt *endX, UInt *endY)
{
    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 = saa7114GetDefaultAcquisitionWnd(pVD, beginX, beginY, endX, endY);
    }
    else
    {
        rval = saa7112GetDefaultAcquisitionWnd(pVD, beginX, beginY, endX, endY);
    }

    iicDirectionUnSelect(pVD->iicDirection);

    return (rval);
}

/*****************************************************************************************/
static tmLibdevErr_t nim_VI_SetAnalogInput(pboardVIDec_t pVD, tmVideoAnalogAdapter_t adapter, UInt adapterInstance)
{
    UInt            mode;
    tmLibdevErr_t   rval;

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

    rval = mapAdapter2Mode(pVD, adapter, adapterInstance, &mode);
    if (rval != TMLIBDEV_OK)
        goto nim_VI_SetAnalogInputExit;

    rval = saa7114SetAnalogInput(pVD, mode);

nim_VI_SetAnalogInputExit:
    iicDirectionUnSelect(pVD->iicDirection);

    return rval;
}

/*****************************************************************************************/
static tmLibdevErr_t nim_VI_GetAnalogInput(pboardVIDec_t pVD, tmVideoAnalogAdapter_t *adapter, UInt *adapterInstance)
{
    tmLibdevErr_t   rval;
    UInt            mode;

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

    rval = saa7114GetAnalogInput(pVD, &mode);
    if (rval != TMLIBDEV_OK)
        goto nim_VI_GetAnalogInputExit;

    rval = mapMode2Adapter(pVD, mode, adapter, adapterInstance);

nim_VI_GetAnalogInputExit:
    iicDirectionUnSelect(pVD->iicDirection);

    return rval;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerInit_2(pboardTvTunerParameters_t params)
{
    fi1236mk2Param_t tunerParams;
    tmLibdevErr_t err;

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

    tunerParams.iicAddress     = NIM_TUNER_IIC_ADDRESS;
    tunerParams.useInternalAGC = True;
    tunerParams.iFreq          = 44000000;
    tunerParams.input          = ttiAntennaNTSC;

    if (params->stepSize != FI1236MK2_SUPPORTED_STEP_SIZES)
        return TVTUNER_ERR_UNSUPPORTED_STEP_SIZE;

    err = fi1236mk2Init(1, &tunerParams); 

    iicDirectionUnSelect(IIC_DIRECTION_NIM2);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerTerm_2(void)
{
    return TMLIBDEV_OK;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerConfig_2(UInt32 command, Pointer value)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    switch (command)
    {
    case TVTUNER_CONFIG_GET_LOCK:
        tmAssert(value, TMLIBDEV_ERR_NULL_PARAMETER);
        err = fi1236mk2GetLock(1, (Bool *) value);
        break;
    default:
        err = TVTUNER_ERR_UNSUPPORTED_CONFIG_COMMAND;
    }

    iicDirectionUnSelect(IIC_DIRECTION_NIM2);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerSetChannel_2(ptsaTvTunerChannelParams_t chanParams)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    err = fi1236mk2SetFrequency(1, chanParams);

    iicDirectionUnSelect(IIC_DIRECTION_NIM2);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerConfigChannel_2(UInt32 command, Pointer value)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    switch (command)
    {
    case TVTUNER_CHAN_CONFIG_TWEAK_UP:
        err = fi1236mk2Tweak(1, fi1236mk2TweakUp);
        break;
    case TVTUNER_CHAN_CONFIG_TWEAK_DOWN:
        err = fi1236mk2Tweak(1, fi1236mk2TweakDown);
        break;
    case TVTUNER_CHAN_CONFIG_CENTER:
        err = fi1236mk2Tweak(1, fi1236mk2TweakReset);
        break;
    case TVTUNER_CHAN_CONFIG_GET_CHAN_PARAMETERS:
        tmAssert(value, TMLIBDEV_ERR_NULL_PARAMETER);
        err = fi1236mk2GetChanParams(1, (ptsaTvTunerChannelParams_t) value);
        break;
    default:
        err = TVTUNER_ERR_UNSUPPORTED_CONFIG_COMMAND;
        break;
    }

    iicDirectionUnSelect(IIC_DIRECTION_NIM2);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerInit_1(pboardTvTunerParameters_t params)
{
    fi1236mk2Param_t tunerParams;
    tmLibdevErr_t err;

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

    tunerParams.iicAddress     = NIM_TUNER_IIC_ADDRESS;
    tunerParams.useInternalAGC = True;
    tunerParams.iFreq          = 44000000;
    tunerParams.input          = ttiAntennaNTSC;

    if (params->stepSize != FI1236MK2_SUPPORTED_STEP_SIZES)
        return TVTUNER_ERR_UNSUPPORTED_STEP_SIZE;

    err = fi1236mk2Init(0, &tunerParams); 

    iicDirectionUnSelect(IIC_DIRECTION_NIM1);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerTerm_1(void)
{
    return TMLIBDEV_OK;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerConfig_1(UInt32 command, Pointer value)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    switch (command)
    {
    case TVTUNER_CONFIG_GET_LOCK:
        tmAssert(value, TMLIBDEV_ERR_NULL_PARAMETER);
        err = fi1236mk2GetLock(0, (Bool *) value);
        break;
    default:
        err = TVTUNER_ERR_UNSUPPORTED_CONFIG_COMMAND;
    }

    iicDirectionUnSelect(IIC_DIRECTION_NIM1);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerSetChannel_1(ptsaTvTunerChannelParams_t chanParams)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    err = fi1236mk2SetFrequency(0, chanParams);

    iicDirectionUnSelect(IIC_DIRECTION_NIM1);

    return err;
}

/*****************************************************************************************/
static tmLibdevErr_t nimTunerConfigChannel_1(UInt32 command, Pointer value)
{
    tmLibdevErr_t err = TMLIBDEV_OK;

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

    switch (command)
    {
    case TVTUNER_CHAN_CONFIG_TWEAK_UP:
        err = fi1236mk2Tweak(0, fi1236mk2TweakUp);
        break;
    case TVTUNER_CHAN_CONFIG_TWEAK_DOWN:
        err = fi1236mk2Tweak(0, fi1236mk2TweakDown);
        break;
    case TVTUNER_CHAN_CONFIG_CENTER:
        err = fi1236mk2Tweak(0, fi1236mk2TweakReset);
        break;
    case TVTUNER_CHAN_CONFIG_GET_CHAN_PARAMETERS:
        tmAssert(value, TMLIBDEV_ERR_NULL_PARAMETER);
        err = fi1236mk2GetChanParams(0, (ptsaTvTunerChannelParams_t) value);
        break;
    default:
        err = TVTUNER_ERR_UNSUPPORTED_CONFIG_COMMAND;
        break;

⌨️ 快捷键说明

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