home > RTD2660 Source Code > Tv.c
-
-
-
-
-
-
- #define __TV__
-
- #define _TUNER_H_ //fjyang
-
- #include "Core\Header\Include.h"
-
- void TV_Power_ON(void)
- {
-
- SET_TUNER_POWER();
- }
- void TV_Power_Down(void)
- {
-
- CLR_TUNER_POWER();
- }
- BYTE CTvSetChStatus(BYTE chn,bit status)
- {
- BYTE mask,q,r;
-
-
- if(chn >= GET_TV_MAX_CH())
- return ((BYTE)_FALSE);
-
-
- q=(chn)/8;
- r=(chn)%8;
- mask = _BIT0 << r ;
-
-
- if(status==_ENABLE)
- stTvChStatus.ChStatus[q] |= mask ;
- else
- stTvChStatus.ChStatus[q] &= ~mask ;
-
- return ((BYTE)_TRUE);
- }
-
-
- BYTE CTvGetChStatus(BYTE chn)
- {
- BYTE mask,q,r;
-
- if(chn >= GET_TV_MAX_CH())
- return ((BYTE)_FALSE);
-
-
- q=(chn)/8;
- r=(chn)%8;
- mask = _BIT0 << r ;
-
-
- if( stTvChStatus.ChStatus[q] & mask )
- return ((BYTE)_TRUE);
- else
- return ((BYTE)_FALSE);
- }
-
-
- void CTvTunerChangeChannelApplyNewData(void)
- {
-
- CEepromGetTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);
-
-
- #if (_TV_SEL_CH_M3)
- TempTvNumbers = stTvInfo.CurChn;
- #endif //#if (_TV_SEL_CH_M3)
-
-
- SET_TV_FINETUNE_PRE_DONE();
- #if 1//(_TV_FINETUNE_SAVE_SUPPORT)
-
- CEepromGetTvFinetuneData(stTvInfo.CurChn, &ucTvFinetuneData);
- #endif
- #if (_TV_AFC_SUPPORT)
-
- if (GET_TV_AFC_ENABLE())
- CTunerSetFreq(stTvPdb.pdb, stTvPdb.Afc);
- else
- CTunerSetFreq(stTvPdb.pdb + ucTvFinetuneData-50 , 0);
-
-
- #else
- CTunerSetFreq(stTvPdb.pdb);
- #endif
-
-
-
-
- }
-
-
- void CTvTunerChangeChannel(void)
- {
- #if 0
- BYTE lastAvMode;
-
- bit isVRateChange = 0;
- #endif
-
-
-
-
-
-
-
- if(ucVideoProcessState== _ACTIVE_STATE)
- {
-
-
-
-
-
- #if DINISHI_CHANGESOURCE_DVD_TV_MUTE
-
-
- CTimerDelayXms(150);
- CAudioChipWrVolumeGradual(stAudioData.Volume, 1);
- CTimerDelayXms(200);
- SET_MUTE_PROCESS(1);
- #endif
-
-
-
- #if _CUSTOMER_SANSE
- CAdjustBackgroundColor(0,0,0x80);
- #else
- CAdjustBackgroundColor(0,0,0);
- #endif
- CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);
-
-
-
-
- CTvTunerChangeChannelApplyNewData();
-
-
- {
- CModeResetMode();
- }
-
-
- }
- else
- {
- #if _CUSTOMER_SANSE
- CAdjustBackgroundColor(0,0,0x80);
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 | _BIT5 | _BIT1 | _BIT0));
- #else
- #if _TV_BACKGROUND_OPTION_SUPPORT
-
- {
- CAdjustBackgroundColor(0,0,0);
- CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);
- }
- #else
- CAdjustBackgroundColor(0,0,0);
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 | _BIT5 | _BIT1 | _BIT0));
- #endif
- #endif
-
- CTvTunerChangeChannelApplyNewData();
-
- if(1)
- {
- CModeResetMode();
- }
- else
- {
- #if _TV_BACKGROUND_OPTION_SUPPORT
-
- if (GET_TV_BACKGROUND()==0)
- #else
- if (0)
- #endif
- {
- CScalerPageSelect(_PAGE8);
- CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0);
-
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 |_BIT3 |_BIT1 | _BIT0));
-
-
-
-
- CAdjustBackgroundColor(0,0,0x00);
-
- }
-
- else
- {
-
- CScalerPageSelect(_PAGE8);
- CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0x20);
-
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0));
-
- CAdjustBackgroundColor(0,0,0xff);
- }
- }
- }
-
- }
-
- #if _TUNER_TYPE!=_TUNER_NONE
- void CTvScanSetBackground(BYTE display)
- {
- display = display;
- #if 1//(_TV_BACKGROUND_OPTION_SUPPORT)
-
-
- if ((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT))
- {
-
- if(0)
- {
- CScalerPageSelect(_PAGE8);
- CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0);
-
-
-
-
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 |_BIT3 |_BIT1 | _BIT0));
-
-
-
-
-
-
-
-
- CAdjustBackgroundColor(0,0,0x00);
- }
- else
- {
- CScalerPageSelect(_PAGE8);
- CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0x20);
-
-
-
- CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0));
-
- CAdjustBackgroundColor(0x00, 0x00, 0xff);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #else
- CModeSetFreeRun();
- CAdjustBackgroundColor(_TV_SCAN_BG_RED,_TV_SCAN_BG_GREEN,_TV_SCAN_BG_BLUE);
- CScalerSetBit(_VDISP_CTRL_28, ~_BIT3, _BIT5);
- #endif
- }
- #endif //#if _TUNER_TYPE!=_TUNER_NONE
-
-
- void CTvVideoColorStandardsetting(BYTE usvideocolorsys)
- {
- UINT8 uctemp;
-
- CTunerSetColor(usvideocolorsys);
- CScalerPageSelect(_PAGE8);
- switch(usvideocolorsys)
- {
- case _TV_VIDEO_SYS_NTSC:
- uctemp = 0x00;
- break;
- case _TV_VIDEO_SYS_PAL:
- if(GET_CURR_AUDIO_SYS() == _TV_AUDIO_SYS_M)
- uctemp = 0x01;
- else if(GET_CURR_AUDIO_SYS() == _TV_AUDIO_SYS_N)
- uctemp = 0x03;
- else
- uctemp = 0x06;
- break;
- case _TV_VIDEO_SYS_SECAM:
- uctemp = 0x07;
- break;
- case _TV_VIDEO_SYS_AUTO:
- default:
- uctemp = 0x80;
- break;
- }
-
- if(uctemp == 0x80){
- CScalerSetByte(_P8_MANUAL_MODE_D2,0x00);
- CTimerDelayXms(200);
- CScalerSetByte(_P8_MANUAL_MODE_D2,uctemp);
- }
- CScalerPageSelect(_PAGE9);
- CScalerSetByte(_P9_CKILL_B5,0x87);
- }
/*=============================================================
* Copyright (c) Realtek Semiconductor Corporation, 2005 *
* All rights reserved. *
*============================================================*/
#define __TV__
#define _TUNER_H_ //fjyang
#include "Core\Header\Include.h"
void TV_Power_ON(void)
{
//bTunerPower=1;//add by xyw 070827
SET_TUNER_POWER();
}
void TV_Power_Down(void)
{
//bTunerPower=0;//add by xyw 070827
CLR_TUNER_POWER();
}
BYTE CTvSetChStatus(BYTE chn,bit status)
{
BYTE mask,q,r;
//check chn range
if(chn >= GET_TV_MAX_CH())
return ((BYTE)_FALSE);
//get q ,r and mask
q=(chn)/8;
r=(chn)%8;
mask = _BIT0 << r ;
//set correspoding bit
if(status==_ENABLE)
stTvChStatus.ChStatus[q] |= mask ;
else
stTvChStatus.ChStatus[q] &= ~mask ;
return ((BYTE)_TRUE);
}
BYTE CTvGetChStatus(BYTE chn)
{
BYTE mask,q,r;
if(chn >= GET_TV_MAX_CH())
return ((BYTE)_FALSE);
//get q ,r and mask
q=(chn)/8;
r=(chn)%8;
mask = _BIT0 << r ;
//set correspoding bit
if( stTvChStatus.ChStatus[q] & mask )
return ((BYTE)_TRUE);
else
return ((BYTE)_FALSE);
}
void CTvTunerChangeChannelApplyNewData(void)
{
//20070407, finetune update
CEepromGetTvPdbData(stTvInfo.CurChn, &stTvPdb.chinfo);
//20080418, add start...
#if (_TV_SEL_CH_M3)
TempTvNumbers = stTvInfo.CurChn;
#endif //#if (_TV_SEL_CH_M3)
//20080418, add end...
SET_TV_FINETUNE_PRE_DONE();
#if 1//(_TV_FINETUNE_SAVE_SUPPORT)
//20070407, get finetune data
CEepromGetTvFinetuneData(stTvInfo.CurChn, &ucTvFinetuneData);
#endif
#if (_TV_AFC_SUPPORT)
//20070407, finetune update
if (GET_TV_AFC_ENABLE())
CTunerSetFreq(stTvPdb.pdb, stTvPdb.Afc);
else
CTunerSetFreq(stTvPdb.pdb + ucTvFinetuneData-50 , 0);
//if (GET_CURR_AUDIO_SYS()!=_TV_AUDIO_SYS_AUTO)
//CTunerSetSound(GET_CURR_AUDIO_SYS());
#else
CTunerSetFreq(stTvPdb.pdb);
#endif
//CTimerDelayXms(_TV_AUTOSCAN_RESPONSE_TIME);
//CTimerDelayXms(_TV_AUTOSCAN_RESPONSE_TIME);
//CTimerDelayXms(_TV_AUTOSCAN_RESPONSE_TIME);
}
//this will cause mode reset when change mode between signal and no signal
void CTvTunerChangeChannel(void)
{
#if 0
BYTE lastAvMode;
bit isVRateChange = 0;
#endif
//czl 071205
//volumetemp=stAudioData.Volume;
//stAudioData.Volume=0;
///CPt2314WrVolumeGradual(stAudioData.Volume, 0);
//CPt2314WrMute(_ENABLE);
//CTimerDelayXms(5);
if(ucVideoProcessState== _ACTIVE_STATE)
{
//DebugPrintf("CTvTunerChangeChannel()\n", 0);
//"POP" and Blue background while channel is changed, update
// CAudioSetVolume(0);
// CTimerDelayXms(100);
// SET_MUTE_PROCESS(_ENABLE);
#if DINISHI_CHANGESOURCE_DVD_TV_MUTE
// MUTE_SW= stAudioData.Volume;
//SET_MUTE_PROCESS(0);//JINSUO ADD 20100710
CTimerDelayXms(150);
CAudioChipWrVolumeGradual(stAudioData.Volume, 1);
CTimerDelayXms(200);
SET_MUTE_PROCESS(1);
#endif
//CAdjustBackgroundColor(0,0,0x80);
#if _CUSTOMER_SANSE
CAdjustBackgroundColor(0,0,0x80);
#else
CAdjustBackgroundColor(0,0,0);
#endif
CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);
//I2CSetBit(0x38,0x3f,0x40);
//////////////////////////////////////////////////
CTvTunerChangeChannelApplyNewData();
//////////////////////////////////////////////////
{
CModeResetMode();
}
//I2CSetBit(0x38,0x3f,0x00);
}
else
{
#if _CUSTOMER_SANSE
CAdjustBackgroundColor(0,0,0x80);
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 | _BIT5 | _BIT1 | _BIT0));
#else
#if _TV_BACKGROUND_OPTION_SUPPORT
//if (GET_TV_BACKGROUND())
{
CAdjustBackgroundColor(0,0,0);
CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);
}
#else
CAdjustBackgroundColor(0,0,0);
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 | _BIT5 | _BIT1 | _BIT0));
#endif
#endif
//////////////////////////////////////////////////
CTvTunerChangeChannelApplyNewData();
//////////////////////////////////////////////////
if(1/*CVdcIsLocked() == _TRUE*/)
{
CModeResetMode();
}
else
{
#if _TV_BACKGROUND_OPTION_SUPPORT
//20081018 ccy modify
if (GET_TV_BACKGROUND()==0)
#else
if (0)//(GET_TV_BACKGROUND()==0)
#endif
{
CScalerPageSelect(_PAGE8);
CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0);
//CVideoDisplaySet();
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 |_BIT3 |_BIT1 | _BIT0));
// if(Panel[0].PanelConfig&_BIT3 == 0)
// CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (0));
// else
// CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (_BIT3));
CAdjustBackgroundColor(0,0,0x00);
}
//20070401
else
{
//20081027 CCY MODIFY
CScalerPageSelect(_PAGE8);
CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0x20);
//CModeSetFreeRun();
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0));
//20070331
CAdjustBackgroundColor(0,0,0xff);
}
}
}
}
#if _TUNER_TYPE!=_TUNER_NONE
void CTvScanSetBackground(BYTE display)
{
display = display;
#if 1//(_TV_BACKGROUND_OPTION_SUPPORT)
//DebugPrintf("\nTVScan:bg=%d\n",GET_TV_BACKGROUND());
//20080829 ccy modify
if ((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_TV_PORT))
{
if(0)// (GET_TV_BACKGROUND()==0)//20081013 ccy modify //delect by dengyi 2010 01 07
{
CScalerPageSelect(_PAGE8);
CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0xB0); //Enable snow noise. zhang_dc 2008.01.28
//CVideoDisplaySet();
//CScalerSetBit(_VDISP_CTRL_28, ~(_BIT5 | _BIT3 | _BIT1 | _BIT0),(_BIT1 | _BIT0));
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT7 |_BIT3 |_BIT1 | _BIT0));
//czl 080506
// if(Panel[0].PanelConfig&_BIT3 == 0)
// CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (0));
// else
// CScalerSetBit(_VDISP_CTRL_28, ~( _BIT3), (_BIT3));
//20070401
CAdjustBackgroundColor(0,0,0x00);
}
else
{
CScalerPageSelect(_PAGE8);
CScalerSetBit(_P8_OUTPUT_CTRL_A7, 0x4f, 0x20); //Disable snow noise. zhang_dc 2008.01.28
//CTimerReactiveNosignal_Icon_Powersaving(1); //dong disable 20091026
//CModeSetFreeRun();
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT7 | _BIT5 | _BIT3 | _BIT1 | _BIT0), (_BIT5 | _BIT1 | _BIT0));
CAdjustBackgroundColor(0x00, 0x00, 0xff);
}
}
/*
{
CVideoDisplaySet();
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT5 | _BIT3 | _BIT1 | _BIT0),(_BIT1 | _BIT0));
CAdjustBackgroundColor(0x00, 0x00, 0x00);
}
else
{
CModeSetFreeRun();
CAdjustBackgroundColor(0x00, 0x00, 0xff);//20080901 ccy modify
CScalerSetBit(_VDISP_CTRL_28, ~_BIT3, _BIT5); // display output background & free running mode
}
*/
#else
CModeSetFreeRun();
CAdjustBackgroundColor(_TV_SCAN_BG_RED,_TV_SCAN_BG_GREEN,_TV_SCAN_BG_BLUE);
CScalerSetBit(_VDISP_CTRL_28, ~_BIT3, _BIT5); // display output background & free running mode
#endif
}
#endif //#if _TUNER_TYPE!=_TUNER_NONE
//added by czl 100118
void CTvVideoColorStandardsetting(BYTE usvideocolorsys)
{
UINT8 uctemp;
CTunerSetColor(usvideocolorsys);
CScalerPageSelect(_PAGE8);
switch(usvideocolorsys)
{
case _TV_VIDEO_SYS_NTSC:
uctemp = 0x00;
break;
case _TV_VIDEO_SYS_PAL:
if(GET_CURR_AUDIO_SYS() == _TV_AUDIO_SYS_M)
uctemp = 0x01;
else if(GET_CURR_AUDIO_SYS() == _TV_AUDIO_SYS_N)
uctemp = 0x03;
else
uctemp = 0x06;
break;
case _TV_VIDEO_SYS_SECAM:
uctemp = 0x07;
break;
case _TV_VIDEO_SYS_AUTO:
default:
uctemp = 0x80;
break;
}
if(uctemp == 0x80){
CScalerSetByte(_P8_MANUAL_MODE_D2,0x00);
CTimerDelayXms(200);
CScalerSetByte(_P8_MANUAL_MODE_D2,uctemp);
}
CScalerPageSelect(_PAGE9);
CScalerSetByte(_P9_CKILL_B5,0x87);
}