📄 ll_tun0360.c
字号:
case TUNER_PLL_TECC2849PG:
Tuner->WrBuffer[0] = (unsigned char) ( (nbsteps >> 8) & 0x7f );
Tuner->WrBuffer[1] = (unsigned char) ( (nbsteps >> 0) & 0xff );
break;
#endif
/*******Tuner TDCC2345**************************/
#ifdef STTUNER_DRV_TER_TUN_TDCC2345
case TUNER_PLL_TDCC2345:
Tuner->WrBuffer[0] = (unsigned char) ( (nbsteps >> 8) & 0x7f );
Tuner->WrBuffer[1] = (unsigned char) ( (nbsteps >> 0) & 0xff );
break;
#endif
#endif
default:
Tuner->Error = TNR_PLL_ERR;
break ;
}
#ifdef HOST_PC
TunerReadWrite( Tuner,WRITE);
#else
TunerReadWrite((TUNER_Handle_t)Tuner,WRITE);
#endif
}
}
/*****************************************************
**FUNCTION :: LL_TunerGetNbSteps
**ACTION :: Get the number of steps of the tuner
**PARAMS IN :: NONE
**PARAMS OUT:: NONE
**RETURN :: Number of steps, 0 if an error occur
*****************************************************/
int LL_TunerGetNbSteps(TUNTDRV_InstanceData_t* Tuner)
{
int nbsteps = 0;
if(!Tuner->Error)
{
switch (Tuner->PLLType)
{
#ifdef STTUNER_BASIC
#ifdef STTUNER_DRV_TER_TUN_TDLB7
case TUNER_PLL_TDLB7:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
nbsteps |= ((int)Tuner->WrBuffer[2] & 0x00000060)<<16L;
break ;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDEB2
case TUNER_PLL_TDEB2:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break ;
#endif
#ifdef STTUNER_DRV_TER_TUN_DTT7572
case TUNER_PLL_DTT7572:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDA6650
case TUNER_PLL_TDA6650:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDM1316
case TUNER_PLL_TDM1316:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_EAL2780
case TUNER_PLL_EAL2780:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#if defined(STTUNER_DRV_TER_TUN_DTT7578) || defined (STTUNER_DRV_TER_TUN_DTT7592)
case TUNER_PLL_DTT7578:
case TUNER_PLL_DTT7592:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_ENG47402G1
case TUNER_PLL_ENG47402G1:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_ED5058
case TUNER_PLL_ED5058:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
nbsteps=nbsteps;
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_MIVAR
case TUNER_PLL_MIVAR:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDED4
case TUNER_PLL_TDED4:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_DTT7102
case TUNER_PLL_DTT7102:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TECC2849PG
case TUNER_PLL_TECC2849PG:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDCC2345
case TUNER_PLL_TDCC2345:
nbsteps = ((int)Tuner->WrBuffer[0] & 0x0000007F)<<8L;
nbsteps |= ((int)Tuner->WrBuffer[1] & 0x000000FF);
break;
#endif
#endif
default:
Tuner->Error = TNR_PLL_ERR;
break;
}
}
else
{
/* dbg_counter++;*/
/*if (!(dbg_counter % 8 )) printf("NO ACK \n");*/
}
return nbsteps;
}
/*****************************************************
**FUNCTION :: LL_TunerGetFrequency
**ACTION :: Get the frequency of the tuner
**PARAMS IN :: NONE
**PARAMS OUT:: NONE
**RETURN :: frequency of the tuner (KHz), 0 if an error occur
*****************************************************/
int LL_TunerGetFrequency(TUNTDRV_InstanceData_t* Tuner)
{
int frequency = 0;
if(Tuner->StepSize>0)
{
frequency = ((LL_TunerGetNbSteps(Tuner)*(Tuner->StepSize/2)) - 500*Tuner->IF)/500 ;
frequency *= Tuner->FreqFactor;
}
else
Tuner->Error = TNR_STEP_ERR;
return frequency;
}
/*****************************************************
**FUNCTION :: LL_TunerSetFrequency
**ACTION :: Set the frequency of the tuner
**PARAMS IN :: frequency ==> the frequency of the tuner (KHz)
**PARAMS OUT:: NONE
**RETURN :: real tuner frequency, 0 if an error occur
*****************************************************/
/*ST_ErrorCode_t tuner_tuntdrv_SetFrequency(TUNER_Handle_t Handle,U32 frequency,(U32*)&returned_freq); */
ST_ErrorCode_t LL_TunerSetFrequency(TUNTDRV_InstanceData_t* Tuner,U32 frequency,U32* returned_freq)
{
#ifdef STTUNER_BASIC
#if defined (STTUNER_DRV_TER_TUN_TDLB7)||defined (STTUNER_DRV_TER_TUN_TDEB2)||defined (STTUNER_DRV_TER_TUN_DTT7572)||defined (STTUNER_DRV_TER_TUN_EAL2780)||defined(STTUNER_DRV_TER_TUN_DTT7578) || defined(STTUNER_DRV_TER_TUN_DTT7592)||defined (STTUNER_DRV_TER_TUN_TDA6650)||defined (STTUNER_DRV_TER_TUN_TDM1316)||defined (STTUNER_DRV_TER_TUN_ENG47402G1)||defined (STTUNER_DRV_TER_TUN_ED5058)||defined (STTUNER_DRV_TER_TUN_MIVAR)||defined (STTUNER_DRV_TER_TUN_TDED4)||defined (STTUNER_DRV_TER_TUN_DTT7102)||defined (STTUNER_DRV_TER_TUN_TECC2849PG)||defined (STTUNER_DRV_TER_TUN_TDCC2345)
int chargepump = 0,
channel_size,
Atc;
#endif
#ifdef STTUNER_DRV_TER_TUN_ENG47402G1
int loc_CB;
#endif
#endif
/*Code added for stb4K*/
int nbsteps = 0;
#ifdef STTUNER_ATCBIT_TUNER_ENABLE
int loop = 0;
int FL = 0;
#endif
/*Code added for MT2060*/
Tuner->Error=TNR_NO_ERR;
if(Tuner->StepSize > 0)
{
switch(Tuner->TunerType)
{
#ifdef STTUNER_BASIC
#ifdef STTUNER_DRV_TER_TUN_TDLB7
case STTUNER_TUNER_TDLB7:
chargepump = (unsigned char) ( (frequency < (782000 + Tuner->IF) ) ?
0x40 : /* C="01",RE=0,RTS=0,Pn=0 */
0x80 ); /* C="10",RE=0,RTS=0,Pn=0 */
Tuner->WrBuffer[3] = chargepump;
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDEB2
case STTUNER_TUNER_TDEB2:
channel_size=Tuner->ChannelBW;
#ifdef HOST_PC
UsrRdInt("CHANNEL_WIDTH",&channel_size);
#endif
if (frequency <= 230000) chargepump=(unsigned char)0x02;
else if (frequency <= 824000) chargepump=(unsigned char)0x08;
else chargepump=(unsigned char)0x88;
if (channel_size==8) (chargepump=chargepump|4);
Tuner->WrBuffer[3] = chargepump;
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_DTT7572
case STTUNER_TUNER_DTT7572:
if (frequency <= 89000) chargepump=(unsigned char)0x05;
else if (frequency <= 114000) chargepump=(unsigned char)0x45;
else if (frequency <= 134000) chargepump=(unsigned char)0x85;
else if (frequency <= 146000) chargepump=(unsigned char)0xC5;
else if (frequency <= 264000) chargepump=(unsigned char)0x06;
else if (frequency <= 344000) chargepump=(unsigned char)0x46;
else if (frequency <= 404000) chargepump=(unsigned char)0x86;
else if (frequency <= 430000) chargepump=(unsigned char)0xC6;
else if (frequency <= 714000) chargepump=(unsigned char)0x43;
else if (frequency <= 814000) chargepump=(unsigned char)0x83;
else if (frequency <= 860000) chargepump=(unsigned char)0xC3;
else chargepump=(unsigned char)0x83;
Tuner->WrBuffer[3] = (unsigned char) chargepump;
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_EAL2780
case STTUNER_TUNER_EAL2780:
chargepump=(unsigned char)0x8C;
Tuner->WrBuffer[2] = (unsigned char) chargepump;
Tuner->WrBuffer[3] = (unsigned char) (0x40);
#endif
#if defined(STTUNER_DRV_TER_TUN_DTT7578) || defined(STTUNER_DRV_TER_TUN_DTT7592)
case STTUNER_TUNER_DTT7578 :
case STTUNER_TUNER_DTT7592 :
if (frequency <= 230000) chargepump=(unsigned char)0xB4;/* modifs of the spec */
else if (frequency <= 699000) chargepump=(unsigned char)0xBC;
else if (frequency <= 799000) chargepump=(unsigned char)0xF4;
else if (frequency <= 860000) chargepump=(unsigned char)0xFC;
else chargepump=(unsigned char)0xFC;
switch(Tuner->StepSize)
{
case 50000:
chargepump=(chargepump&0xC9);
break;
case 31250:
chargepump=(chargepump&0xC9);
chargepump=chargepump|((0x1)<<1);
break;
case 166667:
chargepump=(chargepump&0xF9);
chargepump=chargepump|(2<<1);
break;
case 62500:
chargepump=(chargepump&0xF9);
chargepump=chargepump|(3<<1);
break;
case 125000:
chargepump=(chargepump&0xC9);
chargepump=chargepump|(0x3<<4);
break;
case 142860:
chargepump=(chargepump&0xC9);
chargepump=chargepump|(0x3<<4);
chargepump=chargepump|(0x1<<1);/* RSA RSB */
break;
}
Tuner->WrBuffer[2] = (unsigned char) chargepump;
channel_size=Tuner->ChannelBW;
#ifdef HOST_PC
UsrRdInt("CHANNEL_WIDTH",&channel_size);
#endif
if (frequency<=68000) Tuner->WrBuffer[3] = (unsigned char) 0x01; /* VHF I */
else if (frequency<=228000) Tuner->WrBuffer[3] = (unsigned char) 0x02; /* VHF III */
else Tuner->WrBuffer[3] = (unsigned char) 0x08; /* UHF */
if (channel_size==7) Tuner->WrBuffer[3]= ( (Tuner->WrBuffer[3]) | (0x10));
/* Tuner->WrBuffer[4] = (unsigned char) Tuner->Address; */
Tuner->WrSubBuffer[2]= ((chargepump & 0xC7)|(3<<3));
Atc=1;
#ifdef HOST_PC
UsrRdInt("Atc",&Atc);
#endif
Tuner->WrSubBuffer[3] = (unsigned char) (0x20 | (Atc<<7));
/******* ATC Implementation*****/
#ifdef STTUNER_ATCBIT_TUNER_ENABLE
TunerReadWrite((TUNER_Handle_t)Tuner,WRITE); /* Write the initial tuner*/
/*** Now making ATC bit = 1 ******/
if (frequency < 735000)
{
Tuner->WrBuffer[2]= 0x9C;/*** Enabling Auxillary Byte to
be written over BandSwitch
byte*****/
}
else
{
Tuner->WrBuffer[2]= 0xDC;/*** Enabling Auxillary Byte to
be written over BandSwitch
byte*****/
}
Tuner->WrBuffer[3]= 0xA0;/*** Making ATC bit 1 to make AGC
current high . This is recommendable
during channel select and search
mode *****/
#endif
/*******************************************************/
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDA6650
case STTUNER_TUNER_TDA6650:
#ifdef HOST_PC
UsrRdInt("Atc",&Atc);
#endif
chargepump=(unsigned char)0xC8;
switch(Tuner->StepSize)
{
case 50000:
chargepump=(chargepump|0x3);
break;
case 166667:
chargepump=chargepump|(2);
break;
case 62500:
chargepump=chargepump;
break;
case 125000:
chargepump=chargepump|(0x4);
break;
case 142860:
chargepump=chargepump|(0x1);/* RSA RSB */
break;
}
Tuner->WrBuffer[2] = (unsigned char) chargepump;
Tuner->WrSubBuffer[2] = (unsigned char) chargepump;
Tuner->WrBuffer[3] = (unsigned char) 0xC4;
if (frequency<=68000) Tuner->WrSubBuffer[3] = (unsigned char) (0xC1); /* VHF I */
else if (frequency<=228000) Tuner->WrSubBuffer[3] = (unsigned char) (0xC2); /* VHF III */
else Tuner->WrSubBuffer[3] = (unsigned char) (0xC4); /* UHF */
Tuner->WrBuffer[4] = (unsigned char)((Tuner->WrBuffer[2] & 0x80)|(0x3)|(Atc<<3));
Tuner->WrSubBuffer[4] = (unsigned char)( Tuner->WrBuffer[4]& (0xF7)); /* UHF */
break;
#endif
#ifdef STTUNER_DRV_TER_TUN_TDM1316
case STTUNER_TUNER_TDM1316:
#ifdef HOST_PC
UsrRdInt("Atc",&Atc);
#endif
chargepump=(unsigned char)0xC8;
switch(Tuner->StepSize)
{
case 50000:
chargepump=(chargepump|0x3);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -