📄 tunshdrv.c
字号:
/* ----------------------------------------------------------------------------
File Name: tunshdrv.c
Description:
shared tuner driver
Copyright (C) 2005-2006 STMicroelectronics
History:
date:
version:
author:
comment:
Reference:
ST API Definition "TUNER Driver API" DVD-API-06
---------------------------------------------------------------------------- */
/* Includes ---------------------------------------------------------------- */
/* C libs */
#ifdef ST_OSLINUX
#include "stos.h"
#else
#include <string.h>
#endif
#include "stlite.h" /* Standard includes */
/* STAPI */
#include "sttbx.h"
#include "stevt.h"
#include "sttuner.h"
/* local to sttuner */
#include "util.h" /* generic utility functions for sttuner */
#include "dbtypes.h" /* data types for databases */
#include "sysdbase.h" /* functions to accesss system data */
#include "ioarch.h" /* I/O for this driver */
#include "ioreg.h" /* I/O for this driver */
#include "shioctl.h" /* data structure typedefs for all the the ter ioctl functions */
#include "tunshdrv.h" /* header for this file */
/* private variables ------------------------------------------------------- */
#if defined(ST_OS21) || defined(ST_OSLINUX)
static semaphore_t *Lock_InitTermOpenClose; /* guard calls to the functions */
#else
static semaphore_t Lock_InitTermOpenClose; /* guard calls to the functions */
#endif
static BOOL Installed = FALSE;
static BOOL Installed_TD1336 = FALSE;
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
static BOOL Installed_FQD1236 = FALSE;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
static BOOL Installed_T2000 = FALSE;
#endif
static BOOL Installed_DTT7600 = FALSE;
#if defined(ST_OS21) || defined(ST_OSLINUX)
#define WAIT_N_MS_SHTUNER(X) task_delay( (signed int)(X * (ST_GetClocksPerSecond() / 1000)) ) /*task_delay(X)*/
#else
#define WAIT_N_MS_SHTUNER(X) task_delay( (unsigned int)(X * (ST_GetClocksPerSecond() / 1000)) ) /*task_delay(X)*/
#endif
/* instance chain, the default boot value is invalid, to catch errors */
static TUNSHDRV_InstanceData_t *InstanceChainTop = (TUNSHDRV_InstanceData_t *)0x7fffffff;
/* functions --------------------------------------------------------------- */
/* API */
ST_ErrorCode_t tuner_tunshdrv_Init(ST_DeviceName_t *DeviceName, TUNER_InitParams_t *InitParams);
ST_ErrorCode_t tuner_tunshdrv_Term(ST_DeviceName_t *DeviceName, TUNER_TermParams_t *TermParams);
ST_ErrorCode_t tuner_tunshdrv_Open (ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Handle_t *Handle);
ST_ErrorCode_t tuner_tunshdrv_Close(TUNER_Handle_t Handle, TUNER_CloseParams_t *CloseParams);
ST_ErrorCode_t tuner_tunshdrv_SetFrequency (TUNER_Handle_t Handle, U32 Frequency, U32 *NewFrequency);
ST_ErrorCode_t tuner_tunshdrv_GetStatus (TUNER_Handle_t Handle, TUNER_Status_t *Status);
ST_ErrorCode_t tuner_tunshdrv_IsTunerLocked(TUNER_Handle_t Handle, BOOL *Locked);
ST_ErrorCode_t tuner_tunshdrv_SetBandWidth (TUNER_Handle_t Handle, U32 BandWidth, U32 *NewBandWidth);
/* I/O API */
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);
/* access device specific low-level functions */
ST_ErrorCode_t tuner_tunshdrv_ioctl(TUNER_Handle_t Handle, U32 Function, void *InParams, void *OutParams, STTUNER_Da_Status_t *Status);
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
ST_ErrorCode_t tuner_tunshdrv_Open_TD1336(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle);
#endif
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
ST_ErrorCode_t tuner_tunshdrv_Open_FQD1236(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle);
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
ST_ErrorCode_t tuner_tunshdrv_Open_T2000(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle);
#endif
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
ST_ErrorCode_t tuner_tunshdrv_Open_DTT7600(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle);
#endif
TUNSHDRV_InstanceData_t *TUNSHDRV_GetInstFromHandle(TUNER_Handle_t Handle);
U32 SharedTunerGetStepsize(TUNSHDRV_InstanceData_t *Instance);
ST_ErrorCode_t STTUNER_DRV_TUNER_TUNSHDRV_Install( STTUNER_tuner_dbase_t *Tuner, STTUNER_TunerType_t TunerType);
ST_ErrorCode_t STTUNER_DRV_TUNER_TUNSHDRV_UnInstall(STTUNER_tuner_dbase_t *Tuner, STTUNER_TunerType_t TunerType);
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
U16 TD1336_Address[TD1336_NBREGS]=
{
0x0000,
0x0001,
0x0002,
0x0003,
0x0004
};
U8 TD1336_DefVal[TD1336_NBREGS]=
{0x2E,0x7C,0xC0,0x1a,0x00} ;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
U16 FQD1236_Address[FQD1236_NBREGS]=
{
0x0000,
0x0001,
0x0002,
0x0003,
0x0004
};
U8 FQD1236_DefVal[FQD1236_NBREGS]=
{0x06,0x50,0xDE,0xA0,0x00} ;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
U16 T2000_Address[T2000_NBREGS]=
{
0x0000,
0x0001,
0x0002,
0x0003,
0x0004
};
U8 T2000_DefVal[T2000_NBREGS]={0x0006,0x0050,0x0085,0x000C,0x0000};
#endif
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
U16 DTT7600_Address[DTT7600_NBREGS]=
{
0x0000,
0x0001,
0x0002,
0x0003,
0x0004
};
U8 DTT7600_DefVal[DTT7600_NBREGS]=
{
0x1A,
0x30,
0x8E,
0x0A,
0x00
};
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_TD1336_Install()
Description:
install a shared device driver(TD1336 -- Philips).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
ST_ErrorCode_t STTUNER_DRV_TUNER_TD1336_Install(STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_Install(Tuner, STTUNER_TUNER_TD1336) );
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_FQD1236_Install()
Description:
install a shared device driver(FQD1236 -- Philips).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
ST_ErrorCode_t STTUNER_DRV_TUNER_FQD1236_Install(STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_Install(Tuner, STTUNER_TUNER_FQD1236) );
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_T2000_Install()
Description:
install a shared device driver(T2000 -- TMM).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_T2000
ST_ErrorCode_t STTUNER_DRV_TUNER_T2000_Install(STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_Install(Tuner, STTUNER_TUNER_T2000) );
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_DTT7600_Install()
Description:
install a shared device driver(DTT7600 -- TMM).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
ST_ErrorCode_t STTUNER_DRV_TUNER_DTT7600_Install(STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_Install(Tuner, STTUNER_TUNER_DTT7600) );
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_TD1336_UnInstall()
Description:
uninstall a shared device driver.
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
ST_ErrorCode_t STTUNER_DRV_TUNER_TD1336_UnInstall (STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_UnInstall(Tuner, STTUNER_TUNER_TD1336));
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_FQD1236_UnInstall()
Description:
uninstall a shared device driver(FQD1236 -Philips).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
ST_ErrorCode_t STTUNER_DRV_TUNER_FQD1236_UnInstall (STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_UnInstall(Tuner, STTUNER_TUNER_FQD1236));
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_T2000_UnInstall()
Description:
uninstall a shared device driver(FQD1236 -Philips).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_T2000
ST_ErrorCode_t STTUNER_DRV_TUNER_T2000_UnInstall (STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_UnInstall(Tuner, STTUNER_TUNER_T2000));
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_DTT7600_UnInstall()
Description:
uninstall a shared device driver(DTT7600 ).
Parameters:
Return Value:
---------------------------------------------------------------------------- */
#ifdef STTUNER_DRV_SHARED_TUN_DTT7600
ST_ErrorCode_t STTUNER_DRV_TUNER_DTT7600_UnInstall (STTUNER_tuner_dbase_t *Tuner)
{
return( STTUNER_DRV_TUNER_TUNSHDRV_UnInstall(Tuner, STTUNER_TUNER_DTT7600));
}
#endif
/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_TUNER_TUNSHDRV_Install()
Description:
install a shared device driver.
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t STTUNER_DRV_TUNER_TUNSHDRV_Install(STTUNER_tuner_dbase_t *Tuner, STTUNER_TunerType_t TunerType)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
const char *identity = "STTUNER tunshdrv.c STTUNER_DRV_TUNER_TUNSHDRV_Install()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
if(Installed == TRUE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail driver already installed\n", identity));
#endif
return(STTUNER_ERROR_INITSTATE);
}
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s installing sat:tuner:none...", identity));
#endif
switch(TunerType)
{
#ifdef STTUNER_DRV_SHARED_TUN_TD1336
case STTUNER_TUNER_TD1336:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s installing sat:tuner:TD1336...", identity));
#endif
if (Installed_TD1336 == TRUE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("fail already installed\n"));
#endif
return(STTUNER_ERROR_INITSTATE);
}
Tuner->ID = STTUNER_TUNER_TD1336;
Tuner->tuner_Open = tuner_tunshdrv_Open_TD1336;
Installed_TD1336 = TRUE;
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_FQD1236
case STTUNER_TUNER_FQD1236:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s installing sat:tuner:FQD1236...", identity));
#endif
if (Installed_FQD1236 == TRUE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail already installed\n",identity));
#endif
return(STTUNER_ERROR_INITSTATE);
}
Tuner->ID = STTUNER_TUNER_FQD1236;
Tuner->tuner_Open = tuner_tunshdrv_Open_FQD1236;
Installed_FQD1236 = TRUE;
break;
#endif
#ifdef STTUNER_DRV_SHARED_TUN_T2000
case STTUNER_TUNER_T2000:
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s installing sat:tuner:FQD1236...", identity));
#endif
if (Installed_T2000 == TRUE)
{
#ifdef STTUNER_DEBUG_MODULE_SHARED_TUNSHDRV
STTBX_Print(("%s fail already installed\n",identity));
#endif
return(STTUNER_ERROR_INITSTATE);
}
Tuner->ID = STTUNER_TUNER_T2000;
Tuner->tuner_Open = tuner_tunshdrv_Open_T2000;
Installed_T2000 = TRUE;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -