📄 philips_dtv_nim.c
字号:
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 + -