📄 sync.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : Sync.c No.0002
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __SYNC__
#include "..\Header\Include.h"
//--------------------------------------------------
// Description : Measure sync type
// Input Value : None
// Output Value : Return _TRUE if succeed
//--------------------------------------------------
bit CSyncHandler(void)
{
if(GET_INPUTSYNC_TYPE() == _NO_SYNC_STATE)
{
if(!CSourceHandler())
{
SET_INPUTSYNC_TYPE(_NO_SYNC_STATE); //if no signal in any port, set to no sync state. note by zhang_dc
return _FALSE;
}
SET_INPUTSYNC_TYPE(CSyncMeasureSyncType()); //if find signal, measure sync type and set to it. note by zhang_dc
switch(GET_INPUTSYNC_TYPE())
{
case _NO_SYNC_STATE:
SET_INPUTSOURCE_TYPE(_SOURCE_NONE);
return _FALSE;
break;
case _SS_STATE:
case _CS_STATE:
case _SOG_STATE:
#if(_VIDEO_SUPPORT == _ON)
CVIDEO_POWER_OFF();
CVideoDataEnable(_OFF);
CVideoPowerState(_VIDEO_POWER_SAVING);
#endif
/*
#if(_YPBPR_SUPPORT == _ON)
if((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _YPBPR_A0_PORT) || (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _YPBPR_A1_PORT))
{
SET_INPUTSOURCE_TYPE(_SOURCE_YPBPR);
}
else
#endif
{
SET_INPUTSOURCE_TYPE(_SOURCE_VGA);
}
*/
//version 200D
SET_INPUTSOURCE_TYPE(_SOURCE_VGA);
return _TRUE;
break;
//version 200D add
#if(_YPBPR_SUPPORT == _ON)
case _SOY_STATE:
SET_INPUTSOURCE_TYPE(_SOURCE_YPBPR);
return _TRUE;
#endif
#if(_TMDS_SUPPORT == _ON)
case _DSS_STATE:
#if(_VIDEO_SUPPORT == _ON)
CVIDEO_POWER_OFF();
CVideoDataEnable(_OFF);
CVideoPowerState(_VIDEO_POWER_SAVING);
#endif
SET_INPUTSOURCE_TYPE(_SOURCE_DVI);
return _TRUE;
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _VIDEO8_STATE:
//Video power has been on while in port searching.
SET_INPUTSOURCE_TYPE(_SOURCE_VIDEO8);
return _TRUE;
break;
#endif
default:
SET_INPUTSYNC_TYPE(_NO_SYNC_STATE);
SET_INPUTSOURCE_TYPE(_SOURCE_NONE);
return _FALSE;
}
}
/*
else //if current state is having signal. note by zhang_dc
{
switch(GET_INPUTSOURCE_TYPE())
{
//Measure HSYNC/VSYNC Source Select. note by zhang_dc
#if(_YPBPR_SUPPORT == _ON)
case _SOURCE_YPBPR:
#endif
case _SOURCE_VGA:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1); //AHS/ADC_VS. note by zhang_dc
break;
#if(_TMDS_SUPPORT == _ON)
case _SOURCE_DVI:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00); //TMDS. note by zhang_dc
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _SOURCE_VIDEO8:
//CVideoPowerState(_VIDEO_NORMAL); //Add by zhang_dc
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0); //VIDEO8. note by zhang_dc
break;
#endif
}
return _TRUE;
}
*/
// .xhu, 20050803, update
else
{
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
//Measure HSYNC/VSYNC Source Select. note by zhang_dc
#if(_YPBPR_SUPPORT == _ON)
case _YPBPR_A0_PORT:
case _YPBPR_A1_PORT:
#endif
case _DSUB_A0_PORT:
case _DSUB_A1_PORT:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1); //AHS/ADC_VS. note by zhang_dc
break;
#if(_TMDS_SUPPORT == _ON)
case _DVI_I_A0_PORT:
case _DVI_I_A1_PORT:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00); //TMDS. note by zhang_dc
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _VIDEO_AV_PORT:
case _VIDEO_AV2_PORT:
//CVideoPowerState(_VIDEO_NORMAL); //Add by zhang_dc
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0); //VIDEO8. note by zhang_dc
break;
#endif
}
/*
//version 200D
switch(GET_INPUTSOURCE_TYPE())
{
#if(_YPBPR_SUPPORT == _ON)
case _SOURCE_YPBPR:
#endif
case _SOURCE_VGA:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1);
break;
#if(_TMDS_SUPPORT == _ON)
case _SOURCE_DVI:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00);
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _SOURCE_VIDEO8:
CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0);
break;
#endif
}
*/
return _TRUE;
}
}
/* v200c
//--------------------------------------------------
// Description : Measure sync type
// Input Value : None
// Output Value : Return sync type we measured
//--------------------------------------------------
BYTE CSyncMeasureSyncType(void) //Updated by Realtek at 20050617
{
BYTE synctypetemp;
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
#if(_YPBPR_SUPPORT == _ON)
case _YPBPR_A0_PORT:
#endif
case _DSUB_A0_PORT:
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
break;
#if(_YPBPR_SUPPORT == _ON)
case _YPBPR_A1_PORT:
#endif
case _DSUB_A1_PORT:
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
break;
#if(_TMDS_SUPPORT == _ON)
case _DVI_PORT:
synctypetemp = CSyncSearchSyncTypeDVI();
break;
case _DVI_I_A0_PORT:
synctypetemp = CSyncSearchSyncTypeDVI();
if(synctypetemp == _NO_SYNC_STATE)
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
}
break;
case _DVI_I_A1_PORT:
synctypetemp = CSyncSearchSyncTypeDVI();
if(synctypetemp == _NO_SYNC_STATE)
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
}
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _VIDEO_SV_PORT:
CVideoIsExist(_SV_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
case _VIDEO_AV_PORT:
CVideoIsExist(_AV_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
case _VIDEO_AV2_PORT:
CVideoIsExist(_AV2_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
#endif
}
if((synctypetemp != _SS_STATE) && (synctypetemp != _VIDEO8_STATE))
{
CAdjustSyncProcessorMeasureStart();
if(CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent))
{
if(CModeMeasureData())
{
CSyncModifyPolarityVGA();
}
}
}
return synctypetemp;
}
*/
//version 200D
//--------------------------------------------------
// Description : Measure sync type
// Input Value : None
// Output Value : Return sync type we measured
//--------------------------------------------------
BYTE CSyncMeasureSyncType(void)
{
BYTE synctypetemp;
switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
{
#if(_YPBPR_SUPPORT == _ON)
case _YPBPR_A0_PORT:
#endif
case _DSUB_A0_PORT:
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
break;
#if(_YPBPR_SUPPORT == _ON)
case _YPBPR_A1_PORT:
#endif
case _DSUB_A1_PORT:
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
break;
#if(_TMDS_SUPPORT == _ON)
case _DVI_PORT:
synctypetemp = CSyncSearchSyncTypeDVI();
break;
case _DVI_I_A0_PORT:
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
if(GET_DVI_I_SOURCE_SWITCH())
#endif
{
synctypetemp = CSyncSearchSyncTypeDVI();
if(synctypetemp == _NO_SYNC_STATE)
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
}
}
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
else
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
if(synctypetemp == _NO_SYNC_STATE)
{
synctypetemp = CSyncSearchSyncTypeDVI();
}
}
#endif
break;
case _DVI_I_A1_PORT:
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
if(GET_DVI_I_SOURCE_SWITCH())
#endif
{
synctypetemp = CSyncSearchSyncTypeDVI();
if(synctypetemp == _NO_SYNC_STATE)
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
}
}
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
else
{
CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
synctypetemp = CSyncSearchSyncTypeVGA();
if(synctypetemp == _NO_SYNC_STATE)
{
synctypetemp = CSyncSearchSyncTypeDVI();
}
}
#endif
break;
#endif
#if(_VIDEO_SUPPORT == _ON)
case _VIDEO_SV_PORT:
CVideoIsExist(_SV_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
case _VIDEO_AV_PORT:
CVideoIsExist(_AV_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
case _VIDEO_AV2_PORT:
CVideoIsExist(_AV2_CHANNEL);
synctypetemp = _VIDEO8_STATE;
break;
#endif
}
// Modify polarity
if((synctypetemp != _SS_STATE) && (synctypetemp != _VIDEO8_STATE))
{
CAdjustSyncProcessorMeasureStart();
if(CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent))
{
if(CModeMeasureData())
{
CSyncModifyPolarityVGA();
}
else
{
synctypetemp = _NO_SYNC_STATE;
}
}
else
{
synctypetemp = _NO_SYNC_STATE;
}
}
return synctypetemp;
}
/*
//--------------------------------------------------
// Description : Search VGA sync type
// Input Value : None
// Output Value : Return sync type
//--------------------------------------------------
BYTE CSyncSearchSyncTypeVGA(void)
{
#define _SYNCTYPE_CONFIRM_TIMES 3 // 2.Updated by Realtek at 20050617
BYTE synctypeprev, synctypecurr, cnt;
cnt = _SYNCTYPE_CONFIRM_TIMES;
do
{
synctypecurr = CSyncGetSyncTypeStep1VGA();
if(synctypecurr == _CS_STATE)
synctypecurr = CSyncGetSyncTypeStep2VGA();
if(cnt == _SYNCTYPE_CONFIRM_TIMES)
{
synctypeprev = synctypecurr;
continue;
}
if(synctypecurr != synctypeprev)
{
return _NO_SYNC_STATE;
}
}
while(--cnt);
return synctypecurr;
#undef _SYNCTYPE_CONFIRM_TIMES
}
*/
//version 200D
//--------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -