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

📄 d0361_init.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 4 页
字号:
#ifdef ST_OSLINUX
   #include "stos.h"
#else
/*C libs */
#include "string.h"
#endif

#include "361_init.h"
#include "chip.h"

#ifdef HOST_PC
#include "gen_types.h"
#endif
#include "361_map.h"


/*********To ADD Array consisting addresses of STV0361*****************/
U8 Def361Addr[STV361_NBREGS]={
/* R_ID*/		0x00,
/*R_I2CRPT*/		0x01,
/*R_TOPCTRL*/		0x02,
/*R_IOCFG0*/		0x03,
/*R_DAC0R*/		0x04,
/*R_IOCFG1*/            0x05,
/*R_DAC1R*/		0x06,
/*R_IOCFG2*/		0x07,
/*R_SDFR*/		0x08,
/*R_STATUS*/		0x09,

/*R_AUX_CLK*/		0x0A,
/*R_RESERVED_1*/	0x0B,
/*R_RESERVED_2*/	0x0C,
/*R_RESERVED_3*/	0x0D,
/*R_AGC2MAX*/		0x10,

/*R_AGC2MIN*/		0x11,
/*R_AGC1MAX*/		0x12,
/*R_AGC1MIN*/		0x13,
/*R_AGCR*/		0x14,
/*R_AGC2TH*/		0x15,

/*R_AGC12C*/		0x16,
/*R_AGCCTRL1*/		0x17,
/*R_AGCCTRL2*/		0x18,
/*R_AGC1VAL1*/		0x19,
/*R_AGC1VAL2*/		0x1A,

/*R_AGC2VAL1*/		0x1B,
/*R_AGC2VAL2*/		0x1C,
/*R_AGC2PGA*/		0x1D,
/*R_OVF_RATE1*/		0x1E,
/*R_OVF_RATE2*/		0x1F,

/*R_GAIN_SRC1*/		0x20,
/*R_GAIN_SRC2*/		0x21,
/*R_INC_DEROT1*/	0x22,
/*R_INC_DEROT2*/	0x23,
/*R_PPM_CPAMP_DIR*/	0x24,

/*R_PPM_CPAMP_INV*/	0x25,
/*R_FREESTFE_1*/	0x26,
/*R_FREESTFE_2*/	0x27,
/*R_DCOFFSET*/		0x28,
/*R_EN_PROCESS*/	0x29,
/*R_RESERVED_4*/	0x2A,

/*R_RESERVED_5*/	0x2B,
/*R_RESERVED_6*/	0x2C,
/*R_RESERVED_7*/	0x2D,
/*R_RESERVED_8*/	0x2E,
/*R_RESERVED_9*/	0x2F,

/*R_RESERVED_10*/	0x30,
/*R_EPQ*/		0x31,
/*R_EPQAUTO*/		0x32,
/*R_CHP_TAPS*/		0x33,
/*R_CHP_DYN_COEFF*/	0x34,

/*R_PPM_STATE_MAC*/	0x35,
/*R_INR_THRESHOLD*/	0x36,
/*R_COR_CTL*/		0x80,
/*R_COR_STAT*/		0x81,
/*R_COR_INTEN*/		0x82,

/*R_COR_INTSTAT*/	0x83,
/*R_COR_MODEGUARD*/	0x84,
/*R_AGC_CTL*/		0x85,
/*R_RESERVED_11*/	0x86,
/*R_RESERVED_12*/	0x87,

/*R_AGC_TARGET*/	0x88,
/*R_AGC_GAIN1*/		0x89,
/*R_AGC_GAIN2*/		0x8A,
/*R_RESERVED_13*/	0x8B,
/*R_RESERVED_14*/	0x8C,

/*R_RESERVED_15*/	0x8D,
/*R_CAS_CTL*/		0x8E,
/*R_CAS_FREQ*/		0x8F,
/*R_CAS_DAGCGAIN*/	0x90,
/*R_SYR_CTL*/		0x91,

/*R_SYR_STAT*/		0x92,
/*R_RESERVED_16*/	0x93,
/*R_RESERVED_17*/	0x94,
/*R_SYR_OFFSET1*/	0x95,
/*R_SYR_OFFSET2*/	0x96,

/*R_RESERVED_18*/	0x97,
/*R_SCR_CTL*/		0x98,
/*R_PPM_CTL1*/		0x99,
/*R_TRL_CTL*/		0x9A,
/*R_TRL_NOMRATE1*/	0x9B,

/*R_TRL_NOMRATE2*/	0x9C,
/*R_TRL_TIME1*/		0x9D,
/*R_TRL_TIME2*/		0x9E,
/*R_CRL_CTL*/		0x9F,
/*R_CRL_FREQ1*/		0xA0,

/*R_CRL_FREQ2*/		0xA1,
/*R_CRL_FREQ3*/		0xA2,
/*R_CHC_CTL1*/		0xA3,
/*R_CHC_SNR*/		0xA4,
/*R_BDI_CTL*/		0xA5,


/*R_DMP_CTL*/		0xA6,
/*R_TPS_RCVD1*/		0xA7,
/*R_TPS_RCVD2*/		0xA8,
/*R_TPS_RCVD3*/		0xA9,
/*R_TPS_RCVD4*/		0xAA,

/*R_TPS_ID_CELL1*/	0xAB,
/*R_TPS_ID_CELL2*/	0xAC,
/*R_RESERVED_19*/	0xAD,
/*R_RESERVED_20*/	0xAE,
/*R_RESERVED_21*/	0xAF,

/*R_TPS_CTL*/		0xB0,
/*R_CTL_FFTOSNUM */	0xB1,
/*R_TESTSELECT*/	0xB2,
/*R_MSC_REV*/		0xB3,
/*R_PIR_CTL*/		0xB4,

/*R_SNR_CARRIER1*/	0xB5,
/*R_SNR_CARRIER2*/	0xB6,
/*R_RESERVED_22 */	0xB7,
/*R_RESERVED_23*/	0xB8,
/*R_RESERVED_24*/	0xB9,

/*R_RESERVED_25*/	0xBA,
/*R_RESERVED_26*/	0xBB,
/*R_RESERVED_27*/	0xBC,
/*R_RESERVED_28*/	0xBD,
/*R_RESERVED_29*/	0xBE,

/*R_RESERVED_30*/	0xBF,
/*R_RESERVED_31*/	0x40,
/*R_VTH0*/		0x41,
/*R_VTH1*/		0x42,
/*R_VTH2*/		0x43,

/*R_VTH3*/		0x44,
/*R_RESERVED_32*/	0x45,
/*R_VTH5*/		0x46,
/*R_RESERVED_33*/	0x47,
/*R_VITPROG*/		0x49,

/*R_PR*/		0x4A,
/*R_VSEARCH*/		0x4B,
/*R_RS*/		0x4C,
/*R_RSOUT*/		0x4D,
/*R_ERRCTRL1*/		0x4E,

/*R_ERRCNTM1*/		0x4F,
/*R_ERRCNTL1*/		0x50,
/*R_ERRCTRL2*/		0x51,
/*R_ERRCNTM2*/		0x52,
/*R_ERRCNTL2*/		0x53,

/*R_RESERVED_34*/	0x54,
/*R_VERROR*/		0x55,
/*R_ERRCTRL3*/		0x56,
/*R_ERRCNTM3*/		0x57,
/*R_ERRCNTL3*/		0x58,

/*R_RESERVED_35*/	0x59,
/*R_RESERVED_36*/	0x5A,
/*R_RESERVED_37*/	0x5B,
/*R_RESERVED_38*/	0x5C,
/*R_LNBRX*/		0x5D,

/*R_RESERVED_39*/	0x5E,
/*R_RESERVED_40*/	0x5F,
/*R_RESERVED_41*/	0xC0,
/*R_ANACTRL*/		0xC1,
/*R_RESERVED_42*/	0xC2,

/*R_RESERVED_43*/	0xC3,
/*R_RESERVED_44*/	0xC4,
/*R_RESERVED_45*/	0xC5,
/*R_RESERVED_46*/	0xC6,
/*R_RESERVED_47*/	0xC7,

/*R_RESERVED_48*/	0xC8,
/*R_RESERVED_49*/	0xC9,
/*R_RESERVED_50*/	0xCA,
/*R_CONSTMODE*/		0xCB,
/*R_CONSTCARR1*/	0xCC,

/*R_CONSTCARR2*/	0xCD,
/*R_ICONSTEL*/		0xCE,
/*R_QCONSTEL*/		0xCF,
/*R_RESERVED_51*/	0xD0,
/*R_RESERVED_52*/	0xD1,

/*R_RESERVED_53*/	0xD2,
/*R_RESERVED_54*/	0xD3,
/*R_RF_AGC1*/		0xD4,
/*R_RF_AGC2*/		0xD5,
/*R_RESERVED_55*/	0xD6,

/*R_ANACTRL2*/		0xDB,
/*R_PLLMDIV*/		0xD8,
/*R_PLLNDIV*/		0xD9,
/*R_PLLSETUP*/		0xDA,
/*R_ANADIGCTRL*/	0xD7,
/*R_TSTBIST*/		0xDC
};


STCHIP_Handle_t STV0361_Init(STV0361_InitParams_t *InitParams)
{
    STCHIP_Handle_t hChip;
    U8             *DefVal;
    ST_ErrorCode_t Error=ST_NO_ERROR;
    int count=0;

    /*
    **   REGISTER CONFIGURATION
    **     ----------------------
    */


	/* fill elements of external chip data structure */
	

#ifndef STTUNER_REG_INIT_OLD_METHOD 
U8 *Addr;
U8 fieldpattern[] ={ 0x00,0x75,0x55,0x50,0x00,0x50,0x00,0x17,
		     0x0F,0x57,0x26,0x00,0x00,0x00,0x00,0x00,
		     0x00,0x00,0x18,0x00,0x54,0x48,0x67,0x00,
		     0x0F,0x00,0x0F,0x3F,0x0F,0x00,0x50,0x00,
		     0x00,0x00,0x00,0x00,0x3A,0x20,0x7F,0x0E,
		     0x7F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
		     0x00,0x02,0x7F,0x20,0x7F,0x2F,0x50,0x55,
		     0x2A,0x0B,0x2A,0x00,0x0F,0x00,0x00,0x10,
		     0x01,0x00,0x3F,0x58,0x00,0x00,0x7A,0x14,
		     0x00,0x3F,0x00,0x3f,0x1A,0x72,0x4A,0x78,
		     0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x7F,
		     0x15,0x00,0x02,0x1E,0x53,0x73,0x77,0x33,
		     0x00,0x00,0x03,0x73,0x77,0x05,0x7F,0x1F,
		     0x00,0x01,0x00,0x60,0x00,0x00,0x00,0x00,
		     0x00,0x00,0x00,0x00,0x00,0x0A,0x7F,0x7F,
		     0x7F,0x7F,0x7F,0x7F,0x00,0x33,0x55,0x4C,
		     0x55,0x10,0x4B,0x00,0x00,0x4B,0x00,0x00,
		     0x00,0x00,0x4B,0x00,0x00,0x00,0x00,0x00,
		     0x00,0x48,0x55,0x47,0x55,0x55,0x47,0x75,
		     0x68,0x5C,0x68,0x55,0x55,0x05,0x4D,0x1B,
		     0x00,0x1F,0x00,0x00,0x55,0x55,0x55,0x55,
		     0x00,0x5B,0x00,0x00,0x00,0x00,0x70,0x2A,
		     0x29};

	
			     
        U8 Rindex = 0;
	U16 Findex = 0;
	U8 fieldwidth = 1;
	U8 bitvalue = 0;
	U8 temppatternstore = 0;
	S8 bitposition = 7;
	
    Addr = Def361Addr;
    InitParams->Chip->NbRegs   = STV361_NBREGS;
    InitParams->Chip->NbFields = STV361_NBFIELDS;
    InitParams->Chip->ChipMode = STCHIP_MODE_SUBADR_8;

    if(InitParams->NbDefVal == STV361_NBREGS)
    {
        hChip = ChipOpen(InitParams->Chip);

        DefVal = InitParams->DefVal;

if(hChip != NULL)
{
	for (Rindex=0;Rindex<STV361_NBREGS;Rindex++)
	{
		ChipAddReg(hChip,Rindex,"\0",*Addr++ ,*DefVal++,STCHIP_ACCESS_WR);
		temppatternstore=fieldpattern[Rindex];
		bitvalue = 0;
		for (bitposition=7;bitposition>=0;bitposition--)
		{
				temppatternstore = temppatternstore<<1;
				if (((temppatternstore & 0x80/*1000 0000*/)==bitvalue) && (bitposition!=0))
				{
					fieldwidth++;
				}
				else
				{
					ChipAddField(hChip,Rindex,Findex,"\0",bitposition,fieldwidth,CHIP_UNSIGNED);								
					fieldwidth=1;
					Findex++;
					bitvalue = ((bitvalue==0) ? (bitvalue=0x80) : (bitvalue=0));
				}
		}/*end for loop on bitposition*/
	}/*end for loop on Rindex*/
}
}
else
{
   return (STCHIP_Handle_t) NULL;
}
#else /*#ifndef STTUNER_REG_INIT_OLD_METHOD*/

	InitParams->Chip->NbRegs   = STV361_NBREGS;
	InitParams->Chip->NbFields = STV361_NBFIELDS;
	InitParams->Chip->ChipMode = STCHIP_MODE_SUBADR_8;

    if(InitParams->NbDefVal != STV361_NBREGS) return (STCHIP_Handle_t) NULL;

    hChip = ChipOpen(InitParams->Chip);

	 	DefVal=InitParams->DefVal;


⌨️ 快捷键说明

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