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

📄 d0899.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
 0x00000a08 ,	/* FINALAGCCGAIN */
 0x00000000 ,	/* EQUILIZERINIT */
 0x00054802 ,	/* EQCNTL */
 0x00000000 ,	/* EQIINITCOEFF0 */
 0x00000000 ,	/* EQIINITCOEFF1 */
 0x00000000 ,	/* EQIINITCOEFF2 */
 0x00000000 ,	/* EQIINITCOEFF3 */
 0x00000000 ,	/* EQIINITCOEFF4 */
 0x00000400 ,	/* EQIINITCOEFF5 */
 0x00000000 ,	/* EQIINITCOEFF6 */
 0x00000000 ,	/* EQIINITCOEFF7 */
 0x00000000 ,	/* EQIINITCOEFF8 */
 0x00000000 ,	/* EQIINITCOEFF9 */
 0x00000000 ,	/* EQIINITCOEFF10 */
 0x00000000 ,	/* EQQINITCOEFF0 */
 0x00000000 ,	/* EQQINITCOEFF1 */
 0x00000000 ,	/* EQQINITCOEFF2 */
 0x00000000 ,	/* EQQINITCOEFF3 */
 0x00000000 ,	/* EQQINITCOEFF4 */
 0x00000000 ,	/* EQQINITCOEFF5 */
 0x00000000 ,	/* EQQINITCOEFF6 */
 0x00000000 ,	/* EQQINITCOEFF7 */
 0x00000000 ,	/* EQQINITCOEFF8 */
 0x00000000 ,	/* EQQINITCOEFF9 */
 0x00000000 ,	/* EQQINITCOEFF10 */
 0x00000ffd ,	/* EQICOEFFSOUT0 */
 0x00000002 ,	/* EQICOEFFSOUT1 */
 0x00000ffe ,	/* EQICOEFFSOUT2 */
 0x00000006 ,	/* EQICOEFFSOUT3 */
 0x00000fdd ,	/* EQICOEFFSOUT4 */
 0x000002ee ,	/* EQICOEFFSOUT5 */
 0x0000000e ,	/* EQICOEFFSOUT6 */
 0x00000000 ,	/* EQICOEFFSOUT7 */
 0x00000fff ,	/* EQICOEFFSOUT8 */
 0x00000ffe ,	/* EQICOEFFSOUT9 */
 0x00000000 ,	/* EQICOEFFSOUT10 */
 0x00000fff ,	/* EQQCOEFFSOUT0 */
 0x00000000 ,	/* EQQCOEFFSOUT1 */
 0x00000ffc ,	/* EQQCOEFFSOUT2 */
 0x0000000e ,	/* EQQCOEFFSOUT3 */
 0x00000fd9 ,	/* EQQCOEFFSOUT4 */
 0x00000ffd ,	/* EQQCOEFFSOUT5 */
 0x00000008 ,	/* EQQCOEFFSOUT6 */
 0x00000ffc ,	/* EQQCOEFFSOUT7 */
 0x00000ffc ,	/* EQQCOEFFSOUT8 */
 0x00000002 ,	/* EQQCOEFFSOUT9 */
 0x00000ffd ,	/* EQQCOEFFSOUT10 */
 0x00000000 ,	/* DEMOD */
 0x000000c9 ,	/* RCOMPC */
 0x00000001 ,	/* AGC1CN */
 0x00000010 ,	/* AGC1REF */
 0x0000007a ,	/* RTC */
 0x0000004e ,	/* TMGCFG */
 0x00000034 ,	/* AGC2REF */
 0x00000084 ,	/* TLSR */
 0x000000c7 ,	/* CFD */
 0x00000087 ,	/* ACLC */
 0x00000094 ,	/* BCLC */
 0x00000041 ,	/* EQON */
 0x000000dd ,	/* LDT */
 0x000000c9 ,	/* LDT2 */
 0x000000b4 ,	/* EQUALREF */
 0x00000010 ,	/* TMGRAMP */
 0x00000030 ,	/* TMGTHD */
 0x000000fd ,	/* IDCCOMP */
 0x00000001 ,	/* QDCCOMP */
 0x00000008 ,	/* POWERI */
 0x00000009 ,	/* POWERQ */
 0x0000006f ,	/* RCOMP */
 0x00000080 ,	/* AGCIQIN */
 0x00000009 ,	/* AGC2I1 */
 0x000000d9 ,	/* AGC2I2 */
 0x00000030 ,	/* TLIR */
 0x0000007e ,	/* RTF */
 0x00000000 ,	/* DSTATUS */
 0x000000b0 ,	/* LDI */
 0x000000fd ,	/* CFRM */
 0x00000045 ,	/* CFRL */
 0x0000002c ,	/* NIRM */
 0x00000003 ,	/* NIRL */
 0x0000001d ,	/* ISYMB */
 0x000000ff ,	/* QSYMB */
 0x0000002f ,	/* SFRH */
 0x00000068 ,	/* SFRM */
 0x00000040 ,	/* SFRL */
 0x0000002f ,	/* SFRUPH */
 0x00000068 ,	/* SFRUPM */
 0x00000040 ,	/* SFRUPL */
 0x00000000 ,	/* EQUAI1 */
 0x000000fd ,	/* EQUAQ1 */
 0x00000001 ,	/* EQUAI2 */
 0x000000fd ,	/* EQUAQ2 */
 0x00000003 ,	/* EQUAI3 */
 0x000000fc ,	/* EQUAQ3 */
 0x00000002 ,	/* EQUAI4 */
 0x000000fe ,	/* EQUAQ4 */
 0x00000007 ,	/* EQUAI5 */
 0x000000fe ,	/* EQUAQ5 */
 0x00000000 ,	/* DSTATUS2 */
 0x00000000 ,	/* VSTATUS */
 0x000000ff ,	/* VERROR */
 0x00000020 ,	/* IQSWAP */
 0x00000000 ,	/* ECNTM */
 0x00000030 ,	/* ECNTL */
 0x00000000 ,	/* ECNT2M */
 0x00000021 ,	/* ECNT2L */
 0x0000002f ,	/* ECNT3M */
 0x00000009 ,	/* ECNT3L */
 0x00000006 ,	/* FECAUTO1 */
 0x00000000 ,	/* FECM */
 0x000000b0 ,	/* VTH12 */
 0x0000007a ,	/* VTH23 */
 0x00000058 ,	/* VTH34 */
 0x00000038 ,	/* VTH56 */
 0x00000034 ,	/* VTH67 */
 0x00000024 ,	/* VTH78 */
 0x000000ff ,	/* PRVIT */
 0x00000019 ,	/* VITSYNC */
 0x000000b1 ,	/* RSULC */
 0x00000042 ,	/* TSULC */
 0x00000041 ,	/* RSLLC */
 0x00000012 ,	/* TSLPL */
 0x0000000c ,	/* TSCFGH */
 0x00000000 ,	/* TSCFGM */
 0x00000000 ,	/* TSCFGL */
 0x00000073 ,	/* TSOUT */
 0x00000000 ,	/* RSSYNC */
 0x00000002 ,	/* TSINSDELH */
 0x00000000 ,	/* TSINSDELM */
 0x00000000 ,	/* TSINSDELL */
 0x00000013 ,	/* TSLLSTKM */
 0x000000f7 ,	/* TSLLSTKL */
 0x00000000 ,	/* TSULSTKM */
 0x00000000 ,	/* TSULSTKL */
 0x000000bc ,	/* PCKLENUL */
 0x000000cc ,	/* PCKLENLL */
 0x00000083 ,	/* RSPCKLEN */
 0x00000080 ,	/* TSSTATUS */
 0x000000b6 ,	/* ERRCTRL1 */
 0x00000096 ,	/* ERRCTRL2 */
 0x00000089 ,	/* ERRCTRL3 */
 0x00000027 ,	/* DMONMSK1 */
 0x00000003 ,	/* DMONMSK0 */
 0x0000005c ,	/* DEMAPVIT */
 0x0000000d ,	/* PLPARM */
 0x00000048 ,	/* PDELCTRL */
 0x00000000 ,	/* PDELCTRL2 */
 0x00000000 ,	/* BBHCTRL1 */
 0x00000000 ,	/* BBHCTRL2 */
 0x00000077 ,	/* HYSTTHRESH */
 0x00000000 ,	/* MATCSTM */
 0x00000000 ,	/* MATCSTL */
 0x00000000 ,	/* UPLCSTM */
 0x00000000 ,	/* UPLCSTL */
 0x00000000 ,	/* DFLCSTM */
 0x00000000 ,	/* DFLCSTL */
 0x00000000 ,	/* SYNCCST */
 0x00000000 ,	/* SYNCDCSTM */
 0x00000000 ,	/* SYNCDCSTL */
 0x00000000 ,	/* ISIENTRY */
 0x00000000 ,	/* ISIBITEN */
 0x0000001f ,	/* MATSTRM */
 0x000000ff ,	/* MATSTRL */
 0x000000da ,	/* UPLSTRM */
 0x0000001e ,	/* UPLSTRL */
 0x00000078 ,	/* DFLSTRM */
 0x0000002e ,	/* DFLSTRL */
 0x000000b1 ,	/* SYNCSTR */
 0x000000d9 ,	/* SYNCDSTRM */
 0x00000025 ,	/* SYNCDSTRL */
 0x0000001d ,	/* CFGPDELSTATUS1 */
 0x00000027 ,	/* CFGPKTDELSTTS2 */
 0x00000000 ,	/* BBFERRORM */
 0x00000007 ,	/* BBFERRORL */
 0x00000000 ,	/* UPKTERRORM */
 0x000000a3 ,	/* UPKTERRORL */
 0x00000008 ,	/* BLOCKLNGTH */
 0x000000b4 ,	/* ROWSTR */
 0x000004b5 ,	/* BNANDADDR */
 0x00000b4b ,	/* CNANDADDR */
 0x00000078 ,	/* INFOLENGTH */
 0x000001e0 ,	/* BOT_ADDR */
 0x0000a8c0 ,	/* BCHBLKLN */
 0x0000000c ,	/* BCHT */
 0x00000001 ,	/* CNFGMODE */
 0x0000021d ,	/* LDPCSTAT */
 0x00000040 ,	/* ITERSCALE */
 0x00000000 ,	/* INPUTMODE */
 0x00000000 ,	/* LDPCDECRST */
 0x00000008 ,	/* CLKPERBYTE */
 0x0000000c ,	/* BCHERRORS */
 0x0000083f ,	/* LDPCERRORS */
 0x00000000 ,	/* BCHMODE */
 0x00000008 ,	/* ERRACCPER */
 0x00000006 ,	/* BCHERRACC */
 0x00000000 ,	/* FECTPSEL */
 0x00000000 ,	/* TSTCK */
 0x00000000 ,	/* TSTRES */
 0x00000000 ,	/* TSTOUT */
 0x00000000 ,	/* TSTIN */
 0x00000000 ,	/* TSTSYS */
 0x00000000 ,	/* TSTCHIP */
 0x00000000 ,	/* TSTFREE */
 0x00000000 ,	/* TSTI2C */
 0x00000000 ,	/* BITSPEEDM */
 0x00000000 ,	/* BITSPEEDL */
 0x00000000 ,	/* TBUSBIT */
 0x00000000 ,	/* TSTDIS */
 0x00000000 ,	/* TSTDISRX */
 0x00000000 ,	/* TSTJETON */
 0x00000000 ,	/* TSTDCADJ */
 0x00000000 ,	/* TSTAGC1 */
 0x00000000 ,	/* TSTAGC1N */
 0x00000000 ,	/* TSTPOLYPH */
 0x000000c0 ,	/* TSTR */
 0x00000000 ,	/* TSTAGC2 */
 0x00000000 ,	/* TSTCTL1 */
 0x00000000 ,	/* TSTCTL2 */
 0x00000000 ,	/* TSTCTL3 */
 0x00000000 ,	/* TSTDEMAP */
 0x00000000 ,	/* TSTDEMAP2 */
 0x00000000 ,	/* TSTDEMMON */
 0x00000000 ,	/* TSTRATE */
 0x00000000 ,	/* TSTSELOUT */
 0x00000000 ,	/* TSYNC */
 0x00000000 ,	/* TSTERR */
 0x00000000 ,	/* TSTRAM1 */
 0x00000000 ,	/* TSTVSELOUT */
 0x00000000 ,	/* TSTFORCEIN */
 0x00000000 ,	/* TSTRS1 */
 0x00000000 ,	/* TSTRS2 */
 0x00000000 ,	/* TSTRS3 */
 0x00000081 ,	/* GHOSTREG */

};
	

#define STB0899_SYMBOL_RATE_MIN 1000000
#define STB0899_SYMBOL_RATE_MAX 45000000

#define STB0899_FREQ_MIN  950000
#define STB0899_FREQ_MAX  2150000

#define STB0899_MAX_BER 100

#define angle_threshold 1042
/* 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;

/* instance chain, the default boot value is invalid, to catch errors */
static STB0899_InstanceData_t *InstanceChainTop = (STB0899_InstanceData_t *)0x7fffffff;

/**************extern from  open.c************************/
#ifdef STTUNER_DRV_SAT_SCR
#ifdef STTUNER_DRV_SAT_SCR_LOOPTHROUGH
extern U32 DemodDrvHandleOne;
#endif
#endif

/* For DiSEqC2.0*/
#ifdef STTUNER_DISEQC2_SWDECODE_VIA_PIO	
static U32 IndexforISR;
STTUNER_InstanceDbase_t *InstforISR;
#endif 


/* functions --------------------------------------------------------------- */

/* API */
ST_ErrorCode_t demod_stb0899_Init(ST_DeviceName_t *DeviceName, DEMOD_InitParams_t *InitParams);
ST_ErrorCode_t demod_stb0899_Term(ST_DeviceName_t *DeviceName, DEMOD_TermParams_t *TermParams);

ST_ErrorCode_t demod_stb0899_Open (ST_DeviceName_t *DeviceName, DEMOD_OpenParams_t  *OpenParams, DEMOD_Capability_t *Capability, DEMOD_Handle_t *Handle);
ST_ErrorCode_t demod_stb0899_Close(DEMOD_Handle_t  Handle, DEMOD_CloseParams_t *CloseParams);

ST_ErrorCode_t demod_stb0899_IsAnalogCarrier (DEMOD_Handle_t Handle, BOOL *IsAnalog);        
ST_ErrorCode_t demod_stb0899_GetSignalQuality(DEMOD_Handle_t Handle, U32  *SignalQuality_p, U32 *Ber);
ST_ErrorCode_t demod_stb0899_GetModulation   (DEMOD_Handle_t Handle, STTUNER_Modulation_t *Modulation);
ST_ErrorCode_t demod_stb0899_SetModulation   (DEMOD_Handle_t Handle, STTUNER_Modulation_t  Modulation);
ST_ErrorCode_t demod_stb0899_GetModeCode     (DEMOD_Handle_t Handle, STTUNER_ModeCode_t  *ModeCode);
ST_ErrorCode_t demod_stb0899_GetAGC          (DEMOD_Handle_t Handle, S16                  *Agc);
ST_ErrorCode_t demod_stb0899_GetFECRates     (DEMOD_Handle_t Handle, STTUNER_FECRate_t    *FECRates);
ST_ErrorCode_t demod_stb0899_GetIQMode       (DEMOD_Handle_t Handle, STTUNER_IQMode_t     *IQMode); /*added for GNBvd26107->I2C failure due to direct access to demod device at API level*/
ST_ErrorCode_t demod_stb0899_IsLocked        (DEMOD_Handle_t Handle, BOOL                 *IsLocked);
ST_ErrorCode_t demod_stb0899_SetFECRates     (DEMOD_Handle_t Handle, STTUNER_FECRate_t     FECRates);
ST_ErrorCode_t demod_stb0899_Tracking        (DEMOD_Handle_t Handle, BOOL ForceTracking,   U32 *NewFrequency, BOOL *SignalFound);

ST_ErrorCode_t demod_stb0899_ScanFrequency   (DEMOD_Handle_t Handle, U32  InitialFrequency, U32   SymbolRate,    U32   MaxOffset, 
                                                                   U32  TunerStep,        U8    DerotatorStep, BOOL *ScanSuccess,
                                                                   U32 *NewFrequency,     U32   Mode,          U32   Guard,
                                                                   U32  Force,            U32   Hierarchy,     U32   Spectrum,
                                                                   U32  FreqOff,          U32   ChannelBW,     S32   EchoPos);

ST_ErrorCode_t demod_stb0899_ioctl           (DEMOD_Handle_t Handle, U32 Function, void *InParams, void *OutParams, STTUNER_Da_Status_t *Status);

/* added for DiSEqC API support*/
ST_ErrorCode_t demod_stb0899_DiSEqC          (DEMOD_Handle_t Handle, 
									    STTUNER_DiSEqCSendPacket_t *pDiSEqCSendPacket,
									    STTUNER_DiSEqCResponsePacket_t *pDiSEqCResponsePacket
									    );

ST_ErrorCode_t demod_stb0899_DiSEqCGetConfig ( DEMOD_Handle_t Handle ,STTUNER_DiSEqCConfig_t * DiSEqCConfig);
ST_ErrorCode_t demod_stb0899_DiSEqCBurstOFF ( DEMOD_Handle_t Handle );

ST_ErrorCode_t demod_stb0899_Tonedetection(DEMOD_Handle_t Handle,U32 StartFreq, U32 StopFreq,U8  *NbTones,U32 *ToneList, U8 mode, int* power_detection_level);
/* I/O API */
ST_ErrorCode_t demod_stb0899_ioaccess(DEMOD_Handle_t Handle, IOARCH_Handle_t IOHandle,
                  STTUNER_IOARCH_Operation_t Operation, U16 SubAddr, U8 *Data, U32 TransferSize, U32 Timeout);
ST_ErrorCode_t demod_stb0899_DiseqcInit(DEMOD_Handle_t Handle);

/* local functions --------------------------------------------------------- */

STB0899_InstanceData_t *STB0899_GetInstFromHandle(DEMOD_Handle_t Handle);

BOOL checkLUT(int Value, U32 ModeCode)
{
	if(Value == ModeCode)
	return TRUE;
	else
	return FALSE;
}

/* ----------------------------------------------------------------------------
Name: STTUNER_DRV_DEMOD_STB0899_Install()

Description:
    install a satellite device driver into the demod database.
    
Parameters:

Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t STTUNER_DRV_DEMOD_STB0899_Install(STTUNER_demod_dbase_t *Demod)
{

    ST_ErrorCode_t Error = ST_NO_ERROR;

    if(Installed == TRUE)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_STB0899
        STTBX_Print(("%s fail driver already installed\n", identity));
#endif
        return(STTUNER_ERROR_INITSTATE);
    }
   
#ifdef STTUNER_DEBUG_MODULE_SATDRV_STB0899
    STTBX_Print(("%s installing sat:demod:STB0899...", identity));
#endif

    /* mark ID in database */
    Demod->ID = STTUNER_DEMOD_STB0899;

    /* map API */
    Demod->demod_Init = demod_stb0899_Init;
    Demod->demod_Term = demod_stb0899_Term;

    Demod->demod_Open  = demod_stb0899_Open;
    Demod->demod_Close = demod_stb0899_Close;

    Demod->demod_IsAnalogCarrier  = demod_stb0899_IsAnalogCarrier; 
    Demod->demod_GetSignalQuality = demod_stb0899_GetSignalQuality;
    Demod->demod_GetModulation    = demod_stb0899_GetModulation;   
    Demod->demod_SetModulation    = demod_stb0899_SetModulation;   
    Demod->demod_GetAGC           = demod_stb0899_GetAGC;          
    Demod->demod_GetIQMode        = demod_stb0899_GetIQMode; /*added for GNBvd26107->I2C failure due to direct access to demod device at API level*/
    Demod->demod_GetFECRates      = demod_stb0899_GetFECRates;      
    Demod->demod_IsLocked         = demod_stb0899_IsLocked ;   
    Demod->demod_SetFECRates      = demod_stb0899_SetFECRates;     
    Demod->demod_Tracking         = demod_stb0899_Tracking;        
    Demod->demod_ScanFrequency    = demod_stb0899_ScanFrequency;
    #ifdef STTUNER_DRV_SAT_STB0899
    Demod->demod_GetModeCode    = demod_stb0899_GetModeCode;
    #endif
    /*Added for DiSEqC Support*/
	Demod->demod_DiSEqC	  = demod_stb0899_DiSEqC;
	Demod->demod_GetConfigDiSEqC   = demod_stb0899_DiSEqCGetConfig;  

⌨️ 快捷键说明

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