📄 tunshdrv.c
字号:
}
}
else if (frequency <= 902000)
{
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_BS,2,Instance->TunerRegVal);
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_P_3_2,0x01,Instance->TunerRegVal);
if(frequency <=514000)
{
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,0,Instance->TunerRegVal);
}
else if(frequency <= 745000)
{
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,1,Instance->TunerRegVal);
}
else if(frequency <= 820000)
{
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,2,Instance->TunerRegVal);
}
else
{
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FT2000_C,3,Instance->TunerRegVal);
}
}
Error = STTUNER_IOREG_SetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,0,Instance->TunerRegVal,4);
if( Error != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail, error=%d\n", identity, Error));
#endif
return(Error);
}
divider =0;
frequency =0;
value1=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_N_MSB,Instance->TunerRegVal)<<8;
value2=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_N_LSB,Instance->TunerRegVal);
divider=value1+value2;
frequency = (divider*SharedTunerGetStepsize(Instance) )/1000 - Instance->Status.IntermediateFrequency;
*NewFrequency = Instance->Status.Frequency = frequency;
break;
#endif
/***************************/
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
case STTUNER_TUNER_DTT7600:
frequency = Frequency +(Instance->Status.IntermediateFrequency);
divider = (frequency * 100) / (SharedTunerGetStepsize(Instance) / 10);
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_N_MSB,((divider >> 8) & 0x7F),Instance->TunerRegVal);
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_N_LSB,((divider) & 0xFF),Instance->TunerRegVal);
if (Frequency <= 147000)
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x09,Instance->TunerRegVal);
else if (Frequency <= 417000)
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x0A,Instance->TunerRegVal);
else if (Frequency <= 863000)
STTUNER_IOREG_SetFieldVal(&(Instance->DeviceMap),FDTT7600_P,0x0C,Instance->TunerRegVal);
Error = STTUNER_IOREG_SetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RDTT7600_P_DIV1,Instance->TunerRegVal,4);
divider =0;
frequency =0;
value1=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_N_MSB,Instance->TunerRegVal)<<8;
value2=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_N_LSB,Instance->TunerRegVal);
divider=value1+value2;
frequency = (divider*SharedTunerGetStepsize(Instance) )/1000 - Instance->Status.IntermediateFrequency;
*NewFrequency = Instance->Status.Frequency = frequency;
break;
#endif
/**************************/
default:
/*Do nothing now. but return error value later on */
break;
}
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s ok\n", identity));
#endif
return(Error);
}
/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_GetStatus()
Description:
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_GetStatus(TUNER_Handle_t Handle, TUNER_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_GetStatus()";
#endif
TUNSHDRV_InstanceData_t *Instance;
ST_ErrorCode_t Error;
Instance = TUNSHDRV_GetInstFromHandle(Handle);
switch (Instance->TunerType)
{
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
case STTUNER_TUNER_TD1336:
*Status = Instance->Status;
Error=ST_NO_ERROR;
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
case STTUNER_TUNER_FQD1236:
*Status = Instance->Status;
Error=ST_NO_ERROR;
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
case STTUNER_TUNER_T2000:
*Status = Instance->Status;
Error=ST_NO_ERROR;
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
case STTUNER_TUNER_DTT7600:
*Status = Instance->Status;
Error=ST_NO_ERROR;
break;
#endif
default:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s WARNING - no TUNER specified\n",identity));
#endif
break;
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s GetStatus (%d) ok\n", identity, Handle));
#endif
return(Error);
}
/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_IsTunerLocked()
Description:
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_IsTunerLocked(TUNER_Handle_t Handle, BOOL *Locked)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_IsTunerLocked()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
TUNSHDRV_InstanceData_t *Instance;
Instance = TUNSHDRV_GetInstFromHandle(Handle);
/*????Need to read tuner to get the correct update of the tuner status*/
switch(Instance->TunerType)
{
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
case STTUNER_TUNER_TD1336:
*Locked = FALSE; /* Assume not locked */
Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RTD1336_STATUS,1,Instance->TunerRegVal);
if( Error != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail, error=%d\n", identity, Error));
#endif
return(Error);
}
*Locked = STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FTD1336_FL,Instance->TunerRegVal);
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
case STTUNER_TUNER_FQD1236:
*Locked = FALSE; /* Assume not locked */
Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RFQD1236_STATUS,1,Instance->TunerRegVal);
if( Error != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail, error=%d\n", identity, Error));
#endif
return(Error);
}
*Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FFQD1236_FL,Instance->TunerRegVal);
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
case STTUNER_TUNER_T2000:
*Locked = FALSE; /* Assume not locked */
Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RT2000_STATUS,1,Instance->TunerRegVal);
if( Error != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail, error=%d\n", identity, Error));
#endif
return(Error);
}
*Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FT2000_FL,Instance->TunerRegVal);
break;
#endif
/***********************/
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
case STTUNER_TUNER_DTT7600:
*Locked = FALSE; /* Assume not locked */
Error = STTUNER_IOREG_GetContigousRegisters(&(Instance->DeviceMap),Instance->IOHandle,RDTT7600_STATUS,1,Instance->TunerRegVal);
if (Error == ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_TERDRV_TUNTDRV
STTBX_Print(("%s Error during reading tuner ...\n", identity));
#endif
}
*Locked=STTUNER_IOREG_GetFieldVal(&(Instance->DeviceMap),FDTT7600_FL,Instance->TunerRegVal);
break;
#endif
/**********************/
default:
/*Do nothing now*/
break;
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s Locked: ", identity));
if (*Locked == TRUE)
{
STTBX_Print(("Yes\n"));
}
else
{
STTBX_Print(("no\n"));
}
#endif
return(Error);
}
/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_SetBandWidth()
Description:
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_SetBandWidth(TUNER_Handle_t Handle, U32 BandWidth, U32 *NewBandWidth)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_SetBandWidth()";
#endif
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s SetBandWidth (%d) ok\n", identity, Handle));
#endif
return(ST_NO_ERROR);
}
/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_ioctl()
Description:
access device specific low-level functions
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_ioctl(TUNER_Handle_t Handle, U32 Function, void *InParams, void *OutParams, STTUNER_Da_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_ioctl()";
#endif
ST_ErrorCode_t Error;
TUNSHDRV_InstanceData_t *Instance;
Instance = TUNSHDRV_GetInstFromHandle(Handle);
if(Installed == FALSE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail driver not installed\n", identity));
#endif
return(STTUNER_ERROR_INITSTATE);
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s tuner driver instance handle=%d\n", identity, Handle));
STTBX_Print(("%s function=%d\n", identity, Function));
STTBX_Print(("%s I/O handle=%d\n", identity, Instance->IOHandle));
#endif
/* ---------- select what to do ---------- */
switch(Function){
case STTUNER_IOCTL_RAWIO: /* raw I/O to device */
Error = STTUNER_IOARCH_ReadWrite( Instance->IOHandle,
((SHIOCTL_IOARCH_Params_t *)InParams)->Operation,
((SHIOCTL_IOARCH_Params_t *)InParams)->SubAddr,
((SHIOCTL_IOARCH_Params_t *)InParams)->Data,
((SHIOCTL_IOARCH_Params_t *)InParams)->TransferSize,
((SHIOCTL_IOARCH_Params_t *)InParams)->Timeout );
break;
default:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s function %d not found\n", identity, Function));
#endif
return(ST_ERROR_FEATURE_NOT_SUPPORTED);
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s function %d called\n", identity, Function));
#endif
return(Error);
}
/* ----------------------------------------------------------------------------
Name: tuner_tunshdrv_ioaccess()
Description:
we get called with the instance of
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunshdrv_ioaccess(TUNER_Handle_t Handle, IOARCH_Handle_t IOHandle, STTUNER_IOARCH_Operation_t Operation, U16 SubAddr, U8 *Data, U32 TransferSize, U32 Timeout)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c tuner_tunshdrv_ioaccess()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
TUNSHDRV_InstanceData_t *Instance;
Instance = TUNSHDRV_GetInstFromHandle(Handle);
if(Installed == FALSE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail driver not installed\n", identity));
#endif
return(STTUNER_ERROR_INITSTATE);
}
/* if STTUNER_IOARCH_MAX_HANDLES then passthrough function required using our device handle/address */
if (IOHandle == STTUNER_IOARCH_MAX_HANDLES)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -