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

📄 tunshdrv.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
/* ----------------------------------------------------------------------------
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 + -