Lines Matching refs:SiS_Pr

85 static unsigned short	SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr);
86 static void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
93 SiS_UnLockCRT2(struct SiS_Private *SiS_Pr) in SiS_UnLockCRT2() argument
95 if(SiS_Pr->ChipType == XGI_20) in SiS_UnLockCRT2()
97 else if(SiS_Pr->ChipType >= SIS_315H) in SiS_UnLockCRT2()
98 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2f,0x01); in SiS_UnLockCRT2()
100 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01); in SiS_UnLockCRT2()
105 SiS_LockCRT2(struct SiS_Private *SiS_Pr) in SiS_LockCRT2() argument
107 if(SiS_Pr->ChipType == XGI_20) in SiS_LockCRT2()
109 else if(SiS_Pr->ChipType >= SIS_315H) in SiS_LockCRT2()
110 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2F,0xFE); in SiS_LockCRT2()
112 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x24,0xFE); in SiS_LockCRT2()
120 SiS_SetRegSR11ANDOR(struct SiS_Private *SiS_Pr, unsigned short DataAND, unsigned short DataOR) in SiS_SetRegSR11ANDOR() argument
122 if(SiS_Pr->ChipType >= SIS_661) { in SiS_SetRegSR11ANDOR()
126 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x11,DataAND,DataOR); in SiS_SetRegSR11ANDOR()
135 GetLCDStructPtr661(struct SiS_Private *SiS_Pr) in GetLCDStructPtr661() argument
137 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDStructPtr661()
148 if((SiS_Pr->SiS_ROMNew) && in GetLCDStructPtr661()
149 ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) { in GetLCDStructPtr661()
151 if(SiS_Pr->ChipType < SIS_661) reg = 0x3c; in GetLCDStructPtr661()
154 idx = (SiS_GetReg(SiS_Pr->SiS_P3d4,reg) & 0x1f) * 26; in GetLCDStructPtr661()
169 GetLCDStructPtr661_2(struct SiS_Private *SiS_Pr) in GetLCDStructPtr661_2() argument
171 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDStructPtr661_2()
181 if((SiS_Pr->SiS_ROMNew) && in GetLCDStructPtr661_2()
182 ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) { in GetLCDStructPtr661_2()
184 romptr += ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) * SiS_Pr->SiS661LCD2TableSize); in GetLCDStructPtr661_2()
196 SiS_AdjustCRT2Rate(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_AdjustCRT2Rate() argument
201 modeid = SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID; in SiS_AdjustCRT2Rate()
203 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_AdjustCRT2Rate()
205 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_AdjustCRT2Rate()
208 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_AdjustCRT2Rate()
210 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_AdjustCRT2Rate()
212 if(SiS_Pr->SiS_VBType & VB_SISRAMDAC202) { in SiS_AdjustCRT2Rate()
218 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_AdjustCRT2Rate()
221 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_AdjustCRT2Rate()
222 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_AdjustCRT2Rate()
223 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_AdjustCRT2Rate()
229 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_AdjustCRT2Rate()
233 …} else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToYPbPr525750|SetCRT2ToAVIDEO|SetCRT2ToSVIDEO|SetCRT2ToSCAR… in SiS_AdjustCRT2Rate()
236 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_AdjustCRT2Rate()
238 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_AdjustCRT2Rate()
239 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_AdjustCRT2Rate()
249 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_AdjustCRT2Rate()
250 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_AdjustCRT2Rate()
255 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_AdjustCRT2Rate()
262 for(; SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID == modeid; (*i)--) { in SiS_AdjustCRT2Rate()
263 infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag; in SiS_AdjustCRT2Rate()
272 if(SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID != modeid) break; in SiS_AdjustCRT2Rate()
273 infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag; in SiS_AdjustCRT2Rate()
284 SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetRatePtr() argument
300 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetRatePtr()
302 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetRatePtr()
305 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetRatePtr()
306 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_GetRatePtr()
313 index = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x33) >> SiS_Pr->SiS_SelectCRT2Rate) & 0x0F; in SiS_GetRatePtr()
318 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetRatePtr()
319 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetRatePtr()
320 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetRatePtr()
321 if(SiS_Pr->SiS_VBType & VB_NoLCD) index = 0; in SiS_GetRatePtr()
322 else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index = backupindex = 0; in SiS_GetRatePtr()
324 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_GetRatePtr()
325 if(!(SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetRatePtr()
326 temp = LCDRefreshIndex[SiS_GetBIOSLCDResInfo(SiS_Pr)]; in SiS_GetRatePtr()
331 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) index = 0; in SiS_GetRatePtr()
332 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetRatePtr()
333 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) index = 0; in SiS_GetRatePtr()
338 RRTI = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].REFindex; in SiS_GetRatePtr()
339 ModeNo = SiS_Pr->SiS_RefIndex[RRTI].ModeID; in SiS_GetRatePtr()
341 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetRatePtr()
342 if(!(SiS_Pr->SiS_VBInfo & DriverMode)) { in SiS_GetRatePtr()
343 if( (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x105) || in SiS_GetRatePtr()
344 (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x107) ) { in SiS_GetRatePtr()
352 if(SiS_Pr->SiS_RefIndex[RRTI + i].ModeID != ModeNo) break; in SiS_GetRatePtr()
353 temp = SiS_Pr->SiS_RefIndex[RRTI + i].Ext_InfoFlag; in SiS_GetRatePtr()
355 if(temp < SiS_Pr->SiS_ModeType) break; in SiS_GetRatePtr()
360 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_GetRatePtr()
361 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetRatePtr()
362 temp = SiS_Pr->SiS_RefIndex[RRTI + i - 1].Ext_InfoFlag; in SiS_GetRatePtr()
369 if((SiS_Pr->SiS_SetFlag & ProgrammingCRT2) && (!(SiS_Pr->SiS_VBInfo & DisableCRT2Display))) { in SiS_GetRatePtr()
371 if(!(SiS_AdjustCRT2Rate(SiS_Pr, ModeNo, ModeIdIndex, RRTI, &i))) { in SiS_GetRatePtr()
384 SiS_SaveCRT2Info(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SaveCRT2Info() argument
389 SiS_SetReg(SiS_Pr->SiS_P3d4,0x34,ModeNo); in SiS_SaveCRT2Info()
390 temp1 = (SiS_Pr->SiS_VBInfo & SetInSlaveMode) >> 8; in SiS_SaveCRT2Info()
392 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x31,temp2,temp1); in SiS_SaveCRT2Info()
401 SiS_CR36BIOSWord23b(struct SiS_Private *SiS_Pr) in SiS_CR36BIOSWord23b() argument
403 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_CR36BIOSWord23b()
406 if(SiS_Pr->SiS_UseROM) { in SiS_CR36BIOSWord23b()
408 temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) & 0x0f); in SiS_CR36BIOSWord23b()
417 SiS_CR36BIOSWord23d(struct SiS_Private *SiS_Pr) in SiS_CR36BIOSWord23d() argument
419 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_CR36BIOSWord23d()
422 if(SiS_Pr->SiS_UseROM) { in SiS_CR36BIOSWord23d()
424 temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) & 0x0f); in SiS_CR36BIOSWord23d()
438 SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime) in SiS_DDC2Delay() argument
441 SiS_GetReg(SiS_Pr->SiS_P3c4, 0x05); in SiS_DDC2Delay()
446 SiS_GenericDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_GenericDelay() argument
448 SiS_DDC2Delay(SiS_Pr, delay * 36); in SiS_GenericDelay()
454 SiS_LongDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_LongDelay() argument
457 SiS_GenericDelay(SiS_Pr, 6623); in SiS_LongDelay()
464 SiS_ShortDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_ShortDelay() argument
467 SiS_GenericDelay(SiS_Pr, 66); in SiS_ShortDelay()
473 SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) in SiS_PanelDelay() argument
476 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_PanelDelay()
480 if(SiS_Pr->ChipType < SIS_315H) { in SiS_PanelDelay()
484 PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_PanelDelay()
485 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_PanelDelay()
486 if(SiS_Pr->SiS_VBType & VB_SIS301) PanelID &= 0xf7; in SiS_PanelDelay()
487 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x18) & 0x10)) PanelID = 0x12; in SiS_PanelDelay()
495 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[0]; in SiS_PanelDelay()
497 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[1]; in SiS_PanelDelay()
499 if(SiS_Pr->SiS_UseROM) { in SiS_PanelDelay()
506 SiS_ShortDelay(SiS_Pr, Delay); in SiS_PanelDelay()
514 if((SiS_Pr->ChipType >= SIS_661) || in SiS_PanelDelay()
515 (SiS_Pr->ChipType <= SIS_315PRO) || in SiS_PanelDelay()
516 (SiS_Pr->ChipType == SIS_330) || in SiS_PanelDelay()
517 (SiS_Pr->SiS_ROMNew)) { in SiS_PanelDelay()
520 SiS_DDC2Delay(SiS_Pr, 0x1000); in SiS_PanelDelay()
522 SiS_DDC2Delay(SiS_Pr, 0x4000); in SiS_PanelDelay()
525 } else if((SiS_Pr->SiS_IF_DEF_LVDS == 1) /* || in SiS_PanelDelay()
529 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_PanelDelay()
530 PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_PanelDelay()
531 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1400) { in SiS_PanelDelay()
532 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x1b) & 0x10)) PanelID = 0x12; in SiS_PanelDelay()
534 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_PanelDelay()
544 Delay = SiS_Pr->SiS_PanelDelayTblLVDS[DelayIndex].timer[0]; in SiS_PanelDelay()
546 Delay = SiS_Pr->SiS_PanelDelayTblLVDS[DelayIndex].timer[1]; in SiS_PanelDelay()
548 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_PanelDelay()
558 SiS_ShortDelay(SiS_Pr, Delay); in SiS_PanelDelay()
561 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { /* 315 series, all bridges */ in SiS_PanelDelay()
563 DelayIndex = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_PanelDelay()
565 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[0]; in SiS_PanelDelay()
567 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[1]; in SiS_PanelDelay()
570 SiS_DDC2Delay(SiS_Pr, Delay); in SiS_PanelDelay()
581 SiS_PanelDelayLoop(struct SiS_Private *SiS_Pr, unsigned short DelayTime, unsigned short DelayLoop) in SiS_PanelDelayLoop() argument
585 SiS_PanelDelay(SiS_Pr, DelayTime); in SiS_PanelDelayLoop()
595 SiS_WaitRetrace1(struct SiS_Private *SiS_Pr) in SiS_WaitRetrace1() argument
599 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x1f) & 0xc0) return; in SiS_WaitRetrace1()
600 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x17) & 0x80)) return; in SiS_WaitRetrace1()
603 while((SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08) && --watchdog); in SiS_WaitRetrace1()
605 while((!(SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08)) && --watchdog); in SiS_WaitRetrace1()
610 SiS_WaitRetrace2(struct SiS_Private *SiS_Pr, unsigned short reg) in SiS_WaitRetrace2() argument
615 while((SiS_GetReg(SiS_Pr->SiS_Part1Port,reg) & 0x02) && --watchdog); in SiS_WaitRetrace2()
617 while((!(SiS_GetReg(SiS_Pr->SiS_Part1Port,reg) & 0x02)) && --watchdog); in SiS_WaitRetrace2()
622 SiS_WaitVBRetrace(struct SiS_Private *SiS_Pr) in SiS_WaitVBRetrace() argument
624 if(SiS_Pr->ChipType < SIS_315H) { in SiS_WaitVBRetrace()
626 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_WaitVBRetrace()
627 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x20)) return; in SiS_WaitVBRetrace()
629 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x80)) { in SiS_WaitVBRetrace()
630 SiS_WaitRetrace1(SiS_Pr); in SiS_WaitVBRetrace()
632 SiS_WaitRetrace2(SiS_Pr, 0x25); in SiS_WaitVBRetrace()
637 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x40)) { in SiS_WaitVBRetrace()
638 SiS_WaitRetrace1(SiS_Pr); in SiS_WaitVBRetrace()
640 SiS_WaitRetrace2(SiS_Pr, 0x30); in SiS_WaitVBRetrace()
647 SiS_VBWait(struct SiS_Private *SiS_Pr) in SiS_VBWait() argument
654 tempal = SiS_GetRegByte(SiS_Pr->SiS_P3da); in SiS_VBWait()
668 SiS_VBLongWait(struct SiS_Private *SiS_Pr) in SiS_VBLongWait() argument
670 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_VBLongWait()
671 SiS_VBWait(SiS_Pr); in SiS_VBLongWait()
673 SiS_WaitRetrace1(SiS_Pr); in SiS_VBLongWait()
683 SiS_Is301B(struct SiS_Private *SiS_Pr) in SiS_Is301B() argument
685 if(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x01) >= 0xb0) return true; in SiS_Is301B()
691 SiS_CRT2IsLCD(struct SiS_Private *SiS_Pr) in SiS_CRT2IsLCD() argument
693 if(SiS_Pr->ChipType == SIS_730) { in SiS_CRT2IsLCD()
694 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x20) return true; in SiS_CRT2IsLCD()
696 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x30) & 0x20) return true; in SiS_CRT2IsLCD()
701 SiS_IsDualEdge(struct SiS_Private *SiS_Pr) in SiS_IsDualEdge() argument
704 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsDualEdge()
705 if((SiS_Pr->ChipType != SIS_650) || (SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0)) { in SiS_IsDualEdge()
706 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableDualEdge) return true; in SiS_IsDualEdge()
714 SiS_IsVAMode(struct SiS_Private *SiS_Pr) in SiS_IsVAMode() argument
719 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsVAMode()
720 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsVAMode()
729 SiS_IsVAorLCD(struct SiS_Private *SiS_Pr) in SiS_IsVAorLCD() argument
731 if(SiS_IsVAMode(SiS_Pr)) return true; in SiS_IsVAorLCD()
732 if(SiS_CRT2IsLCD(SiS_Pr)) return true; in SiS_IsVAorLCD()
738 SiS_IsDualLink(struct SiS_Private *SiS_Pr) in SiS_IsDualLink() argument
741 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsDualLink()
742 if((SiS_CRT2IsLCD(SiS_Pr)) || in SiS_IsDualLink()
743 (SiS_IsVAMode(SiS_Pr))) { in SiS_IsDualLink()
744 if(SiS_Pr->SiS_LCDInfo & LCDDualLink) return true; in SiS_IsDualLink()
753 SiS_TVEnabled(struct SiS_Private *SiS_Pr) in SiS_TVEnabled() argument
755 if((SiS_GetReg(SiS_Pr->SiS_Part2Port,0x00) & 0x0f) != 0x0c) return true; in SiS_TVEnabled()
756 if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_TVEnabled()
757 if(SiS_GetReg(SiS_Pr->SiS_Part2Port,0x4d) & 0x10) return true; in SiS_TVEnabled()
765 SiS_LCDAEnabled(struct SiS_Private *SiS_Pr) in SiS_LCDAEnabled() argument
767 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x13) & 0x04) return true; in SiS_LCDAEnabled()
774 SiS_WeHaveBacklightCtrl(struct SiS_Private *SiS_Pr) in SiS_WeHaveBacklightCtrl() argument
776 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) { in SiS_WeHaveBacklightCtrl()
777 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x79) & 0x10) return true; in SiS_WeHaveBacklightCtrl()
785 SiS_IsNotM650orLater(struct SiS_Private *SiS_Pr) in SiS_IsNotM650orLater() argument
789 if(SiS_Pr->ChipType == SIS_650) { in SiS_IsNotM650orLater()
790 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0; in SiS_IsNotM650orLater()
794 } else if(SiS_Pr->ChipType >= SIS_661) return false; in SiS_IsNotM650orLater()
801 SiS_IsYPbPr(struct SiS_Private *SiS_Pr) in SiS_IsYPbPr() argument
803 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsYPbPr()
805 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableCHYPbPr) return true; in SiS_IsYPbPr()
813 SiS_IsChScart(struct SiS_Private *SiS_Pr) in SiS_IsChScart() argument
815 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsChScart()
817 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableCHScart) return true; in SiS_IsChScart()
825 SiS_IsTVOrYPbPrOrScart(struct SiS_Private *SiS_Pr) in SiS_IsTVOrYPbPrOrScart() argument
829 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsTVOrYPbPrOrScart()
830 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsTVOrYPbPrOrScart()
832 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsTVOrYPbPrOrScart()
836 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsTVOrYPbPrOrScart()
845 SiS_IsLCDOrLCDA(struct SiS_Private *SiS_Pr) in SiS_IsLCDOrLCDA() argument
849 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsLCDOrLCDA()
850 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsLCDOrLCDA()
852 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsLCDOrLCDA()
855 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsLCDOrLCDA()
863 SiS_HaveBridge(struct SiS_Private *SiS_Pr) in SiS_HaveBridge() argument
867 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_HaveBridge()
869 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_HaveBridge()
870 flag = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x00); in SiS_HaveBridge()
877 SiS_BridgeIsEnabled(struct SiS_Private *SiS_Pr) in SiS_BridgeIsEnabled() argument
881 if(SiS_HaveBridge(SiS_Pr)) { in SiS_BridgeIsEnabled()
882 flag = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_BridgeIsEnabled()
883 if(SiS_Pr->ChipType < SIS_315H) { in SiS_BridgeIsEnabled()
895 SiS_BridgeInSlavemode(struct SiS_Private *SiS_Pr) in SiS_BridgeInSlavemode() argument
899 flag1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31); in SiS_BridgeInSlavemode()
911 SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo) in SiS_SetChrontelGPIO() argument
916 if(!(SiS_Pr->SiS_ChSW)) return; in SiS_SetChrontelGPIO()
918 acpibase = sisfb_read_lpc_pci_dword(SiS_Pr, 0x74); in SiS_SetChrontelGPIO()
934 SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_GetVBInfo() argument
940 SiS_Pr->SiS_SetFlag = 0; in SiS_GetVBInfo()
942 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetVBInfo()
944 SiS_Pr->SiS_ModeType = modeflag & ModeTypeMask; in SiS_GetVBInfo()
946 if((ModeNo > 0x13) && (!SiS_Pr->UseCustomMode)) { in SiS_GetVBInfo()
947 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetVBInfo()
952 if(SiS_HaveBridge(SiS_Pr)) { in SiS_GetVBInfo()
954 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_GetVBInfo()
956 tempax = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) << 8; in SiS_GetVBInfo()
961 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
962 if(SiS_Pr->SiS_VBType & VB_SISLCDA) { in SiS_GetVBInfo()
965 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x31,0xbf); in SiS_GetVBInfo()
967 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & (DriverMode >> 8))) { in SiS_GetVBInfo()
969 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x38,0xfc); in SiS_GetVBInfo()
972 if(SiS_Pr->SiS_UseLCDA) { in SiS_GetVBInfo()
973 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xF0) { in SiS_GetVBInfo()
974 if((ModeNo <= 0x13) || (!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & (DriverMode >> 8)))) { in SiS_GetVBInfo()
975 SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x38,(EnableDualEdge | SetToLCDA)); in SiS_GetVBInfo()
980 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_GetVBInfo()
986 if(SiS_Pr->ChipType >= SIS_661) { /* New CR layout */ in SiS_GetVBInfo()
988 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & 0x04) { in SiS_GetVBInfo()
989 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35) & 0xe0; in SiS_GetVBInfo()
991 else if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_GetVBInfo()
997 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetVBInfo()
998 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_GetVBInfo()
1002 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1012 if(!(SiS_Pr->SiS_VBType & VB_SISVGA2)) { in SiS_GetVBInfo()
1016 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetVBInfo()
1026 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1027 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1039 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1052 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetVBInfo()
1072 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1077 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1085 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1102 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_GetVBInfo()
1103 if( (SiS_Pr->SiS_IF_DEF_LVDS == 1) || in SiS_GetVBInfo()
1104 ((SiS_Pr->SiS_VBType & VB_NoLCD) && (tempbx & SetCRT2ToLCD)) ) { in SiS_GetVBInfo()
1117 if(SiS_BridgeIsEnabled(SiS_Pr)) { in SiS_GetVBInfo()
1119 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_GetVBInfo()
1143 SiS_Pr->SiS_VBInfo = tempbx; in SiS_GetVBInfo()
1146 if(SiS_Pr->ChipType == SIS_630) { in SiS_GetVBInfo()
1147 SiS_SetChrontelGPIO(SiS_Pr, SiS_Pr->SiS_VBInfo); in SiS_GetVBInfo()
1153 SiS_Pr->SiS_VBInfo, SiS_Pr->SiS_SetFlag); in SiS_GetVBInfo()
1162 SiS_SetYPbPr(struct SiS_Private *SiS_Pr) in SiS_SetYPbPr() argument
1175 SiS_Pr->SiS_YPbPr = 0; in SiS_SetYPbPr()
1176 if(SiS_Pr->ChipType >= SIS_661) return; in SiS_SetYPbPr()
1178 if(SiS_Pr->SiS_VBType) { in SiS_SetYPbPr()
1179 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetYPbPr()
1180 SiS_Pr->SiS_YPbPr = YPbPrHiVision; in SiS_SetYPbPr()
1184 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetYPbPr()
1185 if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_SetYPbPr()
1186 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_SetYPbPr()
1189 case 0x00: SiS_Pr->SiS_YPbPr = YPbPr525i; break; in SiS_SetYPbPr()
1190 case 0x01: SiS_Pr->SiS_YPbPr = YPbPr525p; break; in SiS_SetYPbPr()
1191 case 0x02: SiS_Pr->SiS_YPbPr = YPbPr750p; break; in SiS_SetYPbPr()
1192 case 0x03: SiS_Pr->SiS_YPbPr = YPbPrHiVision; break; in SiS_SetYPbPr()
1205 SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetTVMode() argument
1207 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetTVMode()
1209 unsigned char OutputSelect = *SiS_Pr->pSiS_OutputSelect; in SiS_SetTVMode()
1211 SiS_Pr->SiS_TVMode = 0; in SiS_SetTVMode()
1213 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) return; in SiS_SetTVMode()
1214 if(SiS_Pr->UseCustomMode) return; in SiS_SetTVMode()
1217 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetTVMode()
1220 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetTVMode()
1222 if(SiS_Pr->SiS_VBInfo & SetPALTV) SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1224 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1226 if((SiS_Pr->ChipType == SIS_630) || in SiS_SetTVMode()
1227 (SiS_Pr->ChipType == SIS_730)) { in SiS_SetTVMode()
1230 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetTVMode()
1232 if(SiS_Pr->ChipType < XGI_20) { in SiS_SetTVMode()
1234 if(SiS_Pr->ChipType >= SIS_330) romindex = 0x11b; in SiS_SetTVMode()
1238 if(romindex && SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetTVMode()
1241 SiS_SetRegAND(SiS_Pr->SiS_P3d4,temp,0x3F); in SiS_SetTVMode()
1244 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,temp); in SiS_SetTVMode()
1245 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetTVMode()
1247 SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1248 SiS_Pr->SiS_TVMode &= ~TVSetPAL; in SiS_SetTVMode()
1250 SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1254 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1259 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1260 if(SiS_Pr->SiS_YPbPr == YPbPr750p) SiS_Pr->SiS_TVMode |= TVSetYPbPr750p; in SiS_SetTVMode()
1261 else if(SiS_Pr->SiS_YPbPr == YPbPr525p) SiS_Pr->SiS_TVMode |= TVSetYPbPr525p; in SiS_SetTVMode()
1262 else if(SiS_Pr->SiS_YPbPr == YPbPrHiVision) SiS_Pr->SiS_TVMode |= TVSetHiVision; in SiS_SetTVMode()
1263 else SiS_Pr->SiS_TVMode |= TVSetYPbPr525i; in SiS_SetTVMode()
1264 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetYPbPr525p | TVSetYPbPr525i)) { in SiS_SetTVMode()
1265 SiS_Pr->SiS_VBInfo &= ~SetCRT2ToHiVision; in SiS_SetTVMode()
1266 SiS_Pr->SiS_VBInfo |= SetCRT2ToYPbPr525750; in SiS_SetTVMode()
1267 } else if(SiS_Pr->SiS_TVMode & TVSetHiVision) { in SiS_SetTVMode()
1268 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1271 } else if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetTVMode()
1272 if(SiS_Pr->SiS_CHOverScan) { in SiS_SetTVMode()
1273 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetTVMode()
1274 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_SetTVMode()
1275 if((temp & TVOverScan) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1276 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1278 } else if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1279 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x79); in SiS_SetTVMode()
1280 if((temp & 0x80) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1281 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1284 if(SiS_Pr->SiS_CHSOverScan) { in SiS_SetTVMode()
1285 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1288 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1289 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_SetTVMode()
1290 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetTVMode()
1291 if(temp & EnablePALM) SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1292 else if(temp & EnablePALN) SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1295 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1303 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_SetTVMode()
1305 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1307 SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1309 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1310 SiS_Pr->SiS_TVMode &= ~TVSetPAL; in SiS_SetTVMode()
1312 SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1316 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1319 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1320 if(SiS_Pr->SiS_CHOverScan) { in SiS_SetTVMode()
1321 if((temp1 & 0x10) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1322 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1326 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1327 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetTVMode()
1329 if(temp1 == 0x00) SiS_Pr->SiS_TVMode |= TVSetYPbPr525i; in SiS_SetTVMode()
1330 else if(temp1 == 0x20) SiS_Pr->SiS_TVMode |= TVSetYPbPr525p; in SiS_SetTVMode()
1331 else if(temp1 == 0x40) SiS_Pr->SiS_TVMode |= TVSetYPbPr750p; in SiS_SetTVMode()
1332 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1333 SiS_Pr->SiS_TVMode |= (TVSetHiVision | TVSetPAL); in SiS_SetTVMode()
1335 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToYPbPr525750 | SetCRT2ToHiVision)) { in SiS_SetTVMode()
1337 SiS_Pr->SiS_TVMode |= TVAspect169; in SiS_SetTVMode()
1339 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x39); in SiS_SetTVMode()
1341 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetHiVision)) { in SiS_SetTVMode()
1342 SiS_Pr->SiS_TVMode |= TVAspect169; in SiS_SetTVMode()
1344 SiS_Pr->SiS_TVMode |= TVAspect43LB; in SiS_SetTVMode()
1347 SiS_Pr->SiS_TVMode |= TVAspect43; in SiS_SetTVMode()
1354 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1356 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1358 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1359 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1360 SiS_Pr->SiS_TVMode &= ~(TVSetPALM | TVSetPALN | TVSetNTSCJ); in SiS_SetTVMode()
1361 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetTVMode()
1362 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525i | TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetTVMode()
1363 SiS_Pr->SiS_TVMode &= ~(TVSetPAL | TVSetNTSCJ | TVSetPALM | TVSetPALN); in SiS_SetTVMode()
1367 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetTVMode()
1368 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_SetTVMode()
1369 SiS_Pr->SiS_TVMode |= TVSetTVSimuMode; in SiS_SetTVMode()
1373 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetTVMode()
1375 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_SetTVMode()
1376 SiS_Pr->SiS_TVMode |= TVSet525p1024; in SiS_SetTVMode()
1377 } else if(!(SiS_Pr->SiS_TVMode & (TVSetHiVision | TVSetYPbPr750p))) { in SiS_SetTVMode()
1378 SiS_Pr->SiS_TVMode |= TVSetNTSC1024; in SiS_SetTVMode()
1383 SiS_Pr->SiS_TVMode |= TVRPLLDIV2XO; in SiS_SetTVMode()
1384 if((SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) && in SiS_SetTVMode()
1385 (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetTVMode()
1386 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1387 } else if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetTVMode()
1388 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1389 } else if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) { in SiS_SetTVMode()
1390 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetTVMode()
1391 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1397 SiS_Pr->SiS_VBInfo &= ~SetPALTV; in SiS_SetTVMode()
1405 SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr) in SiS_GetBIOSLCDResInfo() argument
1407 unsigned short temp = SiS_Pr->SiS_LCDResInfo; in SiS_GetBIOSLCDResInfo()
1418 SiS_GetLCDInfoBIOS(struct SiS_Private *SiS_Pr) in SiS_GetLCDInfoBIOS() argument
1424 if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetLCDInfoBIOS()
1425 if((temp = SISGETROMW(6)) != SiS_Pr->PanelHT) { in SiS_GetLCDInfoBIOS()
1426 SiS_Pr->SiS_NeedRomModeData = true; in SiS_GetLCDInfoBIOS()
1427 SiS_Pr->PanelHT = temp; in SiS_GetLCDInfoBIOS()
1429 if((temp = SISGETROMW(8)) != SiS_Pr->PanelVT) { in SiS_GetLCDInfoBIOS()
1430 SiS_Pr->SiS_NeedRomModeData = true; in SiS_GetLCDInfoBIOS()
1431 SiS_Pr->PanelVT = temp; in SiS_GetLCDInfoBIOS()
1433 SiS_Pr->PanelHRS = SISGETROMW(10); in SiS_GetLCDInfoBIOS()
1434 SiS_Pr->PanelHRE = SISGETROMW(12); in SiS_GetLCDInfoBIOS()
1435 SiS_Pr->PanelVRS = SISGETROMW(14); in SiS_GetLCDInfoBIOS()
1436 SiS_Pr->PanelVRE = SISGETROMW(16); in SiS_GetLCDInfoBIOS()
1437 SiS_Pr->PanelVCLKIdx315 = VCLK_CUSTOM_315; in SiS_GetLCDInfoBIOS()
1438 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].CLOCK = in SiS_GetLCDInfoBIOS()
1439 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].CLOCK = (unsigned short)((unsigned char)ROMAddr[18]); in SiS_GetLCDInfoBIOS()
1440 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2B = in SiS_GetLCDInfoBIOS()
1441 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_A = ROMAddr[19]; in SiS_GetLCDInfoBIOS()
1442 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2C = in SiS_GetLCDInfoBIOS()
1443 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_B = ROMAddr[20]; in SiS_GetLCDInfoBIOS()
1450 SiS_CheckScaling(struct SiS_Private *SiS_Pr, unsigned short resinfo, in SiS_CheckScaling() argument
1456 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) || in SiS_CheckScaling()
1457 (SiS_Pr->UsePanelScaler == -1)) { in SiS_CheckScaling()
1458 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_CheckScaling()
1466 SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetLCDResInfo() argument
1471 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_GetLCDResInfo()
1480 SiS_Pr->SiS_LCDResInfo = 0; in SiS_GetLCDResInfo()
1481 SiS_Pr->SiS_LCDTypeInfo = 0; in SiS_GetLCDResInfo()
1482 SiS_Pr->SiS_LCDInfo = 0; in SiS_GetLCDResInfo()
1483 SiS_Pr->PanelHRS = 999; /* HSync start */ in SiS_GetLCDResInfo()
1484 SiS_Pr->PanelHRE = 999; /* HSync end */ in SiS_GetLCDResInfo()
1485 SiS_Pr->PanelVRS = 999; /* VSync start */ in SiS_GetLCDResInfo()
1486 SiS_Pr->PanelVRE = 999; /* VSync end */ in SiS_GetLCDResInfo()
1487 SiS_Pr->SiS_NeedRomModeData = false; in SiS_GetLCDResInfo()
1490 SiS_Pr->Alternate1600x1200 = false; in SiS_GetLCDResInfo()
1492 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA))) return; in SiS_GetLCDResInfo()
1494 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetLCDResInfo()
1496 if((ModeNo > 0x13) && (!SiS_Pr->UseCustomMode)) { in SiS_GetLCDResInfo()
1497 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetLCDResInfo()
1498 modexres = SiS_Pr->SiS_ModeResInfo[resinfo].HTotal; in SiS_GetLCDResInfo()
1499 modeyres = SiS_Pr->SiS_ModeResInfo[resinfo].VTotal; in SiS_GetLCDResInfo()
1502 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_GetLCDResInfo()
1507 if((SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_GetLCDResInfo()
1508 SiS_Pr->SiS_LCDTypeInfo = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x39) & 0x7c) >> 2; in SiS_GetLCDResInfo()
1509 } else if((SiS_Pr->ChipType < SIS_315H) || (SiS_Pr->ChipType >= SIS_661)) { in SiS_GetLCDResInfo()
1510 SiS_Pr->SiS_LCDTypeInfo = temp >> 4; in SiS_GetLCDResInfo()
1512 SiS_Pr->SiS_LCDTypeInfo = (temp & 0x0F) - 1; in SiS_GetLCDResInfo()
1516 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
1518 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_GetLCDResInfo()
1528 if(SiS_Pr->ChipType == SIS_550) { in SiS_GetLCDResInfo()
1532 } else if(SiS_Pr->ChipType >= SIS_661) { in SiS_GetLCDResInfo()
1537 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* SiS LVDS */ in SiS_GetLCDResInfo()
1541 if(SiS_Pr->SiS_ROMNew) { in SiS_GetLCDResInfo()
1548 SiS_Pr->SiS_LCDResInfo = temp; in SiS_GetLCDResInfo()
1551 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
1552 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetLCDResInfo()
1553 SiS_Pr->SiS_LCDResInfo = Panel_Barco1366; in SiS_GetLCDResInfo()
1554 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL848) { in SiS_GetLCDResInfo()
1555 SiS_Pr->SiS_LCDResInfo = Panel_848x480; in SiS_GetLCDResInfo()
1556 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetLCDResInfo()
1557 SiS_Pr->SiS_LCDResInfo = Panel_856x480; in SiS_GetLCDResInfo()
1562 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetLCDResInfo()
1563 if(SiS_Pr->SiS_LCDResInfo < SiS_Pr->SiS_PanelMin301) in SiS_GetLCDResInfo()
1564 SiS_Pr->SiS_LCDResInfo = SiS_Pr->SiS_PanelMin301; in SiS_GetLCDResInfo()
1566 if(SiS_Pr->SiS_LCDResInfo < SiS_Pr->SiS_PanelMinLVDS) in SiS_GetLCDResInfo()
1567 SiS_Pr->SiS_LCDResInfo = SiS_Pr->SiS_PanelMinLVDS; in SiS_GetLCDResInfo()
1570 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); in SiS_GetLCDResInfo()
1571 SiS_Pr->SiS_LCDInfo = temp & ~0x000e; in SiS_GetLCDResInfo()
1575 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
1580 SiS_Pr->SiS_LCDInfo &= ~DontExpandLCD; in SiS_GetLCDResInfo()
1583 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1586 panelcanscale = (bool)(SiS_Pr->SiS_LCDInfo & DontExpandLCD); in SiS_GetLCDResInfo()
1588 if(!SiS_Pr->UsePanelScaler) SiS_Pr->SiS_LCDInfo &= ~DontExpandLCD; in SiS_GetLCDResInfo()
1589 else if(SiS_Pr->UsePanelScaler == 1) SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1593 if(SiS_Pr->ChipType >= SIS_661) { in SiS_GetLCDResInfo()
1594 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
1595 if(temp & 0x08) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1597 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1598 if(SiS_Pr->SiS_ROMNew) { in SiS_GetLCDResInfo()
1599 if(temp & 0x02) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1600 } else if((myptr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetLCDResInfo()
1601 if(myptr[2] & 0x01) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1604 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetLCDResInfo()
1605 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
1606 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x39) & 0x01) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1608 if((SiS_Pr->SiS_ROMNew) && (!(SiS_Pr->PanelSelfDetected))) { in SiS_GetLCDResInfo()
1609 SiS_Pr->SiS_LCDInfo &= ~(LCDRGB18Bit); in SiS_GetLCDResInfo()
1610 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_GetLCDResInfo()
1611 if(temp & 0x01) SiS_Pr->SiS_LCDInfo |= LCDRGB18Bit; in SiS_GetLCDResInfo()
1612 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1613 if(temp & 0x02) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1615 } else if(!(SiS_Pr->SiS_ROMNew)) { in SiS_GetLCDResInfo()
1616 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1617 if((SiS_Pr->SiS_CustomT == CUT_CLEVO1024) && in SiS_GetLCDResInfo()
1618 (SiS_Pr->SiS_LCDResInfo == Panel_1024x768)) { in SiS_GetLCDResInfo()
1619 SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1621 if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_GetLCDResInfo()
1622 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_GetLCDResInfo()
1623 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) || in SiS_GetLCDResInfo()
1624 (SiS_Pr->SiS_LCDResInfo == Panel_1680x1050)) { in SiS_GetLCDResInfo()
1625 SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1633 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetLCDResInfo()
1635 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1636 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetLCDResInfo()
1637 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_GetLCDResInfo()
1639 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1642 if(panelcanscale) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1643 if(SiS_Pr->CenterScreen == 1) SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1647 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
1648 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
1650 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
1653 case Panel_320x240_3: SiS_Pr->PanelXRes = 640; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1654 SiS_Pr->PanelVRS = 24; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1655 SiS_Pr->PanelVCLKIdx300 = VCLK28; in SiS_GetLCDResInfo()
1656 SiS_Pr->PanelVCLKIdx315 = VCLK28; in SiS_GetLCDResInfo()
1658 case Panel_640x480: SiS_Pr->PanelXRes = 640; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1659 SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1660 SiS_Pr->PanelVCLKIdx300 = VCLK28; in SiS_GetLCDResInfo()
1661 SiS_Pr->PanelVCLKIdx315 = VCLK28; in SiS_GetLCDResInfo()
1663 case Panel_800x600: SiS_Pr->PanelXRes = 800; SiS_Pr->PanelYRes = 600; in SiS_GetLCDResInfo()
1664 SiS_Pr->PanelHT = 1056; SiS_Pr->PanelVT = 628; in SiS_GetLCDResInfo()
1665 SiS_Pr->PanelHRS = 40; SiS_Pr->PanelHRE = 128; in SiS_GetLCDResInfo()
1666 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 4; in SiS_GetLCDResInfo()
1667 SiS_Pr->PanelVCLKIdx300 = VCLK40; in SiS_GetLCDResInfo()
1668 SiS_Pr->PanelVCLKIdx315 = VCLK40; in SiS_GetLCDResInfo()
1670 case Panel_1024x600: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 600; in SiS_GetLCDResInfo()
1671 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 800; in SiS_GetLCDResInfo()
1672 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
1673 SiS_Pr->PanelVRS = 2 /* 88 */ ; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1674 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
1675 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
1677 case Panel_1024x768: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
1678 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
1679 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
1680 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1681 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
1682 SiS_Pr->PanelHRS = 23; in SiS_GetLCDResInfo()
1683 SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
1685 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
1686 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
1687 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1689 case Panel_1152x768: SiS_Pr->PanelXRes = 1152; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
1690 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
1691 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
1692 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1693 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
1694 SiS_Pr->PanelHRS = 23; in SiS_GetLCDResInfo()
1695 SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
1697 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
1698 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
1700 case Panel_1152x864: SiS_Pr->PanelXRes = 1152; SiS_Pr->PanelYRes = 864; in SiS_GetLCDResInfo()
1702 case Panel_1280x720: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 720; in SiS_GetLCDResInfo()
1703 SiS_Pr->PanelHT = 1650; SiS_Pr->PanelVT = 750; in SiS_GetLCDResInfo()
1704 SiS_Pr->PanelHRS = 110; SiS_Pr->PanelHRE = 40; in SiS_GetLCDResInfo()
1705 SiS_Pr->PanelVRS = 5; SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
1706 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x720; in SiS_GetLCDResInfo()
1708 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1710 case Panel_1280x768: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
1711 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
1712 SiS_Pr->PanelHT = 1408; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
1713 SiS_Pr->PanelVCLKIdx300 = VCLK81_300; /* ? */ in SiS_GetLCDResInfo()
1714 SiS_Pr->PanelVCLKIdx315 = VCLK81_315; /* ? */ in SiS_GetLCDResInfo()
1716 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 802; in SiS_GetLCDResInfo()
1717 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1718 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1719 SiS_Pr->PanelVCLKIdx300 = VCLK81_300; in SiS_GetLCDResInfo()
1720 SiS_Pr->PanelVCLKIdx315 = VCLK81_315; in SiS_GetLCDResInfo()
1723 case Panel_1280x768_2: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
1724 SiS_Pr->PanelHT = 1660; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
1725 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1726 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1727 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x768_2; in SiS_GetLCDResInfo()
1728 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1730 case Panel_1280x800: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 800; in SiS_GetLCDResInfo()
1731 SiS_Pr->PanelHT = 1408; SiS_Pr->PanelVT = 816; in SiS_GetLCDResInfo()
1732 SiS_Pr->PanelHRS = 21; SiS_Pr->PanelHRE = 24; in SiS_GetLCDResInfo()
1733 SiS_Pr->PanelVRS = 4; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1734 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x800_315; in SiS_GetLCDResInfo()
1735 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1737 case Panel_1280x800_2: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 800; in SiS_GetLCDResInfo()
1738 SiS_Pr->PanelHT = 1552; SiS_Pr->PanelVT = 812; in SiS_GetLCDResInfo()
1739 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1740 SiS_Pr->PanelVRS = 4; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1741 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x800_315_2; in SiS_GetLCDResInfo()
1742 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1744 case Panel_1280x854: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 854; in SiS_GetLCDResInfo()
1745 SiS_Pr->PanelHT = 1664; SiS_Pr->PanelVT = 861; in SiS_GetLCDResInfo()
1746 SiS_Pr->PanelHRS = 16; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1747 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1748 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x854; in SiS_GetLCDResInfo()
1749 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1751 case Panel_1280x960: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 960; in SiS_GetLCDResInfo()
1752 SiS_Pr->PanelHT = 1800; SiS_Pr->PanelVT = 1000; in SiS_GetLCDResInfo()
1753 SiS_Pr->PanelVCLKIdx300 = VCLK108_3_300; in SiS_GetLCDResInfo()
1754 SiS_Pr->PanelVCLKIdx315 = VCLK108_3_315; in SiS_GetLCDResInfo()
1756 SiS_Pr->PanelVCLKIdx300 = VCLK100_300; in SiS_GetLCDResInfo()
1757 SiS_Pr->PanelVCLKIdx315 = VCLK100_315; in SiS_GetLCDResInfo()
1760 case Panel_1280x1024: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 1024; in SiS_GetLCDResInfo()
1761 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
1762 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1763 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1764 SiS_Pr->PanelVCLKIdx300 = VCLK108_3_300; in SiS_GetLCDResInfo()
1765 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
1766 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1768 case Panel_1400x1050: SiS_Pr->PanelXRes = 1400; SiS_Pr->PanelYRes = 1050; in SiS_GetLCDResInfo()
1769 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
1770 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
1771 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1772 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
1773 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1775 case Panel_1600x1200: SiS_Pr->PanelXRes = 1600; SiS_Pr->PanelYRes = 1200; in SiS_GetLCDResInfo()
1776 SiS_Pr->PanelHT = 2160; SiS_Pr->PanelVT = 1250; in SiS_GetLCDResInfo()
1777 SiS_Pr->PanelHRS = 64; SiS_Pr->PanelHRE = 192; in SiS_GetLCDResInfo()
1778 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1779 SiS_Pr->PanelVCLKIdx315 = VCLK162_315; in SiS_GetLCDResInfo()
1780 if(SiS_Pr->SiS_VBType & VB_SISTMDSLCDA) { in SiS_GetLCDResInfo()
1781 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_GetLCDResInfo()
1782 SiS_Pr->PanelHT = 1760; SiS_Pr->PanelVT = 1235; in SiS_GetLCDResInfo()
1783 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 32; in SiS_GetLCDResInfo()
1784 SiS_Pr->PanelVRS = 2; SiS_Pr->PanelVRE = 4; in SiS_GetLCDResInfo()
1785 SiS_Pr->PanelVCLKIdx315 = VCLK130_315; in SiS_GetLCDResInfo()
1786 SiS_Pr->Alternate1600x1200 = true; in SiS_GetLCDResInfo()
1788 } else if(SiS_Pr->SiS_IF_DEF_LVDS) { in SiS_GetLCDResInfo()
1789 SiS_Pr->PanelHT = 2048; SiS_Pr->PanelVT = 1320; in SiS_GetLCDResInfo()
1790 SiS_Pr->PanelHRS = SiS_Pr->PanelHRE = 999; in SiS_GetLCDResInfo()
1791 SiS_Pr->PanelVRS = SiS_Pr->PanelVRE = 999; in SiS_GetLCDResInfo()
1793 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1795 case Panel_1680x1050: SiS_Pr->PanelXRes = 1680; SiS_Pr->PanelYRes = 1050; in SiS_GetLCDResInfo()
1796 SiS_Pr->PanelHT = 1900; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
1797 SiS_Pr->PanelHRS = 26; SiS_Pr->PanelHRE = 76; in SiS_GetLCDResInfo()
1798 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
1799 SiS_Pr->PanelVCLKIdx315 = VCLK121_315; in SiS_GetLCDResInfo()
1800 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
1802 case Panel_Barco1366: SiS_Pr->PanelXRes = 1360; SiS_Pr->PanelYRes = 1024; in SiS_GetLCDResInfo()
1803 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
1805 case Panel_848x480: SiS_Pr->PanelXRes = 848; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1806 SiS_Pr->PanelHT = 1088; SiS_Pr->PanelVT = 525; in SiS_GetLCDResInfo()
1808 case Panel_856x480: SiS_Pr->PanelXRes = 856; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1809 SiS_Pr->PanelHT = 1088; SiS_Pr->PanelVT = 525; in SiS_GetLCDResInfo()
1811 case Panel_Custom: SiS_Pr->PanelXRes = SiS_Pr->CP_MaxX; in SiS_GetLCDResInfo()
1812 SiS_Pr->PanelYRes = SiS_Pr->CP_MaxY; in SiS_GetLCDResInfo()
1813 SiS_Pr->PanelHT = SiS_Pr->CHTotal; in SiS_GetLCDResInfo()
1814 SiS_Pr->PanelVT = SiS_Pr->CVTotal; in SiS_GetLCDResInfo()
1815 if(SiS_Pr->CP_PreferredIndex != -1) { in SiS_GetLCDResInfo()
1816 SiS_Pr->PanelXRes = SiS_Pr->CP_HDisplay[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1817 SiS_Pr->PanelYRes = SiS_Pr->CP_VDisplay[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1818 SiS_Pr->PanelHT = SiS_Pr->CP_HTotal[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1819 SiS_Pr->PanelVT = SiS_Pr->CP_VTotal[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1820 SiS_Pr->PanelHRS = SiS_Pr->CP_HSyncStart[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1821 SiS_Pr->PanelHRE = SiS_Pr->CP_HSyncEnd[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1822 SiS_Pr->PanelVRS = SiS_Pr->CP_VSyncStart[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1823 SiS_Pr->PanelVRE = SiS_Pr->CP_VSyncEnd[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
1824 SiS_Pr->PanelHRS -= SiS_Pr->PanelXRes; in SiS_GetLCDResInfo()
1825 SiS_Pr->PanelHRE -= SiS_Pr->PanelHRS; in SiS_GetLCDResInfo()
1826 SiS_Pr->PanelVRS -= SiS_Pr->PanelYRes; in SiS_GetLCDResInfo()
1827 SiS_Pr->PanelVRE -= SiS_Pr->PanelVRS; in SiS_GetLCDResInfo()
1828 if(SiS_Pr->CP_PrefClock) { in SiS_GetLCDResInfo()
1830 SiS_Pr->PanelVCLKIdx315 = VCLK_CUSTOM_315; in SiS_GetLCDResInfo()
1831 SiS_Pr->PanelVCLKIdx300 = VCLK_CUSTOM_300; in SiS_GetLCDResInfo()
1832 if(SiS_Pr->ChipType < SIS_315H) idx = VCLK_CUSTOM_300; in SiS_GetLCDResInfo()
1834 SiS_Pr->SiS_VCLKData[idx].CLOCK = in SiS_GetLCDResInfo()
1835 SiS_Pr->SiS_VBVCLKData[idx].CLOCK = SiS_Pr->CP_PrefClock; in SiS_GetLCDResInfo()
1836 SiS_Pr->SiS_VCLKData[idx].SR2B = in SiS_GetLCDResInfo()
1837 SiS_Pr->SiS_VBVCLKData[idx].Part4_A = SiS_Pr->CP_PrefSR2B; in SiS_GetLCDResInfo()
1838 SiS_Pr->SiS_VCLKData[idx].SR2C = in SiS_GetLCDResInfo()
1839 SiS_Pr->SiS_VBVCLKData[idx].Part4_B = SiS_Pr->CP_PrefSR2C; in SiS_GetLCDResInfo()
1843 default: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
1844 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
1849 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_GetLCDResInfo()
1850 (SiS_Pr->SiS_IF_DEF_DSTN) || in SiS_GetLCDResInfo()
1851 (SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_GetLCDResInfo()
1852 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_GetLCDResInfo()
1853 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLCDResInfo()
1854 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_GetLCDResInfo()
1855 SiS_Pr->PanelHRS = 999; in SiS_GetLCDResInfo()
1856 SiS_Pr->PanelHRE = 999; in SiS_GetLCDResInfo()
1859 if( (SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_GetLCDResInfo()
1860 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_GetLCDResInfo()
1861 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLCDResInfo()
1862 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_GetLCDResInfo()
1863 SiS_Pr->PanelVRS = 999; in SiS_GetLCDResInfo()
1864 SiS_Pr->PanelVRE = 999; in SiS_GetLCDResInfo()
1868 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_GetLCDResInfo()
1870 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (modeflag & NoSupportLCDScale)) { in SiS_GetLCDResInfo()
1872 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1875 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
1880 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1887 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1896 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1905 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1906 if(SiS_Pr->PanelHT == 1650) { in SiS_GetLCDResInfo()
1907 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1917 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1919 case SIS_RI_1280x720: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
1920 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1932 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1941 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1944 case SIS_RI_1280x768: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
1945 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1957 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1961 case SIS_RI_1280x800: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
1962 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1975 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1985 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1995 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
1997 case SIS_RI_1280x720: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
1998 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2001 case SIS_RI_1280x1024: SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2013 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2023 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2030 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
2031 if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetLCDResInfo()
2032 SiS_Pr->SiS_LCDInfo = 0x80 | 0x40 | 0x20; /* neg h/v sync, RGB24(D0 = 0) */ in SiS_GetLCDResInfo()
2036 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
2037 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
2038 if(SiS_Pr->SiS_UseROM) { in SiS_GetLCDResInfo()
2041 SiS_Pr->SiS_LCDInfo &= (~DontExpandLCD); in SiS_GetLCDResInfo()
2045 } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_GetLCDResInfo()
2046 if((SiS_Pr->SiS_SetFlag & SetDOSMode) && ((ModeNo == 0x03) || (ModeNo == 0x10))) { in SiS_GetLCDResInfo()
2047 SiS_Pr->SiS_LCDInfo &= (~DontExpandLCD); in SiS_GetLCDResInfo()
2055 if(modexres == SiS_Pr->PanelXRes && modeyres == SiS_Pr->PanelYRes) { in SiS_GetLCDResInfo()
2056 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2059 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_GetLCDResInfo()
2060 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2063 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
2065 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2069 if(SiS_Pr->CenterScreen == -1) SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2072 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2075 if((!SiS_Pr->CP_PrefClock) || in SiS_GetLCDResInfo()
2076 (modexres > SiS_Pr->PanelXRes) || (modeyres > SiS_Pr->PanelYRes)) { in SiS_GetLCDResInfo()
2077 SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
2082 if((SiS_Pr->UseCustomMode) || (SiS_Pr->SiS_CustomT == CUT_UNKNOWNLCD)) { in SiS_GetLCDResInfo()
2083 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2087 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLCDResInfo()
2088 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2092 if(!((SiS_Pr->ChipType < SIS_315H) && (SiS_Pr->SiS_SetFlag & SetDOSMode))) { in SiS_GetLCDResInfo()
2094 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetLCDResInfo()
2095 if(SiS_Pr->SiS_IF_DEF_TRUMPION == 0) { in SiS_GetLCDResInfo()
2097 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_GetLCDResInfo()
2098 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2101 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x600) { in SiS_GetLCDResInfo()
2102 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLCDResInfo()
2104 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2113 if(SiS_Pr->SiS_IF_DEF_TRUMPION == 1) { in SiS_GetLCDResInfo()
2114 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2115 } else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
2116 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2117 } else if(SiS_Pr->SiS_LCDResInfo == Panel_640x480) { in SiS_GetLCDResInfo()
2118 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2120 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLCDResInfo()
2121 if(resinfo == SIS_RI_512x384) SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2122 } else if(SiS_Pr->SiS_LCDResInfo == Panel_800x600) { in SiS_GetLCDResInfo()
2123 if(resinfo == SIS_RI_400x300) SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2131 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetLCDResInfo()
2132 if(SiS_Pr->SiS_VBInfo & SetNotSimuMode) { in SiS_GetLCDResInfo()
2133 SiS_Pr->SiS_SetFlag |= LCDVESATiming; in SiS_GetLCDResInfo()
2136 SiS_Pr->SiS_SetFlag |= LCDVESATiming; in SiS_GetLCDResInfo()
2141 SiS_Pr->SiS_LCDInfo, SiS_Pr->SiS_LCDResInfo, SiS_Pr->SiS_LCDTypeInfo); in SiS_GetLCDResInfo()
2150 SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetVCLK2Ptr() argument
2158 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetVCLK2Ptr()
2159 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_GetVCLK2Ptr()
2160 CRT2Index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetVCLK2Ptr()
2161 VCLKIndexGEN = (SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)) >> 2) & 0x03; in SiS_GetVCLK2Ptr()
2164 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetVCLK2Ptr()
2165 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetVCLK2Ptr()
2166 CRT2Index = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetVCLK2Ptr()
2167 VCLKIndexGEN = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRTVCLK; in SiS_GetVCLK2Ptr()
2168 VCLKIndexGENCRT = SiS_GetRefCRTVCLK(SiS_Pr, RefreshRateTableIndex, in SiS_GetVCLK2Ptr()
2169 (SiS_Pr->SiS_SetFlag & ProgrammingCRT2) ? SiS_Pr->SiS_UseWideCRT2 : SiS_Pr->SiS_UseWide); in SiS_GetVCLK2Ptr()
2172 if(SiS_Pr->SiS_VBType & VB_SISVB) { /* 30x/B/LV */ in SiS_GetVCLK2Ptr()
2174 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetVCLK2Ptr()
2177 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { /* LCD */ in SiS_GetVCLK2Ptr()
2179 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2180 VCLKIndex = SiS_Pr->PanelVCLKIdx300; in SiS_GetVCLK2Ptr()
2181 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_GetVCLK2Ptr()
2185 VCLKIndex = SiS_Pr->PanelVCLKIdx315; in SiS_GetVCLK2Ptr()
2186 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_GetVCLK2Ptr()
2203 if(SiS_Pr->ChipType <= SIS_315PRO) { in SiS_GetVCLK2Ptr()
2204 if(SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC == 1) VCLKIndex = 0x42; in SiS_GetVCLK2Ptr()
2206 if(SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC == 1) VCLKIndex = 0x00; in SiS_GetVCLK2Ptr()
2209 if(SiS_Pr->ChipType <= SIS_315PRO) { in SiS_GetVCLK2Ptr()
2217 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { /* TV */ in SiS_GetVCLK2Ptr()
2219 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetVCLK2Ptr()
2220 if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) VCLKIndex = HiTVVCLKDIV2; in SiS_GetVCLK2Ptr()
2222 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) VCLKIndex = HiTVSimuVCLK; in SiS_GetVCLK2Ptr()
2223 } else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) VCLKIndex = YPbPr750pVCLK; in SiS_GetVCLK2Ptr()
2224 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) VCLKIndex = TVVCLKDIV2; in SiS_GetVCLK2Ptr()
2225 else if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) VCLKIndex = TVVCLKDIV2; in SiS_GetVCLK2Ptr()
2228 if(SiS_Pr->ChipType < SIS_315H) VCLKIndex += TVCLKBASE_300; in SiS_GetVCLK2Ptr()
2234 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2236 if( (SiS_Pr->ChipType == SIS_630) && in SiS_GetVCLK2Ptr()
2237 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_GetVCLK2Ptr()
2249 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2251 if( (SiS_Pr->ChipType != SIS_630) && in SiS_GetVCLK2Ptr()
2252 (SiS_Pr->ChipType != SIS_300) ) { in SiS_GetVCLK2Ptr()
2263 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetVCLK2Ptr()
2265 if( (SiS_Pr->SiS_IF_DEF_CH70xx != 0) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) ) { in SiS_GetVCLK2Ptr()
2269 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2270 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetVCLK2Ptr()
2272 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetVCLK2Ptr()
2273 if(SiS_Pr->SiS_CHSOverScan) tempbx = 8; in SiS_GetVCLK2Ptr()
2275 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_GetVCLK2Ptr()
2277 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2278 } else if(SiS_Pr->SiS_TVMode & TVSetPALN) { in SiS_GetVCLK2Ptr()
2280 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2284 case 0: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUNTSC; break; in SiS_GetVCLK2Ptr()
2285 case 1: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKONTSC; break; in SiS_GetVCLK2Ptr()
2286 case 2: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPAL; break; in SiS_GetVCLK2Ptr()
2287 case 3: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPAL; break; in SiS_GetVCLK2Ptr()
2288 case 4: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPALM; break; in SiS_GetVCLK2Ptr()
2289 case 5: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPALM; break; in SiS_GetVCLK2Ptr()
2290 case 6: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPALN; break; in SiS_GetVCLK2Ptr()
2291 case 7: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPALN; break; in SiS_GetVCLK2Ptr()
2292 case 8: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKSOPAL; break; in SiS_GetVCLK2Ptr()
2293 default: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPAL; break; in SiS_GetVCLK2Ptr()
2297 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetVCLK2Ptr()
2299 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2300 VCLKIndex = SiS_Pr->PanelVCLKIdx300; in SiS_GetVCLK2Ptr()
2302 VCLKIndex = SiS_Pr->PanelVCLKIdx315; in SiS_GetVCLK2Ptr()
2307 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) VCLKIndex = 0x44; in SiS_GetVCLK2Ptr()
2310 if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetVCLK2Ptr()
2311 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2324 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2326 if( (SiS_Pr->ChipType == SIS_630) && in SiS_GetVCLK2Ptr()
2327 (SiS_Pr->ChipRevision >= 0x30) ) { in SiS_GetVCLK2Ptr()
2337 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2339 if( (SiS_Pr->ChipType != SIS_630) && in SiS_GetVCLK2Ptr()
2340 (SiS_Pr->ChipType != SIS_300) ) { in SiS_GetVCLK2Ptr()
2344 if(SiS_Pr->ChipType == SIS_730) { in SiS_GetVCLK2Ptr()
2364 SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetCRT2ModeRegs() argument
2372 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2ModeRegs()
2376 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2ModeRegs()
2378 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetCRT2ModeRegs()
2380 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xAF,0x40); in SiS_SetCRT2ModeRegs()
2381 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2E,0xF7); in SiS_SetCRT2ModeRegs()
2385 for(i=0,j=4; i<3; i++,j++) SiS_SetReg(SiS_Pr->SiS_Part1Port,j,0); in SiS_SetCRT2ModeRegs()
2386 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2387 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0x7F); in SiS_SetCRT2ModeRegs()
2390 tempcl = SiS_Pr->SiS_ModeType; in SiS_SetCRT2ModeRegs()
2392 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2397 if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_SetCRT2ModeRegs()
2398 tempbl = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32); in SiS_SetCRT2ModeRegs()
2401 if((SiS_Pr->SiS_VBInfo & SetCRT2ToTV) || (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2ModeRegs()
2405 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,tempbl); in SiS_SetCRT2ModeRegs()
2415 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0xA0; in SiS_SetCRT2ModeRegs()
2432 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0x50; in SiS_SetCRT2ModeRegs()
2438 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2440 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2441 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); in SiS_SetCRT2ModeRegs()
2444 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetCRT2ModeRegs()
2445 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); in SiS_SetCRT2ModeRegs()
2446 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2448 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); in SiS_SetCRT2ModeRegs()
2450 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); in SiS_SetCRT2ModeRegs()
2456 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2459 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetCRT2ModeRegs()
2462 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2ModeRegs()
2464 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetCRT2ModeRegs()
2469 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2471 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2474 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,tempah); in SiS_SetCRT2ModeRegs()
2479 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0x08; in SiS_SetCRT2ModeRegs()
2480 else if(!(SiS_IsDualEdge(SiS_Pr))) tempah |= 0x08; in SiS_SetCRT2ModeRegs()
2481 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2E,0xF0,tempah); in SiS_SetCRT2ModeRegs()
2486 if((SiS_Pr->SiS_ModeType == ModeVGA) && (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode))) { in SiS_SetCRT2ModeRegs()
2491 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2492 if(SiS_Pr->PanelXRes < 1280 && SiS_Pr->PanelYRes < 960) tempah &= ~0x80; in SiS_SetCRT2ModeRegs()
2495 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2ModeRegs()
2496 if(!(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetYPbPr525p))) { in SiS_SetCRT2ModeRegs()
2497 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetCRT2ModeRegs()
2503 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0D,0x40,tempah); in SiS_SetCRT2ModeRegs()
2506 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2507 if(SiS_Pr->PanelXRes < 1280 && SiS_Pr->PanelYRes < 960) tempah = 0; in SiS_SetCRT2ModeRegs()
2510 if(SiS_IsDualLink(SiS_Pr)) tempah |= 0x40; in SiS_SetCRT2ModeRegs()
2512 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2ModeRegs()
2513 if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) { in SiS_SetCRT2ModeRegs()
2518 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0C,tempah); in SiS_SetCRT2ModeRegs()
2522 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2527 if((modeflag & CRT2Mode) && (SiS_Pr->SiS_ModeType > ModeVGA)) { in SiS_SetCRT2ModeRegs()
2528 if(SiS_Pr->SiS_VBInfo & DriverMode) { in SiS_SetCRT2ModeRegs()
2533 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) tempah |= 0x02; in SiS_SetCRT2ModeRegs()
2535 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) tempah ^= 0x01; in SiS_SetCRT2ModeRegs()
2537 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 1; in SiS_SetCRT2ModeRegs()
2539 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2e,0xF0,tempah); in SiS_SetCRT2ModeRegs()
2546 if( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) && (SiS_Pr->SiS_ModeType > ModeVGA) ) { in SiS_SetCRT2ModeRegs()
2551 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2553 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,tempah); in SiS_SetCRT2ModeRegs()
2562 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2564 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2583 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2585 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_SetCRT2ModeRegs()
2589 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2601 if((IS_SIS740) || (SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_SetCRT2ModeRegs()
2604 if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || in SiS_SetCRT2ModeRegs()
2605 ((SiS_Pr->SiS_ROMNew) && (!(ROMAddr[0x5b] & 0x04)))) { in SiS_SetCRT2ModeRegs()
2609 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,0xcf,tempah); in SiS_SetCRT2ModeRegs()
2610 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,0x3f,tempbl); in SiS_SetCRT2ModeRegs()
2611 } else if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2613 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2c,0xcf); /* For 301 */ in SiS_SetCRT2ModeRegs()
2614 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); in SiS_SetCRT2ModeRegs()
2615 } else if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetCRT2ModeRegs()
2616 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); /* For 30xLV */ in SiS_SetCRT2ModeRegs()
2617 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x21,0xc0); in SiS_SetCRT2ModeRegs()
2618 } else if(SiS_Pr->SiS_VBType & VB_NoLCD) { /* For 301B-DH */ in SiS_SetCRT2ModeRegs()
2621 if(SiS_Pr->SiS_TVBlue == 0) { in SiS_SetCRT2ModeRegs()
2623 } else if(SiS_Pr->SiS_TVBlue == -1) { in SiS_SetCRT2ModeRegs()
2629 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2630 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,tempbl2,tempah2); in SiS_SetCRT2ModeRegs()
2634 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2636 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_SetCRT2ModeRegs()
2640 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2641 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,tempbl2,tempah2); in SiS_SetCRT2ModeRegs()
2646 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0x00; in SiS_SetCRT2ModeRegs()
2647 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,0x7f,tempah); in SiS_SetCRT2ModeRegs()
2651 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2653 if(!(SiS_IsDualEdge(SiS_Pr))) tempah = 0x80; in SiS_SetCRT2ModeRegs()
2655 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2660 } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2ModeRegs()
2663 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); in SiS_SetCRT2ModeRegs()
2665 if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || in SiS_SetCRT2ModeRegs()
2666 ((SiS_Pr->SiS_VBType & VB_NoLCD) && in SiS_SetCRT2ModeRegs()
2667 (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD))) { in SiS_SetCRT2ModeRegs()
2668 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x23,0x7F); in SiS_SetCRT2ModeRegs()
2670 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x23,0x80); in SiS_SetCRT2ModeRegs()
2676 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2ModeRegs()
2677 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x0D,0x80); in SiS_SetCRT2ModeRegs()
2678 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetCRT2ModeRegs()
2679 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x3A,0xC0); in SiS_SetCRT2ModeRegs()
2686 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2688 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetCRT2ModeRegs()
2692 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2694 if(SiS_IsDualEdge(SiS_Pr)) tempbl = 0xff; in SiS_SetCRT2ModeRegs()
2696 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2698 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) { in SiS_SetCRT2ModeRegs()
2699 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_SetCRT2ModeRegs()
2702 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); in SiS_SetCRT2ModeRegs()
2704 } else if(SiS_Pr->ChipType == SIS_550) { in SiS_SetCRT2ModeRegs()
2706 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_SetCRT2ModeRegs()
2707 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); in SiS_SetCRT2ModeRegs()
2723 SiS_GetResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetResInfo() argument
2726 return ((unsigned short)SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo); in SiS_GetResInfo()
2728 return ((unsigned short)SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO); in SiS_GetResInfo()
2732 SiS_GetCRT2ResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetCRT2ResInfo() argument
2736 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2ResInfo()
2737 xres = SiS_Pr->CHDisplay; in SiS_GetCRT2ResInfo()
2738 if(SiS_Pr->CModeFlag & HalfDCLK) xres <<= 1; in SiS_GetCRT2ResInfo()
2739 SiS_Pr->SiS_VGAHDE = SiS_Pr->SiS_HDE = xres; in SiS_GetCRT2ResInfo()
2741 SiS_Pr->SiS_VGAVDE = SiS_Pr->SiS_VDE = SiS_Pr->CVDisplay; in SiS_GetCRT2ResInfo()
2745 resindex = SiS_GetResInfo(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetCRT2ResInfo()
2748 xres = SiS_Pr->SiS_StResInfo[resindex].HTotal; in SiS_GetCRT2ResInfo()
2749 yres = SiS_Pr->SiS_StResInfo[resindex].VTotal; in SiS_GetCRT2ResInfo()
2751 xres = SiS_Pr->SiS_ModeResInfo[resindex].HTotal; in SiS_GetCRT2ResInfo()
2752 yres = SiS_Pr->SiS_ModeResInfo[resindex].VTotal; in SiS_GetCRT2ResInfo()
2753 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetCRT2ResInfo()
2756 if(!SiS_Pr->SiS_IF_DEF_DSTN && !SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_GetCRT2ResInfo()
2758 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_IF_DEF_LVDS == 1)) { in SiS_GetCRT2ResInfo()
2759 if((ModeNo != 0x03) && (SiS_Pr->SiS_SetFlag & SetDOSMode)) { in SiS_GetCRT2ResInfo()
2762 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x3a) & 0x01) { in SiS_GetCRT2ResInfo()
2772 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_GetCRT2ResInfo()
2774 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetCRT2ResInfo()
2775 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2ResInfo()
2777 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2ResInfo()
2778 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2ResInfo()
2786 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2ResInfo()
2791 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_GetCRT2ResInfo()
2796 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2ResInfo()
2805 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2ResInfo()
2806 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToHiVision)) { in SiS_GetCRT2ResInfo()
2811 if(SiS_Pr->SiS_SetFlag & SetDOSMode) { in SiS_GetCRT2ResInfo()
2813 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetCRT2ResInfo()
2814 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x17) & 0x80) yres = 480; in SiS_GetCRT2ResInfo()
2816 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x80) yres = 480; in SiS_GetCRT2ResInfo()
2818 if(SiS_Pr->SiS_IF_DEF_DSTN || SiS_Pr->SiS_IF_DEF_FSTN) yres = 480; in SiS_GetCRT2ResInfo()
2822 SiS_Pr->SiS_VGAHDE = SiS_Pr->SiS_HDE = xres; in SiS_GetCRT2ResInfo()
2823 SiS_Pr->SiS_VGAVDE = SiS_Pr->SiS_VDE = yres; in SiS_GetCRT2ResInfo()
2831 SiS_GetCRT2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Ptr() argument
2838 tempal = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetCRT2Ptr()
2840 tempal = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetCRT2Ptr()
2841 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetCRT2Ptr()
2844 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_IF_DEF_LVDS == 0)) { in SiS_GetCRT2Ptr()
2846 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { /* LCD */ in SiS_GetCRT2Ptr()
2848 tempbx = SiS_Pr->SiS_LCDResInfo; in SiS_GetCRT2Ptr()
2849 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx += 32; in SiS_GetCRT2Ptr()
2852 if(SiS_Pr->SiS_LCDResInfo == Panel_1680x1050) { in SiS_GetCRT2Ptr()
2855 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x800) || in SiS_GetCRT2Ptr()
2856 (SiS_Pr->SiS_LCDResInfo == Panel_1280x800_2) || in SiS_GetCRT2Ptr()
2857 (SiS_Pr->SiS_LCDResInfo == Panel_1280x854)) { in SiS_GetCRT2Ptr()
2861 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetCRT2Ptr()
2867 tempal = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC_NS; in SiS_GetCRT2Ptr()
2872 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_GetCRT2Ptr()
2873 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_GetCRT2Ptr()
2874 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2Ptr()
2876 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx++; in SiS_GetCRT2Ptr()
2884 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetCRT2Ptr()
2887 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetCRT2Ptr()
2889 if(!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) tempbx = 14; in SiS_GetCRT2Ptr()
2891 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
2892 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempbx = 7; in SiS_GetCRT2Ptr()
2893 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tempbx = 6; in SiS_GetCRT2Ptr()
2895 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) tempbx += 5; in SiS_GetCRT2Ptr()
2897 if(SiS_Pr->SiS_TVMode & TVSetPAL) tempbx = 3; in SiS_GetCRT2Ptr()
2899 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) tempbx += 5; in SiS_GetCRT2Ptr()
2907 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision) { in SiS_GetCRT2Ptr()
2911 if(SiS_Pr->SiS_TVMode & (TVSetPAL | TVSetPALN)) tempal = 9; in SiS_GetCRT2Ptr()
2917 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
2918 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempal = 8; in SiS_GetCRT2Ptr()
2927 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
2928 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tempal = 8; in SiS_GetCRT2Ptr()
2932 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
2933 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempal = 9; in SiS_GetCRT2Ptr()
2946 if((SiS_Pr->SiS_IF_DEF_CH70xx) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetCRT2Ptr()
2949 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetCRT2Ptr()
2951 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetCRT2Ptr()
2952 if(SiS_Pr->SiS_CHSOverScan) tempbx = 99; in SiS_GetCRT2Ptr()
2954 if(SiS_Pr->SiS_TVMode & TVSetPALM) tempbx = 94; in SiS_GetCRT2Ptr()
2955 else if(SiS_Pr->SiS_TVMode & TVSetPALN) tempbx = 96; in SiS_GetCRT2Ptr()
2958 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx++; in SiS_GetCRT2Ptr()
2963 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Ptr()
2981 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Ptr()
2988 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
2991 if(SiS_Pr->SiS_LCDInfo & LCDPass11) tempbx = 30; in SiS_GetCRT2Ptr()
2994 if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SiS_GetCRT2Ptr()
2996 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
2997 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetCRT2Ptr()
2999 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
3011 SiS_GetRAMDAC2DATA(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetRAMDAC2DATA() argument
3017 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetRAMDAC2DATA()
3018 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetRAMDAC2DATA()
3022 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetRAMDAC2DATA()
3023 index = SiS_GetModePtr(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetRAMDAC2DATA()
3025 tempax = SiS_Pr->SiS_StandTable[index].CRTC[0]; in SiS_GetRAMDAC2DATA()
3026 tempbx = SiS_Pr->SiS_StandTable[index].CRTC[6]; in SiS_GetRAMDAC2DATA()
3027 temp1 = SiS_Pr->SiS_StandTable[index].CRTC[7]; in SiS_GetRAMDAC2DATA()
3033 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetRAMDAC2DATA()
3034 index = SiS_GetRefCRT1CRTC(SiS_Pr, RefreshRateTableIndex, SiS_Pr->SiS_UseWideCRT2); in SiS_GetRAMDAC2DATA()
3036 tempax = SiS_Pr->SiS_CRT1Table[index].CR[0]; in SiS_GetRAMDAC2DATA()
3037 tempax |= (SiS_Pr->SiS_CRT1Table[index].CR[14] << 8); in SiS_GetRAMDAC2DATA()
3039 tempbx = SiS_Pr->SiS_CRT1Table[index].CR[6]; in SiS_GetRAMDAC2DATA()
3040 tempcx = SiS_Pr->SiS_CRT1Table[index].CR[13] << 8; in SiS_GetRAMDAC2DATA()
3044 temp1 = SiS_Pr->SiS_CRT1Table[index].CR[7]; in SiS_GetRAMDAC2DATA()
3059 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetRAMDAC2DATA()
3060 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = tempbx; in SiS_GetRAMDAC2DATA()
3064 SiS_CalcPanelLinkTiming(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_CalcPanelLinkTiming() argument
3069 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_CalcPanelLinkTiming()
3070 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_CalcPanelLinkTiming()
3071 if(SiS_Pr->UseCustomMode) { in SiS_CalcPanelLinkTiming()
3072 ResIndex = SiS_Pr->CHTotal; in SiS_CalcPanelLinkTiming()
3073 if(SiS_Pr->CModeFlag & HalfDCLK) ResIndex <<= 1; in SiS_CalcPanelLinkTiming()
3074 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = ResIndex; in SiS_CalcPanelLinkTiming()
3075 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_CalcPanelLinkTiming()
3078 ResIndex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_CalcPanelLinkTiming()
3080 ResIndex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC_NS; in SiS_CalcPanelLinkTiming()
3083 if(SiS_Pr->Alternate1600x1200) ResIndex = 0x20; /* 1600x1200 LCDA */ in SiS_CalcPanelLinkTiming()
3084 else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) ResIndex = 0x21; /* 1600x1200 LVDS */ in SiS_CalcPanelLinkTiming()
3086 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_NoScaleData[ResIndex].VGAHT; in SiS_CalcPanelLinkTiming()
3087 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_NoScaleData[ResIndex].VGAVT; in SiS_CalcPanelLinkTiming()
3088 SiS_Pr->SiS_HT = SiS_Pr->SiS_NoScaleData[ResIndex].LCDHT; in SiS_CalcPanelLinkTiming()
3089 SiS_Pr->SiS_VT = SiS_Pr->SiS_NoScaleData[ResIndex].LCDVT; in SiS_CalcPanelLinkTiming()
3092 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_CalcPanelLinkTiming()
3093 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_CalcPanelLinkTiming()
3097 SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; in SiS_CalcPanelLinkTiming()
3098 SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; in SiS_CalcPanelLinkTiming()
3099 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_CalcPanelLinkTiming()
3100 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_CalcPanelLinkTiming()
3101 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT - (SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE); in SiS_CalcPanelLinkTiming()
3102 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT - (SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE); in SiS_CalcPanelLinkTiming()
3107 SiS_GetCRT2DataLVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2DataLVDS() argument
3113 SiS_GetCRT2ResInfo(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetCRT2DataLVDS()
3115 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2DataLVDS()
3116 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2DataLVDS()
3117 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2DataLVDS()
3118 SiS_Pr->SiS_NewFlickerMode = 0; in SiS_GetCRT2DataLVDS()
3119 SiS_Pr->SiS_RVBHRS = 50; in SiS_GetCRT2DataLVDS()
3120 SiS_Pr->SiS_RY1COE = 0; in SiS_GetCRT2DataLVDS()
3121 SiS_Pr->SiS_RY2COE = 0; in SiS_GetCRT2DataLVDS()
3122 SiS_Pr->SiS_RY3COE = 0; in SiS_GetCRT2DataLVDS()
3123 SiS_Pr->SiS_RY4COE = 0; in SiS_GetCRT2DataLVDS()
3124 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2DataLVDS()
3127 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetCRT2DataLVDS()
3130 SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2DataLVDS()
3131 SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetCRT2DataLVDS()
3137 backup = SiS_Pr->SiS_IF_DEF_LVDS; in SiS_GetCRT2DataLVDS()
3138 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_GetCRT2DataLVDS()
3139 SiS_Pr->SiS_IF_DEF_LVDS = 1; in SiS_GetCRT2DataLVDS()
3142 SiS_GetCRT2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_GetCRT2DataLVDS()
3145 SiS_Pr->SiS_IF_DEF_LVDS = backup; in SiS_GetCRT2DataLVDS()
3148 case 10: LVDSData = SiS_Pr->SiS_LVDS320x240Data_1; break; in SiS_GetCRT2DataLVDS()
3149 case 14: LVDSData = SiS_Pr->SiS_LVDS320x240Data_2; break; in SiS_GetCRT2DataLVDS()
3150 case 12: LVDSData = SiS_Pr->SiS_LVDS640x480Data_1; break; in SiS_GetCRT2DataLVDS()
3151 case 16: LVDSData = SiS_Pr->SiS_LVDS800x600Data_1; break; in SiS_GetCRT2DataLVDS()
3152 case 18: LVDSData = SiS_Pr->SiS_LVDS1024x600Data_1; break; in SiS_GetCRT2DataLVDS()
3153 case 20: LVDSData = SiS_Pr->SiS_LVDS1024x768Data_1; break; in SiS_GetCRT2DataLVDS()
3155 case 80: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_1; break; in SiS_GetCRT2DataLVDS()
3156 case 81: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_2; break; in SiS_GetCRT2DataLVDS()
3157 case 82: LVDSData = SiS_Pr->SiS_LVDSBARCO1024Data_1; break; in SiS_GetCRT2DataLVDS()
3158 case 84: LVDSData = SiS_Pr->SiS_LVDS848x480Data_1; break; in SiS_GetCRT2DataLVDS()
3159 case 85: LVDSData = SiS_Pr->SiS_LVDS848x480Data_2; break; in SiS_GetCRT2DataLVDS()
3161 case 90: LVDSData = SiS_Pr->SiS_CHTVUNTSCData; break; in SiS_GetCRT2DataLVDS()
3162 case 91: LVDSData = SiS_Pr->SiS_CHTVONTSCData; break; in SiS_GetCRT2DataLVDS()
3163 case 92: LVDSData = SiS_Pr->SiS_CHTVUPALData; break; in SiS_GetCRT2DataLVDS()
3164 case 93: LVDSData = SiS_Pr->SiS_CHTVOPALData; break; in SiS_GetCRT2DataLVDS()
3165 case 94: LVDSData = SiS_Pr->SiS_CHTVUPALMData; break; in SiS_GetCRT2DataLVDS()
3166 case 95: LVDSData = SiS_Pr->SiS_CHTVOPALMData; break; in SiS_GetCRT2DataLVDS()
3167 case 96: LVDSData = SiS_Pr->SiS_CHTVUPALNData; break; in SiS_GetCRT2DataLVDS()
3168 case 97: LVDSData = SiS_Pr->SiS_CHTVOPALNData; break; in SiS_GetCRT2DataLVDS()
3169 case 99: LVDSData = SiS_Pr->SiS_CHTVSOPALData; break; in SiS_GetCRT2DataLVDS()
3173 SiS_Pr->SiS_VGAHT = (LVDSData+ResIndex)->VGAHT; in SiS_GetCRT2DataLVDS()
3174 SiS_Pr->SiS_VGAVT = (LVDSData+ResIndex)->VGAVT; in SiS_GetCRT2DataLVDS()
3175 SiS_Pr->SiS_HT = (LVDSData+ResIndex)->LCDHT; in SiS_GetCRT2DataLVDS()
3176 SiS_Pr->SiS_VT = (LVDSData+ResIndex)->LCDVT; in SiS_GetCRT2DataLVDS()
3178 SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2DataLVDS()
3181 if( (!(SiS_Pr->SiS_VBType & VB_SISVB)) && in SiS_GetCRT2DataLVDS()
3182 (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && in SiS_GetCRT2DataLVDS()
3183 (!(SiS_Pr->SiS_LCDInfo & LCDPass11)) ) { in SiS_GetCRT2DataLVDS()
3184 if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) || in SiS_GetCRT2DataLVDS()
3185 (SiS_Pr->SiS_SetFlag & SetDOSMode) ) { in SiS_GetCRT2DataLVDS()
3186 SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; in SiS_GetCRT2DataLVDS()
3187 SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; in SiS_GetCRT2DataLVDS()
3189 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetCRT2DataLVDS()
3191 SiS_Pr->SiS_HDE = 1280; in SiS_GetCRT2DataLVDS()
3192 SiS_Pr->SiS_VDE = 1024; in SiS_GetCRT2DataLVDS()
3202 SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Data301() argument
3215 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetCRT2Data301()
3216 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_GetCRT2Data301()
3217 } else if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3218 modeflag = SiS_Pr->CModeFlag; in SiS_GetCRT2Data301()
3221 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetCRT2Data301()
3222 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetCRT2Data301()
3224 resinfo661 = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].ROMMODEIDX661; in SiS_GetCRT2Data301()
3225 if( (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && in SiS_GetCRT2Data301()
3226 (SiS_Pr->SiS_SetFlag & LCDVESATiming) && in SiS_GetCRT2Data301()
3228 (SiS_Pr->SiS_NeedRomModeData) ) { in SiS_GetCRT2Data301()
3229 if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetCRT2Data301()
3232 ROMAddr = SiS_Pr->VirtualRomBase; in SiS_GetCRT2Data301()
3239 SiS_Pr->SiS_NewFlickerMode = 0; in SiS_GetCRT2Data301()
3240 SiS_Pr->SiS_RVBHRS = 50; in SiS_GetCRT2Data301()
3241 SiS_Pr->SiS_RY1COE = 0; in SiS_GetCRT2Data301()
3242 SiS_Pr->SiS_RY2COE = 0; in SiS_GetCRT2Data301()
3243 SiS_Pr->SiS_RY3COE = 0; in SiS_GetCRT2Data301()
3244 SiS_Pr->SiS_RY4COE = 0; in SiS_GetCRT2Data301()
3245 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2Data301()
3247 SiS_GetCRT2ResInfo(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetCRT2Data301()
3249 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_GetCRT2Data301()
3251 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3253 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3254 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3255 SiS_Pr->SiS_HDE = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3256 SiS_Pr->SiS_VDE = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3258 tempax = SiS_Pr->CHTotal; in SiS_GetCRT2Data301()
3260 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetCRT2Data301()
3261 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_GetCRT2Data301()
3265 SiS_GetRAMDAC2DATA(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data301()
3269 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_GetCRT2Data301()
3271 SiS_GetCRT2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex, in SiS_GetCRT2Data301()
3275 case 2: TVPtr = SiS_Pr->SiS_ExtHiTVData; break; in SiS_GetCRT2Data301()
3276 case 3: TVPtr = SiS_Pr->SiS_ExtPALData; break; in SiS_GetCRT2Data301()
3277 case 4: TVPtr = SiS_Pr->SiS_ExtNTSCData; break; in SiS_GetCRT2Data301()
3278 case 5: TVPtr = SiS_Pr->SiS_Ext525iData; break; in SiS_GetCRT2Data301()
3279 case 6: TVPtr = SiS_Pr->SiS_Ext525pData; break; in SiS_GetCRT2Data301()
3280 case 7: TVPtr = SiS_Pr->SiS_Ext750pData; break; in SiS_GetCRT2Data301()
3281 case 8: TVPtr = SiS_Pr->SiS_StPALData; break; in SiS_GetCRT2Data301()
3282 case 9: TVPtr = SiS_Pr->SiS_StNTSCData; break; in SiS_GetCRT2Data301()
3283 case 10: TVPtr = SiS_Pr->SiS_St525iData; break; in SiS_GetCRT2Data301()
3284 case 11: TVPtr = SiS_Pr->SiS_St525pData; break; in SiS_GetCRT2Data301()
3285 case 12: TVPtr = SiS_Pr->SiS_St750pData; break; in SiS_GetCRT2Data301()
3286 case 13: TVPtr = SiS_Pr->SiS_St1HiTVData; break; in SiS_GetCRT2Data301()
3287 case 14: TVPtr = SiS_Pr->SiS_St2HiTVData; break; in SiS_GetCRT2Data301()
3288 default: TVPtr = SiS_Pr->SiS_StPALData; break; in SiS_GetCRT2Data301()
3291 SiS_Pr->SiS_RVBHCMAX = (TVPtr+ResIndex)->RVBHCMAX; in SiS_GetCRT2Data301()
3292 SiS_Pr->SiS_RVBHCFACT = (TVPtr+ResIndex)->RVBHCFACT; in SiS_GetCRT2Data301()
3293 SiS_Pr->SiS_VGAHT = (TVPtr+ResIndex)->VGAHT; in SiS_GetCRT2Data301()
3294 SiS_Pr->SiS_VGAVT = (TVPtr+ResIndex)->VGAVT; in SiS_GetCRT2Data301()
3295 SiS_Pr->SiS_HDE = (TVPtr+ResIndex)->TVHDE; in SiS_GetCRT2Data301()
3296 SiS_Pr->SiS_VDE = (TVPtr+ResIndex)->TVVDE; in SiS_GetCRT2Data301()
3297 SiS_Pr->SiS_RVBHRS2 = (TVPtr+ResIndex)->RVBHRS2 & 0x0fff; in SiS_GetCRT2Data301()
3299 SiS_Pr->SiS_RVBHRS = (TVPtr+ResIndex)->HALFRVBHRS; in SiS_GetCRT2Data301()
3300 if(SiS_Pr->SiS_RVBHRS2) { in SiS_GetCRT2Data301()
3301 SiS_Pr->SiS_RVBHRS2 = ((SiS_Pr->SiS_RVBHRS2 + 3) >> 1) - 3; in SiS_GetCRT2Data301()
3303 if((TVPtr+ResIndex)->RVBHRS2 & 0x8000) SiS_Pr->SiS_RVBHRS2 -= tempax; in SiS_GetCRT2Data301()
3304 else SiS_Pr->SiS_RVBHRS2 += tempax; in SiS_GetCRT2Data301()
3307 SiS_Pr->SiS_RVBHRS = (TVPtr+ResIndex)->RVBHRS; in SiS_GetCRT2Data301()
3309 SiS_Pr->SiS_NewFlickerMode = ((TVPtr+ResIndex)->FlickerMode) << 7; in SiS_GetCRT2Data301()
3311 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetCRT2Data301()
3317 SiS_Pr->SiS_NewFlickerMode = 0x40; in SiS_GetCRT2Data301()
3320 if(SiS_Pr->SiS_VGAVDE == 350) SiS_Pr->SiS_TVMode |= TVSetTVSimuMode; in SiS_GetCRT2Data301()
3322 SiS_Pr->SiS_HT = ExtHiTVHT; in SiS_GetCRT2Data301()
3323 SiS_Pr->SiS_VT = ExtHiTVVT; in SiS_GetCRT2Data301()
3324 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetCRT2Data301()
3325 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_GetCRT2Data301()
3326 SiS_Pr->SiS_HT = StHiTVHT; in SiS_GetCRT2Data301()
3327 SiS_Pr->SiS_VT = StHiTVVT; in SiS_GetCRT2Data301()
3331 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Data301()
3333 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_GetCRT2Data301()
3334 SiS_Pr->SiS_HT = 1650; in SiS_GetCRT2Data301()
3335 SiS_Pr->SiS_VT = 750; in SiS_GetCRT2Data301()
3336 } else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_GetCRT2Data301()
3337 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3338 if(SiS_Pr->SiS_TVMode & TVSet525p1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3339 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3341 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3342 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3343 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3348 SiS_Pr->SiS_RY1COE = (TVPtr+ResIndex)->RY1COE; in SiS_GetCRT2Data301()
3349 SiS_Pr->SiS_RY2COE = (TVPtr+ResIndex)->RY2COE; in SiS_GetCRT2Data301()
3350 SiS_Pr->SiS_RY3COE = (TVPtr+ResIndex)->RY3COE; in SiS_GetCRT2Data301()
3351 SiS_Pr->SiS_RY4COE = (TVPtr+ResIndex)->RY4COE; in SiS_GetCRT2Data301()
3354 SiS_Pr->SiS_RY1COE = 0x00; in SiS_GetCRT2Data301()
3355 SiS_Pr->SiS_RY2COE = 0xf4; in SiS_GetCRT2Data301()
3356 SiS_Pr->SiS_RY3COE = 0x10; in SiS_GetCRT2Data301()
3357 SiS_Pr->SiS_RY4COE = 0x38; in SiS_GetCRT2Data301()
3360 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_GetCRT2Data301()
3361 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3362 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3363 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3365 SiS_Pr->SiS_HT = PALHT; in SiS_GetCRT2Data301()
3366 SiS_Pr->SiS_VT = PALVT; in SiS_GetCRT2Data301()
3371 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetCRT2Data301()
3373 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3374 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3376 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3378 SiS_Pr->SiS_HDE = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3379 SiS_Pr->SiS_VDE = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3381 tempax = SiS_Pr->CHTotal; in SiS_GetCRT2Data301()
3383 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetCRT2Data301()
3384 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_GetCRT2Data301()
3390 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_GetCRT2Data301()
3392 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3393 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3394 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3395 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3398 } else if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) && (romptr) && (ROMAddr) ) { in SiS_GetCRT2Data301()
3401 SiS_Pr->SiS_RVBHCMAX = ROMAddr[romptr]; in SiS_GetCRT2Data301()
3402 SiS_Pr->SiS_RVBHCFACT = ROMAddr[romptr+1]; in SiS_GetCRT2Data301()
3403 SiS_Pr->SiS_VGAHT = ROMAddr[romptr+2] | ((ROMAddr[romptr+3] & 0x0f) << 8); in SiS_GetCRT2Data301()
3404 SiS_Pr->SiS_VGAVT = (ROMAddr[romptr+4] << 4) | ((ROMAddr[romptr+3] & 0xf0) >> 4); in SiS_GetCRT2Data301()
3405 SiS_Pr->SiS_HT = ROMAddr[romptr+5] | ((ROMAddr[romptr+6] & 0x0f) << 8); in SiS_GetCRT2Data301()
3406 SiS_Pr->SiS_VT = (ROMAddr[romptr+7] << 4) | ((ROMAddr[romptr+6] & 0xf0) >> 4); in SiS_GetCRT2Data301()
3407 SiS_Pr->SiS_RVBHRS2 = ROMAddr[romptr+8] | ((ROMAddr[romptr+9] & 0x0f) << 8); in SiS_GetCRT2Data301()
3408 if((SiS_Pr->SiS_RVBHRS2) && (modeflag & HalfDCLK)) { in SiS_GetCRT2Data301()
3409 SiS_Pr->SiS_RVBHRS2 = ((SiS_Pr->SiS_RVBHRS2 + 3) >> 1) - 3; in SiS_GetCRT2Data301()
3411 if(ROMAddr[romptr+9] & 0x80) SiS_Pr->SiS_RVBHRS2 -= tempax; in SiS_GetCRT2Data301()
3412 else SiS_Pr->SiS_RVBHRS2 += tempax; in SiS_GetCRT2Data301()
3414 if(SiS_Pr->SiS_VGAHT) gotit = true; in SiS_GetCRT2Data301()
3416 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetCRT2Data301()
3417 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetCRT2Data301()
3418 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3419 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3420 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3421 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3422 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3423 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3424 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2Data301()
3433 SiS_GetCRT2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex, in SiS_GetCRT2Data301()
3437 case Panel_1024x768 : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; in SiS_GetCRT2Data301()
3438 case Panel_1024x768 + 32: LCDPtr = SiS_Pr->SiS_St2LCD1024x768Data; break; in SiS_GetCRT2Data301()
3440 case Panel_1280x720 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x720Data; break; in SiS_GetCRT2Data301()
3441 case Panel_1280x768_2 : LCDPtr = SiS_Pr->SiS_ExtLCD1280x768_2Data; break; in SiS_GetCRT2Data301()
3442 case Panel_1280x768_2+ 32: LCDPtr = SiS_Pr->SiS_StLCD1280x768_2Data; break; in SiS_GetCRT2Data301()
3444 case Panel_1280x800 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x800Data; break; in SiS_GetCRT2Data301()
3446 case Panel_1280x800_2+ 32: LCDPtr = SiS_Pr->SiS_LCD1280x800_2Data; break; in SiS_GetCRT2Data301()
3448 case Panel_1280x854 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x854Data; break; in SiS_GetCRT2Data301()
3450 case Panel_1280x960 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x960Data; break; in SiS_GetCRT2Data301()
3451 case Panel_1280x1024 : LCDPtr = SiS_Pr->SiS_ExtLCD1280x1024Data; break; in SiS_GetCRT2Data301()
3452 case Panel_1280x1024 + 32: LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; in SiS_GetCRT2Data301()
3453 case Panel_1400x1050 : LCDPtr = SiS_Pr->SiS_ExtLCD1400x1050Data; break; in SiS_GetCRT2Data301()
3454 case Panel_1400x1050 + 32: LCDPtr = SiS_Pr->SiS_StLCD1400x1050Data; break; in SiS_GetCRT2Data301()
3455 case Panel_1600x1200 : LCDPtr = SiS_Pr->SiS_ExtLCD1600x1200Data; break; in SiS_GetCRT2Data301()
3456 case Panel_1600x1200 + 32: LCDPtr = SiS_Pr->SiS_StLCD1600x1200Data; break; in SiS_GetCRT2Data301()
3458 case Panel_1680x1050 + 32: LCDPtr = SiS_Pr->SiS_LCD1680x1050Data; break; in SiS_GetCRT2Data301()
3459 case 100 : LCDPtr = SiS_Pr->SiS_NoScaleData; break; in SiS_GetCRT2Data301()
3462 case 201 : LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; in SiS_GetCRT2Data301()
3464 default : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; in SiS_GetCRT2Data301()
3467 SiS_Pr->SiS_RVBHCMAX = (LCDPtr+ResIndex)->RVBHCMAX; in SiS_GetCRT2Data301()
3468 SiS_Pr->SiS_RVBHCFACT = (LCDPtr+ResIndex)->RVBHCFACT; in SiS_GetCRT2Data301()
3469 SiS_Pr->SiS_VGAHT = (LCDPtr+ResIndex)->VGAHT; in SiS_GetCRT2Data301()
3470 SiS_Pr->SiS_VGAVT = (LCDPtr+ResIndex)->VGAVT; in SiS_GetCRT2Data301()
3471 SiS_Pr->SiS_HT = (LCDPtr+ResIndex)->LCDHT; in SiS_GetCRT2Data301()
3472 SiS_Pr->SiS_VT = (LCDPtr+ResIndex)->LCDVT; in SiS_GetCRT2Data301()
3476 tempax = SiS_Pr->PanelXRes; in SiS_GetCRT2Data301()
3477 tempbx = SiS_Pr->PanelYRes; in SiS_GetCRT2Data301()
3479 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Data301()
3481 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_GetCRT2Data301()
3482 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetCRT2Data301()
3483 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 560; in SiS_GetCRT2Data301()
3484 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 640; in SiS_GetCRT2Data301()
3487 if (SiS_Pr->SiS_VGAVDE == 357) tempbx = 527; in SiS_GetCRT2Data301()
3488 else if(SiS_Pr->SiS_VGAVDE == 420) tempbx = 620; in SiS_GetCRT2Data301()
3489 else if(SiS_Pr->SiS_VGAVDE == 525) tempbx = 775; in SiS_GetCRT2Data301()
3490 else if(SiS_Pr->SiS_VGAVDE == 600) tempbx = 775; in SiS_GetCRT2Data301()
3491 else if(SiS_Pr->SiS_VGAVDE == 350) tempbx = 560; in SiS_GetCRT2Data301()
3492 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 640; in SiS_GetCRT2Data301()
3496 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 700; in SiS_GetCRT2Data301()
3497 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 800; in SiS_GetCRT2Data301()
3498 else if(SiS_Pr->SiS_VGAVDE == 1024) tempbx = 960; in SiS_GetCRT2Data301()
3501 if (SiS_Pr->SiS_VGAVDE == 360) tempbx = 768; in SiS_GetCRT2Data301()
3502 else if(SiS_Pr->SiS_VGAVDE == 375) tempbx = 800; in SiS_GetCRT2Data301()
3503 else if(SiS_Pr->SiS_VGAVDE == 405) tempbx = 864; in SiS_GetCRT2Data301()
3506 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2Data301()
3507 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 875; in SiS_GetCRT2Data301()
3508 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 1000; in SiS_GetCRT2Data301()
3513 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetCRT2Data301()
3514 tempax = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3515 tempbx = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3518 SiS_Pr->SiS_HDE = tempax; in SiS_GetCRT2Data301()
3519 SiS_Pr->SiS_VDE = tempbx; in SiS_GetCRT2Data301()
3525 SiS_GetCRT2Data(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Data() argument
3529 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2Data()
3531 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_GetCRT2Data()
3532 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3534 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_GetCRT2Data()
3536 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3538 SiS_GetCRT2Data301(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3544 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3554 SiS_GetLVDSDesPtr(struct SiS_Private *SiS_Pr) in SiS_GetLVDSDesPtr() argument
3559 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetLVDSDesPtr()
3561 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesPtr()
3562 if(SiS_Pr->SiS_LCDTypeInfo == 4) { in SiS_GetLVDSDesPtr()
3563 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetLVDSDesPtr()
3564 PanelDesPtr = SiS_Pr->SiS_PanelType04_1a; in SiS_GetLVDSDesPtr()
3565 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesPtr()
3566 PanelDesPtr = SiS_Pr->SiS_PanelType04_2a; in SiS_GetLVDSDesPtr()
3568 } else if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SiS_GetLVDSDesPtr()
3569 PanelDesPtr = SiS_Pr->SiS_PanelType04_1b; in SiS_GetLVDSDesPtr()
3570 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesPtr()
3571 PanelDesPtr = SiS_Pr->SiS_PanelType04_2b; in SiS_GetLVDSDesPtr()
3582 SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetLVDSDesData() argument
3588 SiS_Pr->SiS_LCDHDES = 0; in SiS_GetLVDSDesData()
3589 SiS_Pr->SiS_LCDVDES = 0; in SiS_GetLVDSDesData()
3592 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetLVDSDesData()
3595 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_GetLVDSDesData()
3596 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLVDSDesData()
3597 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3598 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3605 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
3606 if(SiS_Pr->SiS_LCDResInfo == Panel_640x480 && SiS_Pr->SiS_LCDTypeInfo == 3) { in SiS_GetLVDSDesData()
3607 SiS_Pr->SiS_LCDHDES = 8; in SiS_GetLVDSDesData()
3608 if (SiS_Pr->SiS_VGAVDE >= 480) SiS_Pr->SiS_LCDVDES = 512; in SiS_GetLVDSDesData()
3609 else if(SiS_Pr->SiS_VGAVDE >= 400) SiS_Pr->SiS_LCDVDES = 436; in SiS_GetLVDSDesData()
3610 else if(SiS_Pr->SiS_VGAVDE >= 350) SiS_Pr->SiS_LCDVDES = 440; in SiS_GetLVDSDesData()
3617 if( (SiS_Pr->UseCustomMode) || in SiS_GetLVDSDesData()
3618 (SiS_Pr->SiS_LCDResInfo == Panel_Custom) || in SiS_GetLVDSDesData()
3619 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLVDSDesData()
3620 (SiS_Pr->SiS_CustomT == CUT_PANEL856) || in SiS_GetLVDSDesData()
3621 (SiS_Pr->SiS_LCDInfo & LCDPass11) ) { in SiS_GetLVDSDesData()
3625 if(ModeNo <= 0x13) ResIndex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetLVDSDesData()
3626 else ResIndex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetLVDSDesData()
3628 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetLVDSDesData()
3631 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesData()
3633 if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { in SiS_GetLVDSDesData()
3634 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE) / 2); in SiS_GetLVDSDesData()
3636 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3637 SiS_Pr->SiS_LCDVDES = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE) / 2); in SiS_GetLVDSDesData()
3640 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3641 switch(SiS_Pr->SiS_CustomT) { in SiS_GetLVDSDesData()
3645 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLVDSDesData()
3646 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3650 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
3652 if(SiS_Pr->SiS_CustomT != CUT_COMPAQ1280) { in SiS_GetLVDSDesData()
3653 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3659 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3667 if((SiS_Pr->SiS_IF_DEF_CH70xx != 0) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetLVDSDesData()
3669 if((SiS_Pr->SiS_TVMode & TVSetPAL) && (!(SiS_Pr->SiS_TVMode & TVSetPALM))) { in SiS_GetLVDSDesData()
3670 if(ResIndex <= 3) SiS_Pr->SiS_LCDHDES = 256; in SiS_GetLVDSDesData()
3673 } else if((PanelDesPtr = SiS_GetLVDSDesPtr(SiS_Pr))) { in SiS_GetLVDSDesData()
3675 SiS_Pr->SiS_LCDHDES = (PanelDesPtr+ResIndex)->LCDHDES; in SiS_GetLVDSDesData()
3676 SiS_Pr->SiS_LCDVDES = (PanelDesPtr+ResIndex)->LCDVDES; in SiS_GetLVDSDesData()
3678 } else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesData()
3680 if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { in SiS_GetLVDSDesData()
3681 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE) / 2); in SiS_GetLVDSDesData()
3683 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3684 SiS_Pr->SiS_LCDVDES = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE) / 2); in SiS_GetLVDSDesData()
3686 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
3687 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3689 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
3693 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT; in SiS_GetLVDSDesData()
3696 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3704 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
3706 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
3708 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3709 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3711 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT + 3; in SiS_GetLVDSDesData()
3712 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT; in SiS_GetLVDSDesData()
3713 if(SiS_Pr->SiS_VGAVDE == 400) SiS_Pr->SiS_LCDVDES -= 2; in SiS_GetLVDSDesData()
3714 else SiS_Pr->SiS_LCDVDES -= 4; in SiS_GetLVDSDesData()
3718 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3719 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3721 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT - 1; in SiS_GetLVDSDesData()
3722 if(SiS_Pr->SiS_VGAVDE <= 400) SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 8; in SiS_GetLVDSDesData()
3723 if(SiS_Pr->SiS_VGAVDE <= 350) SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 12; in SiS_GetLVDSDesData()
3728 if( (SiS_Pr->SiS_VGAHDE == SiS_Pr->PanelXRes) && in SiS_GetLVDSDesData()
3729 (SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) ) { in SiS_GetLVDSDesData()
3730 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3732 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT - 1; in SiS_GetLVDSDesData()
3737 switch(SiS_Pr->SiS_LCDTypeInfo) { in SiS_GetLVDSDesData()
3739 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_LCDVDES = 0; in SiS_GetLVDSDesData()
3742 SiS_Pr->SiS_LCDHDES = 8; in SiS_GetLVDSDesData()
3743 if (SiS_Pr->SiS_VGAVDE >= 480) SiS_Pr->SiS_LCDVDES = 512; in SiS_GetLVDSDesData()
3744 else if(SiS_Pr->SiS_VGAVDE >= 400) SiS_Pr->SiS_LCDVDES = 436; in SiS_GetLVDSDesData()
3745 else if(SiS_Pr->SiS_VGAVDE >= 350) SiS_Pr->SiS_LCDVDES = 440; in SiS_GetLVDSDesData()
3751 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
3754 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3755 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3761 SiS_Pr->SiS_LCDVDES = 524; in SiS_GetLVDSDesData()
3768 if((ModeNo <= 0x13) && (SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLVDSDesData()
3769 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetLVDSDesData()
3770 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetLVDSDesData()
3771 if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 632; in SiS_GetLVDSDesData()
3772 } else if(!(SiS_Pr->SiS_SetFlag & SetDOSMode)) { in SiS_GetLVDSDesData()
3773 if(SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) { in SiS_GetLVDSDesData()
3774 if(SiS_Pr->SiS_LCDResInfo >= Panel_1024x768) { in SiS_GetLVDSDesData()
3775 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
3776 if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 320; in SiS_GetLVDSDesData()
3779 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) SiS_Pr->SiS_LCDHDES = 480; in SiS_GetLVDSDesData()
3780 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 804; in SiS_GetLVDSDesData()
3781 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 704; in SiS_GetLVDSDesData()
3783 SiS_Pr->SiS_LCDHDES = 320; in SiS_GetLVDSDesData()
3784 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 632; in SiS_GetLVDSDesData()
3785 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 542; in SiS_GetLVDSDesData()
3802 SiS_HandlePWD(struct SiS_Private *SiS_Pr) in SiS_HandlePWD() argument
3806 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_HandlePWD()
3807 unsigned short romptr = GetLCDStructPtr661_2(SiS_Pr); in SiS_HandlePWD()
3808 unsigned char drivermode = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40; in SiS_HandlePWD()
3811 if( (SiS_Pr->SiS_VBType & VB_SISPWD) && in SiS_HandlePWD()
3813 (SiS_Pr->SiS_PWDOffset) ) { in SiS_HandlePWD()
3814 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2b,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 0]); in SiS_HandlePWD()
3815 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2c,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 1]); in SiS_HandlePWD()
3816 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2d,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 2]); in SiS_HandlePWD()
3817 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2e,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 3]); in SiS_HandlePWD()
3818 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2f,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 4]); in SiS_HandlePWD()
3824 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x27,0x7f,temp); in SiS_HandlePWD()
3836 SiS_DisableBridge(struct SiS_Private *SiS_Pr) in SiS_DisableBridge() argument
3843 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_DisableBridge()
3845 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* ===== For 30xB/C/LV ===== */ in SiS_DisableBridge()
3847 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
3851 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
3852 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3853 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFE); in SiS_DisableBridge()
3855 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
3857 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
3859 if(SiS_Is301B(SiS_Pr)) { in SiS_DisableBridge()
3860 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1f,0x3f); in SiS_DisableBridge()
3861 SiS_ShortDelay(SiS_Pr,1); in SiS_DisableBridge()
3863 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xDF); in SiS_DisableBridge()
3864 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
3865 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
3866 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
3867 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
3868 if(!(SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_DisableBridge()
3869 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); in SiS_DisableBridge()
3870 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_DisableBridge()
3872 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
3873 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
3874 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
3875 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3876 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFD); in SiS_DisableBridge()
3878 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
3889 bool custom1 = (SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) || in SiS_DisableBridge()
3890 (SiS_Pr->SiS_CustomT == CUT_CLEVO1400); in SiS_DisableBridge()
3892 modenum = SiS_GetReg(SiS_Pr->SiS_P3d4,0x34) & 0x7f; in SiS_DisableBridge()
3894 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3897 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_DisableBridge()
3898 if(SiS_Pr->SiS_CustomT != CUT_CLEVO1400) { in SiS_DisableBridge()
3899 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_DisableBridge()
3904 didpwd = SiS_HandlePWD(SiS_Pr); in SiS_DisableBridge()
3907 (SiS_IsVAMode(SiS_Pr)) || in SiS_DisableBridge()
3908 (!(SiS_IsDualEdge(SiS_Pr))) ) { in SiS_DisableBridge()
3910 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xfe); in SiS_DisableBridge()
3911 if(custom1) SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
3913 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xfc); in SiS_DisableBridge()
3918 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_DisableBridge()
3919 SiS_DDC2Delay(SiS_Pr,0xe000); in SiS_DisableBridge()
3920 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0x00); in SiS_DisableBridge()
3921 pushax = SiS_GetReg(SiS_Pr->SiS_P3c4,0x06); in SiS_DisableBridge()
3923 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x06,0xE3); in SiS_DisableBridge()
3925 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
3930 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_DisableBridge()
3933 if(SiS_IsVAMode(SiS_Pr)) tempah = 0xf7; in SiS_DisableBridge()
3934 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x4c,tempah); in SiS_DisableBridge()
3938 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3939 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1F,~0x10); in SiS_DisableBridge()
3943 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_DisableBridge()
3945 if(!(SiS_IsVAMode(SiS_Pr))) tempah = 0xbf; in SiS_DisableBridge()
3947 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1F,tempah); in SiS_DisableBridge()
3949 if((SiS_IsVAMode(SiS_Pr)) || in SiS_DisableBridge()
3950 ((SiS_Pr->SiS_VBType & VB_SISLVDS) && (modenum <= 0x13))) { in SiS_DisableBridge()
3952 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
3953 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3954 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
3956 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
3957 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1E,0xDF); in SiS_DisableBridge()
3961 if((!(SiS_IsVAMode(SiS_Pr))) || in SiS_DisableBridge()
3962 ((SiS_Pr->SiS_VBType & VB_SISLVDS) && (modenum <= 0x13))) { in SiS_DisableBridge()
3964 if(!(SiS_IsDualEdge(SiS_Pr))) { in SiS_DisableBridge()
3965 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xdf); in SiS_DisableBridge()
3966 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
3968 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
3970 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3971 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
3974 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
3975 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_DisableBridge()
3976 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x10); in SiS_DisableBridge()
3977 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
3978 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); in SiS_DisableBridge()
3982 if(SiS_IsNotM650orLater(SiS_Pr)) { in SiS_DisableBridge()
3983 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_DisableBridge()
3986 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
3988 if( (!(SiS_IsVAMode(SiS_Pr))) && in SiS_DisableBridge()
3989 (!(SiS_CRT2IsLCD(SiS_Pr))) && in SiS_DisableBridge()
3990 (!(SiS_IsDualEdge(SiS_Pr))) ) { in SiS_DisableBridge()
3992 if(custom1) SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
3994 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFD); in SiS_DisableBridge()
3996 if(custom1) SiS_PanelDelay(SiS_Pr, 4); in SiS_DisableBridge()
4000 SiS_SetReg(SiS_Pr->SiS_P3c4,0x06,pushax); in SiS_DisableBridge()
4001 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_DisableBridge()
4002 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_DisableBridge()
4003 SiS_PanelDelayLoop(SiS_Pr, 3, 20); in SiS_DisableBridge()
4016 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
4018 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4019 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4020 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4025 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xDF); /* disable VB */ in SiS_DisableBridge()
4026 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4028 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_DisableBridge()
4029 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
4032 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); /* disable lock mode */ in SiS_DisableBridge()
4034 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_DisableBridge()
4035 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_DisableBridge()
4036 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x10); in SiS_DisableBridge()
4037 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_DisableBridge()
4038 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); in SiS_DisableBridge()
4041 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); /* disable CRT2 */ in SiS_DisableBridge()
4042 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
4043 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
4044 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4045 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4054 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
4058 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_DisableBridge()
4059 SiS_SetCH700x(SiS_Pr,0x0E,0x09); in SiS_DisableBridge()
4062 if(SiS_Pr->ChipType == SIS_730) { in SiS_DisableBridge()
4063 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x08)) { in SiS_DisableBridge()
4064 SiS_WaitVBRetrace(SiS_Pr); in SiS_DisableBridge()
4066 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4067 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4068 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4071 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x08)) { in SiS_DisableBridge()
4072 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_DisableBridge()
4073 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4074 SiS_WaitVBRetrace(SiS_Pr); in SiS_DisableBridge()
4075 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x06) & 0x1c)) { in SiS_DisableBridge()
4076 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4078 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4079 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4085 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4087 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4089 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4090 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
4091 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); in SiS_DisableBridge()
4092 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_DisableBridge()
4094 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
4095 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
4096 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4097 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4106 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_DisableBridge()
4108 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x4c,~0x18); in SiS_DisableBridge()
4112 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_DisableBridge()
4114 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4115 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_DisableBridge()
4117 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_DisableBridge()
4118 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_DisableBridge()
4121 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4122 (SiS_IsTVOrYPbPrOrScart(SiS_Pr)) ) { in SiS_DisableBridge()
4123 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_DisableBridge()
4127 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4128 (SiS_IsVAMode(SiS_Pr)) ) { in SiS_DisableBridge()
4129 SiS_Chrontel701xBLOff(SiS_Pr); in SiS_DisableBridge()
4130 SiS_Chrontel701xOff(SiS_Pr); in SiS_DisableBridge()
4133 if(SiS_Pr->ChipType != SIS_740) { in SiS_DisableBridge()
4134 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4135 (SiS_IsTVOrYPbPrOrScart(SiS_Pr)) ) { in SiS_DisableBridge()
4136 SiS_SetCH701x(SiS_Pr,0x49,0x01); in SiS_DisableBridge()
4142 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4143 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4144 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4147 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4148 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4149 (!(SiS_IsTVOrYPbPrOrScart(SiS_Pr))) ) { in SiS_DisableBridge()
4150 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4153 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4154 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4155 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4156 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
4159 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4160 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_DisableBridge()
4163 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4165 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4166 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4167 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4168 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4171 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4172 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_DisableBridge()
4173 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4174 if(SiS_Pr->ChipType == SIS_550) { in SiS_DisableBridge()
4175 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xbf); in SiS_DisableBridge()
4176 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xef); in SiS_DisableBridge()
4180 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4181 if(SiS_IsLCDOrLCDA(SiS_Pr)) { in SiS_DisableBridge()
4182 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4184 } else if(SiS_IsVAMode(SiS_Pr)) { in SiS_DisableBridge()
4185 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4189 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_DisableBridge()
4190 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_DisableBridge()
4193 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_DisableBridge()
4197 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
4199 if(SiS_Pr->ChipType == SIS_550) { in SiS_DisableBridge()
4200 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); /* DirectDVD PAL?*/ in SiS_DisableBridge()
4201 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); /* VB clock / 4 ? */ in SiS_DisableBridge()
4202 } else if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4203 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4204 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4205 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0xf7); in SiS_DisableBridge()
4208 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4209 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_DisableBridge()
4210 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_DisableBridge()
4211 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4212 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4235 SiS_EnableBridge(struct SiS_Private *SiS_Pr) in SiS_EnableBridge() argument
4243 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_EnableBridge()
4245 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* ====== For 301B et al ====== */ in SiS_EnableBridge()
4247 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4251 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4252 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4253 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_EnableBridge()
4254 } else if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_EnableBridge()
4255 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4257 if(SiS_Pr->SiS_VBType & (VB_SISLVDS | VB_NoLCD)) { in SiS_EnableBridge()
4258 if(!(SiS_CR36BIOSWord23d(SiS_Pr))) { in SiS_EnableBridge()
4259 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4264 if((SiS_Pr->SiS_VBType & VB_NoLCD) && in SiS_EnableBridge()
4265 (SiS_CRT2IsLCD(SiS_Pr))) { in SiS_EnableBridge()
4267 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* Enable CRT2 */ in SiS_EnableBridge()
4268 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4269 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
4270 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xBF); in SiS_EnableBridge()
4271 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4272 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x01,0x1F); in SiS_EnableBridge()
4274 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0x1F,0x40); in SiS_EnableBridge()
4276 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_EnableBridge()
4277 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
4278 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
4279 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4281 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4282 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4288 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; /* lock mode */ in SiS_EnableBridge()
4289 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4290 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4293 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4294 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
4295 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1F,0x20); /* enable VB processor */ in SiS_EnableBridge()
4296 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1F,0xC0); in SiS_EnableBridge()
4297 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4298 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4299 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4300 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
4301 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
4302 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4304 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_EnableBridge()
4324 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4325 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1f,0xef); in SiS_EnableBridge()
4327 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4328 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_EnableBridge()
4333 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_EnableBridge()
4336 if(SiS_LCDAEnabled(SiS_Pr)) { in SiS_EnableBridge()
4337 if(SiS_TVEnabled(SiS_Pr)) tempah = 0x18; in SiS_EnableBridge()
4340 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4c,tempah); in SiS_EnableBridge()
4344 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4346 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0x00); in SiS_EnableBridge()
4347 SiS_DisplayOff(SiS_Pr); in SiS_EnableBridge()
4348 pushax = SiS_GetReg(SiS_Pr->SiS_P3c4,0x06); in SiS_EnableBridge()
4350 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x06,0xE3); in SiS_EnableBridge()
4353 didpwd = SiS_HandlePWD(SiS_Pr); in SiS_EnableBridge()
4355 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_EnableBridge()
4357 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x02)) { in SiS_EnableBridge()
4358 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4359 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_EnableBridge()
4360 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4361 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4362 SiS_GenericDelay(SiS_Pr, 17664); in SiS_EnableBridge()
4366 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4367 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4368 SiS_GenericDelay(SiS_Pr, 17664); in SiS_EnableBridge()
4373 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40)) { in SiS_EnableBridge()
4374 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4380 if(!(SiS_IsVAMode(SiS_Pr))) { in SiS_EnableBridge()
4382 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; in SiS_EnableBridge()
4383 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4384 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4386 if(!(SiS_LCDAEnabled(SiS_Pr))) temp |= 0x20; in SiS_EnableBridge()
4389 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4391 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* enable CRT2 */ in SiS_EnableBridge()
4393 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_EnableBridge()
4394 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4396 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4397 SiS_PanelDelay(SiS_Pr, 2); in SiS_EnableBridge()
4402 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x20); in SiS_EnableBridge()
4406 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1f,0x20); in SiS_EnableBridge()
4407 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4409 if(SiS_Pr->SiS_VBType & VB_SISPOWER) { in SiS_EnableBridge()
4410 if( (SiS_LCDAEnabled(SiS_Pr)) || in SiS_EnableBridge()
4411 (SiS_CRT2IsLCD(SiS_Pr)) ) { in SiS_EnableBridge()
4413 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x2a,0x7f); in SiS_EnableBridge()
4415 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x7f); in SiS_EnableBridge()
4420 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_EnableBridge()
4422 if(!(SiS_IsVAMode(SiS_Pr))) tempah = 0x40; in SiS_EnableBridge()
4424 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1F,tempah); in SiS_EnableBridge()
4426 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4428 SiS_PanelDelay(SiS_Pr, 2); in SiS_EnableBridge()
4430 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1f,0x10); in SiS_EnableBridge()
4431 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4433 if(SiS_Pr->SiS_CustomT != CUT_CLEVO1400) { in SiS_EnableBridge()
4435 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4436 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_EnableBridge()
4437 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4440 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x27,0x0c); in SiS_EnableBridge()
4442 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4444 cr36 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_EnableBridge()
4446 if(SiS_Pr->SiS_ROMNew) { in SiS_EnableBridge()
4447 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_EnableBridge()
4448 unsigned short romptr = GetLCDStructPtr661_2(SiS_Pr); in SiS_EnableBridge()
4450 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x20); /* Reset */ in SiS_EnableBridge()
4451 SiS_Pr->EMI_30 = 0; in SiS_EnableBridge()
4452 SiS_Pr->EMI_31 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 0]; in SiS_EnableBridge()
4453 SiS_Pr->EMI_32 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 1]; in SiS_EnableBridge()
4454 SiS_Pr->EMI_33 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 2]; in SiS_EnableBridge()
4455 if(ROMAddr[romptr + 1] & 0x10) SiS_Pr->EMI_30 = 0x40; in SiS_EnableBridge()
4457 SiS_Pr->HaveEMI = SiS_Pr->HaveEMILCD = SiS_Pr->OverruleEMI = true; in SiS_EnableBridge()
4472 if(SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4473 r30 = SiS_Pr->EMI_30; r31 = SiS_Pr->EMI_31; in SiS_EnableBridge()
4474 r32 = SiS_Pr->EMI_32; r33 = SiS_Pr->EMI_33; in SiS_EnableBridge()
4486 if((!SiS_Pr->HaveEMI) || (!SiS_Pr->HaveEMILCD)) { in SiS_EnableBridge()
4490 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) r30 &= ~0x40; in SiS_EnableBridge()
4491 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4499 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) r30 |= 0x40; in SiS_EnableBridge()
4500 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4502 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_EnableBridge()
4509 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4511 if(SiS_Pr->SiS_CustomT == CUT_COMPAL1400_2) { in SiS_EnableBridge()
4518 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4525 if(!SiS_Pr->OverruleEMI) { in SiS_EnableBridge()
4527 if(SiS_Pr->SiS_CustomT == CUT_COMPAL1400_2) { in SiS_EnableBridge()
4534 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_EnableBridge()
4541 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_EnableBridge()
4552 if(!(SiS_Pr->OverruleEMI && (!r30) && (!r31) && (!r32) && (!r33))) { in SiS_EnableBridge()
4553 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x20); /* Reset */ in SiS_EnableBridge()
4554 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4556 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x31,r31); in SiS_EnableBridge()
4557 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x32,r32); in SiS_EnableBridge()
4558 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x33,r33); in SiS_EnableBridge()
4561 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_EnableBridge()
4564 if( (SiS_LCDAEnabled(SiS_Pr)) || in SiS_EnableBridge()
4565 (SiS_CRT2IsLCD(SiS_Pr)) ) { in SiS_EnableBridge()
4568 SiS_PanelDelayLoop(SiS_Pr, 3, 5); in SiS_EnableBridge()
4570 SiS_PanelDelayLoop(SiS_Pr, 3, 5); in SiS_EnableBridge()
4573 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4574 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4575 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_EnableBridge()
4576 SiS_GenericDelay(SiS_Pr, 1280); in SiS_EnableBridge()
4578 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x40); /* Enable */ in SiS_EnableBridge()
4586 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4587 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_EnableBridge()
4588 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4590 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4592 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4593 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4594 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4595 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4598 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_EnableBridge()
4600 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x03); in SiS_EnableBridge()
4605 SiS_SetReg(SiS_Pr->SiS_P3c4,0x06,pushax); in SiS_EnableBridge()
4606 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4607 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xff); in SiS_EnableBridge()
4611 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4612 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
4621 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4622 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4623 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4624 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4628 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; /* lock mode */ in SiS_EnableBridge()
4629 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4630 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4633 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4635 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* enable CRT2 */ in SiS_EnableBridge()
4637 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_EnableBridge()
4638 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x2E); in SiS_EnableBridge()
4640 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2E,0x80); /* BVBDOENABLE=1 */ in SiS_EnableBridge()
4644 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1F,0x20); /* enable VB processor */ in SiS_EnableBridge()
4646 SiS_VBLongWait(SiS_Pr); in SiS_EnableBridge()
4647 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4648 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_EnableBridge()
4649 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
4651 SiS_VBLongWait(SiS_Pr); in SiS_EnableBridge()
4653 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4654 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4655 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4656 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4664 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4668 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4669 if(SiS_Pr->ChipType == SIS_730) { in SiS_EnableBridge()
4670 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4671 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4672 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4674 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4675 if(!(SiS_CR36BIOSWord23d(SiS_Pr))) { in SiS_EnableBridge()
4676 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4680 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
4681 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4682 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
4683 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xBF); in SiS_EnableBridge()
4684 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4685 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x01,0x1F); in SiS_EnableBridge()
4687 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0x1F,0x40); in SiS_EnableBridge()
4690 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_EnableBridge()
4691 if(!(SiS_CRT2IsLCD(SiS_Pr))) { in SiS_EnableBridge()
4692 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4693 SiS_SetCH700x(SiS_Pr,0x0E,0x0B); in SiS_EnableBridge()
4697 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4698 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_EnableBridge()
4699 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
4700 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
4701 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4702 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4704 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4705 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4716 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_EnableBridge()
4718 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x4c,0x18); in SiS_EnableBridge()
4722 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
4723 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4724 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4725 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4729 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
4730 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
4732 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0xf7); in SiS_EnableBridge()
4734 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
4735 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_EnableBridge()
4737 SiS_Chrontel701xBLOff(SiS_Pr); in SiS_EnableBridge()
4740 if(SiS_Pr->ChipType != SIS_550) { in SiS_EnableBridge()
4741 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_EnableBridge()
4744 if(SiS_Pr->ChipType == SIS_740) { in SiS_EnableBridge()
4745 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
4746 if(SiS_IsLCDOrLCDA(SiS_Pr)) { in SiS_EnableBridge()
4747 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
4752 temp1 = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x2E); in SiS_EnableBridge()
4754 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2E,0x80); in SiS_EnableBridge()
4757 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
4759 SiS_Chrontel701xBLOn(SiS_Pr); in SiS_EnableBridge()
4763 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
4764 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4765 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
4766 if(SiS_Pr->ChipType == SIS_550) { in SiS_EnableBridge()
4767 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x40); in SiS_EnableBridge()
4768 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x10); in SiS_EnableBridge()
4771 } else if(SiS_IsVAMode(SiS_Pr)) { in SiS_EnableBridge()
4772 if(SiS_Pr->ChipType != SIS_740) { in SiS_EnableBridge()
4773 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
4777 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4778 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
4781 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
4782 if(SiS_IsTVOrYPbPrOrScart(SiS_Pr)) { in SiS_EnableBridge()
4783 SiS_Chrontel701xOn(SiS_Pr); in SiS_EnableBridge()
4785 if( (SiS_IsVAMode(SiS_Pr)) || in SiS_EnableBridge()
4786 (SiS_IsLCDOrLCDA(SiS_Pr)) ) { in SiS_EnableBridge()
4787 SiS_ChrontelDoSomething1(SiS_Pr); in SiS_EnableBridge()
4791 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
4792 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4793 if( (SiS_IsVAMode(SiS_Pr)) || in SiS_EnableBridge()
4794 (SiS_IsLCDOrLCDA(SiS_Pr)) ) { in SiS_EnableBridge()
4795 SiS_Chrontel701xBLOn(SiS_Pr); in SiS_EnableBridge()
4796 SiS_ChrontelInitTVVSync(SiS_Pr); in SiS_EnableBridge()
4799 } else if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
4800 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4801 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4802 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4803 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4822 SiS_SetCRT2Offset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2Offset() argument
4828 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) return; in SiS_SetCRT2Offset()
4830 offset = SiS_GetOffset(SiS_Pr,ModeNo,ModeIdIndex,RRTI); in SiS_SetCRT2Offset()
4832 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x07,(offset & 0xFF)); in SiS_SetCRT2Offset()
4833 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x09,(offset >> 8)); in SiS_SetCRT2Offset()
4837 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x03,temp); in SiS_SetCRT2Offset()
4842 SiS_SetCRT2Sync(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short RefreshRateTableI… in SiS_SetCRT2Sync() argument
4848 if(SiS_Pr->UseCustomMode) { in SiS_SetCRT2Sync()
4849 infoflag = SiS_Pr->CInfoFlag; in SiS_SetCRT2Sync()
4851 infoflag = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_InfoFlag; in SiS_SetCRT2Sync()
4854 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { /* LVDS */ in SiS_SetCRT2Sync()
4856 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Sync()
4858 } else if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (SiS_Pr->SiS_LCDInfo & LCDSync)) { in SiS_SetCRT2Sync()
4859 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
4863 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
4864 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
4865 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_SetCRT2Sync()
4866 (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2Sync()
4869 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_SetCRT2Sync()
4870 (SiS_Pr->SiS_IF_DEF_DSTN) || in SiS_SetCRT2Sync()
4871 (SiS_Pr->SiS_IF_DEF_TRUMPION) || in SiS_SetCRT2Sync()
4872 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_SetCRT2Sync()
4873 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_SetCRT2Sync()
4876 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_SetCRT2Sync()
4877 (SiS_Pr->SiS_IF_DEF_DSTN) ) { in SiS_SetCRT2Sync()
4881 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Sync()
4882 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2Sync()
4885 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xE7,tempah); in SiS_SetCRT2Sync()
4888 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,0xe0); in SiS_SetCRT2Sync()
4891 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
4894 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2Sync()
4896 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2Sync()
4900 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* 630 - 301B(-DH) */ in SiS_SetCRT2Sync()
4904 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
4905 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
4906 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
4912 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
4914 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
4915 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_SetCRT2Sync()
4916 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
4922 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
4923 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
4933 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* 315 - LVDS */ in SiS_SetCRT2Sync()
4936 if((SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) && in SiS_SetCRT2Sync()
4937 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetCRT2Sync()
4939 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
4940 tempbl = ((SiS_Pr->SiS_LCDInfo & 0xc0) >> 6); in SiS_SetCRT2Sync()
4942 } else if((SiS_Pr->SiS_CustomT == CUT_CLEVO1400) && in SiS_SetCRT2Sync()
4943 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050)) { in SiS_SetCRT2Sync()
4947 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); in SiS_SetCRT2Sync()
4950 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempbl |= 0x04; in SiS_SetCRT2Sync()
4954 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
4955 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) tempah |= 0xc0; in SiS_SetCRT2Sync()
4956 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
4957 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2Sync()
4958 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
4959 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
4966 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2Sync()
4968 if((SiS_Pr->SiS_VBType & VB_SIS30xC) && (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2Sync()
4970 tempah = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); in SiS_SetCRT2Sync()
4973 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetCRT2Sync()
4974 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetCRT2Sync()
4975 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
4976 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
4984 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
4985 if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_SetCRT2Sync()
4987 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) tempah |= 0xc0; in SiS_SetCRT2Sync()
4989 if((SiS_Pr->SiS_VBType & VB_SIS30xC) && (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2Sync()
4992 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xe7,tempah); in SiS_SetCRT2Sync()
4994 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
4995 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2Sync()
4996 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
4997 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
5011 SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) in SiS_SetCRT2FIFO_300() argument
5013 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2FIFO_300()
5022 SelectRate_backup = SiS_Pr->SiS_SelectCRT2Rate; in SiS_SetCRT2FIFO_300()
5024 if(!SiS_Pr->CRT1UsesCustomMode) { in SiS_SetCRT2FIFO_300()
5026 CRT1ModeNo = SiS_Pr->SiS_CRT1Mode; /* get CRT1 ModeNo */ in SiS_SetCRT2FIFO_300()
5027 SiS_SearchModeID(SiS_Pr, &CRT1ModeNo, &modeidindex); in SiS_SetCRT2FIFO_300()
5028 SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); in SiS_SetCRT2FIFO_300()
5029 SiS_Pr->SiS_SelectCRT2Rate = 0; in SiS_SetCRT2FIFO_300()
5030 refreshratetableindex = SiS_GetRatePtr(SiS_Pr, CRT1ModeNo, modeidindex); in SiS_SetCRT2FIFO_300()
5034 index = SiS_GetRefCRTVCLK(SiS_Pr, refreshratetableindex, SiS_Pr->SiS_UseWide); in SiS_SetCRT2FIFO_300()
5035 VCLK = SiS_Pr->SiS_VCLKData[index].CLOCK; in SiS_SetCRT2FIFO_300()
5038 colorth = SiS_GetColorDepth(SiS_Pr,CRT1ModeNo,modeidindex) >> 1; in SiS_SetCRT2FIFO_300()
5047 VCLK = SiS_Pr->CSRClock_CRT1; in SiS_SetCRT2FIFO_300()
5050 colorth = colortharray[((SiS_Pr->CModeFlag_CRT1 & ModeTypeMask) - 2)]; in SiS_SetCRT2FIFO_300()
5056 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5057 index = SiS_GetReg(SiS_Pr->SiS_P3c4,0x3A); in SiS_SetCRT2FIFO_300()
5059 index = SiS_GetReg(SiS_Pr->SiS_P3c4,0x1A); in SiS_SetCRT2FIFO_300()
5062 MCLK = SiS_Pr->SiS_MCLKData_0[index].CLOCK; in SiS_SetCRT2FIFO_300()
5064 temp = ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) >> 6) & 0x03) << 1; in SiS_SetCRT2FIFO_300()
5074 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5076 SiS_GetFIFOThresholdIndex300(SiS_Pr, &tempbx, &tempcl); in SiS_SetCRT2FIFO_300()
5081 pci50 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); in SiS_SetCRT2FIFO_300()
5082 pciA0 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xa0); in SiS_SetCRT2FIFO_300()
5084 if(SiS_Pr->ChipType == SIS_730) { in SiS_SetCRT2FIFO_300()
5102 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) & 0x80) index += 12; in SiS_SetCRT2FIFO_300()
5106 data = SiS_GetLatencyFactor630(SiS_Pr, index) + 15; in SiS_SetCRT2FIFO_300()
5107 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) & 0x80)) data += 5; in SiS_SetCRT2FIFO_300()
5113 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2FIFO_300()
5114 SiS_Pr->SiS_SelectCRT2Rate = SelectRate_backup; in SiS_SetCRT2FIFO_300()
5116 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2FIFO_300()
5119 SiS_SearchModeID(SiS_Pr, &CRT2ModeNo, &modeidindex); in SiS_SetCRT2FIFO_300()
5121 refreshratetableindex = SiS_GetRatePtr(SiS_Pr, CRT2ModeNo, modeidindex); in SiS_SetCRT2FIFO_300()
5124 index = SiS_GetVCLK2Ptr(SiS_Pr, CRT2ModeNo, modeidindex, refreshratetableindex); in SiS_SetCRT2FIFO_300()
5125 VCLK = SiS_Pr->SiS_VCLKData[index].CLOCK; in SiS_SetCRT2FIFO_300()
5127 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2FIFO_300()
5128 if(SiS_Pr->SiS_UseROM) { in SiS_SetCRT2FIFO_300()
5139 VCLK = SiS_Pr->CSRClock; in SiS_SetCRT2FIFO_300()
5144 colorth = SiS_GetColorDepth(SiS_Pr,CRT2ModeNo,modeidindex) >> 1; in SiS_SetCRT2FIFO_300()
5155 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5157 if((data <= 0x0f) || (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) in SiS_SetCRT2FIFO_300()
5161 if(( (SiS_Pr->ChipType == SIS_630) || in SiS_SetCRT2FIFO_300()
5162 (SiS_Pr->ChipType == SIS_730) ) && in SiS_SetCRT2FIFO_300()
5163 (SiS_Pr->ChipRevision >= 0x30)) in SiS_SetCRT2FIFO_300()
5166 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0xe0,temp); in SiS_SetCRT2FIFO_300()
5168 if((SiS_Pr->ChipType == SIS_630) && in SiS_SetCRT2FIFO_300()
5169 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_SetCRT2FIFO_300()
5172 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x02,0xe0,data); in SiS_SetCRT2FIFO_300()
5176 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2FIFO_300()
5177 SiS_Pr->SiS_SelectCRT2Rate = SelectRate_backup; in SiS_SetCRT2FIFO_300()
5186 SiS_SetCRT2FIFO_310(struct SiS_Private *SiS_Pr) in SiS_SetCRT2FIFO_310() argument
5188 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,0x3B); in SiS_SetCRT2FIFO_310()
5189 if( (SiS_Pr->ChipType == SIS_760) && in SiS_SetCRT2FIFO_310()
5190 (SiS_Pr->SiS_SysFlags & SF_760LFB) && in SiS_SetCRT2FIFO_310()
5191 (SiS_Pr->SiS_ModeType == Mode32Bpp) && in SiS_SetCRT2FIFO_310()
5192 (SiS_Pr->SiS_VGAHDE >= 1280) && in SiS_SetCRT2FIFO_310()
5193 (SiS_Pr->SiS_VGAVDE >= 1024) ) { in SiS_SetCRT2FIFO_310()
5194 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2f,0x03); in SiS_SetCRT2FIFO_310()
5195 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,0x3b); in SiS_SetCRT2FIFO_310()
5196 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4d,0xc0); in SiS_SetCRT2FIFO_310()
5197 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2f,0x01); in SiS_SetCRT2FIFO_310()
5198 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4d,0xc0); in SiS_SetCRT2FIFO_310()
5199 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x02,0x6e); in SiS_SetCRT2FIFO_310()
5201 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x02,~0x3f,0x04); in SiS_SetCRT2FIFO_310()
5208 SiS_GetVGAHT2(struct SiS_Private *SiS_Pr) in SiS_GetVGAHT2() argument
5212 tempbx = (SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE) * SiS_Pr->SiS_RVBHCMAX; in SiS_GetVGAHT2()
5213 tempax = (SiS_Pr->SiS_VT - SiS_Pr->SiS_VDE) * SiS_Pr->SiS_RVBHCFACT; in SiS_GetVGAHT2()
5214 tempax = (tempax * SiS_Pr->SiS_HT) / tempbx; in SiS_GetVGAHT2()
5220 SiS_SetGroup1_301(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, in SiS_SetGroup1_301() argument
5234 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1_301()
5235 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1_301()
5236 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1_301()
5237 xres = SiS_Pr->CHDisplay; in SiS_SetGroup1_301()
5239 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1_301()
5240 xres = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].XRes; in SiS_SetGroup1_301()
5245 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_301()
5247 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x31,0x04); in SiS_SetGroup1_301()
5251 SiS_Pr->CHTotal = 8224; /* Max HT, 0x2020, results in 0x3ff in registers */ in SiS_SetGroup1_301()
5253 SiS_Pr->CHDisplay = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup1_301()
5254 if(modeflag & HalfDCLK) SiS_Pr->CHDisplay >>= 1; in SiS_SetGroup1_301()
5256 SiS_Pr->CHBlankStart = SiS_Pr->CHDisplay; in SiS_SetGroup1_301()
5257 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup1_301()
5258 SiS_Pr->CHBlankStart += 16; in SiS_SetGroup1_301()
5261 SiS_Pr->CHBlankEnd = 32; in SiS_SetGroup1_301()
5262 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1_301()
5263 if(xres == 1600) SiS_Pr->CHBlankEnd += 80; in SiS_SetGroup1_301()
5266 temp = SiS_Pr->SiS_VGAHT - 96; in SiS_SetGroup1_301()
5268 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetGroup1_301()
5269 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x04); in SiS_SetGroup1_301()
5270 temp |= ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x0b) & 0xc0) << 2); in SiS_SetGroup1_301()
5274 if(SiS_Pr->SiS_RVBHRS2) temp = SiS_Pr->SiS_RVBHRS2; in SiS_SetGroup1_301()
5276 SiS_Pr->CHSyncStart = temp; in SiS_SetGroup1_301()
5278 SiS_Pr->CHSyncEnd = 0xffe8; /* results in 0x2000 in registers */ in SiS_SetGroup1_301()
5280 SiS_Pr->CVTotal = 2049; /* Max VT, 0x0801, results in 0x7ff in registers */ in SiS_SetGroup1_301()
5282 VGAVDE = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_301()
5290 SiS_Pr->CVDisplay = VGAVDE; in SiS_SetGroup1_301()
5292 SiS_Pr->CVBlankStart = SiS_Pr->CVDisplay; in SiS_SetGroup1_301()
5294 SiS_Pr->CVBlankEnd = 1; in SiS_SetGroup1_301()
5295 if(ModeNo == 0x3c) SiS_Pr->CVBlankEnd = 226; in SiS_SetGroup1_301()
5297 temp = (SiS_Pr->SiS_VGAVT - VGAVDE) >> 1; in SiS_SetGroup1_301()
5298 SiS_Pr->CVSyncStart = VGAVDE + temp; in SiS_SetGroup1_301()
5301 SiS_Pr->CVSyncEnd = SiS_Pr->CVSyncStart + temp; in SiS_SetGroup1_301()
5303 SiS_CalcCRRegisters(SiS_Pr, 0); in SiS_SetGroup1_301()
5304 SiS_Pr->CCRT1CRTC[16] &= ~0xE0; in SiS_SetGroup1_301()
5307 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[i]); in SiS_SetGroup1_301()
5310 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5313 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5316 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5319 temp = SiS_Pr->CCRT1CRTC[16] & 0xE0; in SiS_SetGroup1_301()
5320 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,CRTranslation[0x0E],0x1F,temp); in SiS_SetGroup1_301()
5322 temp = (SiS_Pr->CCRT1CRTC[16] & 0x01) << 5; in SiS_SetGroup1_301()
5324 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,CRTranslation[0x09],0x5F,temp); in SiS_SetGroup1_301()
5327 temp |= (SiS_GetReg(SiS_Pr->SiS_P3c4,0x01) & 0x01); in SiS_SetGroup1_301()
5329 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,temp); /* SR01: HalfDCLK[3], 8/9 div dotclock[… in SiS_SetGroup1_301()
5331 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0F,0x00); /* CR14: (text mode: underline location… in SiS_SetGroup1_301()
5332 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x12,0x00); /* CR17: n/a */ in SiS_SetGroup1_301()
5335 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup1_301()
5336 temp = (SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) << 7; in SiS_SetGroup1_301()
5338 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1A,temp); /* SR0E, dither[7] */ in SiS_SetGroup1_301()
5340 temp = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); in SiS_SetGroup1_301()
5341 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); /* ? */ in SiS_SetGroup1_301()
5349 SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup1_LVDS() argument
5364 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1_LVDS()
5365 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_SetGroup1_LVDS()
5367 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetGroup1_LVDS()
5369 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1_LVDS()
5370 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1_LVDS()
5372 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1_LVDS()
5373 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup1_LVDS()
5375 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetGroup1_LVDS()
5380 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_SetGroup1_LVDS()
5385 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_SetGroup1_LVDS()
5389 if((SiS_Pr->ChipType >= SIS_315H) && (islvds) && (!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA))) { in SiS_SetGroup1_LVDS()
5390 if((!SiS_Pr->SiS_IF_DEF_FSTN) && (!SiS_Pr->SiS_IF_DEF_DSTN)) { in SiS_SetGroup1_LVDS()
5396 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5398 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); in SiS_SetGroup1_LVDS()
5401 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xfb,0x04); in SiS_SetGroup1_LVDS()
5402 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x03); in SiS_SetGroup1_LVDS()
5403 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1_LVDS()
5404 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); in SiS_SetGroup1_LVDS()
5408 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xfb,0x04); in SiS_SetGroup1_LVDS()
5409 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x00); in SiS_SetGroup1_LVDS()
5410 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1_LVDS()
5411 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2D,0x0f); in SiS_SetGroup1_LVDS()
5412 if(SiS_Pr->SiS_VBType & VB_SIS30xC) { in SiS_SetGroup1_LVDS()
5413 if((SiS_Pr->SiS_LCDResInfo == Panel_1024x768) || in SiS_SetGroup1_LVDS()
5414 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetGroup1_LVDS()
5415 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x20); in SiS_SetGroup1_LVDS()
5425 tempax = SiS_Pr->SiS_LCDHDES; in SiS_SetGroup1_LVDS()
5427 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5428 if(!SiS_Pr->SiS_IF_DEF_FSTN && !SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
5429 if((SiS_Pr->SiS_LCDResInfo == Panel_640x480) && in SiS_SetGroup1_LVDS()
5430 (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode))) { in SiS_SetGroup1_LVDS()
5438 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1A,temp); /* BPLHDESKEW[2:0] */ in SiS_SetGroup1_LVDS()
5440 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,temp); /* BPLHDESKEW[10:3] */ in SiS_SetGroup1_LVDS()
5442 tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
5443 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5444 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5445 tempbx = SiS_Pr->PanelXRes; in SiS_SetGroup1_LVDS()
5447 if((SiS_Pr->SiS_LCDResInfo == Panel_320x240_1) || in SiS_SetGroup1_LVDS()
5448 (SiS_Pr->SiS_LCDResInfo == Panel_320x240_2) || in SiS_SetGroup1_LVDS()
5449 (SiS_Pr->SiS_LCDResInfo == Panel_320x240_3)) { in SiS_SetGroup1_LVDS()
5455 if(tempax >= SiS_Pr->SiS_HT) tempax -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5460 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,temp); /* BPLHDEE */ in SiS_SetGroup1_LVDS()
5462 tempcx = (SiS_Pr->SiS_HT - tempbx) >> 2; in SiS_SetGroup1_LVDS()
5464 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5465 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5466 if(SiS_Pr->PanelHRS != 999) tempcx = SiS_Pr->PanelHRS; in SiS_SetGroup1_LVDS()
5471 if(tempcx >= SiS_Pr->SiS_HT) tempcx -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5474 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5475 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
5476 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
5497 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,temp); /* BPLHRS */ in SiS_SetGroup1_LVDS()
5499 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5501 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5503 if(SiS_Pr->PanelHRE != 999) { in SiS_SetGroup1_LVDS()
5504 temp = tempcx + SiS_Pr->PanelHRE; in SiS_SetGroup1_LVDS()
5505 if(temp >= SiS_Pr->SiS_HT) temp -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5515 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,temp); /* BPLHRE */ in SiS_SetGroup1_LVDS()
5519 tempax = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5520 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5521 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5522 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup1_LVDS()
5526 tempbx = SiS_Pr->SiS_LCDVDES + tempax; in SiS_SetGroup1_LVDS()
5527 if(tempbx >= SiS_Pr->SiS_VT) tempbx -= SiS_Pr->SiS_VT; in SiS_SetGroup1_LVDS()
5531 tempcx = SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5532 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5533 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5534 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5535 tempcx = SiS_Pr->SiS_VGAVT - SiS_Pr->PanelYRes; in SiS_SetGroup1_LVDS()
5542 if( (SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) && in SiS_SetGroup1_LVDS()
5543 (!(SiS_Pr->SiS_LCDInfo & LCDPass11)) && in SiS_SetGroup1_LVDS()
5544 (SiS_Pr->PanelVRS != 999) ) { in SiS_SetGroup1_LVDS()
5545 tempcx = SiS_Pr->PanelVRS; in SiS_SetGroup1_LVDS()
5550 if(SiS_Pr->ChipType < SIS_315H) tempbx++; in SiS_SetGroup1_LVDS()
5554 if(tempbx >= SiS_Pr->SiS_VT) tempbx -= SiS_Pr->SiS_VT; in SiS_SetGroup1_LVDS()
5557 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
5558 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
5562 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,temp); /* BPLVRS */ in SiS_SetGroup1_LVDS()
5567 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5568 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5569 if(SiS_Pr->PanelVRE != 999) tempcx = SiS_Pr->PanelVRE; in SiS_SetGroup1_LVDS()
5575 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0xF0,temp); /* BPLVRE */ in SiS_SetGroup1_LVDS()
5578 if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
5579 if(SiS_Pr->SiS_HDE != 640) { in SiS_SetGroup1_LVDS()
5580 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->SiS_VDE) temp |= 0x40; in SiS_SetGroup1_LVDS()
5582 } else if(SiS_Pr->SiS_VGAVDE != SiS_Pr->SiS_VDE) temp |= 0x40; in SiS_SetGroup1_LVDS()
5583 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) temp |= 0x40; in SiS_SetGroup1_LVDS()
5585 if((SiS_Pr->ChipType >= SIS_315H) || in SiS_SetGroup1_LVDS()
5586 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_SetGroup1_LVDS()
5588 if((SiS_Pr->SiS_IF_DEF_CH70xx == 1) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup1_LVDS()
5589 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x03) temp |= 0x80; in SiS_SetGroup1_LVDS()
5592 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup1_LVDS()
5593 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1_LVDS()
5594 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x06) & 0x10) temp |= 0x80; in SiS_SetGroup1_LVDS()
5596 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) temp |= 0x80; in SiS_SetGroup1_LVDS()
5600 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1A,tempbx,temp); in SiS_SetGroup1_LVDS()
5604 tempcx = SiS_Pr->SiS_LCDVDES; /* BPLVDES */ in SiS_SetGroup1_LVDS()
5606 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5607 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_SetGroup1_LVDS()
5609 tempbx = SiS_Pr->SiS_VGAVDE - 1; in SiS_SetGroup1_LVDS()
5610 tempcx = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5613 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5618 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5620 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup1_LVDS()
5626 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5627 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5637 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1D,temp); in SiS_SetGroup1_LVDS()
5638 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1C,tempbx); in SiS_SetGroup1_LVDS()
5639 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1B,tempcx); in SiS_SetGroup1_LVDS()
5643 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5646 tempeax = SiS_Pr->SiS_VGAVDE << 6; in SiS_SetGroup1_LVDS()
5647 temp = (tempeax % (unsigned int)SiS_Pr->SiS_VDE); in SiS_SetGroup1_LVDS()
5648 tempeax = tempeax / (unsigned int)SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
5651 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) tempeax = 0x3F; in SiS_SetGroup1_LVDS()
5654 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1E,temp); /* BPLVCFACT */ in SiS_SetGroup1_LVDS()
5661 tempeax = SiS_Pr->SiS_VGAVDE << 18; in SiS_SetGroup1_LVDS()
5662 tempebx = SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
5669 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x37,temp); in SiS_SetGroup1_LVDS()
5671 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x36,temp); in SiS_SetGroup1_LVDS()
5673 if(SiS_Pr->SiS_VDE == SiS_Pr->SiS_VGAVDE) temp |= 0x04; in SiS_SetGroup1_LVDS()
5674 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x35,temp); in SiS_SetGroup1_LVDS()
5676 if(SiS_Pr->SiS_VBType & VB_SISPART4SCALER) { in SiS_SetGroup1_LVDS()
5678 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x3c,temp); in SiS_SetGroup1_LVDS()
5680 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x3b,temp); in SiS_SetGroup1_LVDS()
5682 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0x3f,temp); in SiS_SetGroup1_LVDS()
5684 if(SiS_Pr->SiS_VDE != SiS_Pr->SiS_VGAVDE) temp |= 0x08; in SiS_SetGroup1_LVDS()
5685 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x30,0xf3,temp); in SiS_SetGroup1_LVDS()
5693 tempeax = SiS_Pr->SiS_VGAHDE; /* 1f = ( (VGAHDE * 65536) / ( (VGAHDE * 65536) / HDE ) ) - 1*/ in SiS_SetGroup1_LVDS()
5698 if(SiS_Pr->SiS_HDE == tempeax) { in SiS_SetGroup1_LVDS()
5701 tempecx = tempebx / SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
5702 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
5703 if(tempebx % SiS_Pr->SiS_HDE) tempecx++; in SiS_SetGroup1_LVDS()
5707 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
5710 tempeax = ((SiS_Pr->SiS_VGAHT << 16) / tempecx) - 1; in SiS_SetGroup1_LVDS()
5714 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1F,temp); in SiS_SetGroup1_LVDS()
5716 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
5717 tempeax = (SiS_Pr->SiS_VGAVDE << 18) / tempvcfact; in SiS_SetGroup1_LVDS()
5720 tempeax = SiS_Pr->SiS_VGAVDE << 6; in SiS_SetGroup1_LVDS()
5726 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tempbx--; in SiS_SetGroup1_LVDS()
5727 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) { in SiS_SetGroup1_LVDS()
5728 if((!SiS_Pr->SiS_IF_DEF_FSTN) && (!SiS_Pr->SiS_IF_DEF_DSTN)) tempbx = 1; in SiS_SetGroup1_LVDS()
5729 else if(SiS_Pr->SiS_LCDResInfo != Panel_640x480) tempbx = 1; in SiS_SetGroup1_LVDS()
5734 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x20,temp); in SiS_SetGroup1_LVDS()
5735 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x21,tempbx); in SiS_SetGroup1_LVDS()
5742 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x22,temp); in SiS_SetGroup1_LVDS()
5744 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x23,temp); in SiS_SetGroup1_LVDS()
5747 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
5748 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1_LVDS()
5749 if((islvds) || (SiS_Pr->SiS_VBInfo & VB_SISLVDS)) { in SiS_SetGroup1_LVDS()
5750 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1e,0x20); in SiS_SetGroup1_LVDS()
5754 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetGroup1_LVDS()
5755 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x03); in SiS_SetGroup1_LVDS()
5757 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1e,0x23); in SiS_SetGroup1_LVDS()
5765 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
5766 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup1_LVDS()
5773 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1_LVDS()
5776 if(SiS_Pr->SiS_LCDTypeInfo == 0x0e) j += 7; in SiS_SetGroup1_LVDS()
5780 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xbf); in SiS_SetGroup1_LVDS()
5782 SiS_SetTrumpionBlock(SiS_Pr, trumpdata); in SiS_SetGroup1_LVDS()
5784 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
5787 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode13[0]); in SiS_SetGroup1_LVDS()
5791 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode10_1[0]); in SiS_SetGroup1_LVDS()
5792 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode10_2[0]); in SiS_SetGroup1_LVDS()
5796 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_SetGroup1_LVDS()
5801 if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
5802 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x25,0x00); in SiS_SetGroup1_LVDS()
5803 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x26,0x00); in SiS_SetGroup1_LVDS()
5804 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x27,0x00); in SiS_SetGroup1_LVDS()
5805 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x28,0x87); in SiS_SetGroup1_LVDS()
5806 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x29,0x5A); in SiS_SetGroup1_LVDS()
5807 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2A,0x4B); in SiS_SetGroup1_LVDS()
5808 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x44,~0x07,0x03); in SiS_SetGroup1_LVDS()
5809 tempax = SiS_Pr->SiS_HDE; /* Blps = lcdhdee(lcdhdes+HDE) + 64 */ in SiS_SetGroup1_LVDS()
5810 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
5811 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
5812 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
5814 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x38,tempax & 0xff); in SiS_SetGroup1_LVDS()
5816 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,~0x078,temp); in SiS_SetGroup1_LVDS()
5818 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x39,tempax & 0xff); in SiS_SetGroup1_LVDS()
5819 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3A,0x00); /* Bflml = 0 */ in SiS_SetGroup1_LVDS()
5820 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x3C,~0x007); in SiS_SetGroup1_LVDS()
5822 tempax = SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
5823 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
5824 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
5825 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
5827 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3B,tempax & 0xff); in SiS_SetGroup1_LVDS()
5829 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x3C,~0x038,temp); in SiS_SetGroup1_LVDS()
5831 tempeax = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
5832 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
5833 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
5834 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempeax >>= 1; in SiS_SetGroup1_LVDS()
5840 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,temp); in SiS_SetGroup1_LVDS()
5841 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3F,0x00); /* BDxWadrst0 */ in SiS_SetGroup1_LVDS()
5842 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3E,0x00); in SiS_SetGroup1_LVDS()
5843 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3D,0x10); in SiS_SetGroup1_LVDS()
5844 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x3C,~0x040); in SiS_SetGroup1_LVDS()
5846 tempax = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
5847 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
5848 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
5849 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
5853 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x43,temp); in SiS_SetGroup1_LVDS()
5855 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, 0x44, 0x07, temp); in SiS_SetGroup1_LVDS()
5857 tempax = SiS_Pr->SiS_VDE; /* BDxWadrst1 = BDxWadrst0 + BDxWadroff * VDE */ in SiS_SetGroup1_LVDS()
5858 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
5859 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
5860 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
5863 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x42,temp); in SiS_SetGroup1_LVDS()
5865 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x41,temp); in SiS_SetGroup1_LVDS()
5867 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x40,temp); in SiS_SetGroup1_LVDS()
5869 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, 0x3C, 0x7F, temp); in SiS_SetGroup1_LVDS()
5871 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2F,0x03); in SiS_SetGroup1_LVDS()
5872 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x03,0x50); in SiS_SetGroup1_LVDS()
5873 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x04,0x00); in SiS_SetGroup1_LVDS()
5874 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2F,0x01); in SiS_SetGroup1_LVDS()
5875 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0x38); in SiS_SetGroup1_LVDS()
5877 if(SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_SetGroup1_LVDS()
5878 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2b,0x02); in SiS_SetGroup1_LVDS()
5879 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2c,0x00); in SiS_SetGroup1_LVDS()
5880 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x00); in SiS_SetGroup1_LVDS()
5881 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x35,0x0c); in SiS_SetGroup1_LVDS()
5882 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x36,0x00); in SiS_SetGroup1_LVDS()
5883 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x37,0x00); in SiS_SetGroup1_LVDS()
5884 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x38,0x80); in SiS_SetGroup1_LVDS()
5885 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x39,0xA0); in SiS_SetGroup1_LVDS()
5886 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3a,0x00); in SiS_SetGroup1_LVDS()
5887 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3b,0xf0); in SiS_SetGroup1_LVDS()
5888 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3c,0x00); in SiS_SetGroup1_LVDS()
5889 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3d,0x10); in SiS_SetGroup1_LVDS()
5890 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3e,0x00); in SiS_SetGroup1_LVDS()
5891 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3f,0x00); in SiS_SetGroup1_LVDS()
5892 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x40,0x10); in SiS_SetGroup1_LVDS()
5893 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x41,0x25); in SiS_SetGroup1_LVDS()
5894 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x42,0x80); in SiS_SetGroup1_LVDS()
5895 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x43,0x14); in SiS_SetGroup1_LVDS()
5896 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x44,0x03); in SiS_SetGroup1_LVDS()
5897 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,0x0a); in SiS_SetGroup1_LVDS()
5905 SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup1() argument
5909 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup1()
5917 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1()
5918 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
5923 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1()
5924 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
5925 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1()
5927 CRT1Index = SiS_GetRefCRT1CRTC(SiS_Pr, RefreshRateTableIndex, SiS_Pr->SiS_UseWideCRT2); in SiS_SetGroup1()
5928 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup1()
5929 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1()
5932 SiS_SetCRT2Offset(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
5934 if( ! ((SiS_Pr->ChipType >= SIS_315H) && in SiS_SetGroup1()
5935 (SiS_Pr->SiS_IF_DEF_LVDS == 1) && in SiS_SetGroup1()
5936 (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) ) { in SiS_SetGroup1()
5938 if(SiS_Pr->ChipType < SIS_315H ) { in SiS_SetGroup1()
5940 SiS_SetCRT2FIFO_300(SiS_Pr, ModeNo); in SiS_SetGroup1()
5944 SiS_SetCRT2FIFO_310(SiS_Pr); in SiS_SetGroup1()
5950 if(SiS_Pr->ChipType < SIS_315H ) { in SiS_SetGroup1()
5954 temp = (SiS_Pr->SiS_VGAHT - 1) & 0x0FF; /* BTVGA2HT 0x08,0x09 */ in SiS_SetGroup1()
5955 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,temp); /* CRT2 Horizontal Total */ in SiS_SetGroup1()
5957 temp = (((SiS_Pr->SiS_VGAHT - 1) & 0xFF00) >> 8) << 4; in SiS_SetGroup1()
5958 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x09,0x0f,temp); /* CRT2 Horizontal Total Overflow [7:4] … in SiS_SetGroup1()
5960 temp = (SiS_Pr->SiS_VGAHDE + 12) & 0x0FF; /* BTVGA2HDEE 0x0A,0x0C */ in SiS_SetGroup1()
5961 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0A,temp); /* CRT2 Horizontal Display Enable End */ in SiS_SetGroup1()
5963 pushbx = SiS_Pr->SiS_VGAHDE + 12; /* bx BTVGA2HRS 0x0B,0x0C */ in SiS_SetGroup1()
5964 tempcx = (SiS_Pr->SiS_VGAHT - SiS_Pr->SiS_VGAHDE) >> 2; in SiS_SetGroup1()
5977 tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HT 0x08,0x09 */ in SiS_SetGroup1()
5979 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
5982 tempax = SiS_Pr->SiS_VGAHDE >> 1; in SiS_SetGroup1()
5983 tempcx = SiS_Pr->SiS_HT - SiS_Pr->SiS_HDE + tempax; in SiS_SetGroup1()
5984 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup1()
5985 tempcx = SiS_Pr->SiS_HT - tempax; in SiS_SetGroup1()
5990 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,tempcx); /* CRT2 Horizontal Total */ in SiS_SetGroup1()
5992 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x09,0x0F,temp); /* CRT2 Horizontal Total Overflow [7:4] … in SiS_SetGroup1()
5994 tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HDEE 0x0A,0x0C */ in SiS_SetGroup1()
5995 tempbx = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup1()
6004 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0A,tempbx); /* CRT2 Horizontal Display Enable End */ in SiS_SetGroup1()
6013 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6014 if(SiS_Pr->ChipType >= SIS_661) { in SiS_SetGroup1()
6015 if((SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) || in SiS_SetGroup1()
6016 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetGroup1()
6030 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6032 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6033 tempbx = SiS_Pr->CHSyncStart + bridgeadd; in SiS_SetGroup1()
6034 tempcx = SiS_Pr->CHSyncEnd + bridgeadd; in SiS_SetGroup1()
6035 tempax = SiS_Pr->SiS_VGAHT; in SiS_SetGroup1()
6041 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_SetGroup1()
6043 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6044 cr4 = SiS_Pr->CCRT1CRTC[4]; in SiS_SetGroup1()
6045 cr14 = SiS_Pr->CCRT1CRTC[14]; in SiS_SetGroup1()
6046 cr5 = SiS_Pr->CCRT1CRTC[5]; in SiS_SetGroup1()
6047 cr15 = SiS_Pr->CCRT1CRTC[15]; in SiS_SetGroup1()
6049 cr4 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[4]; in SiS_SetGroup1()
6050 cr14 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[14]; in SiS_SetGroup1()
6051 cr5 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[5]; in SiS_SetGroup1()
6052 cr15 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[15]; in SiS_SetGroup1()
6060 tempax = SiS_Pr->SiS_VGAHT; in SiS_SetGroup1()
6066 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSet525p1024)) { in SiS_SetGroup1()
6073 … SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0B,tempbx); /* CRT2 Horizontal Retrace Start */ in SiS_SetGroup1()
6075 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0D,tempcx); /* CRT2 Horizontal Retrace End */ in SiS_SetGroup1()
6078 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0C,temp); /* Overflow */ in SiS_SetGroup1()
6082 tempcx = SiS_Pr->SiS_VGAVT - 1; in SiS_SetGroup1()
6085 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetGroup1()
6086 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetGroup1()
6087 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6088 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6089 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)) { in SiS_SetGroup1()
6096 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1()
6100 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0E,temp); /* CRT2 Vertical Total */ in SiS_SetGroup1()
6102 tempbx = SiS_Pr->SiS_VGAVDE - 1; in SiS_SetGroup1()
6103 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0F,tempbx); /* CRT2 Vertical Display Enable End */ in SiS_SetGroup1()
6106 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x12,temp); /* Overflow */ in SiS_SetGroup1()
6108 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) { in SiS_SetGroup1()
6120 …tempbx = (SiS_Pr->SiS_VGAVT + SiS_Pr->SiS_VGAVDE) >> 1; /* BTVGA2VRS 0x10,0x1… in SiS_SetGroup1()
6121 …tempcx = ((SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE) >> 4) + tempbx + 1; /* BTVGA2VRE 0x11 … in SiS_SetGroup1()
6124 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6125 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6126 tempbx = SiS_Pr->CVSyncStart; in SiS_SetGroup1()
6127 tempcx = SiS_Pr->CVSyncEnd; in SiS_SetGroup1()
6129 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_SetGroup1()
6131 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6132 cr8 = SiS_Pr->CCRT1CRTC[8]; in SiS_SetGroup1()
6133 cr7 = SiS_Pr->CCRT1CRTC[7]; in SiS_SetGroup1()
6134 cr13 = SiS_Pr->CCRT1CRTC[13]; in SiS_SetGroup1()
6135 tempcx = SiS_Pr->CCRT1CRTC[9]; in SiS_SetGroup1()
6137 cr8 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[8]; in SiS_SetGroup1()
6138 cr7 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[7]; in SiS_SetGroup1()
6139 cr13 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[13]; in SiS_SetGroup1()
6140 tempcx = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[9]; in SiS_SetGroup1()
6148 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x10,tempbx); /* CRT2 Vertical Retrace Start */ in SiS_SetGroup1()
6151 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x11,temp); /* CRT2 Vert. Retrace End; Overflow */ in SiS_SetGroup1()
6155 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6159 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6161 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetGroup1()
6163 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) temp = 0x2c; in SiS_SetGroup1()
6164 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) temp = 0x20; in SiS_SetGroup1()
6166 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetGroup1()
6167 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) temp = 0x20; in SiS_SetGroup1()
6169 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x960) temp = 0x24; in SiS_SetGroup1()
6170 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) temp = 0x2c; in SiS_SetGroup1()
6171 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp = 0x08; in SiS_SetGroup1()
6172 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup1()
6173 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) temp = 0x2c; in SiS_SetGroup1()
6176 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1()
6178 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoYPbPrHiVision) in SiS_SetGroup1()
6180 else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) in SiS_SetGroup1()
6182 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) in SiS_SetGroup1()
6188 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1()
6189 if(SiS_Pr->PDC != -1) temp = SiS_Pr->PDC; in SiS_SetGroup1()
6194 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup1()
6195 if(SiS_Pr->SiS_LCDResInfo == Panel_640x480) temp = 0x04; in SiS_SetGroup1()
6197 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1()
6202 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1()
6203 if(SiS_Pr->PDC != -1) temp = SiS_Pr->PDC; in SiS_SetGroup1()
6209 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* Panel Link Delay Compensation; (Softw… in SiS_SetGroup1()
6217 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetGroup1()
6219 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetGroup1()
6221 if(SiS_Pr->ChipType == SIS_740) temp = 0x03; in SiS_SetGroup1()
6224 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp = 0x0a; in SiS_SetGroup1()
6226 if(SiS_Pr->ChipType == SIS_650) { in SiS_SetGroup1()
6227 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6228 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) tempbl = 0x0F; in SiS_SetGroup1()
6232 if(SiS_Pr->SiS_IF_DEF_DSTN || SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_SetGroup1()
6235 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetGroup1()
6240 … SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,tempbl,temp); /* Panel Link Delay Compensation */ in SiS_SetGroup1()
6248 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2C,0x3f,tempax); in SiS_SetGroup1()
6256 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6257 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetGroup1()
6259 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6260 } else if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup1()
6261 SiS_SetGroup1_301(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6264 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6265 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6267 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6268 if((!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) || (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1()
6269 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetGroup1()
6272 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetGroup1()
6284 SiS_GetGroup2CLVXPtr(struct SiS_Private *SiS_Pr, int tabletype) in SiS_GetGroup2CLVXPtr() argument
6289 a = SiS_Pr->SiS_VGAHDE; in SiS_GetGroup2CLVXPtr()
6290 b = SiS_Pr->SiS_HDE; in SiS_GetGroup2CLVXPtr()
6292 a = SiS_Pr->SiS_VGAVDE; in SiS_GetGroup2CLVXPtr()
6293 b = SiS_Pr->SiS_VDE; in SiS_GetGroup2CLVXPtr()
6301 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetGroup2CLVXPtr()
6306 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetGroup2CLVXPtr()
6307 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) tableptr = SiS_Part2CLVX_3; in SiS_GetGroup2CLVXPtr()
6308 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tableptr = SiS_Part2CLVX_3; in SiS_GetGroup2CLVXPtr()
6310 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetGroup2CLVXPtr()
6324 SiS_SetGroup2_C_ELV(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup2_C_ELV() argument
6331 if(!(SiS_Pr->SiS_VBType & VB_SISTAP4SCALER)) return; in SiS_SetGroup2_C_ELV()
6333 tableptr = SiS_GetGroup2CLVXPtr(SiS_Pr, 0); in SiS_SetGroup2_C_ELV()
6335 SiS_SetReg(SiS_Pr->SiS_Part2Port, i, tableptr[j]); in SiS_SetGroup2_C_ELV()
6337 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2_C_ELV()
6338 tableptr = SiS_GetGroup2CLVXPtr(SiS_Pr, 1); in SiS_SetGroup2_C_ELV()
6340 SiS_SetReg(SiS_Pr->SiS_Part2Port, i, tableptr[j]); in SiS_SetGroup2_C_ELV()
6344 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp |= 0x04; in SiS_SetGroup2_C_ELV()
6345 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x4e,0xeb,temp); in SiS_SetGroup2_C_ELV()
6349 SiS_GetCRT2Part2Ptr(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex, in SiS_GetCRT2Part2Ptr() argument
6354 if(SiS_Pr->ChipType < SIS_315H) return false; in SiS_GetCRT2Part2Ptr()
6357 (*ResIndex) = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetCRT2Part2Ptr()
6359 (*ResIndex) = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetCRT2Part2Ptr()
6364 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetCRT2Part2Ptr()
6365 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2Part2Ptr()
6370 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_GetCRT2Part2Ptr()
6371 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetCRT2Part2Ptr()
6372 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) (*CRT2Index) = 206; in SiS_GetCRT2Part2Ptr()
6381 SiS_Group2LCDSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short crt2crtc) in SiS_Group2LCDSpecial() argument
6389 if(!SiS_Pr->UseCustomMode) { in SiS_Group2LCDSpecial()
6390 if( ( ( (SiS_Pr->ChipType == SIS_630) || in SiS_Group2LCDSpecial()
6391 (SiS_Pr->ChipType == SIS_730) ) && in SiS_Group2LCDSpecial()
6392 (SiS_Pr->ChipRevision > 2) ) && in SiS_Group2LCDSpecial()
6393 (SiS_Pr->SiS_LCDResInfo == Panel_1024x768) && in SiS_Group2LCDSpecial()
6394 (!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) && in SiS_Group2LCDSpecial()
6395 (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) ) { in SiS_Group2LCDSpecial()
6397 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,0xB9); in SiS_Group2LCDSpecial()
6398 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,0xCC); in SiS_Group2LCDSpecial()
6399 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xA6); in SiS_Group2LCDSpecial()
6401 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x2B); in SiS_Group2LCDSpecial()
6402 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x13); in SiS_Group2LCDSpecial()
6403 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,0xE5); in SiS_Group2LCDSpecial()
6404 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,0x08); in SiS_Group2LCDSpecial()
6405 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xE2); in SiS_Group2LCDSpecial()
6409 if(SiS_Pr->ChipType < SIS_315H) { in SiS_Group2LCDSpecial()
6410 if(SiS_Pr->SiS_LCDTypeInfo == 0x0c) { in SiS_Group2LCDSpecial()
6413 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_Group2LCDSpecial()
6414 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_Group2LCDSpecial()
6420 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xff); in SiS_Group2LCDSpecial()
6423 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_Group2LCDSpecial()
6424 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_Group2LCDSpecial()
6426 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x28); in SiS_Group2LCDSpecial()
6430 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x18); in SiS_Group2LCDSpecial()
6431 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,atable[tempcx]); in SiS_Group2LCDSpecial()
6439 SiS_Set300Part2Regs(struct SiS_Private *SiS_Pr, unsigned short ModeIdIndex, unsigned short RefreshR… in SiS_Set300Part2Regs() argument
6446 if(SiS_Pr->ChipType != SIS_300) return; in SiS_Set300Part2Regs()
6447 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) return; in SiS_Set300Part2Regs()
6448 if(SiS_Pr->UseCustomMode) return; in SiS_Set300Part2Regs()
6451 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_Set300Part2Regs()
6453 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_Set300Part2Regs()
6457 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; in SiS_Set300Part2Regs()
6458 else CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_2; in SiS_Set300Part2Regs()
6462 CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; in SiS_Set300Part2Regs()
6466 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,(CRT2Part2Ptr+resindex)->CR[0]); in SiS_Set300Part2Regs()
6467 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x02,0x80,(CRT2Part2Ptr+resindex)->CR[1]); in SiS_Set300Part2Regs()
6469 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6472 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6475 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6477 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,(CRT2Part2Ptr+resindex)->CR[10]); in SiS_Set300Part2Regs()
6478 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0f,(CRT2Part2Ptr+resindex)->CR[11]); in SiS_Set300Part2Regs()
6483 SiS_SetTVSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetTVSpecial() argument
6485 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) return; in SiS_SetTVSpecial()
6486 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision)) return; in SiS_SetTVSpecial()
6487 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) return; in SiS_SetTVSpecial()
6489 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetTVSpecial()
6490 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in SiS_SetTVSpecial()
6498 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,specialtv[j]); in SiS_SetTVSpecial()
6500 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,0x72); in SiS_SetTVSpecial()
6501 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750)) { in SiS_SetTVSpecial()
6502 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetTVSpecial()
6503 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x14); in SiS_SetTVSpecial()
6504 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1b); in SiS_SetTVSpecial()
6506 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x14); /* 15 */ in SiS_SetTVSpecial()
6507 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1a); /* 1b */ in SiS_SetTVSpecial()
6514 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1b); /* 21 */ in SiS_SetTVSpecial()
6515 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x54); /* 5a */ in SiS_SetTVSpecial()
6517 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1a); /* 21 */ in SiS_SetTVSpecial()
6518 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x53); /* 5a */ in SiS_SetTVSpecial()
6524 SiS_SetGroup2_Tail(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetGroup2_Tail() argument
6528 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_SetGroup2_Tail()
6529 if(SiS_Pr->SiS_VGAVDE == 525) { in SiS_SetGroup2_Tail()
6531 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2_Tail()
6533 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) temp += 2; in SiS_SetGroup2_Tail()
6535 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2f,temp); in SiS_SetGroup2_Tail()
6536 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x30,0xb3); in SiS_SetGroup2_Tail()
6537 } else if(SiS_Pr->SiS_VGAVDE == 420) { in SiS_SetGroup2_Tail()
6539 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2_Tail()
6541 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) temp++; in SiS_SetGroup2_Tail()
6543 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2f,temp); in SiS_SetGroup2_Tail()
6547 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup2_Tail()
6548 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) { in SiS_SetGroup2_Tail()
6549 if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SiS_SetGroup2_Tail()
6550 SiS_SetRegOR(SiS_Pr->SiS_Part2Port,0x1a,0x03); in SiS_SetGroup2_Tail()
6555 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0b,temp); in SiS_SetGroup2_Tail()
6559 if((SiS_Pr->SiS_PanelXRes == 1280) && (SiS_Pr->SiS_PanelYRes == 768)) { in SiS_SetGroup2_Tail()
6560 if(SiS_Pr->SiS_VBInfo & SetSimuScanMode) { in SiS_SetGroup2_Tail()
6561 if(((SiS_Pr->SiS_HDE == 640) && (SiS_Pr->SiS_VDE == 480)) || in SiS_SetGroup2_Tail()
6562 ((SiS_Pr->SiS_HDE == 320) && (SiS_Pr->SiS_VDE == 240))) { in SiS_SetGroup2_Tail()
6583 SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup2() argument
6595 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup2()
6599 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup2()
6600 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetGroup2()
6601 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
6602 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup2()
6605 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup2()
6606 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetGroup2()
6610 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToAVIDEO)) temp |= 0x08; in SiS_SetGroup2()
6611 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToSVIDEO)) temp |= 0x04; in SiS_SetGroup2()
6612 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) temp |= 0x02; in SiS_SetGroup2()
6613 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) temp |= 0x01; in SiS_SetGroup2()
6615 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) temp |= 0x10; in SiS_SetGroup2()
6617 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x00,temp); in SiS_SetGroup2()
6620 TimingPoint = SiS_Pr->SiS_PALTiming; in SiS_SetGroup2()
6623 if( (SiS_Pr->SiS_VBType & VB_SIS30xBLV) && in SiS_SetGroup2()
6624 ( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || in SiS_SetGroup2()
6625 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode) ) ) { in SiS_SetGroup2()
6629 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
6631 TimingPoint = SiS_Pr->SiS_HiTVExtTiming; in SiS_SetGroup2()
6632 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
6633 TimingPoint = SiS_Pr->SiS_HiTVSt2Timing; in SiS_SetGroup2()
6634 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup2()
6635 TimingPoint = SiS_Pr->SiS_HiTVSt1Timing; in SiS_SetGroup2()
6639 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup2()
6642 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) i = 2; in SiS_SetGroup2()
6643 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) i = 1; in SiS_SetGroup2()
6649 } else if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
6655 TimingPoint = SiS_Pr->SiS_NTSCTiming; in SiS_SetGroup2()
6656 … PhaseIndex = (SiS_Pr->SiS_TVMode & TVSetNTSCJ) ? 0x01 : 0x00; /* SiS_PALPhase : SiS_NTSCPhase */ in SiS_SetGroup2()
6661 if(SiS_Pr->SiS_TVMode & (TVSetPALM | TVSetPALN)) { in SiS_SetGroup2()
6662 … PhaseIndex = (SiS_Pr->SiS_TVMode & TVSetPALM) ? 0x02 : 0x03; /* SiS_PALMPhase : SiS_PALNPhase */ in SiS_SetGroup2()
6666 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in SiS_SetGroup2()
6667 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup2()
6669 } else if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) { in SiS_SetGroup2()
6677 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS_TVPhase[(PhaseIndex * 4) + j]); in SiS_SetGroup2()
6681 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,TimingPoint[j]); in SiS_SetGroup2()
6684 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,TimingPoint[j]); in SiS_SetGroup2()
6687 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2()
6688 if(SiS_Pr->SiS_ModeType != ModeText) { in SiS_SetGroup2()
6689 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x3A,0x1F); in SiS_SetGroup2()
6693 SiS_SetRegOR(SiS_Pr->SiS_Part2Port,0x0A,SiS_Pr->SiS_NewFlickerMode); in SiS_SetGroup2()
6695 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x35,SiS_Pr->SiS_RY1COE); in SiS_SetGroup2()
6696 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x36,SiS_Pr->SiS_RY2COE); in SiS_SetGroup2()
6697 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x37,SiS_Pr->SiS_RY3COE); in SiS_SetGroup2()
6698 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x38,SiS_Pr->SiS_RY4COE); in SiS_SetGroup2()
6700 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempax = 950; in SiS_SetGroup2()
6701 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempax = 680; in SiS_SetGroup2()
6702 else if(SiS_Pr->SiS_TVMode & TVSetPAL) tempax = 520; in SiS_SetGroup2()
6705 if( ((SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) && (SiS_Pr->SiS_VDE <= tempax)) || in SiS_SetGroup2()
6706 ( (SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision) && in SiS_SetGroup2()
6707 ((SiS_Pr->SiS_VGAHDE == 1024) || (SiS_Pr->SiS_VDE <= tempax)) ) ) { in SiS_SetGroup2()
6709 tempax -= SiS_Pr->SiS_VDE; in SiS_SetGroup2()
6711 if(!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p))) { in SiS_SetGroup2()
6717 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); in SiS_SetGroup2()
6720 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,temp); in SiS_SetGroup2()
6722 if((SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoYPbPrHiVision) && (SiS_Pr->SiS_VGAHDE >= 1024)) { in SiS_SetGroup2()
6723 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
6724 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1b); in SiS_SetGroup2()
6725 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x54); in SiS_SetGroup2()
6727 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x17); in SiS_SetGroup2()
6728 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1d); in SiS_SetGroup2()
6734 tempcx = SiS_Pr->SiS_HT; in SiS_SetGroup2()
6735 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
6737 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) tempcx--; in SiS_SetGroup2()
6738 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1B,tempcx); in SiS_SetGroup2()
6739 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0xF0,((tempcx >> 8) & 0x0f)); in SiS_SetGroup2()
6741 tempcx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup2()
6742 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
6744 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempcx -= 4; in SiS_SetGroup2()
6745 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x22,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
6749 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x24,tempbx); in SiS_SetGroup2()
6750 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
6753 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
6757 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x29,0x0F,((tempbx << 4) & 0xf0)); in SiS_SetGroup2()
6761 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x27,tempcx); in SiS_SetGroup2()
6762 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x28,0x0F,((tempcx >> 4) & 0xf0)); in SiS_SetGroup2()
6765 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempcx -= 4; in SiS_SetGroup2()
6766 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2A,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
6768 tempcx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup2()
6769 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
6772 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2D,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
6775 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup2()
6776 tempcx = SiS_GetVGAHT2(SiS_Pr) - 1; in SiS_SetGroup2()
6778 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2E,tempcx); in SiS_SetGroup2()
6780 tempbx = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
6781 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup2()
6782 if(SiS_Pr->SiS_VGAVDE == 360) tempbx = 746; in SiS_SetGroup2()
6783 if(SiS_Pr->SiS_VGAVDE == 375) tempbx = 746; in SiS_SetGroup2()
6784 if(SiS_Pr->SiS_VGAVDE == 405) tempbx = 853; in SiS_SetGroup2()
6785 } else if( (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) && in SiS_SetGroup2()
6786 (!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p|TVSetYPbPr750p))) ) { in SiS_SetGroup2()
6788 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup2()
6789 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup2()
6791 } else if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
6792 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2()
6797 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
6798 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
6801 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetGroup2()
6807 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2F,tempbx); in SiS_SetGroup2()
6811 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)) { in SiS_SetGroup2()
6813 if(SiS_Pr->SiS_VBInfo & SetCRT2ToAVIDEO) temp |= 0x20; in SiS_SetGroup2()
6815 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x30,temp); in SiS_SetGroup2()
6817 if(SiS_Pr->SiS_VBType & VB_SISPART4OVERFLOW) { in SiS_SetGroup2()
6818 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x10,0xdf,((tempbx & 0x0400) >> 5)); in SiS_SetGroup2()
6821 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup2()
6822 tempbx = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
6823 if( (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) && in SiS_SetGroup2()
6824 (!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p))) ) { in SiS_SetGroup2()
6829 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x46,temp); in SiS_SetGroup2()
6830 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x47,tempbx); in SiS_SetGroup2()
6832 if(SiS_Pr->SiS_VBType & VB_SISPART4OVERFLOW) { in SiS_SetGroup2()
6833 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x10,0xbf,((tempbx & 0x0400) >> 4)); in SiS_SetGroup2()
6839 if(SiS_Pr->SiS_VGAHDE >= SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
6846 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2()
6847 if(SiS_Pr->SiS_VGAHDE >= 960) { in SiS_SetGroup2()
6848 if((!(modeflag & HalfDCLK)) || (SiS_Pr->ChipType < SIS_315H)) { in SiS_SetGroup2()
6850 if(SiS_Pr->SiS_VGAHDE >= 1280) { in SiS_SetGroup2()
6853 } else if(SiS_Pr->SiS_VGAHDE >= 1024) { in SiS_SetGroup2()
6864 longtemp = ((SiS_Pr->SiS_VGAHDE * tempch) / tempcl) << 13; in SiS_SetGroup2()
6865 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) longtemp <<= 3; in SiS_SetGroup2()
6866 tempax = longtemp / SiS_Pr->SiS_HDE; in SiS_SetGroup2()
6867 if(longtemp % SiS_Pr->SiS_HDE) tempax++; in SiS_SetGroup2()
6872 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x44,tempax); in SiS_SetGroup2()
6873 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x45,0xC0,tempbx); in SiS_SetGroup2()
6875 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup2()
6879 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x46,0xF8,tempcx); in SiS_SetGroup2()
6881 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
6888 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4B,tempbx); in SiS_SetGroup2()
6889 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4C,tempcx); in SiS_SetGroup2()
6892 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup2()
6894 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) temp |= 0x20; in SiS_SetGroup2()
6895 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) temp |= 0x40; in SiS_SetGroup2()
6897 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4D,temp); in SiS_SetGroup2()
6899 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x43); in SiS_SetGroup2()
6900 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,(temp - 3)); in SiS_SetGroup2()
6902 SiS_SetTVSpecial(SiS_Pr, ModeNo); in SiS_SetGroup2()
6904 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetGroup2()
6906 if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 8; in SiS_SetGroup2()
6907 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x4e,0xf7,temp); in SiS_SetGroup2()
6912 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup2()
6913 if(!(SiS_Pr->SiS_TVMode & TVSetNTSC1024)) { in SiS_SetGroup2()
6914 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x01); in SiS_SetGroup2()
6915 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,(temp - 1)); in SiS_SetGroup2()
6917 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xEF); in SiS_SetGroup2()
6920 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
6921 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup2()
6922 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0B,0x00); in SiS_SetGroup2()
6926 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) return; in SiS_SetGroup2()
6930 tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup2()
6931 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
6933 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2C,tempbx); in SiS_SetGroup2()
6934 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2B,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
6937 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_SetGroup2()
6938 if(SiS_Pr->SiS_ModeType == ModeEGA) { in SiS_SetGroup2()
6939 if(SiS_Pr->SiS_VGAHDE >= 1024) { in SiS_SetGroup2()
6941 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_SetGroup2()
6947 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0B,temp); in SiS_SetGroup2()
6949 tempbx = SiS_Pr->SiS_VDE - 1; in SiS_SetGroup2()
6950 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x03,tempbx); in SiS_SetGroup2()
6951 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0C,0xF8,((tempbx >> 8) & 0x07)); in SiS_SetGroup2()
6953 tempcx = SiS_Pr->SiS_VT - 1; in SiS_SetGroup2()
6954 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x19,tempcx); in SiS_SetGroup2()
6956 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup2()
6958 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) { in SiS_SetGroup2()
6962 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1A,0x0f,temp); in SiS_SetGroup2()
6964 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x09,0xF0); in SiS_SetGroup2()
6965 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x0A,0xF0); in SiS_SetGroup2()
6967 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x17,0xFB); in SiS_SetGroup2()
6968 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x18,0xDF); in SiS_SetGroup2()
6971 if(SiS_GetCRT2Part2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_SetGroup2()
6976 case 200: CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; break; in SiS_SetGroup2()
6979 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,(CRT2Part2Ptr+resindex)->CR[0]); in SiS_SetGroup2()
6980 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x02,0x80,(CRT2Part2Ptr+resindex)->CR[1]); in SiS_SetGroup2()
6982 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
6985 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
6988 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
6990 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,(CRT2Part2Ptr+resindex)->CR[10]); in SiS_SetGroup2()
6991 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0f,(CRT2Part2Ptr+resindex)->CR[11]); in SiS_SetGroup2()
6993 SiS_SetGroup2_Tail(SiS_Pr, ModeNo); in SiS_SetGroup2()
7003 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7004 if((SiS_Pr->SiS_LCDInfo & LCDPass11) || (SiS_Pr->PanelYRes == SiS_Pr->SiS_VDE)) { in SiS_SetGroup2()
7005 tempbx = SiS_Pr->SiS_VDE - 1; in SiS_SetGroup2()
7006 tempcx = SiS_Pr->SiS_VT - 1; in SiS_SetGroup2()
7008 tempbx = SiS_Pr->SiS_VDE + ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VDE) / 2); in SiS_SetGroup2()
7009 tempcx = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VDE) / 2); in SiS_SetGroup2()
7012 tempbx = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7013 tempcx = SiS_Pr->SiS_VT; in SiS_SetGroup2()
7015 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7016 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7018 if(SiS_Pr->PanelYRes < SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7021 tempax -= SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7031 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,tempcx); /* lcdvdes */ in SiS_SetGroup2()
7032 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,tempbx); /* lcdvdee */ in SiS_SetGroup2()
7036 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,temp); in SiS_SetGroup2()
7038 tempax = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7039 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7040 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7042 tempcx = (SiS_Pr->SiS_VT - tempax) >> 4; in SiS_SetGroup2()
7043 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7044 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7045 tempcx = (SiS_Pr->SiS_VT - tempax) / 10; in SiS_SetGroup2()
7049 tempbx = ((SiS_Pr->SiS_VT + SiS_Pr->SiS_VDE) >> 1) - 1; in SiS_SetGroup2()
7050 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7051 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7052 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { /* ? */ in SiS_SetGroup2()
7053 tempax = SiS_Pr->SiS_VT - SiS_Pr->PanelYRes; in SiS_SetGroup2()
7059 if(tempbx <= SiS_Pr->SiS_VDE) tempbx = SiS_Pr->SiS_VDE + 1; in SiS_SetGroup2()
7063 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup2()
7065 if((!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) || (crt2crtc == 6)) { in SiS_SetGroup2()
7066 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_SetGroup2()
7075 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7076 tempbx = SiS_Pr->CVSyncStart; in SiS_SetGroup2()
7079 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,tempbx); /* lcdvrs */ in SiS_SetGroup2()
7085 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7087 temp |= (SiS_Pr->CVSyncEnd & 0x0f); in SiS_SetGroup2()
7090 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); in SiS_SetGroup2()
7093 SiS_Group2LCDSpecial(SiS_Pr, ModeNo, crt2crtc); in SiS_SetGroup2()
7097 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) bridgeoffset += 2; in SiS_SetGroup2()
7098 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) bridgeoffset += 2; /* OK for Averatec 1280x800 (301C) */ in SiS_SetGroup2()
7099 if(SiS_IsDualLink(SiS_Pr)) bridgeoffset++; in SiS_SetGroup2()
7100 else if(SiS_Pr->SiS_VBType & VB_SIS302LV) bridgeoffset++; /* OK for Asus A4L 1280x800 */ in SiS_SetGroup2()
7104 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7105 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
7106 temp = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_HDE) / 2); in SiS_SetGroup2()
7107 if(SiS_IsDualLink(SiS_Pr)) temp >>= 1; in SiS_SetGroup2()
7111 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1F,temp); /* lcdhdes */ in SiS_SetGroup2()
7112 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x20,0x0F,((temp >> 4) & 0xf0)); in SiS_SetGroup2()
7114 tempcx = SiS_Pr->SiS_HT; in SiS_SetGroup2()
7115 tempax = tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup2()
7116 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7117 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
7118 tempax = SiS_Pr->PanelXRes; in SiS_SetGroup2()
7119 tempbx = SiS_Pr->PanelXRes - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_HDE) / 2); in SiS_SetGroup2()
7122 if(SiS_IsDualLink(SiS_Pr)) { in SiS_SetGroup2()
7130 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,tempbx); /* lcdhdee */ in SiS_SetGroup2()
7131 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0xF0,((tempbx >> 8) & 0x0f)); in SiS_SetGroup2()
7138 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_SetGroup2()
7139 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7140 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetGroup2()
7141 if(SiS_Pr->SiS_HDE == 1280) tempbx = (tempbx & 0xff00) | 0x47; in SiS_SetGroup2()
7146 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7147 tempbx = SiS_Pr->CHSyncStart; in SiS_SetGroup2()
7149 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
7153 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1C,tempbx); /* lcdhrs */ in SiS_SetGroup2()
7154 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
7159 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7160 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) tempcx >>= 2; in SiS_SetGroup2()
7164 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7165 tempbx = SiS_Pr->CHSyncEnd; in SiS_SetGroup2()
7167 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
7171 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x21,tempbx); /* lcdhre */ in SiS_SetGroup2()
7173 SiS_SetGroup2_Tail(SiS_Pr, ModeNo); in SiS_SetGroup2()
7176 SiS_Set300Part2Regs(SiS_Pr, ModeIdIndex, RefreshRateTableIndex, ModeNo); in SiS_SetGroup2()
7188 SiS_SetGroup3(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup3() argument
7193 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup3()
7196 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x00,0x00); in SiS_SetGroup3()
7201 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup3()
7202 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xFA); in SiS_SetGroup3()
7203 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xC8); in SiS_SetGroup3()
7205 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xF5); in SiS_SetGroup3()
7206 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xB7); in SiS_SetGroup3()
7209 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup3()
7210 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xFA); in SiS_SetGroup3()
7211 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xC8); in SiS_SetGroup3()
7212 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x3D,0xA8); in SiS_SetGroup3()
7216 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup3()
7217 tempdi = SiS_Pr->SiS_HiTVGroup3Data; in SiS_SetGroup3()
7218 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup3()
7219 tempdi = SiS_Pr->SiS_HiTVGroup3Simu; in SiS_SetGroup3()
7221 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup3()
7222 if(!(SiS_Pr->SiS_TVMode & TVSetYPbPr525i)) { in SiS_SetGroup3()
7224 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempdi = SiS_HiTVGroup3_2; in SiS_SetGroup3()
7229 SiS_SetReg(SiS_Pr->SiS_Part3Port,i,tempdi[i]); in SiS_SetGroup3()
7231 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetGroup3()
7232 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_SetGroup3()
7233 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x28,0x3f); in SiS_SetGroup3()
7250 SiS_ShiftXPos(struct SiS_Private *SiS_Pr, int shift)
7254 temp1 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x1f);
7255 temp2 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x20);
7257 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1f,temp);
7258 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x20,0x0f,((temp >> 4) & 0xf0));
7259 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x2b) & 0x0f;
7261 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2b,0xf0,(temp & 0x0f));
7262 temp1 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x43);
7263 temp2 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x42);
7265 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,temp);
7266 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x42,0x0f,((temp >> 4) & 0xf0));
7271 SiS_SetGroup4_C_ELV(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup4_C_ELV() argument
7274 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup4_C_ELV()
7276 if(!(SiS_Pr->SiS_VBType & VB_SIS30xCLV)) return; in SiS_SetGroup4_C_ELV()
7277 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToHiVision | SetCRT2ToYPbPr525750))) return; in SiS_SetGroup4_C_ELV()
7279 if(SiS_Pr->ChipType >= XGI_20) return; in SiS_SetGroup4_C_ELV()
7281 if((SiS_Pr->ChipType >= SIS_661) && (SiS_Pr->SiS_ROMNew)) { in SiS_SetGroup4_C_ELV()
7286 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup4_C_ELV()
7289 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x3a,0x08); in SiS_SetGroup4_C_ELV()
7290 temp = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x3a); in SiS_SetGroup4_C_ELV()
7292 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x3a,0xdf); in SiS_SetGroup4_C_ELV()
7293 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x25,0xfc); in SiS_SetGroup4_C_ELV()
7294 if((SiS_Pr->ChipType < SIS_661) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetGroup4_C_ELV()
7295 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x25,0xf8); in SiS_SetGroup4_C_ELV()
7297 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x0f,0xfb); in SiS_SetGroup4_C_ELV()
7298 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) temp = 0x0000; in SiS_SetGroup4_C_ELV()
7299 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) temp = 0x0002; in SiS_SetGroup4_C_ELV()
7300 else if(SiS_Pr->SiS_TVMode & TVSetHiVision) temp = 0x0400; in SiS_SetGroup4_C_ELV()
7302 if((SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_SetGroup4_C_ELV()
7304 if(SiS_Pr->SiS_TVMode & TVAspect43) temp1 = 4; in SiS_SetGroup4_C_ELV()
7305 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0f,0xfb,temp1); in SiS_SetGroup4_C_ELV()
7306 if(SiS_Pr->SiS_TVMode & TVAspect43LB) temp |= 0x01; in SiS_SetGroup4_C_ELV()
7307 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x26,0x7c,(temp & 0xff)); in SiS_SetGroup4_C_ELV()
7308 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0xfb,(temp >> 8)); in SiS_SetGroup4_C_ELV()
7310 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x39,0xfd); in SiS_SetGroup4_C_ELV()
7313 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x3b) & 0x03; in SiS_SetGroup4_C_ELV()
7316 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x26,0xf8,(temp & 0xff)); in SiS_SetGroup4_C_ELV()
7317 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0xfb,(temp >> 8)); in SiS_SetGroup4_C_ELV()
7319 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x3b,0xfd); in SiS_SetGroup4_C_ELV()
7324 if(SiS_Pr->ChipType >= SIS_661) { /* ? */ in SiS_SetGroup4_C_ELV()
7325 if(SiS_Pr->SiS_TVMode & TVAspect43) { in SiS_SetGroup4_C_ELV()
7326 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_SetGroup4_C_ELV()
7328 SiS_ShiftXPos(SiS_Pr, 97); in SiS_SetGroup4_C_ELV()
7330 SiS_ShiftXPos(SiS_Pr, 111); in SiS_SetGroup4_C_ELV()
7332 } else if(SiS_Pr->SiS_TVMode & TVSetHiVision) { in SiS_SetGroup4_C_ELV()
7333 SiS_ShiftXPos(SiS_Pr, 136); in SiS_SetGroup4_C_ELV()
7345 SiS_SetCRT2VCLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2VCLK() argument
7350 if(SiS_Pr->UseCustomMode) { in SiS_SetCRT2VCLK()
7351 reg1 = SiS_Pr->CSR2B; in SiS_SetCRT2VCLK()
7352 reg2 = SiS_Pr->CSR2C; in SiS_SetCRT2VCLK()
7354 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2VCLK()
7355 reg1 = SiS_Pr->SiS_VBVCLKData[vclkindex].Part4_A; in SiS_SetCRT2VCLK()
7356 reg2 = SiS_Pr->SiS_VBVCLKData[vclkindex].Part4_B; in SiS_SetCRT2VCLK()
7359 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2VCLK()
7360 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSet525p1024)) { in SiS_SetCRT2VCLK()
7361 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,0x57); in SiS_SetCRT2VCLK()
7362 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,0x46); in SiS_SetCRT2VCLK()
7363 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1f,0xf6); in SiS_SetCRT2VCLK()
7365 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,reg1); in SiS_SetCRT2VCLK()
7366 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,reg2); in SiS_SetCRT2VCLK()
7369 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,0x01); in SiS_SetCRT2VCLK()
7370 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,reg2); in SiS_SetCRT2VCLK()
7371 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,reg1); in SiS_SetCRT2VCLK()
7373 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x12,0x00); in SiS_SetCRT2VCLK()
7375 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) temp |= 0x20; in SiS_SetCRT2VCLK()
7376 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x12,temp); in SiS_SetCRT2VCLK()
7380 SiS_SetDualLinkEtc(struct SiS_Private *SiS_Pr) in SiS_SetDualLinkEtc() argument
7382 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetDualLinkEtc()
7383 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_SetDualLinkEtc()
7384 if((SiS_CRT2IsLCD(SiS_Pr)) || in SiS_SetDualLinkEtc()
7385 (SiS_IsVAMode(SiS_Pr))) { in SiS_SetDualLinkEtc()
7386 if(SiS_Pr->SiS_LCDInfo & LCDDualLink) { in SiS_SetDualLinkEtc()
7387 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x27,0x2c); in SiS_SetDualLinkEtc()
7389 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x27,~0x20); in SiS_SetDualLinkEtc()
7394 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_SetDualLinkEtc()
7395 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2a,0x00); in SiS_SetDualLinkEtc()
7397 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_SetDualLinkEtc()
7399 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_SetDualLinkEtc()
7404 SiS_SetGroup4(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup4() argument
7411 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup4()
7412 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_SetGroup4()
7413 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup4()
7414 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup4()
7417 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup4()
7418 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup4()
7421 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup4()
7422 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetGroup4()
7423 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup4()
7424 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x24,0x0e); in SiS_SetGroup4()
7429 if(SiS_Pr->SiS_VBType & (VB_SIS30xCLV | VB_SIS302LV)) { in SiS_SetGroup4()
7430 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7431 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x10,0x9f); in SiS_SetGroup4()
7435 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup4()
7436 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup4()
7437 SiS_SetDualLinkEtc(SiS_Pr); in SiS_SetGroup4()
7442 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x13,SiS_Pr->SiS_RVBHCFACT); in SiS_SetGroup4()
7444 tempbx = SiS_Pr->SiS_RVBHCMAX; in SiS_SetGroup4()
7445 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x14,tempbx); in SiS_SetGroup4()
7449 tempcx = SiS_Pr->SiS_VGAHT - 1; in SiS_SetGroup4()
7450 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x16,tempcx); in SiS_SetGroup4()
7454 tempcx = SiS_Pr->SiS_VGAVT - 1; in SiS_SetGroup4()
7455 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) tempcx -= 5; in SiS_SetGroup4()
7456 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x17,tempcx); in SiS_SetGroup4()
7459 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x15,temp); in SiS_SetGroup4()
7461 tempbx = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup4()
7463 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup4()
7465 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7468 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup4()
7472 } else if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetGroup4()
7481 temp |= SiS_Pr->Init_P4_0E; in SiS_SetGroup4()
7483 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetGroup4()
7484 if(SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) { in SiS_SetGroup4()
7490 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0E,0x10,temp); in SiS_SetGroup4()
7492 tempeax = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup4()
7493 tempebx = SiS_Pr->SiS_VDE; in SiS_SetGroup4()
7494 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup4()
7498 tempcx = SiS_Pr->SiS_RVBHRS; in SiS_SetGroup4()
7499 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x18,tempcx); in SiS_SetGroup4()
7515 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1B,temp); in SiS_SetGroup4()
7517 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1A,temp); in SiS_SetGroup4()
7520 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x19,temp); in SiS_SetGroup4()
7522 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup4()
7524 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1C,0x28); in SiS_SetGroup4()
7528 if(SiS_Pr->SiS_TVMode & (TVSetHiVision | TVSetYPbPr750p)) tempbx = 0x08; in SiS_SetGroup4()
7529 tempax = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup4()
7531 if(SiS_IsDualLink(SiS_Pr)) tempax >>= 1; in SiS_SetGroup4()
7533 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7544 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7557 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1D,tempax); in SiS_SetGroup4()
7558 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1E,temp); in SiS_SetGroup4()
7561 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_SetGroup4()
7564 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7565 … if(!(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSetHiVision | TVSetYPbPr750p | TVSetYPbPr525p))) { in SiS_SetGroup4()
7567 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup4()
7568 if(!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in SiS_SetGroup4()
7574 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x1F,tempbx,temp); in SiS_SetGroup4()
7576 tempbx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup4()
7577 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup4()
7579 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x22,tempbx); in SiS_SetGroup4()
7581 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,0xC0,temp); in SiS_SetGroup4()
7583 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetGroup4()
7584 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7585 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x24,0x0e); in SiS_SetGroup4()
7590 SiS_SetDualLinkEtc(SiS_Pr); in SiS_SetGroup4()
7594 SiS_SetCRT2VCLK(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup4()
7602 SiS_SetGroup5(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup5() argument
7605 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup5()
7607 if(SiS_Pr->SiS_ModeType == ModeVGA) { in SiS_SetGroup5()
7608 if(!(SiS_Pr->SiS_VBInfo & (SetInSlaveMode | LoadDACFlag))) { in SiS_SetGroup5()
7609 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_SetGroup5()
7610 SiS_LoadDAC(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetGroup5()
7620 SiS_GetLVDSCRT1Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetLVDSCRT1Ptr() argument
7630 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetLVDSCRT1Ptr()
7631 (*ResIndex) = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetLVDSCRT1Ptr()
7633 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetLVDSCRT1Ptr()
7634 (*ResIndex) = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetLVDSCRT1Ptr()
7639 if((SiS_Pr->SiS_IF_DEF_CH70xx) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetLVDSCRT1Ptr()
7642 if((SiS_Pr->SiS_TVMode & TVSetPAL) && (!(SiS_Pr->SiS_TVMode & TVSetPALM))) { in SiS_GetLVDSCRT1Ptr()
7644 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetLVDSCRT1Ptr()
7645 if(SiS_Pr->SiS_CHSOverScan) (*DisplayType) = 84; in SiS_GetLVDSCRT1Ptr()
7649 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) (*DisplayType)++; in SiS_GetLVDSCRT1Ptr()
7655 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSCRT1Ptr()
7674 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x600) { in SiS_GetLVDSCRT1Ptr()
7675 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) (*DisplayType) += 2; in SiS_GetLVDSCRT1Ptr()
7684 SiS_ModCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_ModCRT1CRTC() argument
7694 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_ModCRT1CRTC()
7695 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_ModCRT1CRTC()
7696 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_ModCRT1CRTC()
7697 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) in SiS_ModCRT1CRTC()
7700 if(SiS_Pr->SiS_IF_DEF_LVDS) { in SiS_ModCRT1CRTC()
7701 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_ModCRT1CRTC()
7702 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) return; in SiS_ModCRT1CRTC()
7704 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_ModCRT1CRTC()
7705 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) return; in SiS_ModCRT1CRTC()
7708 if(SiS_Pr->SiS_LCDInfo & LCDPass11) return; in SiS_ModCRT1CRTC()
7710 if(SiS_Pr->ChipType < SIS_315H) { in SiS_ModCRT1CRTC()
7711 if(SiS_Pr->SiS_SetFlag & SetDOSMode) return; in SiS_ModCRT1CRTC()
7714 if(!(SiS_GetLVDSCRT1Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_ModCRT1CRTC()
7720 case 50: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_1; break; /* xSTN */ in SiS_ModCRT1CRTC()
7721 case 14: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_2; break; /* xSTN */ in SiS_ModCRT1CRTC()
7722 case 15: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_2_H; break; /* xSTN */ in SiS_ModCRT1CRTC()
7723 case 18: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_3; break; /* xSTN */ in SiS_ModCRT1CRTC()
7724 case 19: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_3_H; break; /* xSTN */ in SiS_ModCRT1CRTC()
7725 case 10: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1640x480_1; break; in SiS_ModCRT1CRTC()
7726 case 11: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1640x480_1_H; break; in SiS_ModCRT1CRTC()
7728 case 26: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_1; break; in SiS_ModCRT1CRTC()
7729 case 27: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_1_H; break; in SiS_ModCRT1CRTC()
7730 case 28: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_2; break; in SiS_ModCRT1CRTC()
7731 case 29: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_2_H; break; in SiS_ModCRT1CRTC()
7733 case 80: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1UNTSC; break; in SiS_ModCRT1CRTC()
7734 case 81: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1ONTSC; break; in SiS_ModCRT1CRTC()
7735 case 82: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1UPAL; break; in SiS_ModCRT1CRTC()
7736 case 83: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1OPAL; break; in SiS_ModCRT1CRTC()
7737 case 84: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1SOPAL; break; in SiS_ModCRT1CRTC()
7742 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x11,0x7f); in SiS_ModCRT1CRTC()
7746 SiS_SetReg(SiS_Pr->SiS_P3d4,CRIdx[i],tempah); in SiS_ModCRT1CRTC()
7751 SiS_SetReg(SiS_Pr->SiS_P3c4,i,tempah); in SiS_ModCRT1CRTC()
7755 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x0E,0x1f,tempah); in SiS_ModCRT1CRTC()
7757 if(ModeNo <= 0x13) modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_ModCRT1CRTC()
7758 else modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_ModCRT1CRTC()
7762 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x09,~0x020,tempah); in SiS_ModCRT1CRTC()
7766 SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); in SiS_ModCRT1CRTC()
7776 SiS_SetCRT2ECLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2ECLK() argument
7779 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2ECLK()
7783 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetCRT2ECLK()
7784 SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); in SiS_SetCRT2ECLK()
7785 if(SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRTVCLK == 2) { in SiS_SetCRT2ECLK()
7788 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, in SiS_SetCRT2ECLK()
7790 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2ECLK()
7792 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, in SiS_SetCRT2ECLK()
7796 sr2b = SiS_Pr->SiS_VCLKData[vclkindex].SR2B; in SiS_SetCRT2ECLK()
7797 sr2c = SiS_Pr->SiS_VCLKData[vclkindex].SR2C; in SiS_SetCRT2ECLK()
7799 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2ECLK()
7800 if(SiS_Pr->SiS_UseROM) { in SiS_SetCRT2ECLK()
7809 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ECLK()
7810 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetCRT2ECLK()
7815 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x20); in SiS_SetCRT2ECLK()
7816 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
7817 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
7818 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x10); in SiS_SetCRT2ECLK()
7819 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
7820 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
7821 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x00); in SiS_SetCRT2ECLK()
7822 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
7823 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
7831 SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCHTVReg() argument
7838 resindex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetCHTVReg()
7840 resindex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetCHTVReg()
7845 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
7846 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetCHTVReg()
7848 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_SetCHTVReg()
7849 if(SiS_Pr->SiS_CHSOverScan) TVType = 8; in SiS_SetCHTVReg()
7851 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetCHTVReg()
7853 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
7854 } else if(SiS_Pr->SiS_TVMode & TVSetPALN) { in SiS_SetCHTVReg()
7856 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
7861 case 0: CHTVRegData = SiS_Pr->SiS_CHTVReg_UNTSC; break; in SiS_SetCHTVReg()
7862 case 1: CHTVRegData = SiS_Pr->SiS_CHTVReg_ONTSC; break; in SiS_SetCHTVReg()
7863 case 2: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPAL; break; in SiS_SetCHTVReg()
7864 case 3: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPAL; break; in SiS_SetCHTVReg()
7865 case 4: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPALM; break; in SiS_SetCHTVReg()
7866 case 5: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPALM; break; in SiS_SetCHTVReg()
7867 case 6: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPALN; break; in SiS_SetCHTVReg()
7868 case 7: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPALN; break; in SiS_SetCHTVReg()
7869 case 8: CHTVRegData = SiS_Pr->SiS_CHTVReg_SOPAL; break; in SiS_SetCHTVReg()
7870 default: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPAL; break; in SiS_SetCHTVReg()
7874 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetCHTVReg()
7883 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetCHTVReg()
7884 SiS_SetCH700x(SiS_Pr,0x04,0x43); /* 0x40=76uA (PAL); 0x03=15bit non-multi RGB*/ in SiS_SetCHTVReg()
7885 SiS_SetCH700x(SiS_Pr,0x09,0x69); /* Black level for PAL (105)*/ in SiS_SetCHTVReg()
7887 SiS_SetCH700x(SiS_Pr,0x04,0x03); /* upper nibble=71uA (NTSC), 0x03=15bit non-multi RGB*/ in SiS_SetCHTVReg()
7888 SiS_SetCH700x(SiS_Pr,0x09,0x71); /* Black level for NTSC (113)*/ in SiS_SetCHTVReg()
7891 SiS_SetCH700x(SiS_Pr,0x00,CHTVRegData[resindex].Reg[0]); /* Mode register */ in SiS_SetCHTVReg()
7892 SiS_SetCH700x(SiS_Pr,0x07,CHTVRegData[resindex].Reg[1]); /* Start active video register */ in SiS_SetCHTVReg()
7893 SiS_SetCH700x(SiS_Pr,0x08,CHTVRegData[resindex].Reg[2]); /* Position overflow register */ in SiS_SetCHTVReg()
7894 SiS_SetCH700x(SiS_Pr,0x0a,CHTVRegData[resindex].Reg[3]); /* Horiz Position register */ in SiS_SetCHTVReg()
7895 SiS_SetCH700x(SiS_Pr,0x0b,CHTVRegData[resindex].Reg[4]); /* Vertical Position register */ in SiS_SetCHTVReg()
7902 SiS_SetCH700x(SiS_Pr,0x01,0x28); in SiS_SetCHTVReg()
7911 SiS_SetCH700x(SiS_Pr,0x03,0xb1); /* old: 3103 */ in SiS_SetCHTVReg()
7917 SiS_SetCH70xx(SiS_Pr,0x3d,0x00); in SiS_SetCHTVReg()
7923 SiS_SetCH70xxANDOR(SiS_Pr,0x10,0x00,0x1F); in SiS_SetCHTVReg()
7928 SiS_SetCH70xxANDOR(SiS_Pr,0x11,0x02,0xF8); in SiS_SetCHTVReg()
7932 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x00,0xEF); in SiS_SetCHTVReg()
7934 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { /* ---- NTSC ---- */ in SiS_SetCHTVReg()
7935 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) { in SiS_SetCHTVReg()
7937 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
7938 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on, no need to set FSCI */ in SiS_SetCHTVReg()
7940 SiS_SetCH70xxANDOR(SiS_Pr,0x18,0x01,0xF0); /* 0x18-0x1f: FSCI 469,762,048 */ in SiS_SetCHTVReg()
7941 SiS_SetCH70xxANDOR(SiS_Pr,0x19,0x0C,0xF0); in SiS_SetCHTVReg()
7942 SiS_SetCH70xxANDOR(SiS_Pr,0x1a,0x00,0xF0); in SiS_SetCHTVReg()
7943 SiS_SetCH70xxANDOR(SiS_Pr,0x1b,0x00,0xF0); in SiS_SetCHTVReg()
7944 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x00,0xF0); in SiS_SetCHTVReg()
7945 SiS_SetCH70xxANDOR(SiS_Pr,0x1d,0x00,0xF0); in SiS_SetCHTVReg()
7946 SiS_SetCH70xxANDOR(SiS_Pr,0x1e,0x00,0xF0); in SiS_SetCHTVReg()
7947 SiS_SetCH70xxANDOR(SiS_Pr,0x1f,0x00,0xF0); in SiS_SetCHTVReg()
7948 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x01,0xEF); /* Loop filter on for mode 23 */ in SiS_SetCHTVReg()
7949 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x00,0xFE); /* ACIV off, need to set FSCI */ in SiS_SetCHTVReg()
7953 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
7954 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); in SiS_SetCHTVReg()
7957 … SiS_SetCH70xxANDOR(SiS_Pr,0x18,0x01,0xF0); /* (FSCI was 0x1f1c71c7 - this is for mode 22) */ in SiS_SetCHTVReg()
7958 SiS_SetCH70xxANDOR(SiS_Pr,0x19,0x09,0xF0); /* FSCI for mode 24 is 428,554,851 */ in SiS_SetCHTVReg()
7959 SiS_SetCH70xxANDOR(SiS_Pr,0x1a,0x08,0xF0); /* 198b3a63 */ in SiS_SetCHTVReg()
7960 SiS_SetCH70xxANDOR(SiS_Pr,0x1b,0x0b,0xF0); in SiS_SetCHTVReg()
7961 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x04,0xF0); in SiS_SetCHTVReg()
7962 SiS_SetCH70xxANDOR(SiS_Pr,0x1d,0x01,0xF0); in SiS_SetCHTVReg()
7963 SiS_SetCH70xxANDOR(SiS_Pr,0x1e,0x06,0xF0); in SiS_SetCHTVReg()
7964 SiS_SetCH70xxANDOR(SiS_Pr,0x1f,0x05,0xF0); in SiS_SetCHTVReg()
7965 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off for mode 24 */ in SiS_SetCHTVReg()
7966 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x00,0xFE); * ACIV off, need to set FSCI */ in SiS_SetCHTVReg()
7968 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
7969 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); in SiS_SetCHTVReg()
7975 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
7976 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on */ in SiS_SetCHTVReg()
7978 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
7979 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on */ in SiS_SetCHTVReg()
7997 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp |= 0x10; in SiS_SetCHTVReg()
7998 SiS_SetCH701x(SiS_Pr,0x00,temp); in SiS_SetCHTVReg()
8000 SiS_SetCH701x(SiS_Pr,0x01,CHTVRegData[resindex].Reg[1]); in SiS_SetCHTVReg()
8001 SiS_SetCH701x(SiS_Pr,0x02,CHTVRegData[resindex].Reg[2]); in SiS_SetCHTVReg()
8002 SiS_SetCH701x(SiS_Pr,0x04,CHTVRegData[resindex].Reg[3]); in SiS_SetCHTVReg()
8003 SiS_SetCH701x(SiS_Pr,0x03,CHTVRegData[resindex].Reg[4]); in SiS_SetCHTVReg()
8004 SiS_SetCH701x(SiS_Pr,0x05,CHTVRegData[resindex].Reg[5]); in SiS_SetCHTVReg()
8005 SiS_SetCH701x(SiS_Pr,0x06,CHTVRegData[resindex].Reg[6]); in SiS_SetCHTVReg()
8008 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp = 0x66; in SiS_SetCHTVReg()
8009 SiS_SetCH701x(SiS_Pr,0x07,temp); in SiS_SetCHTVReg()
8011 SiS_SetCH701x(SiS_Pr,0x08,CHTVRegData[resindex].Reg[8]); in SiS_SetCHTVReg()
8012 SiS_SetCH701x(SiS_Pr,0x15,CHTVRegData[resindex].Reg[9]); in SiS_SetCHTVReg()
8013 SiS_SetCH701x(SiS_Pr,0x1f,CHTVRegData[resindex].Reg[10]); in SiS_SetCHTVReg()
8014 SiS_SetCH701x(SiS_Pr,0x0c,CHTVRegData[resindex].Reg[11]); in SiS_SetCHTVReg()
8015 SiS_SetCH701x(SiS_Pr,0x0d,CHTVRegData[resindex].Reg[12]); in SiS_SetCHTVReg()
8016 SiS_SetCH701x(SiS_Pr,0x0e,CHTVRegData[resindex].Reg[13]); in SiS_SetCHTVReg()
8017 SiS_SetCH701x(SiS_Pr,0x0f,CHTVRegData[resindex].Reg[14]); in SiS_SetCHTVReg()
8018 SiS_SetCH701x(SiS_Pr,0x10,CHTVRegData[resindex].Reg[15]); in SiS_SetCHTVReg()
8020 temp = SiS_GetCH701x(SiS_Pr,0x21) & ~0x02; in SiS_SetCHTVReg()
8027 if(SiS_Pr->SiS_TVMode & (TVSetPALN | TVSetNTSCJ)) temp |= 0x02; in SiS_SetCHTVReg()
8028 SiS_SetCH701x(SiS_Pr,0x21,temp); in SiS_SetCHTVReg()
8043 SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xBLOn() argument
8048 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xBLOn()
8049 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xBLOn()
8050 SiS_SetCH701x(SiS_Pr,0x66,0x65); in SiS_Chrontel701xBLOn()
8052 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_Chrontel701xBLOn()
8054 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_Chrontel701xBLOn()
8060 SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xBLOff() argument
8065 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xBLOff()
8066 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_Chrontel701xBLOff()
8068 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_Chrontel701xBLOff()
8073 SiS_ChrontelPowerSequencing(struct SiS_Private *SiS_Pr) in SiS_ChrontelPowerSequencing() argument
8087 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelPowerSequencing()
8088 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_ChrontelPowerSequencing()
8089 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) tableptr = asus1024_740; in SiS_ChrontelPowerSequencing()
8091 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_ChrontelPowerSequencing()
8092 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_ChrontelPowerSequencing()
8093 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200)) { in SiS_ChrontelPowerSequencing()
8094 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) tableptr = asus1400_740; in SiS_ChrontelPowerSequencing()
8098 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_ChrontelPowerSequencing()
8100 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_ChrontelPowerSequencing()
8101 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_ChrontelPowerSequencing()
8102 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200)) { in SiS_ChrontelPowerSequencing()
8108 SiS_SetCH701x(SiS_Pr, regtable[i], tableptr[i]); in SiS_ChrontelPowerSequencing()
8113 SiS_SetCH701xForLCD(struct SiS_Private *SiS_Pr) in SiS_SetCH701xForLCD() argument
8155 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetCH701xForLCD()
8156 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tableptr = table1024_740; in SiS_SetCH701xForLCD()
8157 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) tableptr = table1280_740; in SiS_SetCH701xForLCD()
8158 else if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) tableptr = table1400_740; in SiS_SetCH701xForLCD()
8159 else if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) tableptr = table1600_740; in SiS_SetCH701xForLCD()
8162 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tableptr = table1024_650; in SiS_SetCH701xForLCD()
8163 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) tableptr = table1280_650; in SiS_SetCH701xForLCD()
8164 else if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) tableptr = table1400_650; in SiS_SetCH701xForLCD()
8165 else if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) tableptr = table1600_650; in SiS_SetCH701xForLCD()
8169 tempbh = SiS_GetCH701x(SiS_Pr,0x74); in SiS_SetCH701xForLCD()
8171 tempbh = SiS_GetCH701x(SiS_Pr,0x73); in SiS_SetCH701xForLCD()
8173 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) return; in SiS_SetCH701xForLCD()
8175 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) return; in SiS_SetCH701xForLCD()
8176 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) return; in SiS_SetCH701xForLCD()
8178 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) return; in SiS_SetCH701xForLCD()
8182 if(SiS_Pr->ChipType == SIS_740) tempbh = 0x0d; in SiS_SetCH701xForLCD()
8186 SiS_SetCH701x(SiS_Pr, regtable[i], tableptr[i]); in SiS_SetCH701xForLCD()
8188 SiS_ChrontelPowerSequencing(SiS_Pr); in SiS_SetCH701xForLCD()
8189 tempbh = SiS_GetCH701x(SiS_Pr,0x1e); in SiS_SetCH701xForLCD()
8191 SiS_SetCH701x(SiS_Pr,0x1e,tempbh); in SiS_SetCH701xForLCD()
8193 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetCH701xForLCD()
8194 tempbh = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_SetCH701xForLCD()
8196 SiS_SetCH701x(SiS_Pr,0x1c,tempbh); in SiS_SetCH701xForLCD()
8197 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x03); in SiS_SetCH701xForLCD()
8198 tempbh = SiS_GetCH701x(SiS_Pr,0x64); in SiS_SetCH701xForLCD()
8200 SiS_SetCH701x(SiS_Pr,0x64,tempbh); in SiS_SetCH701xForLCD()
8201 tempbh = SiS_GetCH701x(SiS_Pr,0x03); in SiS_SetCH701xForLCD()
8203 SiS_SetCH701x(SiS_Pr,0x03,tempbh); in SiS_SetCH701xForLCD()
8208 SiS_ChrontelResetVSync(struct SiS_Private *SiS_Pr) in SiS_ChrontelResetVSync() argument
8212 temp1 = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelResetVSync()
8213 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_ChrontelResetVSync()
8214 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelResetVSync()
8216 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_ChrontelResetVSync()
8217 SiS_LongDelay(SiS_Pr, 3); in SiS_ChrontelResetVSync()
8218 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelResetVSync()
8220 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_ChrontelResetVSync()
8221 SiS_SetCH701x(SiS_Pr,0x49,temp1); in SiS_ChrontelResetVSync()
8225 SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xOn() argument
8229 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xOn()
8230 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOn()
8231 temp = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_Chrontel701xOn()
8233 SiS_SetCH701x(SiS_Pr,0x1c,temp); in SiS_Chrontel701xOn()
8235 if(SiS_IsYPbPr(SiS_Pr)) { in SiS_Chrontel701xOn()
8236 temp = SiS_GetCH701x(SiS_Pr,0x01); in SiS_Chrontel701xOn()
8239 SiS_SetCH701x(SiS_Pr,0x01,temp); in SiS_Chrontel701xOn()
8241 if(SiS_IsChScart(SiS_Pr)) { in SiS_Chrontel701xOn()
8242 temp = SiS_GetCH701x(SiS_Pr,0x01); in SiS_Chrontel701xOn()
8245 SiS_SetCH701x(SiS_Pr,0x01,temp); in SiS_Chrontel701xOn()
8247 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOn()
8248 SiS_ChrontelResetVSync(SiS_Pr); in SiS_Chrontel701xOn()
8249 SiS_SetCH701x(SiS_Pr,0x49,0x20); /* Enable TV path */ in SiS_Chrontel701xOn()
8251 SiS_SetCH701x(SiS_Pr,0x49,0x20); /* Enable TV path */ in SiS_Chrontel701xOn()
8252 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_Chrontel701xOn()
8253 if(SiS_IsYPbPr(SiS_Pr)) { in SiS_Chrontel701xOn()
8254 temp = SiS_GetCH701x(SiS_Pr,0x73); in SiS_Chrontel701xOn()
8256 SiS_SetCH701x(SiS_Pr,0x73,temp); in SiS_Chrontel701xOn()
8258 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_Chrontel701xOn()
8260 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_Chrontel701xOn()
8261 SiS_LongDelay(SiS_Pr, 2); in SiS_Chrontel701xOn()
8262 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_Chrontel701xOn()
8264 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_Chrontel701xOn()
8270 SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xOff() argument
8275 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xOff()
8276 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOff()
8277 SiS_LongDelay(SiS_Pr, 1); in SiS_Chrontel701xOff()
8278 SiS_GenericDelay(SiS_Pr, 5887); in SiS_Chrontel701xOff()
8279 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_Chrontel701xOff()
8280 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_Chrontel701xOff()
8282 SiS_LongDelay(SiS_Pr, 2); in SiS_Chrontel701xOff()
8283 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_Chrontel701xOff()
8285 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_Chrontel701xOff()
8286 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_Chrontel701xOff()
8292 SiS_ChrontelResetDB(struct SiS_Private *SiS_Pr) in SiS_ChrontelResetDB() argument
8296 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelResetDB()
8298 temp = SiS_GetCH701x(SiS_Pr,0x4a); /* Version ID */ in SiS_ChrontelResetDB()
8302 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelResetDB()
8303 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelResetDB()
8304 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_ChrontelResetDB()
8308 SiS_SetCH701x(SiS_Pr,0x48,0x10); in SiS_ChrontelResetDB()
8309 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelResetDB()
8310 SiS_SetCH701x(SiS_Pr,0x48,0x18); in SiS_ChrontelResetDB()
8312 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelResetDB()
8313 SiS_ChrontelResetVSync(SiS_Pr); in SiS_ChrontelResetDB()
8314 SiS_SetCH701x(SiS_Pr,0x49,temp); in SiS_ChrontelResetDB()
8320 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8322 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8323 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8325 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8326 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8328 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8329 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelResetDB()
8331 SiS_SetCH701xForLCD(SiS_Pr); in SiS_ChrontelResetDB()
8337 SiS_SetCH701x(SiS_Pr,0x48,0x10); in SiS_ChrontelResetDB()
8338 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelResetDB()
8339 SiS_SetCH701x(SiS_Pr,0x48,0x18); in SiS_ChrontelResetDB()
8344 SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr) in SiS_ChrontelInitTVVSync() argument
8348 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelInitTVVSync()
8350 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelInitTVVSync()
8351 SiS_ChrontelResetVSync(SiS_Pr); in SiS_ChrontelInitTVVSync()
8356 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* Power up LVDS block */ in SiS_ChrontelInitTVVSync()
8357 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelInitTVVSync()
8360 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelInitTVVSync()
8362 SiS_SetCH701x(SiS_Pr,0x47,temp); /* enable VSYNC */ in SiS_ChrontelInitTVVSync()
8363 SiS_LongDelay(SiS_Pr, 3); in SiS_ChrontelInitTVVSync()
8364 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelInitTVVSync()
8366 SiS_SetCH701x(SiS_Pr,0x47,temp); /* disable VSYNC */ in SiS_ChrontelInitTVVSync()
8373 SiS_ChrontelDoSomething3(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_ChrontelDoSomething3() argument
8377 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething3()
8379 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelDoSomething3()
8382 SiS_SetCH701x(SiS_Pr,0x61,temp); in SiS_ChrontelDoSomething3()
8384 SiS_SetCH701x(SiS_Pr,0x66,0x45); /* Panel power on */ in SiS_ChrontelDoSomething3()
8385 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* All power on */ in SiS_ChrontelDoSomething3()
8386 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething3()
8387 SiS_GenericDelay(SiS_Pr, 5887); in SiS_ChrontelDoSomething3()
8392 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelDoSomething3()
8395 SiS_SetCH701x(SiS_Pr,0x61,temp); in SiS_ChrontelDoSomething3()
8398 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_ChrontelDoSomething3()
8399 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething3()
8401 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_ChrontelDoSomething3()
8403 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelDoSomething3()
8404 SiS_GenericDelay(SiS_Pr, 1023); in SiS_ChrontelDoSomething3()
8406 SiS_GenericDelay(SiS_Pr, 767); in SiS_ChrontelDoSomething3()
8410 SiS_GenericDelay(SiS_Pr, 767); in SiS_ChrontelDoSomething3()
8412 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething3()
8414 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething3()
8415 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething3()
8417 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_ChrontelDoSomething3()
8418 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething3()
8424 SiS_ChrontelDoSomething2(struct SiS_Private *SiS_Pr) in SiS_ChrontelDoSomething2() argument
8428 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething2()
8431 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething2()
8435 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething2()
8437 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_ChrontelDoSomething2()
8440 SiS_SetCH701xForLCD(SiS_Pr); in SiS_ChrontelDoSomething2()
8442 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething2()
8444 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething2()
8445 SiS_LongDelay(SiS_Pr, 2); in SiS_ChrontelDoSomething2()
8446 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething2()
8448 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething2()
8449 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething2()
8450 SiS_SetCH701x(SiS_Pr,0x78,0xe0); /* PLL loop filter */ in SiS_ChrontelDoSomething2()
8452 SiS_SetCH701x(SiS_Pr,0x78,0x60); in SiS_ChrontelDoSomething2()
8454 SiS_LongDelay(SiS_Pr, 2); in SiS_ChrontelDoSomething2()
8457 SiS_SetCH701x(SiS_Pr,0x77,0x00); /* MV? */ in SiS_ChrontelDoSomething2()
8461 SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr) in SiS_ChrontelDoSomething1() argument
8465 temp = SiS_GetCH701x(SiS_Pr,0x03); in SiS_ChrontelDoSomething1()
8468 SiS_SetCH701x(SiS_Pr,0x03,temp); in SiS_ChrontelDoSomething1()
8470 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething1()
8472 temp = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_ChrontelDoSomething1()
8474 SiS_SetCH701x(SiS_Pr,0x1c,temp); in SiS_ChrontelDoSomething1()
8476 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x03); in SiS_ChrontelDoSomething1()
8478 temp = SiS_GetCH701x(SiS_Pr,0x64); in SiS_ChrontelDoSomething1()
8480 SiS_SetCH701x(SiS_Pr,0x64,temp); in SiS_ChrontelDoSomething1()
8482 temp = SiS_GetCH701x(SiS_Pr,0x03); in SiS_ChrontelDoSomething1()
8484 SiS_SetCH701x(SiS_Pr,0x03,temp); in SiS_ChrontelDoSomething1()
8486 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) { in SiS_ChrontelDoSomething1()
8487 SiS_SetCH701x(SiS_Pr,0x63,0x40); /* LVDS off */ in SiS_ChrontelDoSomething1()
8488 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething1()
8489 SiS_SetCH701x(SiS_Pr,0x63,0x00); /* LVDS on */ in SiS_ChrontelDoSomething1()
8490 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8491 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8492 SiS_ChrontelDoSomething3(SiS_Pr, 0); in SiS_ChrontelDoSomething1()
8494 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething1()
8496 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8497 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8498 SiS_ChrontelDoSomething3(SiS_Pr, 0); in SiS_ChrontelDoSomething1()
8504 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8505 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8506 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x34); in SiS_ChrontelDoSomething1()
8507 SiS_ChrontelDoSomething3(SiS_Pr,temp); in SiS_ChrontelDoSomething1()
8508 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* All power on, LVDS normal operation */ in SiS_ChrontelDoSomething1()
8520 SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetCRT2Group() argument
8523 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2Group()
8527 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2Group()
8529 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2Group()
8530 SiS_SearchModeID(SiS_Pr, &ModeNo, &ModeIdIndex); in SiS_SetCRT2Group()
8536 SiS_Pr->SiS_SelectCRT2Rate = 4; in SiS_SetCRT2Group()
8538 SiS_UnLockCRT2(SiS_Pr); in SiS_SetCRT2Group()
8540 RefreshRateTableIndex = SiS_GetRatePtr(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8542 SiS_SaveCRT2Info(SiS_Pr,ModeNo); in SiS_SetCRT2Group()
8544 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8545 SiS_DisableBridge(SiS_Pr); in SiS_SetCRT2Group()
8546 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) && (SiS_Pr->ChipType == SIS_730)) { in SiS_SetCRT2Group()
8547 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_SetCRT2Group()
8549 SiS_SetCRT2ModeRegs(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8552 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) { in SiS_SetCRT2Group()
8553 SiS_LockCRT2(SiS_Pr); in SiS_SetCRT2Group()
8554 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8558 SiS_GetCRT2Data(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8561 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_LCDVDES = 0; in SiS_SetCRT2Group()
8562 if( (SiS_Pr->SiS_IF_DEF_LVDS == 1) || in SiS_SetCRT2Group()
8563 ((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) || in SiS_SetCRT2Group()
8564 ((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBType & VB_SIS30xBLV)) ) { in SiS_SetCRT2Group()
8565 SiS_GetLVDSDesData(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8568 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8569 SiS_SetGroup1(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8572 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2Group()
8574 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8576 SiS_SetGroup2(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8578 SiS_SetGroup2_C_ELV(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8580 SiS_SetGroup3(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8581 SiS_SetGroup4(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8583 SiS_SetGroup4_C_ELV(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8585 SiS_SetGroup5(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8587 SiS_SetCRT2Sync(SiS_Pr, ModeNo, RefreshRateTableIndex); in SiS_SetCRT2Group()
8590 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetCRT2Group()
8592 if(!((SiS_Pr->SiS_SetFlag & SetDOSMode) && ((ModeNo == 0x03) || (ModeNo == 0x10)))) { in SiS_SetCRT2Group()
8593 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetCRT2Group()
8594 SiS_ModCRT1CRTC(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8597 SiS_SetCRT2ECLK(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8603 SiS_SetCRT2Sync(SiS_Pr, ModeNo, RefreshRateTableIndex); in SiS_SetCRT2Group()
8605 SiS_ModCRT1CRTC(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8607 SiS_SetCRT2ECLK(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8609 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8610 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetCRT2Group()
8611 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetCRT2Group()
8612 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetCRT2Group()
8614 SiS_SetCH701xForLCD(SiS_Pr); in SiS_SetCRT2Group()
8618 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Group()
8619 SiS_SetCHTVReg(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8627 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2Group()
8628 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8629 if(SiS_Pr->SiS_UseOEM) { in SiS_SetCRT2Group()
8630 if((SiS_Pr->SiS_UseROM) && (SiS_Pr->SiS_UseOEM == -1)) { in SiS_SetCRT2Group()
8632 SiS_OEM300Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8635 SiS_OEM300Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8638 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetCRT2Group()
8639 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_SetCRT2Group()
8640 (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2Group()
8641 SetOEMLCDData2(SiS_Pr, ModeNo, ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8643 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8650 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2Group()
8651 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8652 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetCRT2Group()
8653 SiS_FinalizeLCD(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8654 SiS_OEM310Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8656 SiS_OEM661Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8658 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x40); in SiS_SetCRT2Group()
8663 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8664 SiS_EnableBridge(SiS_Pr); in SiS_SetCRT2Group()
8667 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8669 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetCRT2Group()
8670 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Group()
8672 SiS_SetRegSR11ANDOR(SiS_Pr,0xFF,0x0C); in SiS_SetCRT2Group()
8675 SiS_SetCH70xxANDOR(SiS_Pr,0x0e,0x01,0xf8); in SiS_SetCRT2Group()
8679 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8680 SiS_LockCRT2(SiS_Pr); in SiS_SetCRT2Group()
8692 SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr) in SiS_SiS30xBLOn() argument
8695 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_SiS30xBLOn()
8696 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x02)) { in SiS_SiS30xBLOn()
8697 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_SiS30xBLOn()
8698 SiS_WaitVBRetrace(SiS_Pr); in SiS_SiS30xBLOn()
8700 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x01)) { in SiS_SiS30xBLOn()
8701 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_SiS30xBLOn()
8706 SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr) in SiS_SiS30xBLOff() argument
8709 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFE); in SiS_SiS30xBLOff()
8710 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_SiS30xBLOff()
8718 SiS_SetupDDCN(struct SiS_Private *SiS_Pr) in SiS_SetupDDCN() argument
8720 SiS_Pr->SiS_DDC_NData = ~SiS_Pr->SiS_DDC_Data; in SiS_SetupDDCN()
8721 SiS_Pr->SiS_DDC_NClk = ~SiS_Pr->SiS_DDC_Clk; in SiS_SetupDDCN()
8722 if((SiS_Pr->SiS_DDC_Index == 0x11) && (SiS_Pr->SiS_SensibleSR11)) { in SiS_SetupDDCN()
8723 SiS_Pr->SiS_DDC_NData &= 0x0f; in SiS_SetupDDCN()
8724 SiS_Pr->SiS_DDC_NClk &= 0x0f; in SiS_SetupDDCN()
8730 SiS_SetTrumpBlockLoop(struct SiS_Private *SiS_Pr, unsigned char *dataptr) in SiS_SetTrumpBlockLoop() argument
8741 SiS_SetStop(SiS_Pr); in SiS_SetTrumpBlockLoop()
8742 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 2); in SiS_SetTrumpBlockLoop()
8744 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_SetTrumpBlockLoop()
8745 tempah = SiS_Pr->SiS_DDC_DeviceAddr; in SiS_SetTrumpBlockLoop()
8746 temp = SiS_WriteDDC2Data(SiS_Pr,tempah); /* Write DAB (S0=0=write) */ in SiS_SetTrumpBlockLoop()
8749 temp = SiS_WriteDDC2Data(SiS_Pr,tempah); /* Write register number */ in SiS_SetTrumpBlockLoop()
8753 temp = SiS_WriteDDC2Data(SiS_Pr,tempah);/* Write DAB (S0=0=write) */ in SiS_SetTrumpBlockLoop()
8757 if(SiS_SetStop(SiS_Pr)) continue; in SiS_SetTrumpBlockLoop()
8764 SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr) in SiS_SetTrumpionBlock() argument
8766 SiS_Pr->SiS_DDC_DeviceAddr = 0xF0; /* DAB (Device Address Byte) */ in SiS_SetTrumpionBlock()
8767 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetTrumpionBlock()
8768 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_SetTrumpionBlock()
8769 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_SetTrumpionBlock()
8770 SiS_SetupDDCN(SiS_Pr); in SiS_SetTrumpionBlock()
8772 SiS_SetSwitchDDC2(SiS_Pr); in SiS_SetTrumpionBlock()
8775 dataptr = SiS_SetTrumpBlockLoop(SiS_Pr, dataptr); in SiS_SetTrumpionBlock()
8790 SiS_SetChReg(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val, unsigned short myor) in SiS_SetChReg() argument
8796 SiS_SetStop(SiS_Pr); in SiS_SetChReg()
8797 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 4); in SiS_SetChReg()
8799 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_SetChReg()
8800 temp = SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_DeviceAddr); /* Write DAB (S0=0=write) */ in SiS_SetChReg()
8802 … temp = SiS_WriteDDC2Data(SiS_Pr, (reg | myor)); /* Write RAB (700x: set bit 7, see datasheet) */ in SiS_SetChReg()
8804 temp = SiS_WriteDDC2Data(SiS_Pr, val); /* Write data */ in SiS_SetChReg()
8806 if(SiS_SetStop(SiS_Pr)) continue; /* Set stop condition */ in SiS_SetChReg()
8807 SiS_Pr->SiS_ChrontelInit = 1; in SiS_SetChReg()
8815 SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH700x() argument
8817 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB (Device Address Byte) */ in SiS_SetCH700x()
8819 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetCH700x()
8821 if(!(SiS_Pr->SiS_ChrontelInit)) { in SiS_SetCH700x()
8822 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetCH700x()
8823 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_SetCH700x()
8824 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_SetCH700x()
8825 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH700x()
8828 if( (!(SiS_SetChReg(SiS_Pr, reg, val, 0x80))) && in SiS_SetCH700x()
8829 (!(SiS_Pr->SiS_ChrontelInit)) ) { in SiS_SetCH700x()
8830 SiS_Pr->SiS_DDC_Index = 0x0a; in SiS_SetCH700x()
8831 SiS_Pr->SiS_DDC_Data = 0x80; in SiS_SetCH700x()
8832 SiS_Pr->SiS_DDC_Clk = 0x40; in SiS_SetCH700x()
8833 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH700x()
8835 SiS_SetChReg(SiS_Pr, reg, val, 0x80); in SiS_SetCH700x()
8842 SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH701x() argument
8844 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetCH701x()
8845 SiS_Pr->SiS_DDC_Data = 0x08; /* Bitmask in IndexReg for Data */ in SiS_SetCH701x()
8846 SiS_Pr->SiS_DDC_Clk = 0x04; /* Bitmask in IndexReg for Clk */ in SiS_SetCH701x()
8847 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH701x()
8848 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB (Device Address Byte) */ in SiS_SetCH701x()
8849 SiS_SetChReg(SiS_Pr, reg, val, 0); in SiS_SetCH701x()
8854 SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH70xx() argument
8856 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) in SiS_SetCH70xx()
8857 SiS_SetCH700x(SiS_Pr, reg, val); in SiS_SetCH70xx()
8859 SiS_SetCH701x(SiS_Pr, reg, val); in SiS_SetCH70xx()
8863 SiS_GetChReg(struct SiS_Private *SiS_Pr, unsigned short myor) in SiS_GetChReg() argument
8869 SiS_SetStop(SiS_Pr); in SiS_GetChReg()
8870 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 4); in SiS_GetChReg()
8872 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_GetChReg()
8873 temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_DeviceAddr); /* Write DAB (S0=0=write) */ in SiS_GetChReg()
8875 … temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_ReadAddr | myor); /* Write RAB (700x: | 0x80) */ in SiS_GetChReg()
8877 if (SiS_SetStart(SiS_Pr)) continue; /* Re-start */ in SiS_GetChReg()
8878 temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_DeviceAddr | 0x01);/* DAB (S0=1=read) */ in SiS_GetChReg()
8880 tempah = SiS_ReadDDC2Data(SiS_Pr); /* Read byte */ in SiS_GetChReg()
8881 if(SiS_SetStop(SiS_Pr)) continue; /* Stop condition */ in SiS_GetChReg()
8882 SiS_Pr->SiS_ChrontelInit = 1; in SiS_GetChReg()
8891 SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH700x() argument
8895 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB */ in SiS_GetCH700x()
8897 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_GetCH700x()
8899 if(!(SiS_Pr->SiS_ChrontelInit)) { in SiS_GetCH700x()
8900 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_GetCH700x()
8901 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_GetCH700x()
8902 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_GetCH700x()
8903 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH700x()
8906 SiS_Pr->SiS_DDC_ReadAddr = tempbx; in SiS_GetCH700x()
8908 if( ((result = SiS_GetChReg(SiS_Pr,0x80)) == 0xFFFF) && in SiS_GetCH700x()
8909 (!SiS_Pr->SiS_ChrontelInit) ) { in SiS_GetCH700x()
8911 SiS_Pr->SiS_DDC_Index = 0x0a; in SiS_GetCH700x()
8912 SiS_Pr->SiS_DDC_Data = 0x80; in SiS_GetCH700x()
8913 SiS_Pr->SiS_DDC_Clk = 0x40; in SiS_GetCH700x()
8914 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH700x()
8916 result = SiS_GetChReg(SiS_Pr,0x80); in SiS_GetCH700x()
8924 SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH701x() argument
8926 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_GetCH701x()
8927 SiS_Pr->SiS_DDC_Data = 0x08; /* Bitmask in IndexReg for Data */ in SiS_GetCH701x()
8928 SiS_Pr->SiS_DDC_Clk = 0x04; /* Bitmask in IndexReg for Clk */ in SiS_GetCH701x()
8929 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH701x()
8930 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB */ in SiS_GetCH701x()
8932 SiS_Pr->SiS_DDC_ReadAddr = tempbx; in SiS_GetCH701x()
8934 return SiS_GetChReg(SiS_Pr,0); in SiS_GetCH701x()
8941 SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH70xx() argument
8943 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) in SiS_GetCH70xx()
8944 return SiS_GetCH700x(SiS_Pr, tempbx); in SiS_GetCH70xx()
8946 return SiS_GetCH701x(SiS_Pr, tempbx); in SiS_GetCH70xx()
8950 SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, in SiS_SetCH70xxANDOR() argument
8955 tempbl = (SiS_GetCH70xx(SiS_Pr, (reg & 0xFF)) & myand) | myor; in SiS_SetCH70xxANDOR()
8956 SiS_SetCH70xx(SiS_Pr, reg, tempbl); in SiS_SetCH70xxANDOR()
8962 SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, in SiS_InitDDCRegs() argument
8977 SiS_Pr->SiS_ChrontelInit = 0; /* force re-detection! */ in SiS_InitDDCRegs()
8979 SiS_Pr->SiS_DDC_SecAddr = 0; in SiS_InitDDCRegs()
8980 SiS_Pr->SiS_DDC_DeviceAddr = ddcdtype[DDCdatatype]; in SiS_InitDDCRegs()
8981 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_P3c4; in SiS_InitDDCRegs()
8982 SiS_Pr->SiS_DDC_Index = 0x11; in SiS_InitDDCRegs()
8985 cr32 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x32); in SiS_InitDDCRegs()
9008 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_Part4Port; in SiS_InitDDCRegs()
9009 SiS_Pr->SiS_DDC_Index = 0x0f; in SiS_InitDDCRegs()
9040 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_Part4Port; in SiS_InitDDCRegs()
9041 SiS_Pr->SiS_DDC_Index = 0x0f; in SiS_InitDDCRegs()
9063 SiS_Pr->SiS_DDC_Data = 0x02 << temp; in SiS_InitDDCRegs()
9064 SiS_Pr->SiS_DDC_Clk = 0x01 << temp; in SiS_InitDDCRegs()
9066 SiS_SetupDDCN(SiS_Pr); in SiS_InitDDCRegs()
9072 SiS_WriteDABDDC(struct SiS_Private *SiS_Pr) in SiS_WriteDABDDC() argument
9074 if(SiS_SetStart(SiS_Pr)) return 0xFFFF; in SiS_WriteDABDDC()
9075 if(SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_DeviceAddr)) { in SiS_WriteDABDDC()
9078 if(SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_SecAddr)) { in SiS_WriteDABDDC()
9085 SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr) in SiS_PrepareReadDDC() argument
9087 if(SiS_SetStart(SiS_Pr)) return 0xFFFF; in SiS_PrepareReadDDC()
9088 if(SiS_WriteDDC2Data(SiS_Pr, (SiS_Pr->SiS_DDC_DeviceAddr | 0x01))) { in SiS_PrepareReadDDC()
9095 SiS_PrepareDDC(struct SiS_Private *SiS_Pr) in SiS_PrepareDDC() argument
9097 if(SiS_WriteDABDDC(SiS_Pr)) SiS_WriteDABDDC(SiS_Pr); in SiS_PrepareDDC()
9098 if(SiS_PrepareReadDDC(SiS_Pr)) return (SiS_PrepareReadDDC(SiS_Pr)); in SiS_PrepareDDC()
9103 SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno) in SiS_SendACK() argument
9105 SiS_SetSCLKLow(SiS_Pr); in SiS_SendACK()
9107 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SendACK()
9108 SiS_Pr->SiS_DDC_Index, in SiS_SendACK()
9109 SiS_Pr->SiS_DDC_NData, in SiS_SendACK()
9110 SiS_Pr->SiS_DDC_Data); in SiS_SendACK()
9112 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SendACK()
9113 SiS_Pr->SiS_DDC_Index, in SiS_SendACK()
9114 SiS_Pr->SiS_DDC_NData, in SiS_SendACK()
9117 SiS_SetSCLKHigh(SiS_Pr); in SiS_SendACK()
9121 SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) in SiS_DoProbeDDC() argument
9127 SiS_SetSwitchDDC2(SiS_Pr); in SiS_DoProbeDDC()
9128 if(SiS_PrepareDDC(SiS_Pr)) { in SiS_DoProbeDDC()
9129 SiS_SetStop(SiS_Pr); in SiS_DoProbeDDC()
9134 if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { in SiS_DoProbeDDC()
9135 temp = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_DoProbeDDC()
9136 SiS_SendACK(SiS_Pr, 0); in SiS_DoProbeDDC()
9146 temp = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_DoProbeDDC()
9147 SiS_SendACK(SiS_Pr, 1); in SiS_DoProbeDDC()
9152 if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { in SiS_DoProbeDDC()
9157 SiS_SetStop(SiS_Pr); in SiS_DoProbeDDC()
9163 SiS_ProbeDDC(struct SiS_Private *SiS_Pr) in SiS_ProbeDDC() argument
9168 SiS_Pr->SiS_DDC_DeviceAddr = 0xa0; in SiS_ProbeDDC()
9169 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x02; in SiS_ProbeDDC()
9170 SiS_Pr->SiS_DDC_DeviceAddr = 0xa2; in SiS_ProbeDDC()
9171 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x08; in SiS_ProbeDDC()
9172 SiS_Pr->SiS_DDC_DeviceAddr = 0xa6; in SiS_ProbeDDC()
9173 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x10; in SiS_ProbeDDC()
9180 SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, unsigned char *buffer) in SiS_ReadDDC() argument
9188 SiS_SetSwitchDDC2(SiS_Pr); in SiS_ReadDDC()
9189 if(!(SiS_PrepareDDC(SiS_Pr))) { in SiS_ReadDDC()
9195 buffer[i] = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_ReadDDC()
9198 SiS_SendACK(SiS_Pr, 0); in SiS_ReadDDC()
9200 buffer[i] = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_ReadDDC()
9202 SiS_SendACK(SiS_Pr, 1); in SiS_ReadDDC()
9208 SiS_SetStop(SiS_Pr); in SiS_ReadDDC()
9234 SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, in SiS_HandleDDC() argument
9250 if(SiS_InitDDCRegs(SiS_Pr, VBFlags, VGAEngine, adaptnum, DDCdatatype, false, VBFlags2) == 0xFFFF) in SiS_HandleDDC()
9253 sr1f = SiS_GetReg(SiS_Pr->SiS_P3c4,0x1f); in SiS_HandleDDC()
9254 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x1f,0x3f,0x04); in SiS_HandleDDC()
9256 cr17 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x17) & 0x80; in SiS_HandleDDC()
9258 SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x17,0x80); in SiS_HandleDDC()
9259 SiS_SetReg(SiS_Pr->SiS_P3c4,0x00,0x01); in SiS_HandleDDC()
9260 SiS_SetReg(SiS_Pr->SiS_P3c4,0x00,0x03); in SiS_HandleDDC()
9264 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9265 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9266 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9267 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9271 result = SiS_ProbeDDC(SiS_Pr); in SiS_HandleDDC()
9273 result = SiS_ReadDDC(SiS_Pr, DDCdatatype, buffer); in SiS_HandleDDC()
9280 if(!SiS_Pr->DDCPortMixup) { in SiS_HandleDDC()
9290 SiS_SetReg(SiS_Pr->SiS_P3c4,0x1f,sr1f); in SiS_HandleDDC()
9292 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x17,0x7f,cr17); in SiS_HandleDDC()
9300 SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr) in SiS_SetSwitchDDC2() argument
9302 SiS_SetSCLKHigh(SiS_Pr); in SiS_SetSwitchDDC2()
9303 SiS_WaitRetrace1(SiS_Pr); in SiS_SetSwitchDDC2()
9305 SiS_SetSCLKLow(SiS_Pr); in SiS_SetSwitchDDC2()
9306 SiS_WaitRetrace1(SiS_Pr); in SiS_SetSwitchDDC2()
9310 SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr) in SiS_ReadDDC1Bit() argument
9312 SiS_WaitRetrace1(SiS_Pr); in SiS_ReadDDC1Bit()
9313 return ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x02) >> 1); in SiS_ReadDDC1Bit()
9319 SiS_SetStart(struct SiS_Private *SiS_Pr) in SiS_SetStart() argument
9321 if(SiS_SetSCLKLow(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStart()
9322 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStart()
9323 SiS_Pr->SiS_DDC_Index, in SiS_SetStart()
9324 SiS_Pr->SiS_DDC_NData, in SiS_SetStart()
9325 SiS_Pr->SiS_DDC_Data); /* SD->high */ in SiS_SetStart()
9326 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* SC->high */ in SiS_SetStart()
9327 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStart()
9328 SiS_Pr->SiS_DDC_Index, in SiS_SetStart()
9329 SiS_Pr->SiS_DDC_NData, in SiS_SetStart()
9331 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStart()
9338 SiS_SetStop(struct SiS_Private *SiS_Pr) in SiS_SetStop() argument
9340 if(SiS_SetSCLKLow(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStop()
9341 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStop()
9342 SiS_Pr->SiS_DDC_Index, in SiS_SetStop()
9343 SiS_Pr->SiS_DDC_NData, in SiS_SetStop()
9345 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* SC->high */ in SiS_SetStop()
9346 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStop()
9347 SiS_Pr->SiS_DDC_Index, in SiS_SetStop()
9348 SiS_Pr->SiS_DDC_NData, in SiS_SetStop()
9349 SiS_Pr->SiS_DDC_Data); /* SD->high = stop condition */ in SiS_SetStop()
9350 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* (SC->high) */ in SiS_SetStop()
9356 SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax) in SiS_WriteDDC2Data() argument
9362 SiS_SetSCLKLow(SiS_Pr); /* SC->low */ in SiS_WriteDDC2Data()
9364 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_WriteDDC2Data()
9365 SiS_Pr->SiS_DDC_Index, in SiS_WriteDDC2Data()
9366 SiS_Pr->SiS_DDC_NData, in SiS_WriteDDC2Data()
9367 SiS_Pr->SiS_DDC_Data); /* Write bit (1) to SD */ in SiS_WriteDDC2Data()
9369 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_WriteDDC2Data()
9370 SiS_Pr->SiS_DDC_Index, in SiS_WriteDDC2Data()
9371 SiS_Pr->SiS_DDC_NData, in SiS_WriteDDC2Data()
9374 SiS_SetSCLKHigh(SiS_Pr); /* SC->high */ in SiS_WriteDDC2Data()
9377 temp = SiS_CheckACK(SiS_Pr); /* Check acknowledge */ in SiS_WriteDDC2Data()
9382 SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr) in SiS_ReadDDC2Data() argument
9389 SiS_SetSCLKLow(SiS_Pr); in SiS_ReadDDC2Data()
9390 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_ReadDDC2Data()
9391 SiS_Pr->SiS_DDC_Index, in SiS_ReadDDC2Data()
9392 SiS_Pr->SiS_DDC_NData, in SiS_ReadDDC2Data()
9393 SiS_Pr->SiS_DDC_Data); in SiS_ReadDDC2Data()
9394 SiS_SetSCLKHigh(SiS_Pr); in SiS_ReadDDC2Data()
9395 temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); in SiS_ReadDDC2Data()
9396 if(temp & SiS_Pr->SiS_DDC_Data) getdata |= 0x01; in SiS_ReadDDC2Data()
9402 SiS_SetSCLKLow(struct SiS_Private *SiS_Pr) in SiS_SetSCLKLow() argument
9404 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetSCLKLow()
9405 SiS_Pr->SiS_DDC_Index, in SiS_SetSCLKLow()
9406 SiS_Pr->SiS_DDC_NClk, in SiS_SetSCLKLow()
9408 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetSCLKLow()
9413 SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr) in SiS_SetSCLKHigh() argument
9417 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetSCLKHigh()
9418 SiS_Pr->SiS_DDC_Index, in SiS_SetSCLKHigh()
9419 SiS_Pr->SiS_DDC_NClk, in SiS_SetSCLKHigh()
9420 SiS_Pr->SiS_DDC_Clk); /* SetSCLKHigh() */ in SiS_SetSCLKHigh()
9422 temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); in SiS_SetSCLKHigh()
9423 } while((!(temp & SiS_Pr->SiS_DDC_Clk)) && --watchdog); in SiS_SetSCLKHigh()
9427 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetSCLKHigh()
9434 SiS_CheckACK(struct SiS_Private *SiS_Pr) in SiS_CheckACK() argument
9438 SiS_SetSCLKLow(SiS_Pr); /* (SC->low) */ in SiS_CheckACK()
9439 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_CheckACK()
9440 SiS_Pr->SiS_DDC_Index, in SiS_CheckACK()
9441 SiS_Pr->SiS_DDC_NData, in SiS_CheckACK()
9442 SiS_Pr->SiS_DDC_Data); /* (SD->high) */ in SiS_CheckACK()
9443 SiS_SetSCLKHigh(SiS_Pr); /* SC->high = clock impulse for ack */ in SiS_CheckACK()
9444 tempah = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); /* Read SD */ in SiS_CheckACK()
9445 SiS_SetSCLKLow(SiS_Pr); /* SC->low = end of clock impulse */ in SiS_CheckACK()
9446 if(tempah & SiS_Pr->SiS_DDC_Data) return 1; /* Ack OK if bit = 0 */ in SiS_CheckACK()
9458 GetRAMDACromptr(struct SiS_Private *SiS_Pr) in GetRAMDACromptr() argument
9460 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetRAMDACromptr()
9463 if(SiS_Pr->ChipType < SIS_330) { in GetRAMDACromptr()
9465 if(SiS_Pr->SiS_VBType & VB_SIS30xB) in GetRAMDACromptr()
9469 if(SiS_Pr->SiS_VBType & VB_SIS30xB) in GetRAMDACromptr()
9476 GetLCDromptr(struct SiS_Private *SiS_Pr) in GetLCDromptr() argument
9478 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDromptr()
9481 if(SiS_Pr->ChipType < SIS_330) { in GetLCDromptr()
9483 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetLCDromptr()
9487 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetLCDromptr()
9494 GetTVromptr(struct SiS_Private *SiS_Pr) in GetTVromptr() argument
9496 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetTVromptr()
9499 if(SiS_Pr->ChipType < SIS_330) { in GetTVromptr()
9501 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetTVromptr()
9505 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetTVromptr()
9512 GetLCDPtrIndexBIOS(struct SiS_Private *SiS_Pr) in GetLCDPtrIndexBIOS() argument
9516 if((IS_SIS650) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in GetLCDPtrIndexBIOS()
9517 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in GetLCDPtrIndexBIOS()
9518 if((index = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xf0)) { in GetLCDPtrIndexBIOS()
9521 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndexBIOS()
9522 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndexBIOS()
9528 index = SiS_GetBIOSLCDResInfo(SiS_Pr) & 0x0F; in GetLCDPtrIndexBIOS()
9529 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) index -= 5; in GetLCDPtrIndexBIOS()
9530 if(SiS_Pr->SiS_VBType & VB_SIS301C) { /* 1.15.20 and later (not VB specific) */ in GetLCDPtrIndexBIOS()
9531 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) index -= 5; in GetLCDPtrIndexBIOS()
9532 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x768) index -= 5; in GetLCDPtrIndexBIOS()
9534 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) index -= 6; in GetLCDPtrIndexBIOS()
9538 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndexBIOS()
9539 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndexBIOS()
9544 GetLCDPtrIndex(struct SiS_Private *SiS_Pr) in GetLCDPtrIndex() argument
9548 index = ((SiS_GetBIOSLCDResInfo(SiS_Pr) & 0x0F) - 1) * 3; in GetLCDPtrIndex()
9549 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndex()
9550 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndex()
9555 GetTVPtrIndex(struct SiS_Private *SiS_Pr) in GetTVPtrIndex() argument
9560 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 1; in GetTVPtrIndex()
9561 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) index = 2; in GetTVPtrIndex()
9563 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) index = 0; in GetTVPtrIndex()
9567 if((SiS_Pr->SiS_VBInfo & SetInSlaveMode) && in GetTVPtrIndex()
9568 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in GetTVPtrIndex()
9576 GetOEMTVPtr661_2_GEN(struct SiS_Private *SiS_Pr, int addme) in GetOEMTVPtr661_2_GEN() argument
9580 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 1; in GetOEMTVPtr661_2_GEN()
9581 if(SiS_Pr->SiS_TVMode & TVSetPALM) index = 2; in GetOEMTVPtr661_2_GEN()
9582 if(SiS_Pr->SiS_TVMode & TVSetPALN) index = 3; in GetOEMTVPtr661_2_GEN()
9583 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) index = 6; in GetOEMTVPtr661_2_GEN()
9584 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in GetOEMTVPtr661_2_GEN()
9586 if(SiS_Pr->SiS_TVMode & TVSetPALM) index++; in GetOEMTVPtr661_2_GEN()
9587 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) index = 7; in GetOEMTVPtr661_2_GEN()
9590 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in GetOEMTVPtr661_2_GEN()
9591 if((!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || in GetOEMTVPtr661_2_GEN()
9592 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in GetOEMTVPtr661_2_GEN()
9602 GetOEMTVPtr661_2_OLD(struct SiS_Private *SiS_Pr) in GetOEMTVPtr661_2_OLD() argument
9604 return (GetOEMTVPtr661_2_GEN(SiS_Pr, 8)); in GetOEMTVPtr661_2_OLD()
9609 GetOEMTVPtr661_2_NEW(struct SiS_Private *SiS_Pr)
9611 return (GetOEMTVPtr661_2_GEN(SiS_Pr, 6));
9616 GetOEMTVPtr661(struct SiS_Private *SiS_Pr) in GetOEMTVPtr661() argument
9620 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 2; in GetOEMTVPtr661()
9621 if(SiS_Pr->SiS_ROMNew) { in GetOEMTVPtr661()
9622 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) index = 4; in GetOEMTVPtr661()
9623 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) index = 6; in GetOEMTVPtr661()
9624 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) index = 8; in GetOEMTVPtr661()
9625 if(SiS_Pr->SiS_TVMode & TVSetHiVision) index = 10; in GetOEMTVPtr661()
9627 if(SiS_Pr->SiS_TVMode & TVSetHiVision) index = 4; in GetOEMTVPtr661()
9628 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) index = 6; in GetOEMTVPtr661()
9629 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) index = 8; in GetOEMTVPtr661()
9630 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) index = 10; in GetOEMTVPtr661()
9633 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) index++; in GetOEMTVPtr661()
9639 SetDelayComp(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SetDelayComp() argument
9641 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetDelayComp()
9645 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
9646 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x20,0xbf); in SetDelayComp()
9648 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x35,0x7f); in SetDelayComp()
9653 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { /* ------------ VGA */ in SetDelayComp()
9655 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
9656 romptr = GetRAMDACromptr(SiS_Pr); in SetDelayComp()
9661 if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SetDelayComp()
9666 } else if(SiS_Pr->ChipType < SIS_330) { in SetDelayComp()
9671 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
9676 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD|SetCRT2ToLCDA)) { /* ---------- LCD/LCDA */ in SetDelayComp()
9682 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetDelayComp()
9683 if(SiS_Pr->PDC != -1) { in SetDelayComp()
9684 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((SiS_Pr->PDC >> 1) & 0x0f)); in SetDelayComp()
9685 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((SiS_Pr->PDC & 0x01) << 7)); in SetDelayComp()
9689 if(SiS_Pr->PDCA != -1) { in SetDelayComp()
9690 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((SiS_Pr->PDCA << 3) & 0xf0)); in SetDelayComp()
9691 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((SiS_Pr->PDCA & 0x01) << 6)); in SetDelayComp()
9698 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) { in SetDelayComp()
9699 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
9701 if((SiS_Pr->PanelXRes <= 1280) && (SiS_Pr->PanelYRes <= 1024)) { in SetDelayComp()
9704 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,delay); in SetDelayComp()
9707 if(SiS_Pr->SiS_VBType & VB_SIS301C) { in SetDelayComp()
9709 if((SiS_Pr->PanelXRes > 1280) && (SiS_Pr->PanelYRes > 1024)) { in SetDelayComp()
9712 } else if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetDelayComp()
9716 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,delay); in SetDelayComp()
9726 switch(SiS_Pr->SiS_CustomT) { in SetDelayComp()
9729 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SetDelayComp()
9743 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SetDelayComp()
9747 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2D,delay); in SetDelayComp()
9757 index = GetLCDPtrIndexBIOS(SiS_Pr); in SetDelayComp()
9758 myindex = GetLCDPtrIndex(SiS_Pr); in SetDelayComp()
9760 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SetDelayComp()
9762 if(SiS_IsNotM650orLater(SiS_Pr)) { in SetDelayComp()
9764 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
9779 if(SiS_Pr->SiS_VBType & (VB_SIS302LV | VB_SIS302ELV)) in SetDelayComp()
9784 } else if(SiS_Pr->SiS_UseROM && in SetDelayComp()
9785 (!(SiS_Pr->SiS_ROMNew)) && in SetDelayComp()
9786 (SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) && in SetDelayComp()
9787 (SiS_Pr->SiS_LCDResInfo != Panel_1280x768) && in SetDelayComp()
9788 (SiS_Pr->SiS_LCDResInfo != Panel_1280x960) && in SetDelayComp()
9789 (SiS_Pr->SiS_LCDResInfo != Panel_1600x1200) && in SetDelayComp()
9790 ((romptr = GetLCDromptr(SiS_Pr)))) { in SetDelayComp()
9796 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
9804 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetDelayComp()
9806 … else if(SiS_Pr->ChipType <= SIS_315PRO) delay = SiS310_LCDDelayCompensation_3xx301LV[myindex]; in SetDelayComp()
9808 } else if(SiS_Pr->SiS_VBType & VB_SIS301C) { in SetDelayComp()
9811 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) delay = 0x00; /* experience */ in SetDelayComp()
9812 } else if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SetDelayComp()
9821 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
9822 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0x0F,((delay << 4) & 0xf0)); in SetDelayComp()
9826 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { /* ------------ TV */ in SetDelayComp()
9828 index = GetTVPtrIndex(SiS_Pr); in SetDelayComp()
9830 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SetDelayComp()
9832 if(SiS_IsNotM650orLater(SiS_Pr)) { in SetDelayComp()
9834 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
9851 switch(SiS_Pr->SiS_CustomT) { in SetDelayComp()
9866 if(SiS_Pr->SiS_VBType & VB_SIS302LV) { in SetDelayComp()
9872 } else if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
9874 romptr = GetTVromptr(SiS_Pr); in SetDelayComp()
9878 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
9885 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetDelayComp()
9891 if(SiS_Pr->SiS_VBType & VB_SIS301C) delay = 0x02; in SetDelayComp()
9897 if(SiS_LCDAEnabled(SiS_Pr)) { in SetDelayComp()
9906 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetDelayComp()
9908 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS) && dochiptest) { in SetDelayComp()
9910 temp = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xf0) >> 4; in SetDelayComp()
9920 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2D,delay); in SetDelayComp()
9924 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
9930 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp()
9931 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
9933 if(IS_SIS650 && (SiS_Pr->SiS_IF_DEF_CH70xx != 0)) { in SetDelayComp()
9935 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0x0F,delay); in SetDelayComp()
9937 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
9946 SetAntiFlicker(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetAntiFlicker() argument
9948 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetAntiFlicker()
9951 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p|TVSetYPbPr525p)) return; in SetAntiFlicker()
9954 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVFlickerIndex; in SetAntiFlicker()
9956 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVFlickerIndex; in SetAntiFlicker()
9958 temp = GetTVPtrIndex(SiS_Pr); in SetAntiFlicker()
9962 if(SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SetAntiFlicker()
9963 if(SiS_Pr->ChipType >= SIS_661) { in SetAntiFlicker()
9964 temp1 = GetOEMTVPtr661(SiS_Pr); in SetAntiFlicker()
9967 if(SiS_Pr->ChipType >= SIS_760) { in SetAntiFlicker()
9970 } else if(SiS_Pr->ChipType >= SIS_330) { in SetAntiFlicker()
9985 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0A,0x8f,temp); /* index 0A D[6:4] */ in SetAntiFlicker()
9989 SetEdgeEnhance(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetEdgeEnhance() argument
9991 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetEdgeEnhance()
9994 temp = temp1 = GetTVPtrIndex(SiS_Pr) >> 1; /* 0: NTSC/YPbPr, 1: PAL, 2: HiTV */ in SetEdgeEnhance()
9997 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVEdgeIndex; in SetEdgeEnhance()
9999 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVEdgeIndex; in SetEdgeEnhance()
10001 if(SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SetEdgeEnhance()
10002 if(SiS_Pr->ChipType >= SIS_661) { in SetEdgeEnhance()
10004 if(SiS_Pr->ChipType >= SIS_760) { in SetEdgeEnhance()
10007 temp1 = GetOEMTVPtr661(SiS_Pr); in SetEdgeEnhance()
10009 } else if(SiS_Pr->ChipType >= SIS_330) { in SetEdgeEnhance()
10023 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x3A,0x1F,temp); /* index 0A D[7:5] */ in SetEdgeEnhance()
10027 SetYFilter(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetYFilter() argument
10032 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVYFilterIndex; in SetYFilter()
10034 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVYFilterIndex; in SetYFilter()
10037 temp = GetTVPtrIndex(SiS_Pr) >> 1; /* 0: NTSC/YPbPr, 1: PAL, 2: HiTV */ in SetYFilter()
10039 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp = 1; /* NTSC-J uses PAL */ in SetYFilter()
10040 else if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 3; /* PAL-M */ in SetYFilter()
10041 else if(SiS_Pr->SiS_TVMode & TVSetPALN) temp = 4; /* PAL-N */ in SetYFilter()
10042 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) temp = 1; /* HiVision uses PAL */ in SetYFilter()
10044 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetYFilter()
10046 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter2[temp][index][j]); in SetYFilter()
10049 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter2[temp][index][j]); in SetYFilter()
10053 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter1[temp][index][j]); in SetYFilter()
10059 SetPhaseIncr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetPhaseIncr() argument
10061 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetPhaseIncr()
10065 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) return; in SetPhaseIncr()
10068 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) return; in SetPhaseIncr()
10070 if((SiS_Pr->ChipType >= SIS_661) || SiS_Pr->SiS_ROMNew) { in SetPhaseIncr()
10071 lindex = GetOEMTVPtr661_2_OLD(SiS_Pr) & 0xffff; in SetPhaseIncr()
10074 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS_TVPhase[lindex + j]); in SetPhaseIncr()
10080 if(SiS_Pr->SiS_TVMode & (TVSetPALM | TVSetPALN)) return; in SetPhaseIncr()
10083 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SetPhaseIncr()
10085 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SetPhaseIncr()
10088 temp = GetTVPtrIndex(SiS_Pr); in SetPhaseIncr()
10092 if(SiS_Pr->SiS_UseROM) { in SetPhaseIncr()
10094 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10097 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetPhaseIncr()
10099 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10102 if((SiS_Pr->SiS_VBInfo & SetInSlaveMode) && (!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode))) { in SetPhaseIncr()
10104 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10113 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetPhaseIncr()
10119 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) in SetPhaseIncr()
10120 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr1[temp][index][j]); in SetPhaseIncr()
10121 else if((!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) in SetPhaseIncr()
10122 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr2[temp][index][j]); in SetPhaseIncr()
10124 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr1[temp][index][j]); in SetPhaseIncr()
10128 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (!(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision))) { in SetPhaseIncr()
10129 if((!(SiS_Pr->SiS_TVMode & (TVSetPAL | TVSetYPbPr525p | TVSetYPbPr750p))) && (ModeNo > 0x13)) { in SetPhaseIncr()
10132 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x31,0x21); in SetPhaseIncr()
10133 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x32,0xf0); in SetPhaseIncr()
10134 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x33,0xf5); in SetPhaseIncr()
10135 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x34,0x7f); in SetPhaseIncr()
10137 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x31,0x1e); in SetPhaseIncr()
10138 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x32,0x8b); in SetPhaseIncr()
10139 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x33,0xfb); in SetPhaseIncr()
10140 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x34,0x7b); in SetPhaseIncr()
10147 SetDelayComp661(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SetDelayComp661() argument
10151 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetDelayComp661()
10153 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToTV | SetCRT2ToLCD | SetCRT2ToLCDA | SetCRT2ToRAMDAC))) in SetDelayComp661()
10159 if(SiS_Pr->SiS_ROMNew) { in SetDelayComp661()
10160 if((SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) || in SetDelayComp661()
10161 ((SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) && in SetDelayComp661()
10162 (SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SetDelayComp661()
10164 if(SiS_Pr->UseCustomMode) { in SetDelayComp661()
10165 index = SiS_Pr->CSRClock; in SetDelayComp661()
10167 index = SiS_GetVCLK2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RTI); in SetDelayComp661()
10168 index = SiS_Pr->SiS_VCLKData[index].CLOCK; in SetDelayComp661()
10172 if((ROMAddr[0x5b] & 0x80) || (SiS_Pr->SiS_VBInfo & (SetCRT2ToRAMDAC | SetCRT2ToLCD))) { in SetDelayComp661()
10177 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToRAMDAC | SetCRT2ToLCD)) { in SetDelayComp661()
10178 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((delay >> 1) & 0x0f)); in SetDelayComp661()
10179 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((delay & 0x01) << 7)); in SetDelayComp661()
10181 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((delay << 3) & 0xf0)); in SetDelayComp661()
10182 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((delay & 0x01) << 6)); in SetDelayComp661()
10190 if(SiS_Pr->UseCustomMode) delay = 0x04; in SetDelayComp661()
10192 else delay = (SiS_Pr->SiS_RefIndex[RTI].Ext_PDC >> 4); in SetDelayComp661()
10195 if(SiS_Pr->ChipType >= XGI_20) { in SetDelayComp661()
10198 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10201 if(SiS_Pr->SiS_XGIROM) { in SetDelayComp661()
10202 index = GetTVPtrIndex(SiS_Pr); in SetDelayComp661()
10209 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SetDelayComp661()
10210 if(SiS_Pr->ChipType == XGI_40 && SiS_Pr->ChipRevision == 0x02) { in SetDelayComp661()
10216 } else if(SiS_Pr->ChipType >= SIS_340) { in SetDelayComp661()
10219 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10224 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10228 index = GetOEMTVPtr661(SiS_Pr); in SetDelayComp661()
10229 if(SiS_Pr->SiS_ROMNew) { in SetDelayComp661()
10231 if(SiS_Pr->SiS_VBType & VB_UMC) romptr += 12; in SetDelayComp661()
10238 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SetDelayComp661()
10242 if( (SiS_Pr->SiS_LCDResInfo != Panel_Custom) && in SetDelayComp661()
10243 ((romptr = GetLCDStructPtr661_2(SiS_Pr))) ) { in SetDelayComp661()
10245 lcdpdcindex = (SiS_Pr->SiS_VBType & VB_UMC) ? 14 : 12; in SetDelayComp661()
10255 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SetDelayComp661()
10256 switch(SiS_Pr->SiS_LCDResInfo) { in SetDelayComp661()
10269 if((SiS_Pr->PanelXRes <= 1024) && (SiS_Pr->PanelYRes <= 768)) { in SetDelayComp661()
10271 } else if((SiS_Pr->PanelXRes == 1280) && (SiS_Pr->PanelYRes == 1024)) { in SetDelayComp661()
10273 } else if((SiS_Pr->PanelXRes <= 1400) && (SiS_Pr->PanelYRes <= 1050)) { in SetDelayComp661()
10275 } else if((SiS_Pr->PanelXRes <= 1600) && (SiS_Pr->PanelYRes <= 1200)) { in SetDelayComp661()
10285 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (SiS_Pr->PDC != -1)) { in SetDelayComp661()
10286 delay = SiS_Pr->PDC & 0x1f; in SetDelayComp661()
10288 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) && (SiS_Pr->PDCA != -1)) { in SetDelayComp661()
10289 delay = (SiS_Pr->PDCA & 0x1f) << 8; in SetDelayComp661()
10296 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp661()
10298 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((delay << 3) & 0xf0)); in SetDelayComp661()
10299 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((delay & 0x01) << 6)); in SetDelayComp661()
10301 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((delay >> 1) & 0x0f)); in SetDelayComp661()
10302 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((delay & 0x01) << 7)); in SetDelayComp661()
10307 SetCRT2SyncDither661(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short RTI) in SetCRT2SyncDither661() argument
10312 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SetCRT2SyncDither661()
10315 infoflag = SiS_GetRegByte(SiS_Pr->SiS_P3ca+2); in SetCRT2SyncDither661()
10316 } else if(SiS_Pr->UseCustomMode) { in SetCRT2SyncDither661()
10317 infoflag = SiS_Pr->CInfoFlag; in SetCRT2SyncDither661()
10319 infoflag = SiS_Pr->SiS_RefIndex[RTI].Ext_InfoFlag; in SetCRT2SyncDither661()
10322 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SetCRT2SyncDither661()
10323 infoflag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); /* No longer check D5 */ in SetCRT2SyncDither661()
10328 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetCRT2SyncDither661()
10330 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SetCRT2SyncDither661()
10332 if(SiS_Pr->SiS_ModeType >= Mode24Bpp) temp |= 0x10; in SetCRT2SyncDither661()
10334 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xe0,temp); in SetCRT2SyncDither661()
10337 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) temp = 0x20; in SetCRT2SyncDither661()
10339 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0f,temp); in SetCRT2SyncDither661()
10341 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SetCRT2SyncDither661()
10342 if(SiS_Pr->SiS_ModeType >= Mode24Bpp) temp |= 0x80; in SetCRT2SyncDither661()
10344 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1a,0x7f,temp); in SetCRT2SyncDither661()
10351 SetPanelParms661(struct SiS_Private *SiS_Pr) in SetPanelParms661() argument
10353 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetPanelParms661()
10356 if(SiS_Pr->SiS_VBType & (VB_SISLVDS | VB_SIS30xC)) { in SetPanelParms661()
10357 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x24,0x0f); in SetPanelParms661()
10360 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetPanelParms661()
10361 if(SiS_Pr->LVDSHL != -1) { in SetPanelParms661()
10362 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,SiS_Pr->LVDSHL); in SetPanelParms661()
10366 if(SiS_Pr->SiS_ROMNew) { in SetPanelParms661()
10368 if((romptr = GetLCDStructPtr661_2(SiS_Pr))) { in SetPanelParms661()
10369 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetPanelParms661()
10372 if(SiS_Pr->LVDSHL != -1) { in SetPanelParms661()
10376 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,temp2,temp1); in SetPanelParms661()
10378 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetPanelParms661()
10380 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0d,0xbf,temp1); in SetPanelParms661()
10388 SiS_OEM310Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, un… in SiS_OEM310Setting() argument
10390 if((SiS_Pr->SiS_ROMNew) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_OEM310Setting()
10391 SetDelayComp661(SiS_Pr, ModeNo, ModeIdIndex, RRTI); in SiS_OEM310Setting()
10392 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_OEM310Setting()
10393 SetCRT2SyncDither661(SiS_Pr, ModeNo, RRTI); in SiS_OEM310Setting()
10394 SetPanelParms661(SiS_Pr); in SiS_OEM310Setting()
10397 SetDelayComp(SiS_Pr,ModeNo); in SiS_OEM310Setting()
10400 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_OEM310Setting()
10401 SetAntiFlicker(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10402 SetPhaseIncr(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10403 SetYFilter(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10404 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_OEM310Setting()
10405 SetEdgeEnhance(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10411 SiS_OEM661Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_OEM661Setting() argument
10414 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_OEM661Setting()
10416 SetDelayComp661(SiS_Pr, ModeNo, ModeIdIndex, RRTI); in SiS_OEM661Setting()
10418 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_OEM661Setting()
10419 SetCRT2SyncDither661(SiS_Pr, ModeNo, RRTI); in SiS_OEM661Setting()
10420 SetPanelParms661(SiS_Pr); in SiS_OEM661Setting()
10423 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_OEM661Setting()
10424 SetPhaseIncr(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10425 SetYFilter(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10426 SetAntiFlicker(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10427 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_OEM661Setting()
10428 SetEdgeEnhance(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10442 SiS_FinalizeLCD(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_FinalizeLCD() argument
10447 if(!(SiS_Pr->SiS_VBType & VB_SISLVDS)) return; in SiS_FinalizeLCD()
10448 if(SiS_Pr->SiS_ROMNew) return; in SiS_FinalizeLCD()
10450 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10451 if(SiS_Pr->LVDSHL != -1) { in SiS_FinalizeLCD()
10452 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,SiS_Pr->LVDSHL); in SiS_FinalizeLCD()
10456 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) return; in SiS_FinalizeLCD()
10457 if(SiS_Pr->UseCustomMode) return; in SiS_FinalizeLCD()
10459 switch(SiS_Pr->SiS_CustomT) { in SiS_FinalizeLCD()
10468 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_FinalizeLCD()
10469 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_FinalizeLCD()
10471 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_FinalizeLCD()
10472 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_FinalizeLCD()
10476 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4, 0x5f) & 0xf0)) { in SiS_FinalizeLCD()
10477 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) { in SiS_FinalizeLCD()
10478 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x02); in SiS_FinalizeLCD()
10480 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x03); in SiS_FinalizeLCD()
10485 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) { in SiS_FinalizeLCD()
10486 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10488 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10489 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10495 if(SiS_Pr->SiS_CustomT == CUT_CLEVO10242) { in SiS_FinalizeLCD()
10496 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10497 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10498 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10500 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10502 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_FinalizeLCD()
10503 tempch = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_FinalizeLCD()
10505 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10506 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x25); in SiS_FinalizeLCD()
10507 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x00); in SiS_FinalizeLCD()
10508 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x1b); in SiS_FinalizeLCD()
10516 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10517 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10518 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_FinalizeLCD()
10519 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2a,0x00); in SiS_FinalizeLCD()
10521 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_FinalizeLCD()
10523 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_FinalizeLCD()
10525 } else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_FinalizeLCD()
10526 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10528 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10531 tempch = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_FinalizeLCD()
10532 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_FinalizeLCD()
10533 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) { in SiS_FinalizeLCD()
10534 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1f,0x76); in SiS_FinalizeLCD()
10535 } else if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10537 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10538 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x25); in SiS_FinalizeLCD()
10539 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x00); in SiS_FinalizeLCD()
10540 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x1b); in SiS_FinalizeLCD()
10542 if(SiS_Pr->Backup && (SiS_Pr->Backup_Mode == ModeNo)) { in SiS_FinalizeLCD()
10543 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,SiS_Pr->Backup_14); in SiS_FinalizeLCD()
10544 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,SiS_Pr->Backup_15); in SiS_FinalizeLCD()
10545 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,SiS_Pr->Backup_16); in SiS_FinalizeLCD()
10546 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,SiS_Pr->Backup_17); in SiS_FinalizeLCD()
10547 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,SiS_Pr->Backup_18); in SiS_FinalizeLCD()
10548 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,SiS_Pr->Backup_19); in SiS_FinalizeLCD()
10549 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1a,SiS_Pr->Backup_1a); in SiS_FinalizeLCD()
10550 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,SiS_Pr->Backup_1b); in SiS_FinalizeLCD()
10551 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,SiS_Pr->Backup_1c); in SiS_FinalizeLCD()
10552 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,SiS_Pr->Backup_1d); in SiS_FinalizeLCD()
10553 } else if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { /* 1.10.8w */ in SiS_FinalizeLCD()
10554 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,0x90); in SiS_FinalizeLCD()
10556 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x11); in SiS_FinalizeLCD()
10558 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x18); in SiS_FinalizeLCD()
10561 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10563 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); /* 1.10.7u */ in SiS_FinalizeLCD()
10568 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); in SiS_FinalizeLCD()
10570 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1d,0xf8,temp); in SiS_FinalizeLCD()
10575 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x70); in SiS_FinalizeLCD()
10576 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xff); in SiS_FinalizeLCD()
10577 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x48); in SiS_FinalizeLCD()
10578 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x12); in SiS_FinalizeLCD()
10581 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,0x20); in SiS_FinalizeLCD()
10582 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,0x1a); in SiS_FinalizeLCD()
10583 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,0x28); in SiS_FinalizeLCD()
10584 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,0x00); in SiS_FinalizeLCD()
10585 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x4c); in SiS_FinalizeLCD()
10586 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xdc); in SiS_FinalizeLCD()
10590 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x95); in SiS_FinalizeLCD()
10591 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xdc); in SiS_FinalizeLCD()
10592 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1a,0x10); in SiS_FinalizeLCD()
10593 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x95); in SiS_FinalizeLCD()
10594 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x48); in SiS_FinalizeLCD()
10595 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x12); in SiS_FinalizeLCD()
10598 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x95); in SiS_FinalizeLCD()
10599 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x48); in SiS_FinalizeLCD()
10602 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x95); in SiS_FinalizeLCD()
10610 tempcl = tempbh = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x01); in SiS_FinalizeLCD()
10614 tempbl = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x04); in SiS_FinalizeLCD()
10616 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10617 if((resinfo == SIS_RI_1024x768) || (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD))) { in SiS_FinalizeLCD()
10618 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_FinalizeLCD()
10622 if(SiS_Pr->SiS_VGAVDE < 600) { in SiS_FinalizeLCD()
10623 tempax = 768 - SiS_Pr->SiS_VGAVDE; in SiS_FinalizeLCD()
10625 if(SiS_Pr->SiS_VGAVDE <= 480) tempax >>= 4; /* 1.10.7w; 1.10.6s: < 480; >>=1; */ in SiS_FinalizeLCD()
10632 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,temp); in SiS_FinalizeLCD()
10634 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,temp); in SiS_FinalizeLCD()
10646 SetOEMLCDData2(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, in SetOEMLCDData2() argument
10654 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SetOEMLCDData2()
10655 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SetOEMLCDData2()
10657 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SetOEMLCDData2()
10658 crt2crtc = SiS_Pr->SiS_RefIndex[RefTabIndex].Ext_CRT2CRTC; in SetOEMLCDData2()
10663 if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SetOEMLCDData2()
10664 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xdf); in SetOEMLCDData2()
10667 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SetOEMLCDData2()
10670 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SetOEMLCDData2()
10673 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, in SetOEMLCDData2()
10680 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SetOEMLCDData2()
10682 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x18); in SetOEMLCDData2()
10684 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,temp); in SetOEMLCDData2()
10690 GetOEMLCDPtr(struct SiS_Private *SiS_Pr, int Flag) in GetOEMLCDPtr() argument
10692 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetOEMLCDPtr()
10703 if(SiS_Pr->ChipType == SIS_300) { in GetOEMLCDPtr()
10705 tempbx = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0x0f; in GetOEMLCDPtr()
10706 if(SiS_Pr->SiS_VBType & VB_SIS301) tempbx &= 0x07; in GetOEMLCDPtr()
10708 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx += 4; in GetOEMLCDPtr()
10709 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in GetOEMLCDPtr()
10710 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx += 3; in GetOEMLCDPtr()
10712 if(SiS_Pr->SiS_UseROM) { in GetOEMLCDPtr()
10714 tempbx = SiS_Pr->SiS_LCDTypeInfo; in GetOEMLCDPtr()
10717 if(romptr) tempbx = ROMAddr[romptr + SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
10718 else tempbx = customtable300[SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
10722 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx++; in GetOEMLCDPtr()
10729 if(SiS_Pr->SiS_UseROM) { in GetOEMLCDPtr()
10731 if(romptr) tempbx = ROMAddr[romptr + SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
10734 tempbx = customtable630[SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
10738 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempbx += 2; in GetOEMLCDPtr()
10739 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in GetOEMLCDPtr()
10742 tempbx = SiS_Pr->SiS_LCDTypeInfo << 2; in GetOEMLCDPtr()
10743 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempbx += 2; in GetOEMLCDPtr()
10744 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in GetOEMLCDPtr()
10752 SetOEMLCDDelay(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetOEMLCDDelay() argument
10754 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMLCDDelay()
10757 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) return; in SetOEMLCDDelay()
10759 if(SiS_Pr->SiS_UseROM) { in SetOEMLCDDelay()
10772 if(SiS_Pr->PDC != -1) return; in SetOEMLCDDelay()
10774 temp = GetOEMLCDPtr(SiS_Pr, 0); in SetOEMLCDDelay()
10776 if(SiS_Pr->UseCustomMode) in SetOEMLCDDelay()
10779 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_LCDDelayIndex; in SetOEMLCDDelay()
10781 if(SiS_Pr->ChipType != SIS_300) { in SetOEMLCDDelay()
10788 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetOEMLCDDelay()
10795 if(SiS_Pr->SiS_UseROM && (ROMAddr[0x235] & 0x80)) { in SetOEMLCDDelay()
10805 if(SiS_Pr->SiS_UseROM) { in SetOEMLCDDelay()
10821 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* index 0A D[6:4] */ in SetOEMLCDDelay()
10825 SetOEMLCDData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMLCDData() argument
10828 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMLCDData()
10831 if((SiS_Pr->SiS_UseROM) { in SetOEMLCDData()
10837 temp = GetOEMLCDPtr(SiS_Pr, 1); in SetOEMLCDData()
10840 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex]._VB_LCDHIndex; in SetOEMLCDData()
10842 SiS_SetReg(SiS_Pr->SiS_Part1Port,i,SiS300_LCDHData[temp][index][j]); in SetOEMLCDData()
10846 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex]._VB_LCDVIndex; in SetOEMLCDData()
10851 SiS_SetReg(SiS_Pr->SiS_Part1Port,i,SiS300_LCDVData[temp][index][j]); in SetOEMLCDData()
10857 GetOEMTVPtr(struct SiS_Private *SiS_Pr) in GetOEMTVPtr() argument
10862 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) index += 4; in GetOEMTVPtr()
10863 if(SiS_Pr->SiS_VBType & VB_SISVB) { in GetOEMTVPtr()
10864 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) index += 2; in GetOEMTVPtr()
10865 else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) index += 3; in GetOEMTVPtr()
10866 else if(SiS_Pr->SiS_TVMode & TVSetPAL) index += 1; in GetOEMTVPtr()
10868 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) index += 2; in GetOEMTVPtr()
10869 if(SiS_Pr->SiS_TVMode & TVSetPAL) index += 1; in GetOEMTVPtr()
10875 SetOEMTVDelay(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMTVDelay() argument
10877 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMTVDelay()
10880 if(SiS_Pr->SiS_UseROM) { in SetOEMTVDelay()
10886 temp = GetOEMTVPtr(SiS_Pr); in SetOEMTVDelay()
10888 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVDelayIndex; in SetOEMTVDelay()
10896 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetOEMTVDelay()
10903 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); in SetOEMTVDelay()
10907 SetOEMAntiFlicker(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMAntiFlicker() argument
10909 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMAntiFlicker()
10912 if(SiS_Pr->SiS_UseROM) { in SetOEMAntiFlicker()
10918 temp = GetOEMTVPtr(SiS_Pr); in SetOEMAntiFlicker()
10920 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVFlickerIndex; in SetOEMAntiFlicker()
10931 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0A,0x8F,temp); in SetOEMAntiFlicker()
10935 SetOEMPhaseIncr(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetOEMPhaseIncr() argument
10937 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMPhaseIncr()
10940 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) return; in SetOEMPhaseIncr()
10942 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSetNTSCJ | TVSetPALM | TVSetPALN)) return; in SetOEMPhaseIncr()
10944 if(SiS_Pr->SiS_UseROM) { in SetOEMPhaseIncr()
10950 temp = GetOEMTVPtr(SiS_Pr); in SetOEMPhaseIncr()
10952 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVPhaseIndex; in SetOEMPhaseIncr()
10954 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetOEMPhaseIncr()
10956 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Phase2[temp][index][j]); in SetOEMPhaseIncr()
10964 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetOEMPhaseIncr()
10968 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Phase1[temp][index][j]); in SetOEMPhaseIncr()
10975 SetOEMYFilter(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMYFilter() argument
10977 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMYFilter()
10980 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSCART | SetCRT2ToHiVision | SetCRT2ToYPbPr525750)) return; in SetOEMYFilter()
10982 if(SiS_Pr->SiS_UseROM) { in SetOEMYFilter()
10988 temp = GetOEMTVPtr(SiS_Pr); in SetOEMYFilter()
10990 if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 8; in SetOEMYFilter()
10991 else if(SiS_Pr->SiS_TVMode & TVSetPALN) temp = 9; in SetOEMYFilter()
10994 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVYFilterIndex; in SetOEMYFilter()
10996 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetOEMYFilter()
10998 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter2[temp][index][j]); in SetOEMYFilter()
11001 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter2[temp][index][j]); in SetOEMYFilter()
11004 if((romptr) && (!(SiS_Pr->SiS_TVMode & (TVSetPALM|TVSetPALN)))) { in SetOEMYFilter()
11009 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetOEMYFilter()
11013 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter1[temp][index][j]); in SetOEMYFilter()
11020 SiS_SearchVBModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo) in SiS_SearchVBModeID() argument
11023 unsigned char VGAINFO = SiS_Pr->SiS_VGAINFO; in SiS_SearchVBModeID()
11028 if(SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].ModeID == *ModeNo) break; in SiS_SearchVBModeID()
11029 if(SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].ModeID == 0xFF) return 0; in SiS_SearchVBModeID()
11044 SiS_OEM300Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_OEM300Setting() argument
11049 if(!SiS_Pr->UseCustomMode) { in SiS_OEM300Setting()
11050 OEMModeIdIndex = SiS_SearchVBModeID(SiS_Pr,&ModeNo); in SiS_OEM300Setting()
11054 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_OEM300Setting()
11055 SetOEMLCDDelay(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11056 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_OEM300Setting()
11057 SetOEMLCDData(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11060 if(SiS_Pr->UseCustomMode) return; in SiS_OEM300Setting()
11061 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_OEM300Setting()
11062 SetOEMTVDelay(SiS_Pr, ModeNo,OEMModeIdIndex); in SiS_OEM300Setting()
11063 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_OEM300Setting()
11064 SetOEMAntiFlicker(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11065 SetOEMPhaseIncr(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11066 SetOEMYFilter(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()