?? scaler.lst
字號:
//}
Hr = ReadWordIIC563(0x184);
if(Hr < 0x80){
temp = (float)dclk * (abs(0x80-Hr));
temp2 = temp / ((unsigned long)PanelHeight*dstHtotal);
dclk += temp2;
SetDPLL(dclk);
// printf("temp = %f\r\n",temp);
// printf("DCLK5 = %ld\r\n",dclk);
WaitSetup(8);
//if(H_SYNC_Temp != 0xffff){
// Reg0x154 = 0x02;
// goto ERROR;
//}
}
else if (Hr > (PanelHeight - 0x80)){
temp = (float)dclk * (abs(Hr-0x380));
temp2 = temp / ((unsigned long)PanelHeight*dstHtotal);
dclk -= temp2;
SetDPLL(dclk);
// printf("temp = %f\r\n",temp);
// printf("DCLK6 = %ld\r\n",dclk);
WaitSetup(8);
//if(H_SYNC_Temp != 0xffff){
// Reg0x154 = 0x02;
// goto ERROR;
//}
}
if(SyncMode != 3){
Hr = ReadWordIIC563(0x184);
dstVLockPos = (ReadIIC563(0x178) & 0xf0) >> 4 ;
dstHLockPos = ReadIIC563(0x178) & 0x0f;
dstHLockPos <<= 8;
dstHLockPos = dstHLockPos + ReadIIC563(0x177);
if(ResolutionPtr == 13) //1280x1024
dstVLockPos += 1;
else if(Hresolution == 1280){ //1280x...
if((dstHLockPos + 0x200) > Hresolution)
dstVLockPos += 1;
else
if(Hr < 0x100)
dstHLockPos = 0;
else if(Hr < 0x200)
dstHLockPos = 0xc0;
else if(Hr < 0x300)
dstHLockPos = 0x200;
else
dstHLockPos = 0x300;
}
else if(Hresolution == 1024){ //1024x...
if(Hr < 0x200 && Hr > 0x100)
dstHLockPos += 0xa0;
else if(Hr >= 0x200)
dstHLockPos += 0x200;
}
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 21
else if((Hr > 0x200) && Hresolution != 1152){ //1152x...
if((dstHLockPos + 0x200) > Hresolution)
dstVLockPos += 1;
else
dstHLockPos += 0x200;
}
WriteIIC563(0x151,dstVLockPos);
WriteWordIIC563(0x152,dstHLockPos);
WriteIIC563(0x150,(DisplayControl & ~BIT_6)); //fifo manual lock
// printf("dstVLockPos = %d\r\n",dstVLockPos);
// printf("dstHLockPos = %d\r\n",dstHLockPos);
}
#endif
1234 1
1235 1 #if PANEL != LP_LM170E01
1236 1 dstVLockPos = (ReadIIC563(0x178) & 0xf0) >> 4 ;
1237 1 dstHLockPos = ReadWordIIC563(0x177) & 0x0fff;
1238 1 WriteIIC563(0x151,dstVLockPos);
1239 1 WriteWordIIC563(0x152,dstHLockPos);
1240 1 #endif
1241 1
1242 1 #if Panel_Spread_Spect_En == 0xff
1243 1 WriteIIC563(0x0f5,ReadIIC563(0x0f5)|BIT_0);
1244 1 #endif
1245 1 WriteIIC563(0x154,temp154);
1246 1 if(!DetectBacklight())
1247 1 WriteIIC563(0x154,0x02);
1248 1 WriteWordIIC563(0x15b,dstVtotal); // Display Vtotal
1249 1 WriteWordIIC563(0x15e,dstHtotal); // Display Htotal
1250 1 #if PRINT_MESSAGE
Sleep(40);
dstHtotal = ReadWordIIC563(0x182) & 0x0fff;
printf("dstHtotal = %d\n",dstHtotal);
#endif
1255 1 //WriteIIC563(0x16e,0x01); //Graphic display enable
1256 1 }
1257
1258 void SetDPLL(unsigned long dclk)
1259 {
1260 1 #if 0
Byte i;
unsigned long temp,temp2;
unsigned long code DpllTab[4]={100000,50000,25000,0};
for(i=0;i<4;i++)
if(dclk > DpllTab[i])
break;
WriteIIC563(0x0f0,0x00);
WriteIIC563(0x0f1,0x10+i);
temp = dclk / 1000;
temp2 = dclk % 1000;
switch(i)
{
case 0:
temp2 = temp2 * 131072 / REFCLK ;
temp = temp * 100 * 131072 / REFCLK;
break;
case 1:
temp2 = temp2 * 131072 / REFCLK * 2;
temp = temp * 100 * 131072 / REFCLK * 2;
break;
case 2:
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 22
temp2 = temp2 * 131072 / REFCLK * 4;
temp = temp * 100 * 131072 / REFCLK * 4;
break;
case 3:
temp2 = (dclk % 1000) * 131072 / REFCLK * 8;
temp = (dclk / 10) * 131072 / (REFCLK/10) * 8;
break;
};
temp = temp * 10 + temp2;
WriteIIC563(0x0f2,(unsigned char)temp);
WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
WriteIIC563(0x0f4,(unsigned char)(temp >> 16));
//WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
WriteIIC563(0x0f0,0x23);
#endif
1297 1 Byte i;
1298 1 unsigned long temp;
1299 1 unsigned long code DpllTab[4]={80000000,40000000,20000000,0};//{120000,60000,24000,0};
1300 1 for(i=0;i<4;i++)
1301 1 if(dclk > DpllTab[i])
1302 1 break;
1303 1 WriteIIC563(0x0f1,0x10+i);
1304 1 if(PanelTwoPixelPerClk == 1) //Jacky 20050107
1305 1 WriteIIC563(0x1fb,i * 2);
1306 1 else
1307 1 WriteIIC563(0x1fb,i & 0xFE );
1308 1 switch(i)
1309 1 {
1310 2 case 0:
1311 2 temp = ((float)dclk / 1000) * 131072 / REFCLK;
1312 2 break;
1313 2 case 1:
1314 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 2;
1315 2 break;
1316 2 case 2:
1317 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 4;
1318 2 break;
1319 2 case 3:
1320 2 temp = ((float)dclk / 1000) * 131072 / REFCLK * 8;
1321 2 break;
1322 2 };
1323 1 //printf("dclk ratio=%lx\n",temp);
1324 1 WriteIIC563(0x0f2,(unsigned char)temp);
1325 1 WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
1326 1 WriteIIC563(0x0f4,(unsigned char)(temp >> 16));
1327 1 //WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
1328 1 WriteIIC563(0x0f0,0x03);
1329 1
1330 1 }
1331 /*
1332 void SetLVDS_PLL(unsigned long dclk)
1333 {
1334 Byte i;
1335 float A,B,C,D,E;
1336
1337 A = (float)dclk/1000000;
1338 A = 1000/A/3.5;
1339 B = A/0.266;
1340 C = B/2;
1341 D = B/4;
1342 E = A*9.6 -20.17 + D;
1343 //E = A*9.48 -18.3;
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 23
1344 //E = A*8.89-17;
1345 if(E > B)
1346 E = E-B;
1347 if(E > C)
1348 E = E-C;
1349 if(E < 0)
1350 E = E+C;
1351 i = ReadIIC563(0x157) & 0xe0;
1352 WriteIIC563(0x157, i |(unsigned char)(E+0.5));
1353 }
1354 */
1355 void SetHP(void)
1356 {
1357 1 // Horizontal Start
1358 1 WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
1359 1 #if PRINT_MESSAGE
printf("HP_Start = %d\n",FuncBuf[pHPOSITION]);
#endif
1362 1 }
1363
1364 void SetOsdTrans()
1365 {
1366 1 Byte Attr,TranValue;
1367 1 if(FuncBuf[pTRANSOSD] == 0)
1368 1 Attr = 0;
1369 1 else{
1370 2 Attr = 0x10;
1371 2 TranValue = (FuncBuf[pTRANSOSD]<<3)|(FuncBuf[pTRANSOSD]-1);
1372 2 }
1373 1 //for(i=0;i<4;i++)
1374 1 // {
1375 1 // WriteIIC563(0x0a5,i);
1376 1 // WriteIIC563(0x0aa,Attr);
1377 1 // }
1378 1 WriteIIC563(0x0a5,WINDOW4);
1379 1 WriteIIC563(0x0aa,Attr);
1380 1 WriteWordIIC563(0x0a1,TranValue);
1381 1 }
1382
1383 void SetVP(void)
1384 {
1385 1 // Vertical Start
1386 1 if(Interlance)
1387 1 {
1388 2 WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
1389 2 if(V_SYNC < 550)
1390 2 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]-1);
1391 2 else
1392 2 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
1393 2 }
1394 1 else
1395 1 WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
1396 1 #if PRINT_MESSAGE
printf("VP_Start = %d\n",FuncBuf[pVPOSITION]);
#endif
1399 1 }
1400 /*
1401 void AdjVP(void)
1402 {
1403 unsigned short i;
1404 unsigned char ch;
1405 i = ReadWordIIC563(0x162); //PanelVActiveStart
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 24
1406 //Calculate the delay between bCapture V and Display V delay
1407 dstVdelay = ReadWordIIC563(0x1dc) & 0x0fff;
1408 dstVdelay += PanelHeight;
1409 dstVdelay = ((unsigned long)VTotal * i) / dstVdelay;
1410 if(FuncBuf[pVPOSITION] > dstVdelay)
1411 dstVdelay = FuncBuf[pVPOSITION] - dstVdelay ;
1412 else
1413 dstVdelay = 1;
1414 // printf("Vsync delay = %d lines\r\n",dstVdelay);
1415 dstVdelay = (unsigned long)dstVdelay * 2222 / H_SYNC;
1416 // printf("Vsync delay = %d us\r\n",dstVdelay);
1417 if(FuncBuf[pVPOSITION] > ReadWordIIC563(0x02e)){
1418 ch = ReadIIC563(0x150);
1419 i = ReadWordIIC563(0x182) & 0x0fff;
1420 if((Hresolution == 1152)||(Hresolution== 1280))
1421 WriteWordIIC563(0x15e,i+2); // Display Htotal
1422 else
1423 WriteWordIIC563(0x15e,i+SCFactor); // Display Htotal
1424 WaitSync();
1425 SetVP();
1426
1427 CheckRegPage(0x150);
1428 WriteIIC_WaitVd(Scaler_Addr,0x50,(ch & ~BIT_5));
1429 WriteIIC_WaitVd(Scaler_Addr,0x50,ch);
1430 }
1431 else{
1432 ch = ReadIIC563(0x150);
1433 i = ReadWordIIC563(0x182) & 0x0fff;
1434 if(Hresolution == 1152)
1435 WriteWordIIC563(0x15e,i-1); // Display Htotal
1436 else
1437 WriteWordIIC563(0x15e,i-SCFactor); // Display Htotal
1438 WaitSync();
1439 SetVP();
1440
1441 CheckRegPage(0x150);
1442 WriteIIC_WaitVd(Scaler_Addr,0x50,(ch & ~BIT_5));
1443 WriteIIC_WaitVd(Scaler_Addr,0x50,ch);
1444 }
1445 }
1446 */
1447 void SetSharpness(void)
1448 {
1449 1 Word code H_Sharp_A[]={
1450 1 0x1a,0x14,0x00,0x04,0x0a
1451 1 };
1452 1 Word code H_Sharp_D[]={
1453 1 0x1a,0x14,0x00,0x04,0x0a
1454 1 };
1455 1 Word code V_Sharp[]={
1456 1 0x00,0x00,0x00,0x03,0x05
1457 1 };
1458
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -