📄 d0372.c
字号:
/* ----------------------------------------------------------------------------
File Name: d0372.c
Description:
stv0372 8VSB demod driver.
Copyright (C) 2004-2006 STMicroelectronics
History:
date:
version:
author:
comment:
Reference:
---------------------------------------------------------------------------- */
/* Includes ---------------------------------------------------------------- */
/* C libs */
#ifdef ST_OSLINUX
#include "stos.h"
#else
#include <string.h>
#include "stlite.h" /* Standard includes */
/* STAPI */
#include "sttbx.h"
#endif
#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 */
/* LLA */
#include "d0372_drv.h" /* misc driver functions */
#include "d0372.h" /* header for this file */
#include "d0372_map.h"
#include "tioctl.h" /* data structure typedefs for all the ter ioctl functions */
U16 STV0372_Address[STV0372_NBREGS]=
{
0xf000, /* ID */
0xf001 , /* I2C_PAGE */
0xf002, /* I2CRPT1 */
0xf003, /* I2CRPT2 */
0xf004, /* CLK_CTRL */
0xf005, /* STANDBY */
0xf006 , /* IO_CTRL */
0xf007, /* GPIO_INFO */
0xf610, /* PLL_CTRL */
0xf611, /* RESERVED */
0xf61c, /* AD10_CTRL */
0xf010, /* DEMOD_CTRL */
0xf011, /* SYNCCTRL */
0xf012, /* AGCCTRL1 */
0xf013, /* AGCCTRL2 */
0xf014, /* AGCPWR0372_LSB */
0xf015, /* AGCPWR0372_MSB */
0xf016, /* AGCITHUP_LSB */
0xf017, /* AGCITHUP_MSB */
0xf018, /* AGCITHLOW_LSB */
0xf019, /* AGCITHLOW_MSB */
0xf01a, /* AGCTH_LSB */
0xf01b, /* AGCTH_MSB */
0xf01c, /* AGCBWSEL */
0xf01d, /* TAGCBWSEL */
0xf01e, /* TST_PWM1 */
0xf01f, /* TST_PWM2 */
0xf020, /* TST_PWM3 */
0xf021, /* AGC_IND_LSB */
0xf022, /* AGC_IND_MSB */
0xf023, /* AGC_IND_MMSB */
0xf024, /* VCXOOFFSET1 */
0xf025, /* VCXOOFFSET2 */
0xf026, /* VCXOOFFSET3 */
0xf027, /* VCXOOFFSET4 */
0xf028, /* GAINSRC_LSB */
0xf029, /* GAINSRC_MSB */
0xf02a, /* VCXOINITV */
0xf02b, /* GAIN1ACQ1_LSB */
0xf02c, /* GAIN1ACQ1_MSB */
0xf02d, /* GAIN1ACQ2_LSB */
0xf02e, /* GAIN1ACQ2_MSB */
0xf02f, /* GAIN1TRACK_LSB */
0xf030, /* GAIN1TRACK_MSB */
0xf031, /* GAIN2ACQ1_LSB */
0xf032, /* GAIN2ACQ1_MSB */
0xf033, /* GAIN2ACQ2_LSB */
0xf034, /* GAIN2ACQ2_MSB */
0xf035, /* GAIN2TRK_LSB */
0xf036, /* GAIN2TRK_MSB */
0xf037, /* GAIN3ACQ */
0xf038, /* GAIN3TRK */
0xf039, /* VCXOERR0372_LSB */
0xf03a, /* VCXOERR0372_MSB */
0xf03b, /* VCXOERR0372_MMSB */
0xf03c, /* TIMLOCKDETECT_LSB */
0xf03d, /* TIMLOCKDETECT_MSB */
0xf03e, /* TIMLOCKDETECT_MMSB */
0xf03f, /* FREQLOCK_LSB */
0xf040, /* FREQLOCK_MSB */
0xf041, /* FREQLOCK_MMSB */
0xf042, /* TIMINGAGCREF_LSB */
0xf043 , /* TIMINGAGCREF_MSB */
0xf044, /* NCOCNST_LSB */
0xf045, /* NCOCNST_MSB */
0xf046, /* NCOCNST_MMSB */
0xf047, /* NCOGAIN1ACQ */
0xf048, /* NCOGAIN1TRACK */
0xf049, /* NCOGAIN2ACQ */
0xf04a, /* NCOGAIN2TRACK */
0xf04b, /* NCOGAIN3 */
0xf04c, /* NCOERR_LSB */
0xf04d, /* NCOERR_MSB */
0xf04e, /* NCOERR_MMSB */
0xf04f , /* CARLOCKDETECT1_LSB */
0xf050, /* CARLOCKDETECT1_MSB */
0xf051, /* CARLOCKDETECT1_MMSB */
0xf052, /* CARLOCKDETECT2_LSB */
0xf053, /* CARLOCKDETECT2_MSB */
0xf054, /* CARLOCKDETECT2_MMSB */
0xf055, /* CARRIERLOCKTH_LSB */
0xf056, /* CARRIERLOCKTH_MSB */
0xf057, /* CARRIERLOCKTH_MMSB */
0xf058, /* CARRIERAGCREF_LSB */
0xf059, /* CARRIERAGCREF_MSB */
0xf05a, /* CARAGCMIXRATIO */
0xf05b, /* FSM1 */
0xf05c, /* FSM2 */
0xf05d, /* MAINSMUP */
0xf05e, /* EQSMUP */
0xf05f, /* STATEVAL_LSB */
0xf060, /* STATEVAL_MSB */
0xf061, /* STATEVAL_MMSB */
0xf062, /* UPDATEVCXO_LSB */
0xf063, /* UPDATEVCXO_MSB */
0xf064, /* UPDATEVCXO_MMSB */
0xf065 , /* MAXNBFRAMERCA */
0xf066, /* MAXNBFRAMEDD_LSB */
0xf067 , /* MAXNBFRAMEDD_MSB */
0xf068 , /* NCO_TIMEOUT_LSB */
0xf069 , /* NCO_TIMEOUT_MSB */
0xf06a , /* NCO_TIMEOUT_MMSB */
0xf06b , /* DEMSTATUS */
0xf06c , /* SYSCTRL */
0xf06d , /* SEG_INIT_LSB */
0xf06e , /* SEG_INIT_MSB */
0xf06f , /* CENTROIDCALDONE_LSB */
0xf070 , /* CENTROIDCALDONE_MSB */
0xf071 , /* CENTROIDOFFSET_LSB */
0xf072 , /* CENTROIDOFFSET_MSB */
0xf073 , /* FFEGAINTRAIN */
0xf074 , /* FFEGAINRCA1 */
0xf075 , /* FFEGAINRCA2 */
0xf076 , /* FFEGAINDDM1 */
0xf077 , /* FFEGAINDDM2 */
0xf078 , /* DFEGAINTRAIN */
0xf079 , /* DFEGAINRCA1 */
0xf07a , /* DFEGAINRCA2 */
0xf07b , /* DFEGAINDDM1 */
0xf07c , /* DFEGAINDDM2 */
0xf07d , /* SNR0372_TH_DDM1 */
0xf07e , /* SNR0372_TH_DDM2 */
0xf07f, /* SNR0372_TH_PT */
0xf080, /* SNR0372_TH_RCA1 */
0xf081, /* SNR0372_TH_RCA2 */
0xf082, /* LEAKFFETRAIN */
0xf083, /* LEAKFFERCA */
0xf084, /* LEAKFFEDDM */
0xf085, /* LEAKDFETRAIN */
0xf086, /* LEAKDFERCA */
0xf087, /* LEAKDFEDDM */
0xf088, /* TRACK_REG */
0xf089, /* DFE_CTRL */
0xf08a, /* TAP_CTRL */
0xf08b, /* TAP_POINTER_LSB */
0xf08c , /* TAP_POINTER_MSB */
0xf08d, /* TAP_GETBYTE */
0xf08e, /* TAP_PUTBYTE */
0xf08f, /* DECCTRL */
0xf090, /* DECSYNCCTRL */
0xf091, /* SER_LSB */
0xf092, /* SER_MSB */
0xf093, /* SER_PERIOD_LSB */
0xf094, /* SER_PERIOD_MSB */
0xf095, /* DEC_STATUS */
0xf096, /* SIGNAL_POWER_LSB */
0xf097, /* SIGNAL_POWER_MSB */
0xf098, /* ERROR_POWER_LSB */
0xf099, /* ERROR_POWER_MSB */
0xf09a, /* BERCTRL */
0xf09b, /* BER0372_LSB */
0xf09c, /* BER_MSB */
0xf09d, /* BER_PERIOD_LLSB */
0xf09e, /* BER_PERIOD_LSB */
0xf09f, /* BER_PERIOD_MSB */
0xf0a0, /* BER_PERIOD_MMSB */
0xf0a1, /* FRAMECORTH_LSB */
0xf0a2, /* FRAMECORTH_MSB */
0xf0a3, /* FRAMELOCKDELOCK */
0xf0a4, /* CI_BYTE_CLK */
0xf0a5, /* TS_FORMAT */
0xf0a6, /* ACI_CTRL */
0xf0a7, /* ACI_CHANNEL */
0xf0a8, /* ACI_PROGRAM_LSB */
0xf0a9 /* ACI_PROGRAM_MSB */
};
U8 STV0372_DefVal[STV0372_NBREGS]=
{
0x10, /*R0372_ID - 0xf000 */
0x00, /*R0372_I2C_PAGE - 0xf001 */
0x32, /*R0372_I2CRPT1 - 0xf002 */
0x07, /*R0372_I2CRPT2 - 0xf003 */
0x0a, /*R0372_CLK_CTRL - 0xf004 */
0xcd, /*R0372_STANDBY - 0xf005 */
0x58, /*R0372_IO_CTRL - 0xf006 *//*To disable TS O/P from high impedance mode and make TS enable */
0x18, /*R0372_GPIO_INFO - 0xf007 */
0xc7, /*R0372_PLL_CTRL - 0xf610 */
0x00, /*R0372_RESERVED - 0xf611 */ /*Given reset value to make compatible with old files*/
0x14, /*R0372_AD10_CTRL - 0xf61c */
0x00, /*R0372_DEMOD_CTRL - 0xf010 */
0x00, /*R0372_SYNCCTRL - 0xf011 */
0x80, /*R0372_AGCCTRL1 - 0xf012 */
0x00, /*R0372_AGCCTRL2 - 0xf013 */
0x72, /*R0372_AGCPWR_LSB - 0xf014 */
0xf0, /*R0372_AGCPWR_MSB - 0xf015 */
0xff, /*R0372_AGCITHUP_LSB - 0xf016 */
0x07, /*R0372_AGCITHUP_MSB - 0xf017 */
0x00, /*R0372_AGCITHLOW_LSB - 0xf018 */
0x08, /*R0372_AGCITHLOW_MSB - 0xf019 */
0x80, /*R0372_AGCTH_LSB - 0xf01a */
0x03, /*R0372_AGCTH_MSB - 0xf01b */
0x06, /*R0372_AGCBWSEL - 0xf01c */
0x01, /*R0372_TAGCBWSEL - 0xf01d */
0x81, /*R0372_TST_PWM1 - 0xf01e */
0x53, /*R0372_TST_PWM2 - 0xf01f */
0xef, /*R0372_TST_PWM3 - 0xf020 */
0xca, /*R0372_AGC_IND_LSB - 0xf021 */
0xf1, /*R0372_AGC_IND_MSB - 0xf022 */
0x03, /*R0372_AGC_IND_MMSB - 0xf023 */
0x98, /*R0372_VCXOOFFSET1 - 0xf024 */
0x5e, /*R0372_VCXOOFFSET2 - 0xf025 */
0x05, /*R0372_VCXOOFFSET3 - 0xf026 */
0xb3, /*R0372_VCXOOFFSET4 - 0xf027 */
0xba, /*R0372_GAINSRC_LSB - 0xf028 */
0x3f, /*R0372_GAINSRC_MSB - 0xf029 */
0x00, /*R0372_VCXOINITV - 0xf02a */
0x00, /*R0372_GAIN1ACQ1_LSB - 0xf02b */
0x7d, /*R0372_GAIN1ACQ1_MSB - 0xf02c */
0x20, /*R0372_GAIN1ACQ2_LSB - 0xf02d */
0xf4, /*R0372_GAIN1ACQ2_MSB - 0xf02e */
0x10, /*R0372_GAIN1TRACK_LSB - 0xf02f */
0xd8, /*R0372_GAIN1TRACK_MSB - 0xf030 */
0xff, /*R0372_GAIN2ACQ1_LSB - 0xf031 */
0x83, /*R0372_GAIN2ACQ1_MSB - 0xf032 */
0x00, /*R0372_GAIN2ACQ2_LSB - 0xf033 */
0x79, /*R0372_GAIN2ACQ2_MSB - 0xf034 */
0x80, /*R0372_GAIN2TRK_LSB - 0xf035 */
0xe4, /*R0372_GAIN2TRK_MSB - 0xf036 */
0x05, /*R0372_GAIN3ACQ - 0xf037 */
0x05, /*R0372_GAIN3TRK - 0xf038 */
0x5e, /*R0372_VCXOERR_LSB - 0xf039 */
0xf0, /*R0372_VCXOERR_MSB - 0xf03a */
0xfe, /*R0372_VCXOERR_MMSB - 0xf03b */
0xa3, /*R0372_TIMLOCKDETECT_LSB - 0xf03c */
0xd8, /*R0372_TIMLOCKDETECT_MSB - 0xf03d */
0x05, /*R0372_TIMLOCKDETECT_MMSB - 0xf03e */
0x00, /*R0372_FREQLOCK_LSB - 0xf03f */
0x77, /*R0372_FREQLOCK_MSB - 0xf040 */
0x01, /*R0372_FREQLOCK_MMSB - 0xf041 */
0x00, /*R0372_TIMINGAGCREF_LSB - 0xf042 */
0x14, /*R0372_TIMINGAGCREF_MSB - 0xf043 */
0x4b, /*R0372_NCOCNST_LSB - 0xf044 */
0x68, /*R0372_NCOCNST_MSB - 0xf045 */
0x2f, /*R0372_NCOCNST_MMSB - 0xf046 */
0x02, /*R0372_NCOGAIN1ACQ - 0xf047 */
0x02, /*R0372_NCOGAIN1TRACK - 0xf048 */
0x08, /*R0372_NCOGAIN2ACQ - 0xf049 */
0x08, /*R0372_NCOGAIN2TRACK - 0xf04a */
0x06, /*R0372_NCOGAIN3 - 0xf04b */
0xf1, /*R0372_NCOERR_LSB - 0xf04c */
0x0f, /*R0372_NCOERR_MSB - 0xf04d */
0x00, /*R0372_NCOERR_MMSB - 0xf04e */
0x13, /*R0372_CARLOCKDETECT1_LSB - 0xf04f */
0x45, /*R0372_CARLOCKDETECT1_MSB - 0xf050 */
0x05, /*R0372_CARLOCKDETECT1_MMSB - 0xf051 */
0x90, /*R0372_CARLOCKDETECT2_LSB - 0xf052 */
0x8f, /*R0372_CARLOCKDETECT2_MSB - 0xf053 */
0x01, /*R0372_CARLOCKDETECT2_MMSB - 0xf054 */
0x00, /*R0372_CARRIERLOCKTH_LSB - 0xf055 */
0x77, /*R0372_CARRIERLOCKTH_MSB - 0xf056 */
0xc5, /*R0372_CARRIERLOCKTH_MMSB - 0xf057 */
0x00, /*R0372_CARRIERAGCREF_LSB - 0xf058 */
0xc2, /*R0372_CARRIERAGCREF_MSB - 0xf059 */
0x14, /*R0372_CARAGCMIXRATIO - 0xf05a */
0x00, /*R0372_FSM1 - 0xf05b */
0x00, /*R0372_FSM2 - 0xf05c */
0xff, /*R0372_MAINSMUP - 0xf05d */
0xff, /*R0372_EQSMUP - 0xf05e */
0xff, /*R0372_STATEVAL_LSB - 0xf05f */
0x0f, /*R0372_STATEVAL_MSB - 0xf060 */
0x90, /*R0372_STATEVAL_MMSB - 0xf061 */
0x00, /*R0372_UPDATEVCXO_LSB - 0xf062 */
0x00, /*R0372_UPDATEVCXO_MSB - 0xf063 */
0x8e, /*R0372_UPDATEVCXO_MMSB - 0xf064 */
0x1a, /*R0372_MAXNBFRAMERCA - 0xf065 */
0xc8, /*R0372_MAXNBFRAMEDD_LSB - 0xf066 */
0x00, /*R0372_MAXNBFRAMEDD_MSB - 0xf067 */
0xff, /*R0372_NCO_TIMEOUT_LSB - 0xf068 */
0xff, /*R0372_NCO_TIMEOUT_MSB - 0xf069 */
0xff, /*R0372_NCO_TIMEOUT_MMSB - 0xf06a */
0x5a, /*R0372_DEMSTATUS - 0xf06b */
0x70, /*R0372_SYSCTRL - 0xf06c */
0x00, /*R0372_SEG_INIT_LSB - 0xf06d */
0xe1, /*R0372_SEG_INIT_MSB - 0xf06e */
0x37, /*R0372_CENTROIDCALDONE_LSB - 0xf06f */
0xf1, /*R0372_CENTROIDCALDONE_MSB - 0xf070 */
0x00, /*R0372_CENTROIDOFFSET_LSB - 0xf071 */
0x00, /*R0372_CENTROIDOFFSET_MSB - 0xf072 */
0x40, /*R0372_FFEGAINTRAIN - 0xf073 */
0x09, /*R0372_FFEGAINRCA1 - 0xf074 */
0x05, /*R0372_FFEGAINRCA2 - 0xf075 */
0x10, /*R0372_FFEGAINDDM1 - 0xf076 */
0x08, /*R0372_FFEGAINDDM2 - 0xf077 */
0x40, /*R0372_DFEGAINTRAIN - 0xf078 */
0x20, /*R0372_DFEGAINRCA1 - 0xf079 */
0x10, /*R0372_DFEGAINRCA2 - 0xf07a */
0x20, /*R0372_DFEGAINDDM1 - 0xf07b */
0x20, /*R0372_DFEGAINDDM2 - 0xf07c */
0xca, /*R0372_SNR_TH_DDM1 - 0xf07d */
0xca, /*R0372_SNR_TH_DDM2 - 0xf07e */
0xd8, /*R0372_SNR_TH_PT - 0xf07f */
0x53, /*R0372_SNR_TH_RCA1 - 0xf080 */
0x75, /*R0372_SNR_TH_RCA2 - 0xf081 */
0x0d, /*R0372_LEAKFFETRAIN - 0xf082 */
0x77, /*R0372_LEAKFFERCA - 0xf083 */
0x97, /*R0372_LEAKFFEDDM - 0xf084 */
0x08, /*R0372_LEAKDFETRAIN - 0xf085 */
0x44, /*R0372_LEAKDFERCA - 0xf086 */
0x22, /*R0372_LEAKDFEDDM - 0xf087 */
0x30, /*R0372_TRACK_REG - 0xf088 */
0xb8, /*R0372_DFE_CTRL - 0xf089 */
0x00, /*R0372_TAP_CTRL - 0xf08a */
0x3f, /*R0372_TAP_POINTER_LSB - 0xf08b */
0x01, /*R0372_TAP_POINTER_MSB - 0xf08c */
0x00, /*R0372_TAP_GETBYTE - 0xf08d */
0x00, /*R0372_TAP_PUTBYTE - 0xf08e */
0x00, /*R0372_DECCTRL - 0xf08f */
0x00, /*R0372_DECSYNCCTRL - 0xf090 */
0x00, /*R0372_SER_LSB - 0xf091 */
0x00, /*R0372_SER_MSB - 0xf092 */
0x10, /*R0372_SER_PERIOD_LSB - 0xf093 */
0x27, /*R0372_SER_PERIOD_MSB - 0xf094 */
0x3a, /*R0372_DEC_STATUS - 0xf095 */
0xbe, /*R0372_SIGNAL_POWER_LSB - 0xf096 */
0x03, /*R0372_SIGNAL_POWER_MSB - 0xf097 */
0x07, /*R0372_ERROR_POWER_LSB - 0xf098 */
0x00, /*R0372_ERROR_POWER_MSB - 0xf099 */
0x8b, /*R0372_BERCTRL - 0xf09a */
0xff, /*R0372_BER_LSB - 0xf09b */
0xff, /*R0372_BER_MSB - 0xf09c */
0xbe, /*R0372_BER_PERIOD_LLSB - 0xf09d */
0xc8, /*R0372_BER_PERIOD_LSB - 0xf09e */
0x24, /*R0372_BER_PERIOD_MSB - 0xf09f */
0x00, /*R0372_BER_PERIOD_MMSB - 0xf0a0 */
0x00, /*R0372_FRAMECORTH_LSB - 0xf0a1 */
0x30, /*R0372_FRAMECORTH_MSB - 0xf0a2 */
0x41, /*R0372_FRAMELOCKDELOCK - 0xf0a3 */
0x44, /*R0372_CI_BYTE_CLK - 0xf0a4 */
0x02, /*R0372_TS_FORMAT - 0xf0a5 */
0x00, /*R0372_ACI_CTRL - 0xf0a6 */
0x00, /*R0372_ACI_CHANNEL - 0xf0a7 */
0x01, /*R0372_ACI_PROGRAM_LSB - 0xf0a8 */
0x00 /*R0372_ACI_PROGRAM_MSB - 0xf0a9 */
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -