?? scaler.c
字號:
#endif
}
void LoadADC_Gain(void)
{
Byte Temp;
if(FuncBuf[pVIDEOSOURCE] == 2){
FuncBuf[pROFFSET] = Read24C16(ep_YPbPr_R_Offset);
Temp = FuncBuf[pROFFSET];
WriteIIC563(0x003,Temp);
FuncBuf[pGOFFSET] = Read24C16(ep_YPbPr_G_Offset);
Temp = FuncBuf[pGOFFSET];
WriteIIC563(0x006,Temp);
FuncBuf[pBOFFSET] = Read24C16(ep_YPbPr_B_Offset);
Temp = FuncBuf[pBOFFSET];
WriteIIC563(0x009,Temp);
}
else{
FuncBuf[pROFFSET] = Read24C16(ep_ADC_R_Offset);
Temp = FuncBuf[pROFFSET];
WriteIIC563(0x003,Temp);
FuncBuf[pGOFFSET] = Read24C16(ep_ADC_G_Offset);
Temp = FuncBuf[pGOFFSET];
WriteIIC563(0x006,Temp);
FuncBuf[pBOFFSET] = Read24C16(ep_ADC_B_Offset);
Temp = FuncBuf[pBOFFSET];
WriteIIC563(0x009,Temp);
}
FuncBuf[pRADC] = Read24C16(ep_ADC_R_Gain);
WriteIIC563(0x001,FuncBuf[pRADC]);
FuncBuf[pGADC] = Read24C16(ep_ADC_G_Gain);
WriteIIC563(0x004,FuncBuf[pGADC]);
FuncBuf[pBADC] = Read24C16(ep_ADC_B_Gain);
WriteIIC563(0x007,FuncBuf[pBADC]);
//Set backend gain
#if ContrastBlock == sRGBGain
WriteIIC563(0x061,0x0d);
WriteIIC563(0x063,0x80);
WriteIIC563(0x061,0x0e);
WriteIIC563(0x063,0x80);
WriteIIC563(0x061,0x0f);
WriteIIC563(0x063,0x80);
#endif
}
void SetADCGain(Byte Color)
{
Word value;
value = (unsigned short)FuncBuf[Color];
switch(Color)
{
case pRADC:
WriteIIC563(0x001,value);
break;
case pGADC:
WriteIIC563(0x004,value);
break;
case pBADC:
WriteIIC563(0x007,value);
break;
}
}
void SetADCOffset(Byte Color)
{
Word value;
value = (unsigned short)FuncBuf[Color];
switch(Color)
{
case pROFFSET:
WriteIIC563(0x003,value);
break;
case pGOFFSET:
WriteIIC563(0x006,value);
break;
case pBOFFSET:
WriteIIC563(0x009,value);
break;
}
}
void SetLightContrast(void)
{
Word value;
#if PRINT_MESSAGE
printf("FuncBuf[pLIGHTCONTRAST] = %x\n",(unsigned short)FuncBuf[pLIGHTCONTRAST]);
#endif
value = FuncBuf[pLIGHTCONTRAST] * 255 / 100; //78 ---- 178
WriteIIC563(0x061,0x0c);
WriteIIC563(0x13a,value);
}
void SetLightBrightness(void)
{
Byte value;
value = 78 + FuncBuf[pLIGHTBRIGHT];
if(value > 0x7f)
value &= 0x7f;
else
value |= 0x80;
WriteIIC563(0x061,0x0c);
WriteIIC563(0x13b,value);
}
void SetLightHS(void)
{
// Horizontal Start
unsigned long value;
//if(FuncBuf[pVIDEOSOURCE] < 3)
value = ReadWordIIC563(0x36);
//else
// value = ReadWordIIC563(0x5b);
value = (unsigned long)FuncBuf[pLIGHTHSTART] * value / 100;
WriteWordIIC563(0x132,value);
#if PRINT_MESSAGE
printf("Light HP_Start = %d\n",(unsigned short)value);
#endif
}
void SetLightHW(void)
{
// Horizontal width
unsigned long value;
//if(FuncBuf[pVIDEOSOURCE] < 3)
value = ReadWordIIC563(0x36);
//else
// value = ReadWordIIC563(0x5b);
value = (unsigned long)FuncBuf[pLIGHTHWIDTH] * value / 100;
WriteWordIIC563(0x134,(value ? value : 1));
#if PRINT_MESSAGE
printf("Light H Width = %d\n",(unsigned short)value);
#endif
}
void SetLightVS(void)
{
// Vertical Start
unsigned long value;
//if(FuncBuf[pVIDEOSOURCE] < 3)
value = ReadWordIIC563(0x32);
//else
// value = ReadWordIIC563(0x57) / 2;
value = (unsigned long)FuncBuf[pLIGHTVSTART] * value / 100;
WriteWordIIC563(0x136,value);
#if PRINT_MESSAGE
printf("Light VP_Start = %d\n",(unsigned short)value);
#endif
}
void SetLightVH(void)
{
// Vertical Hight
unsigned long value;
//if(FuncBuf[pVIDEOSOURCE] < 3)
value = ReadWordIIC563(0x32);
//else
// value = ReadWordIIC563(0x57) / 2;
value = (unsigned long)FuncBuf[pLIGHTVHIGHT] * value / 100;
WriteWordIIC563(0x138,(value ? value : 1));
#if PRINT_MESSAGE
printf("Light V Hight = %d\n",(unsigned short)value);
#endif
}
/*
#ifdef X17
void SetScalerAV(void)
{
Byte i;
Word code AvTable60[20][2]={
0x055,0x0010,
0x053,0x000f,
0x057,0x01df,
0x059,0x008b,
0x05b,0x02c2,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
Word code AvTable50[20][2]={
0x055,0x0012,
0x053,0x0012,
0x057,0x023f,
0x059,0x009d,
0x05b,0x02a3,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
if(Video_60Hz) //60Hz
{
//WriteIIC563(0x042,0x08);
SetDPLL(110000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable60[i][0],AvTable60[i][1]);
}
else //50Hz
{
//WriteIIC563(0x042,0x0b);
SetDPLL(90000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable50[i][0],AvTable50[i][1]);
}
WriteIIC563(0x072,0x00); //Sync off
WriteIIC563(0x154,0x00);
WriteIIC563(0x041,0x00);
WriteIIC563(0x179,0x07);
WriteIIC563(0x040,0x43); //auto detect on
WriteIIC563(0x16e,0x47);
Sleep(200);
WriteIIC563(0x040,0x47); //auto detect off
WriteIIC563(0x102,0x01); //power down ADC
Sleep(200);
//FastMuteOff();
SetLightHS();
SetLightHW();
SetLightVS();
SetLightVH();
BackLightOn();
//ShowSource();
}
#endif
#ifdef X19
void SetScalerAV(void)
{
Byte i;
Word code AvTable60[20][2]={
0x055,0x0010,
0x053,0x000f,
0x057,0x01df,
0x059,0x008b,
0x05b,0x02c2,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
Word code AvTable50[20][2]={
0x055,0x0012,
0x053,0x0012,
0x057,0x023f,
0x059,0x009d,
0x05b,0x02a3,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
if(Video_60Hz) //60Hz
{
//WriteIIC563(0x042,0x08);
SetDPLL(110000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable60[i][0],AvTable60[i][1]);
}
else //50Hz
{
//WriteIIC563(0x042,0x0b);
SetDPLL(90000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable50[i][0],AvTable50[i][1]);
}
WriteIIC563(0x072,0x00); //Sync off
WriteIIC563(0x154,0x00);
WriteIIC563(0x041,0x00);
WriteIIC563(0x179,0x07);
WriteIIC563(0x040,0x03); //auto detect on
WriteIIC563(0x16e,0x47);
Sleep(200);
WriteIIC563(0x040,0x47); //auto detect off
WriteIIC563(0x102,0x01); //power down ADC
Sleep(200);
//FastMuteOff();
SetLightHS();
SetLightHW();
SetLightVS();
SetLightVH();
BackLightOn();
//ShowSource();
}
#endif
#ifdef X15
void SetScalerAV(void)
{
Byte i;
Word code AvTable60[20][2]={
//0x055,0x0017,
//0x053,0x0017,
//0x057,0x01df,
//0x059,0x009a,
//0x05b,0x02ba,
0x055,0x0010,
0x053,0x000f,
0x057,0x01df,
0x059,0x008b,
0x05b,0x02c2,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
Word code AvTable50[20][2]={
0x055,0x0012,
0x053,0x0012,
0x057,0x023f,
0x059,0x009d,
0x05b,0x02a3,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
if(Video_60Hz) //60Hz
{
//WriteIIC563(0x042,0x09);
SetDPLL(80000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable60[i][0],AvTable60[i][1]);
}
else //50Hz
{
//WriteIIC563(0x042,0x0b);
SetDPLL(65000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable50[i][0],AvTable50[i][1]);
}
WriteIIC563(0x072,0x00); //Sync off
WriteIIC563(0x154,0x00);
WriteIIC563(0x041,0x00);
WriteIIC563(0x179,0x07);
WriteIIC563(0x040,0x43); //auto detect on
WriteIIC563(0x16e,0x47);
Sleep(200);
SetLightHS();
SetLightHW();
SetLightVS();
SetLightVH();
WriteIIC563(0x040,0x47); //auto detect off
WriteIIC563(0x102,0x01); //power down ADC
Sleep(200);
//FastMuteOff();
BackLightOn();
//ShowSource();
}
#endif
#ifdef X21
void SetScalerAV(void)
{
Byte i;
Word code AvTable60[20][2]={
0x055,0x0010,
0x053,0x000f,
0x057,0x01df,
0x059,0x008b,
0x05b,0x02c2,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
Word code AvTable50[20][2]={
0x055,0x0012,
0x053,0x0012,
0x057,0x023f,
0x059,0x009d,
0x05b,0x02a3,
0x15b,PanelTypVTotal,
0x15e,PanelMinHTotal,
0x15d,PanelMinVSyncWidth,
0x160,PanelMinHSyncWidth,
0x162,PanelVActiveStart,
0x166,PanelHActiveStart,
0x164,PanelHeight,
0x168,PanelWidth,
0x16f,PanelVActiveStart,
0x171,PanelHeight,
0x175,PanelWidth,
0x17a,PanelVActiveStart,
0x17c,PanelHeight,
0x17e,PanelHActiveStart,
0x180,PanelWidth,
};
if(Video_60Hz) //60Hz
{
//WriteIIC563(0x042,0x08);
SetDPLL(140000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable60[i][0],AvTable60[i][1]);
}
else //50Hz
{
//WriteIIC563(0x042,0x0b);
SetDPLL(120000000);
for(i=0;i<20;i++)
WriteWordIIC563(AvTable50[i][0],AvTable50[i][1]);
}
WriteIIC563(0x072,0x00); //Sync off
WriteIIC563(0x154,0x00);
WriteIIC563(0x041,0x00);
WriteIIC563(0x179,0x07);
WriteIIC563(0x040,0x03); //auto detect on
WriteIIC563(0x16e,0x47);
Sleep(200);
WriteIIC563(0x040,0x47); //auto detect off
WriteIIC563(0x102,0x01); //power down ADC
Sleep(200);
//FastMuteOff();
SetLightHS();
SetLightHW();
SetLightVS();
SetLightVH();
BackLightOn();
//ShowSource();
}
#endif
*/
void SetScalerMode(void)
{
//Byte temp;
if(ScalerMode && (ResolutionPtr == 4 || (ResolutionPtr >= 6 && ResolutionPtr < 13))){
WriteWordIIC563(0x162, PanelMinVSyncWidth + 1);//Jacky 20040708 acept ratio
WriteWordIIC563(0x16f, PanelMinVSyncWidth + 33);//Jacky 20040708 acept ratio
WriteWordIIC563(0x164, PanelWidth/4*3);//Jacky 20040708 acept ratio
WriteWordIIC563(0x171, PanelWidth/4*3);//Jacky 20040708 acept ratio
SetScaler();
WriteWordIIC563(0x164, PanelHeight); //Jacky 20040708 acept ratio
WriteIIC563(0x150,DisplayControl & (~BIT_5));//Jacky 20040708 acept ratio
}
else{
WriteIIC563(0x150,DisplayControl);//Jacky 20040708 acept ratio
WriteWordIIC563(0x162, PanelVActiveStart);//Jacky 20040708 acept ratio
WriteWordIIC563(0x16f, PanelVActiveStart);//Jacky 20040708 acept ratio
WriteWordIIC563(0x164, PanelHeight);//Jacky 20040708 acept ratio
WriteWordIIC563(0x171, PanelHeight);//Jacky 20040708 acept ratio
SetScaler();
}
}
void DVIBandWidthDetection(void)
{
Byte DVI_Clock_Temp,temp143;
//WriteIIC563(0x143,0x30);//Jacky 20041221
WriteIIC563(0x01d,0x1F);//Jacky 20050118
WriteIIC563(0x145,0x00);//Jacky 20041221
WriteIIC563(0x144,0x00);
// Reset DVI PLL
temp143 = ReadIIC563(0x143);
WriteIIC563(0x143,temp143 |0x80);
WriteIIC563(0x143,temp143 & 0x7f);
Sleep(20);
LocalTimer = 5;
DVI_Clock = 0;
do{
DVI_Clock_Temp = ReadIIC563(0x016);
if(abs(DVI_Clock - DVI_Clock_Temp) > 2){
DVI_Clock = DVI_Clock_Temp;
LocalTimer = 5;
}
}while(LocalTimer != 0); //Jacky 20050107
//printf("DVI clock = %d\n\r",(unsigned short)DVI_Clock);
if(DVI_Clock < 20)
return;
if(DVI_Clock <= 50)
{
WriteIIC563(0x144,0x04);//Jacky 20041221
WriteIIC563(0x145,0x03);//Jacky 20041221
}
// Reset DVI PLL
temp143 = ReadIIC563(0x143);
WriteIIC563(0x143,temp143 |0x80);
WriteIIC563(0x143,temp143 & 0x7f);
if(DVI_Clock <= 140 && DVI_Clock >= 100)
WriteIIC563(0x01b,0x0d); //DVI DPLL FSM mode select
else
WriteIIC563(0x01b,0x00); //DVI DPLL FSM mode select
//WriteIIC563(0x143,0x00);//Jacky 20041221
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -