📄 scaler.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : Scaler.c No.0002
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __SCALER__
#include "..\Header\Include.h"
/*
//--------------------------------------------------
// Description : Initial settings for scaler
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitial(void)
{
// Software reset for scaler
CScalerSetBit(_HOST_CTRL_01, ~_BIT0, _BIT0);
CTimerDelayXms(20);
CScalerSetBit(_HOST_CTRL_01, ~_BIT0, 0x00);
CScalerReset();
if(!GET_POWERSTATUS())
{
CPowerDPLLOff();
CScalerSetByte(_HOST_CTRL_01, 0x02);
CScalerDisableDisplayOutput();
}
}
*/
// version 200D
//--------------------------------------------------
// Description : Initial settings for scaler
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitial(void)
{
// Software reset for scaler
CScalerSetBit(_HOST_CTRL_01, ~_BIT0, _BIT0);
CTimerDelayXms(20);
CScalerSetBit(_HOST_CTRL_01, ~_BIT0, 0x00);
CScalerReset();
}
//#if((_SCALER_TYPE == _RTD2023L) || (_SCALER_TYPE == _RTD2023S))
//versoion 200D
#if((_SCALER_TYPE == _RTD2023L) || (_SCALER_TYPE == _RTD2023S) || (_SCALER_TYPE == _RTD2023L_SHRINK))
/*
//--------------------------------------------------
// Description : Initial settings for RTD2023L/S scaler
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialForRTD2023(void)
{
BYTE temp = 0;
do
{
CScalerSetByte(0xcf, 0xf0);
CTimerDelayXms(3);
CScalerRead(_ID_REG_00, 1, &temp, _NON_AUTOINC);
}
while(temp != 0x11);
}
*/
//version 200D
//--------------------------------------------------
// Description : Initial settings for RTD2023L/S scaler
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialForRTD2023(void)
{
BYTE temp = 0;
do
{
CScalerSetByte(0xcf, 0xf0);
CTimerDelayXms(3);
CScalerRead(_ID_REG_00, 1, &temp, _NON_AUTOINC);
}
#if(_SCALER_TYPE == _RTD2023L_SHRINK)
while(temp != 0x19);
#else
while(temp != 0x11);
#endif
}
#endif
#if(_SCALER_TYPE == _RTD2023S)
//--------------------------------------------------
// Description : Initial settings for RTD2023L/S scaler
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerResetInForRTD2023(void)
{
bSCALERRESET = _LOW;
CTimerDelayXms(10);
bSCALERRESET = _HIGH;
CTimerDelayXms(10);
bSCALERRESET = _LOW;
CTimerDelayXms(5);
}
#endif
//--------------------------------------------------
// Description : Reset scaler process
// Input Value : None
// Output Value : None
//--------------------------------------------------
/*
void CScalerReset(void)
{
// Wake scaler up
CScalerSetByte(_HOST_CTRL_01, 0x00);
CScalerCodeW(tSCALER_POWERUP_INITIAL);
CMiscSetPinShare();
CAdjustDisableWatchDog(_WD_ALL);
CMiscClearStatusRegister();
CScalerInitialDisplayInterface();
CScalerInitialDisplayOutput();
CModeSetFreeRun();
//CAdjustBackgroundColor(_BGND_COLOR_R, _BGND_COLOR_G, _BGND_COLOR_B); //x.hu
CScalerEnableDisplayOutput();
// OSD power up initial
CScalerCodeW(tOSD_POWERUP_INITIAL);
CAdjustTMDSErrorCorrectionOn();
CAdjustColorPalette(tPALETTE_0);
CAdjustSRGB();
CAdjustGamma(_COMPACT_GAMMA_NORMAL_TABLE, tGAMMA_COMPACT1, tGAMMA_COMPACT1, tGAMMA_COMPACT1);
if((Panel.PanelConfig & _BIT7) == _DISP_18_BIT)
CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_6);
else if((Panel.PanelConfig & _BIT7) == _DISP_24_BIT)
CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_8);
CScalerSetBit(_IPH_ACT_WID_H_0B, ~(_BIT6 | _BIT5 | _BIT4), ((_ADC_INPUT_SWAP_RG << 6) | (_ADC_INPUT_SWAP_RB << 5)| (_ADC_INPUT_SWAP_GB << 4)));
CAdjustBrightness();
CAdjustContrast();
//CAdjustHDCP();
}
*/
//version 200D
void CScalerReset(void)
{
// Wake scaler up
CScalerSetByte(_HOST_CTRL_01, 0x00);
CScalerCodeW(tSCALER_POWERUP_INITIAL);
CMiscSetPinShare();
CAdjustDisableWatchDog(_WD_ALL);
CMiscClearStatusRegister();
CScalerInitialDisplayInterface();
CScalerInitialDisplayOutput();
CModeSetFreeRun();
if(GET_POWERSTATUS())
{
CScalerEnableDisplayOutput();
// OSD power up initial
CScalerCodeW(tOSD_POWERUP_INITIAL);
CAdjustTMDSErrorCorrectionOn();
CAdjustColorPalette(tPALETTE_0);
CAdjustSRGB();
CAdjustGamma(_COMPACT_GAMMA_NORMAL_TABLE, tGAMMA_COMPACT1, tGAMMA_COMPACT1, tGAMMA_COMPACT1);
if((Panel.PanelConfig & _BIT7) == _DISP_18_BIT)
CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_6);
else if((Panel.PanelConfig & _BIT7) == _DISP_24_BIT)
CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_8);
CScalerSetBit(_IPH_ACT_WID_H_0B, ~(_BIT6 | _BIT5 | _BIT4), ((_ADC_INPUT_SWAP_RG << 6) | (_ADC_INPUT_SWAP_RB << 5)| (_ADC_INPUT_SWAP_GB << 4)));
CAdjustBrightness();
CAdjustContrast();
//CAdjustHDCP();
}
else
{
CPowerDPLLOff();
CScalerSetByte(_HOST_CTRL_01, 0x02);
CScalerDisableDisplayOutput();
}
}
//--------------------------------------------------
// Description : Initial display interface for TTL, LVDS and RSDS
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialDisplayInterface(void)
{
switch(Panel.PanelStyle)
{
case _PANEL_TCON:
CScalerCodeW(tLVDS_INITIAL); // add by cooriee 050521 for TCON
CScalerCodeW(tTCON_INITIAL);
break;
case _PANEL_TTL:
CScalerCodeW(tLVDS_INITIAL); // add by cooriee 050521 for TTL
CScalerCodeW(tTTL_INITIAL);
break;
case _PANEL_LVDS:
CScalerCodeW(tLVDS_INITIAL);
break;
case _PANEL_RSDS:
CScalerCodeW(tLVDS_INITIAL);
CScalerCodeW(tRSDS_INITIAL);
CScalerSetByte(_TCON_ADDR_PORT_8B, 0x02);
CScalerSetByte(_TCON_DATA_PORT_8C, Panel.PanelConfig & (_BIT2 | _BIT1 | _BIT0));
break;
}
}
//--------------------------------------------------
// Description : Initial display output from Panel.h settings
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialDisplayOutput(void)
{
// Display signal control settings
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT4 | _BIT2), ((Panel.PanelConfig & _BIT7) >> 3) | ((Panel.PanelConfig & _BIT3) >> 1));
CScalerSetByte(_VDISP_SIGINV_29, _DISPLAY_CTRL | (Panel.PanelConfig & (_BIT6 | _BIT5 | _BIT4)));
// EVAN 050514 SET DCLK DELAY
#if(_PCB_TYPE == _PCB_PTX23A21)
#if(_PANEL_TYPE == _CPT_CLAA150XG08)
CScalerSetByte(_DISP_TIMING_46, 0x11); //0x31// maybe change next
#endif
#endif
}
//--------------------------------------------------
// Description : Enable display output
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerEnableDisplayOutput(void)
{
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT6 | _BIT1), _BIT1);
CScalerSetBit(_VDISP_CTRL_28, ~_BIT0, _BIT0);
CScalerSetBit(_VDISP_CTRL_28, ~_BIT7, _BIT7);
CScalerSetBit(_VDISP_CTRL_28, ~_BIT7, 0x00);
}
//--------------------------------------------------
// Description : Disable display output
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CScalerDisableDisplayOutput(void)
{
if(Panel.PanelStyle == _PANEL_TTL)
{
CScalerSetBit(_VDISP_SIGINV_29, ~(_BIT2 | _BIT1 | _BIT0), 0x00);
}
CScalerSetBit(_VDISP_CTRL_28, ~(_BIT6 | _BIT1), _BIT6);
CScalerSetBit(_VDISP_CTRL_28, ~_BIT0, 0x00);
}
//----------------------------------------------------------------------------------------------------
// Scaler communication basic function
//----------------------------------------------------------------------------------------------------
void CScalerSendReadStop(void)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)
SETSCALERSCSB();
SETSCALERSCLK();
#elif(_HOST_INTERFACE == _SERIAL_PORT)
SETSCALERSCLK();
SETSCALERSCSB();
#endif
}
void CScalerSendWriteStop(void)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)
SETSCALERSCLK();
SETSCALERSCSB();
#elif(_HOST_INTERFACE == _SERIAL_PORT)
CLRSCALERSCLK();
SETSCALERSCLK();
SETSCALERSCLK();
SETSCALERSCSB();
#endif
}
void CScalerSendAddr(BYTE ucAddr, bit bReadWrite, bit bAutoInc)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)
CLRSCALERSCSB();
SETSCALERSDIO0((bit)(ucAddr & 0x01));
SETSCALERSDIO1((bit)(ucAddr & 0x02));
SETSCALERSDIO2((bit)(ucAddr & 0x04));
SETSCALERSDIO3((bit)(ucAddr & 0x08));
CLRSCALERSCLK();
SETSCALERSDIO0((bit)(ucAddr & 0x10));
SETSCALERSDIO1((bit)(ucAddr & 0x20));
SETSCALERSDIO2((bit)(ucAddr & 0x40));
SETSCALERSDIO3((bit)(ucAddr & 0x80));
SETSCALERSCLK();
SETSCALERSDIO0(bReadWrite);
SETSCALERSDIO1(bAutoInc);
CLRSCALERSCLK();
SETSCALERSDIO0(_HIGH);
SETSCALERSDIO1(_HIGH);
SETSCALERSDIO2(_HIGH);
SETSCALERSDIO3(_HIGH);
#elif(_HOST_INTERFACE == _SERIAL_PORT)
CLRSCALERSCSB();
CScalerSendByte(ucAddr);
SETSCALERSDIO3(bReadWrite);
CLRSCALERSCLK();
SETSCALERSDIO3(bAutoInc);
SETSCALERSCLK();
SETSCALERSDIO3(_HIGH);
#endif
}
void CScalerSendByte(BYTE ucValue)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -