Lines Matching refs:SiS_Pr

367 static void	SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
368 static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
369 static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
370 static void SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr);
374 static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
377 static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
380 static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
381 static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
383 static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
384 static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
385 static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
386 static unsigned short SiS_SetSCLKLow(struct SiS_Private *SiS_Pr);
387 static unsigned short SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr);
388 static unsigned short SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr);
389 static unsigned short SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax);
390 static unsigned short SiS_CheckACK(struct SiS_Private *SiS_Pr);
391 static unsigned short SiS_WriteDABDDC(struct SiS_Private *SiS_Pr);
392 static unsigned short SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr);
393 static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
394 static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
395 static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
398 static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
400 static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
404 static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
406 static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
411 static unsigned short SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr);
412 static void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
419 SiS_UnLockCRT2(struct SiS_Private *SiS_Pr) in SiS_UnLockCRT2() argument
421 if(SiS_Pr->ChipType == XGI_20) in SiS_UnLockCRT2()
423 else if(SiS_Pr->ChipType >= SIS_315H) in SiS_UnLockCRT2()
424 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2f,0x01); in SiS_UnLockCRT2()
426 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01); in SiS_UnLockCRT2()
431 SiS_LockCRT2(struct SiS_Private *SiS_Pr) in SiS_LockCRT2() argument
433 if(SiS_Pr->ChipType == XGI_20) in SiS_LockCRT2()
435 else if(SiS_Pr->ChipType >= SIS_315H) in SiS_LockCRT2()
436 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2F,0xFE); in SiS_LockCRT2()
438 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x24,0xFE); in SiS_LockCRT2()
446 SiS_SetRegSR11ANDOR(struct SiS_Private *SiS_Pr, unsigned short DataAND, unsigned short DataOR) in SiS_SetRegSR11ANDOR() argument
448 if(SiS_Pr->ChipType >= SIS_661) { in SiS_SetRegSR11ANDOR()
452 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x11,DataAND,DataOR); in SiS_SetRegSR11ANDOR()
461 GetLCDStructPtr661(struct SiS_Private *SiS_Pr) in GetLCDStructPtr661() argument
463 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDStructPtr661()
474 if((SiS_Pr->SiS_ROMNew) && in GetLCDStructPtr661()
475 ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) { in GetLCDStructPtr661()
477 if(SiS_Pr->ChipType < SIS_661) reg = 0x3c; in GetLCDStructPtr661()
480 idx = (SiS_GetReg(SiS_Pr->SiS_P3d4,reg) & 0x1f) * 26; in GetLCDStructPtr661()
495 GetLCDStructPtr661_2(struct SiS_Private *SiS_Pr) in GetLCDStructPtr661_2() argument
497 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDStructPtr661_2()
507 if((SiS_Pr->SiS_ROMNew) && in GetLCDStructPtr661_2()
508 ((SiS_Pr->SiS_VBType & VB_SISLVDS) || (!SiS_Pr->PanelSelfDetected))) { in GetLCDStructPtr661_2()
510 romptr += ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) * SiS_Pr->SiS661LCD2TableSize); in GetLCDStructPtr661_2()
522 SiS_AdjustCRT2Rate(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_AdjustCRT2Rate() argument
527 modeid = SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID; in SiS_AdjustCRT2Rate()
529 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_AdjustCRT2Rate()
531 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_AdjustCRT2Rate()
534 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_AdjustCRT2Rate()
536 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_AdjustCRT2Rate()
538 if(SiS_Pr->SiS_VBType & VB_SISRAMDAC202) { in SiS_AdjustCRT2Rate()
544 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_AdjustCRT2Rate()
547 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_AdjustCRT2Rate()
548 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_AdjustCRT2Rate()
549 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_AdjustCRT2Rate()
555 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_AdjustCRT2Rate()
559 …} else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToYPbPr525750|SetCRT2ToAVIDEO|SetCRT2ToSVIDEO|SetCRT2ToSCAR… in SiS_AdjustCRT2Rate()
562 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_AdjustCRT2Rate()
564 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_AdjustCRT2Rate()
565 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_AdjustCRT2Rate()
575 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_AdjustCRT2Rate()
576 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_AdjustCRT2Rate()
581 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_AdjustCRT2Rate()
588 for(; SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID == modeid; (*i)--) { in SiS_AdjustCRT2Rate()
589 infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag; in SiS_AdjustCRT2Rate()
598 if(SiS_Pr->SiS_RefIndex[RRTI + (*i)].ModeID != modeid) break; in SiS_AdjustCRT2Rate()
599 infoflag = SiS_Pr->SiS_RefIndex[RRTI + (*i)].Ext_InfoFlag; in SiS_AdjustCRT2Rate()
610 SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetRatePtr() argument
626 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetRatePtr()
628 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetRatePtr()
631 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetRatePtr()
632 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_GetRatePtr()
639 index = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x33) >> SiS_Pr->SiS_SelectCRT2Rate) & 0x0F; in SiS_GetRatePtr()
644 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetRatePtr()
645 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetRatePtr()
646 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetRatePtr()
647 if(SiS_Pr->SiS_VBType & VB_NoLCD) index = 0; in SiS_GetRatePtr()
648 else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index = backupindex = 0; in SiS_GetRatePtr()
650 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_GetRatePtr()
651 if(!(SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetRatePtr()
652 temp = LCDRefreshIndex[SiS_GetBIOSLCDResInfo(SiS_Pr)]; in SiS_GetRatePtr()
657 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) index = 0; in SiS_GetRatePtr()
658 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetRatePtr()
659 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) index = 0; in SiS_GetRatePtr()
664 RRTI = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].REFindex; in SiS_GetRatePtr()
665 ModeNo = SiS_Pr->SiS_RefIndex[RRTI].ModeID; in SiS_GetRatePtr()
667 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetRatePtr()
668 if(!(SiS_Pr->SiS_VBInfo & DriverMode)) { in SiS_GetRatePtr()
669 if( (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x105) || in SiS_GetRatePtr()
670 (SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_VESAID == 0x107) ) { in SiS_GetRatePtr()
678 if(SiS_Pr->SiS_RefIndex[RRTI + i].ModeID != ModeNo) break; in SiS_GetRatePtr()
679 temp = SiS_Pr->SiS_RefIndex[RRTI + i].Ext_InfoFlag; in SiS_GetRatePtr()
681 if(temp < SiS_Pr->SiS_ModeType) break; in SiS_GetRatePtr()
686 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_GetRatePtr()
687 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetRatePtr()
688 temp = SiS_Pr->SiS_RefIndex[RRTI + i - 1].Ext_InfoFlag; in SiS_GetRatePtr()
695 if((SiS_Pr->SiS_SetFlag & ProgrammingCRT2) && (!(SiS_Pr->SiS_VBInfo & DisableCRT2Display))) { in SiS_GetRatePtr()
697 if(!(SiS_AdjustCRT2Rate(SiS_Pr, ModeNo, ModeIdIndex, RRTI, &i))) { in SiS_GetRatePtr()
710 SiS_SaveCRT2Info(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SaveCRT2Info() argument
715 SiS_SetReg(SiS_Pr->SiS_P3d4,0x34,ModeNo); in SiS_SaveCRT2Info()
716 temp1 = (SiS_Pr->SiS_VBInfo & SetInSlaveMode) >> 8; in SiS_SaveCRT2Info()
718 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x31,temp2,temp1); in SiS_SaveCRT2Info()
727 SiS_CR36BIOSWord23b(struct SiS_Private *SiS_Pr) in SiS_CR36BIOSWord23b() argument
729 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_CR36BIOSWord23b()
732 if(SiS_Pr->SiS_UseROM) { in SiS_CR36BIOSWord23b()
734 temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) & 0x0f); in SiS_CR36BIOSWord23b()
743 SiS_CR36BIOSWord23d(struct SiS_Private *SiS_Pr) in SiS_CR36BIOSWord23d() argument
745 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_CR36BIOSWord23d()
748 if(SiS_Pr->SiS_UseROM) { in SiS_CR36BIOSWord23d()
750 temp = 1 << ((SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4) & 0x0f); in SiS_CR36BIOSWord23d()
764 SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime) in SiS_DDC2Delay() argument
767 SiS_GetReg(SiS_Pr->SiS_P3c4, 0x05); in SiS_DDC2Delay()
772 SiS_GenericDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_GenericDelay() argument
774 SiS_DDC2Delay(SiS_Pr, delay * 36); in SiS_GenericDelay()
780 SiS_LongDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_LongDelay() argument
783 SiS_GenericDelay(SiS_Pr, 6623); in SiS_LongDelay()
790 SiS_ShortDelay(struct SiS_Private *SiS_Pr, unsigned short delay) in SiS_ShortDelay() argument
793 SiS_GenericDelay(SiS_Pr, 66); in SiS_ShortDelay()
799 SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) in SiS_PanelDelay() argument
802 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_PanelDelay()
806 if(SiS_Pr->ChipType < SIS_315H) { in SiS_PanelDelay()
810 PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_PanelDelay()
811 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_PanelDelay()
812 if(SiS_Pr->SiS_VBType & VB_SIS301) PanelID &= 0xf7; in SiS_PanelDelay()
813 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x18) & 0x10)) PanelID = 0x12; in SiS_PanelDelay()
821 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[0]; in SiS_PanelDelay()
823 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[1]; in SiS_PanelDelay()
825 if(SiS_Pr->SiS_UseROM) { in SiS_PanelDelay()
832 SiS_ShortDelay(SiS_Pr, Delay); in SiS_PanelDelay()
840 if((SiS_Pr->ChipType >= SIS_661) || in SiS_PanelDelay()
841 (SiS_Pr->ChipType <= SIS_315PRO) || in SiS_PanelDelay()
842 (SiS_Pr->ChipType == SIS_330) || in SiS_PanelDelay()
843 (SiS_Pr->SiS_ROMNew)) { in SiS_PanelDelay()
846 SiS_DDC2Delay(SiS_Pr, 0x1000); in SiS_PanelDelay()
848 SiS_DDC2Delay(SiS_Pr, 0x4000); in SiS_PanelDelay()
851 } else if((SiS_Pr->SiS_IF_DEF_LVDS == 1) /* || in SiS_PanelDelay()
855 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_PanelDelay()
856 PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_PanelDelay()
857 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1400) { in SiS_PanelDelay()
858 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x1b) & 0x10)) PanelID = 0x12; in SiS_PanelDelay()
860 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_PanelDelay()
870 Delay = SiS_Pr->SiS_PanelDelayTblLVDS[DelayIndex].timer[0]; in SiS_PanelDelay()
872 Delay = SiS_Pr->SiS_PanelDelayTblLVDS[DelayIndex].timer[1]; in SiS_PanelDelay()
874 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_PanelDelay()
884 SiS_ShortDelay(SiS_Pr, Delay); in SiS_PanelDelay()
887 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { /* 315 series, all bridges */ in SiS_PanelDelay()
889 DelayIndex = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_PanelDelay()
891 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[0]; in SiS_PanelDelay()
893 Delay = SiS_Pr->SiS_PanelDelayTbl[DelayIndex].timer[1]; in SiS_PanelDelay()
896 SiS_DDC2Delay(SiS_Pr, Delay); in SiS_PanelDelay()
907 SiS_PanelDelayLoop(struct SiS_Private *SiS_Pr, unsigned short DelayTime, unsigned short DelayLoop) in SiS_PanelDelayLoop() argument
911 SiS_PanelDelay(SiS_Pr, DelayTime); in SiS_PanelDelayLoop()
921 SiS_WaitRetrace1(struct SiS_Private *SiS_Pr) in SiS_WaitRetrace1() argument
925 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x1f) & 0xc0) return; in SiS_WaitRetrace1()
926 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x17) & 0x80)) return; in SiS_WaitRetrace1()
929 while((SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08) && --watchdog); in SiS_WaitRetrace1()
931 while((!(SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08)) && --watchdog); in SiS_WaitRetrace1()
936 SiS_WaitRetrace2(struct SiS_Private *SiS_Pr, unsigned short reg) in SiS_WaitRetrace2() argument
941 while((SiS_GetReg(SiS_Pr->SiS_Part1Port,reg) & 0x02) && --watchdog); in SiS_WaitRetrace2()
943 while((!(SiS_GetReg(SiS_Pr->SiS_Part1Port,reg) & 0x02)) && --watchdog); in SiS_WaitRetrace2()
948 SiS_WaitVBRetrace(struct SiS_Private *SiS_Pr) in SiS_WaitVBRetrace() argument
950 if(SiS_Pr->ChipType < SIS_315H) { in SiS_WaitVBRetrace()
952 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_WaitVBRetrace()
953 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x20)) return; in SiS_WaitVBRetrace()
955 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x80)) { in SiS_WaitVBRetrace()
956 SiS_WaitRetrace1(SiS_Pr); in SiS_WaitVBRetrace()
958 SiS_WaitRetrace2(SiS_Pr, 0x25); in SiS_WaitVBRetrace()
963 if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x40)) { in SiS_WaitVBRetrace()
964 SiS_WaitRetrace1(SiS_Pr); in SiS_WaitVBRetrace()
966 SiS_WaitRetrace2(SiS_Pr, 0x30); in SiS_WaitVBRetrace()
973 SiS_VBWait(struct SiS_Private *SiS_Pr) in SiS_VBWait() argument
980 tempal = SiS_GetRegByte(SiS_Pr->SiS_P3da); in SiS_VBWait()
994 SiS_VBLongWait(struct SiS_Private *SiS_Pr) in SiS_VBLongWait() argument
996 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_VBLongWait()
997 SiS_VBWait(SiS_Pr); in SiS_VBLongWait()
999 SiS_WaitRetrace1(SiS_Pr); in SiS_VBLongWait()
1009 SiS_Is301B(struct SiS_Private *SiS_Pr) in SiS_Is301B() argument
1011 if(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x01) >= 0xb0) return true; in SiS_Is301B()
1017 SiS_CRT2IsLCD(struct SiS_Private *SiS_Pr) in SiS_CRT2IsLCD() argument
1019 if(SiS_Pr->ChipType == SIS_730) { in SiS_CRT2IsLCD()
1020 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x20) return true; in SiS_CRT2IsLCD()
1022 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x30) & 0x20) return true; in SiS_CRT2IsLCD()
1027 SiS_IsDualEdge(struct SiS_Private *SiS_Pr) in SiS_IsDualEdge() argument
1030 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsDualEdge()
1031 if((SiS_Pr->ChipType != SIS_650) || (SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0)) { in SiS_IsDualEdge()
1032 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableDualEdge) return true; in SiS_IsDualEdge()
1040 SiS_IsVAMode(struct SiS_Private *SiS_Pr) in SiS_IsVAMode() argument
1045 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsVAMode()
1046 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsVAMode()
1055 SiS_IsVAorLCD(struct SiS_Private *SiS_Pr) in SiS_IsVAorLCD() argument
1057 if(SiS_IsVAMode(SiS_Pr)) return true; in SiS_IsVAorLCD()
1058 if(SiS_CRT2IsLCD(SiS_Pr)) return true; in SiS_IsVAorLCD()
1064 SiS_IsDualLink(struct SiS_Private *SiS_Pr) in SiS_IsDualLink() argument
1067 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsDualLink()
1068 if((SiS_CRT2IsLCD(SiS_Pr)) || in SiS_IsDualLink()
1069 (SiS_IsVAMode(SiS_Pr))) { in SiS_IsDualLink()
1070 if(SiS_Pr->SiS_LCDInfo & LCDDualLink) return true; in SiS_IsDualLink()
1079 SiS_TVEnabled(struct SiS_Private *SiS_Pr) in SiS_TVEnabled() argument
1081 if((SiS_GetReg(SiS_Pr->SiS_Part2Port,0x00) & 0x0f) != 0x0c) return true; in SiS_TVEnabled()
1082 if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_TVEnabled()
1083 if(SiS_GetReg(SiS_Pr->SiS_Part2Port,0x4d) & 0x10) return true; in SiS_TVEnabled()
1091 SiS_LCDAEnabled(struct SiS_Private *SiS_Pr) in SiS_LCDAEnabled() argument
1093 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x13) & 0x04) return true; in SiS_LCDAEnabled()
1100 SiS_WeHaveBacklightCtrl(struct SiS_Private *SiS_Pr) in SiS_WeHaveBacklightCtrl() argument
1102 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) { in SiS_WeHaveBacklightCtrl()
1103 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x79) & 0x10) return true; in SiS_WeHaveBacklightCtrl()
1111 SiS_IsNotM650orLater(struct SiS_Private *SiS_Pr) in SiS_IsNotM650orLater() argument
1115 if(SiS_Pr->ChipType == SIS_650) { in SiS_IsNotM650orLater()
1116 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0; in SiS_IsNotM650orLater()
1120 } else if(SiS_Pr->ChipType >= SIS_661) return false; in SiS_IsNotM650orLater()
1127 SiS_IsYPbPr(struct SiS_Private *SiS_Pr) in SiS_IsYPbPr() argument
1129 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsYPbPr()
1131 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableCHYPbPr) return true; in SiS_IsYPbPr()
1139 SiS_IsChScart(struct SiS_Private *SiS_Pr) in SiS_IsChScart() argument
1141 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsChScart()
1143 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableCHScart) return true; in SiS_IsChScart()
1151 SiS_IsTVOrYPbPrOrScart(struct SiS_Private *SiS_Pr) in SiS_IsTVOrYPbPrOrScart() argument
1155 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsTVOrYPbPrOrScart()
1156 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsTVOrYPbPrOrScart()
1158 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsTVOrYPbPrOrScart()
1162 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsTVOrYPbPrOrScart()
1171 SiS_IsLCDOrLCDA(struct SiS_Private *SiS_Pr) in SiS_IsLCDOrLCDA() argument
1175 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_IsLCDOrLCDA()
1176 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsLCDOrLCDA()
1178 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_IsLCDOrLCDA()
1181 flag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_IsLCDOrLCDA()
1189 SiS_HaveBridge(struct SiS_Private *SiS_Pr) in SiS_HaveBridge() argument
1193 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_HaveBridge()
1195 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_HaveBridge()
1196 flag = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x00); in SiS_HaveBridge()
1203 SiS_BridgeIsEnabled(struct SiS_Private *SiS_Pr) in SiS_BridgeIsEnabled() argument
1207 if(SiS_HaveBridge(SiS_Pr)) { in SiS_BridgeIsEnabled()
1208 flag = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_BridgeIsEnabled()
1209 if(SiS_Pr->ChipType < SIS_315H) { in SiS_BridgeIsEnabled()
1221 SiS_BridgeInSlavemode(struct SiS_Private *SiS_Pr) in SiS_BridgeInSlavemode() argument
1225 flag1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31); in SiS_BridgeInSlavemode()
1237 SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo) in SiS_SetChrontelGPIO() argument
1242 if(!(SiS_Pr->SiS_ChSW)) return; in SiS_SetChrontelGPIO()
1244 acpibase = sisfb_read_lpc_pci_dword(SiS_Pr, 0x74); in SiS_SetChrontelGPIO()
1260 SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_GetVBInfo() argument
1266 SiS_Pr->SiS_SetFlag = 0; in SiS_GetVBInfo()
1268 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetVBInfo()
1270 SiS_Pr->SiS_ModeType = modeflag & ModeTypeMask; in SiS_GetVBInfo()
1272 if((ModeNo > 0x13) && (!SiS_Pr->UseCustomMode)) { in SiS_GetVBInfo()
1273 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetVBInfo()
1278 if(SiS_HaveBridge(SiS_Pr)) { in SiS_GetVBInfo()
1280 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_GetVBInfo()
1282 tempax = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) << 8; in SiS_GetVBInfo()
1287 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1288 if(SiS_Pr->SiS_VBType & VB_SISLCDA) { in SiS_GetVBInfo()
1291 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x31,0xbf); in SiS_GetVBInfo()
1293 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & (DriverMode >> 8))) { in SiS_GetVBInfo()
1295 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x38,0xfc); in SiS_GetVBInfo()
1298 if(SiS_Pr->SiS_UseLCDA) { in SiS_GetVBInfo()
1299 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xF0) { in SiS_GetVBInfo()
1300 if((ModeNo <= 0x13) || (!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & (DriverMode >> 8)))) { in SiS_GetVBInfo()
1301 SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x38,(EnableDualEdge | SetToLCDA)); in SiS_GetVBInfo()
1306 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_GetVBInfo()
1312 if(SiS_Pr->ChipType >= SIS_661) { /* New CR layout */ in SiS_GetVBInfo()
1314 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & 0x04) { in SiS_GetVBInfo()
1315 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35) & 0xe0; in SiS_GetVBInfo()
1317 else if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_GetVBInfo()
1323 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetVBInfo()
1324 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_GetVBInfo()
1328 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1338 if(!(SiS_Pr->SiS_VBType & VB_SISVGA2)) { in SiS_GetVBInfo()
1342 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetVBInfo()
1352 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1353 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1365 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1378 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetVBInfo()
1398 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1403 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_GetVBInfo()
1411 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetVBInfo()
1428 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_GetVBInfo()
1429 if( (SiS_Pr->SiS_IF_DEF_LVDS == 1) || in SiS_GetVBInfo()
1430 ((SiS_Pr->SiS_VBType & VB_NoLCD) && (tempbx & SetCRT2ToLCD)) ) { in SiS_GetVBInfo()
1443 if(SiS_BridgeIsEnabled(SiS_Pr)) { in SiS_GetVBInfo()
1445 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_GetVBInfo()
1469 SiS_Pr->SiS_VBInfo = tempbx; in SiS_GetVBInfo()
1472 if(SiS_Pr->ChipType == SIS_630) { in SiS_GetVBInfo()
1473 SiS_SetChrontelGPIO(SiS_Pr, SiS_Pr->SiS_VBInfo); in SiS_GetVBInfo()
1479 SiS_Pr->SiS_VBInfo, SiS_Pr->SiS_SetFlag); in SiS_GetVBInfo()
1488 SiS_SetYPbPr(struct SiS_Private *SiS_Pr) in SiS_SetYPbPr() argument
1501 SiS_Pr->SiS_YPbPr = 0; in SiS_SetYPbPr()
1502 if(SiS_Pr->ChipType >= SIS_661) return; in SiS_SetYPbPr()
1504 if(SiS_Pr->SiS_VBType) { in SiS_SetYPbPr()
1505 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetYPbPr()
1506 SiS_Pr->SiS_YPbPr = YPbPrHiVision; in SiS_SetYPbPr()
1510 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetYPbPr()
1511 if(SiS_Pr->SiS_VBType & VB_SISYPBPR) { in SiS_SetYPbPr()
1512 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_SetYPbPr()
1515 case 0x00: SiS_Pr->SiS_YPbPr = YPbPr525i; break; in SiS_SetYPbPr()
1516 case 0x01: SiS_Pr->SiS_YPbPr = YPbPr525p; break; in SiS_SetYPbPr()
1517 case 0x02: SiS_Pr->SiS_YPbPr = YPbPr750p; break; in SiS_SetYPbPr()
1518 case 0x03: SiS_Pr->SiS_YPbPr = YPbPrHiVision; break; in SiS_SetYPbPr()
1531 SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetTVMode() argument
1533 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetTVMode()
1535 unsigned char OutputSelect = *SiS_Pr->pSiS_OutputSelect; in SiS_SetTVMode()
1537 SiS_Pr->SiS_TVMode = 0; in SiS_SetTVMode()
1539 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) return; in SiS_SetTVMode()
1540 if(SiS_Pr->UseCustomMode) return; in SiS_SetTVMode()
1543 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetTVMode()
1546 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetTVMode()
1548 if(SiS_Pr->SiS_VBInfo & SetPALTV) SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1550 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1552 if((SiS_Pr->ChipType == SIS_630) || in SiS_SetTVMode()
1553 (SiS_Pr->ChipType == SIS_730)) { in SiS_SetTVMode()
1556 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetTVMode()
1558 if(SiS_Pr->ChipType < XGI_20) { in SiS_SetTVMode()
1560 if(SiS_Pr->ChipType >= SIS_330) romindex = 0x11b; in SiS_SetTVMode()
1564 if(romindex && SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetTVMode()
1567 SiS_SetRegAND(SiS_Pr->SiS_P3d4,temp,0x3F); in SiS_SetTVMode()
1570 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,temp); in SiS_SetTVMode()
1571 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetTVMode()
1573 SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1574 SiS_Pr->SiS_TVMode &= ~TVSetPAL; in SiS_SetTVMode()
1576 SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1580 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1585 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1586 if(SiS_Pr->SiS_YPbPr == YPbPr750p) SiS_Pr->SiS_TVMode |= TVSetYPbPr750p; in SiS_SetTVMode()
1587 else if(SiS_Pr->SiS_YPbPr == YPbPr525p) SiS_Pr->SiS_TVMode |= TVSetYPbPr525p; in SiS_SetTVMode()
1588 else if(SiS_Pr->SiS_YPbPr == YPbPrHiVision) SiS_Pr->SiS_TVMode |= TVSetHiVision; in SiS_SetTVMode()
1589 else SiS_Pr->SiS_TVMode |= TVSetYPbPr525i; in SiS_SetTVMode()
1590 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetYPbPr525p | TVSetYPbPr525i)) { in SiS_SetTVMode()
1591 SiS_Pr->SiS_VBInfo &= ~SetCRT2ToHiVision; in SiS_SetTVMode()
1592 SiS_Pr->SiS_VBInfo |= SetCRT2ToYPbPr525750; in SiS_SetTVMode()
1593 } else if(SiS_Pr->SiS_TVMode & TVSetHiVision) { in SiS_SetTVMode()
1594 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1597 } else if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetTVMode()
1598 if(SiS_Pr->SiS_CHOverScan) { in SiS_SetTVMode()
1599 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetTVMode()
1600 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_SetTVMode()
1601 if((temp & TVOverScan) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1602 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1604 } else if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1605 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x79); in SiS_SetTVMode()
1606 if((temp & 0x80) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1607 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1610 if(SiS_Pr->SiS_CHSOverScan) { in SiS_SetTVMode()
1611 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1614 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1615 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); in SiS_SetTVMode()
1616 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetTVMode()
1617 if(temp & EnablePALM) SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1618 else if(temp & EnablePALN) SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1621 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1629 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_SetTVMode()
1631 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1633 SiS_Pr->SiS_TVMode |= TVSetPALN; in SiS_SetTVMode()
1635 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1636 SiS_Pr->SiS_TVMode &= ~TVSetPAL; in SiS_SetTVMode()
1638 SiS_Pr->SiS_TVMode |= TVSetPALM; in SiS_SetTVMode()
1642 SiS_Pr->SiS_TVMode |= TVSetNTSCJ; in SiS_SetTVMode()
1645 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetTVMode()
1646 if(SiS_Pr->SiS_CHOverScan) { in SiS_SetTVMode()
1647 if((temp1 & 0x10) || (SiS_Pr->SiS_CHOverScan == 1)) { in SiS_SetTVMode()
1648 SiS_Pr->SiS_TVMode |= TVSetCHOverScan; in SiS_SetTVMode()
1652 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1653 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetTVMode()
1655 if(temp1 == 0x00) SiS_Pr->SiS_TVMode |= TVSetYPbPr525i; in SiS_SetTVMode()
1656 else if(temp1 == 0x20) SiS_Pr->SiS_TVMode |= TVSetYPbPr525p; in SiS_SetTVMode()
1657 else if(temp1 == 0x40) SiS_Pr->SiS_TVMode |= TVSetYPbPr750p; in SiS_SetTVMode()
1658 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1659 SiS_Pr->SiS_TVMode |= (TVSetHiVision | TVSetPAL); in SiS_SetTVMode()
1661 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToYPbPr525750 | SetCRT2ToHiVision)) { in SiS_SetTVMode()
1663 SiS_Pr->SiS_TVMode |= TVAspect169; in SiS_SetTVMode()
1665 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x39); in SiS_SetTVMode()
1667 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetHiVision)) { in SiS_SetTVMode()
1668 SiS_Pr->SiS_TVMode |= TVAspect169; in SiS_SetTVMode()
1670 SiS_Pr->SiS_TVMode |= TVAspect43LB; in SiS_SetTVMode()
1673 SiS_Pr->SiS_TVMode |= TVAspect43; in SiS_SetTVMode()
1680 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1682 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetTVMode()
1684 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetTVMode()
1685 SiS_Pr->SiS_TVMode |= TVSetPAL; in SiS_SetTVMode()
1686 SiS_Pr->SiS_TVMode &= ~(TVSetPALM | TVSetPALN | TVSetNTSCJ); in SiS_SetTVMode()
1687 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetTVMode()
1688 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525i | TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetTVMode()
1689 SiS_Pr->SiS_TVMode &= ~(TVSetPAL | TVSetNTSCJ | TVSetPALM | TVSetPALN); in SiS_SetTVMode()
1693 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetTVMode()
1694 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_SetTVMode()
1695 SiS_Pr->SiS_TVMode |= TVSetTVSimuMode; in SiS_SetTVMode()
1699 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetTVMode()
1701 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_SetTVMode()
1702 SiS_Pr->SiS_TVMode |= TVSet525p1024; in SiS_SetTVMode()
1703 } else if(!(SiS_Pr->SiS_TVMode & (TVSetHiVision | TVSetYPbPr750p))) { in SiS_SetTVMode()
1704 SiS_Pr->SiS_TVMode |= TVSetNTSC1024; in SiS_SetTVMode()
1709 SiS_Pr->SiS_TVMode |= TVRPLLDIV2XO; in SiS_SetTVMode()
1710 if((SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) && in SiS_SetTVMode()
1711 (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetTVMode()
1712 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1713 } else if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetTVMode()
1714 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1715 } else if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) { in SiS_SetTVMode()
1716 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetTVMode()
1717 SiS_Pr->SiS_TVMode &= ~TVRPLLDIV2XO; in SiS_SetTVMode()
1723 SiS_Pr->SiS_VBInfo &= ~SetPALTV; in SiS_SetTVMode()
1731 SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr) in SiS_GetBIOSLCDResInfo() argument
1733 unsigned short temp = SiS_Pr->SiS_LCDResInfo; in SiS_GetBIOSLCDResInfo()
1744 SiS_GetLCDInfoBIOS(struct SiS_Private *SiS_Pr) in SiS_GetLCDInfoBIOS() argument
1750 if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetLCDInfoBIOS()
1751 if((temp = SISGETROMW(6)) != SiS_Pr->PanelHT) { in SiS_GetLCDInfoBIOS()
1752 SiS_Pr->SiS_NeedRomModeData = true; in SiS_GetLCDInfoBIOS()
1753 SiS_Pr->PanelHT = temp; in SiS_GetLCDInfoBIOS()
1755 if((temp = SISGETROMW(8)) != SiS_Pr->PanelVT) { in SiS_GetLCDInfoBIOS()
1756 SiS_Pr->SiS_NeedRomModeData = true; in SiS_GetLCDInfoBIOS()
1757 SiS_Pr->PanelVT = temp; in SiS_GetLCDInfoBIOS()
1759 SiS_Pr->PanelHRS = SISGETROMW(10); in SiS_GetLCDInfoBIOS()
1760 SiS_Pr->PanelHRE = SISGETROMW(12); in SiS_GetLCDInfoBIOS()
1761 SiS_Pr->PanelVRS = SISGETROMW(14); in SiS_GetLCDInfoBIOS()
1762 SiS_Pr->PanelVRE = SISGETROMW(16); in SiS_GetLCDInfoBIOS()
1763 SiS_Pr->PanelVCLKIdx315 = VCLK_CUSTOM_315; in SiS_GetLCDInfoBIOS()
1764 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].CLOCK = in SiS_GetLCDInfoBIOS()
1765 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].CLOCK = (unsigned short)((unsigned char)ROMAddr[18]); in SiS_GetLCDInfoBIOS()
1766 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2B = in SiS_GetLCDInfoBIOS()
1767 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_A = ROMAddr[19]; in SiS_GetLCDInfoBIOS()
1768 SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2C = in SiS_GetLCDInfoBIOS()
1769 SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_B = ROMAddr[20]; in SiS_GetLCDInfoBIOS()
1776 SiS_CheckScaling(struct SiS_Private *SiS_Pr, unsigned short resinfo, in SiS_CheckScaling() argument
1782 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) || in SiS_CheckScaling()
1783 (SiS_Pr->UsePanelScaler == -1)) { in SiS_CheckScaling()
1784 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_CheckScaling()
1792 SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetLCDResInfo() argument
1797 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_GetLCDResInfo()
1806 SiS_Pr->SiS_LCDResInfo = 0; in SiS_GetLCDResInfo()
1807 SiS_Pr->SiS_LCDTypeInfo = 0; in SiS_GetLCDResInfo()
1808 SiS_Pr->SiS_LCDInfo = 0; in SiS_GetLCDResInfo()
1809 SiS_Pr->PanelHRS = 999; /* HSync start */ in SiS_GetLCDResInfo()
1810 SiS_Pr->PanelHRE = 999; /* HSync end */ in SiS_GetLCDResInfo()
1811 SiS_Pr->PanelVRS = 999; /* VSync start */ in SiS_GetLCDResInfo()
1812 SiS_Pr->PanelVRE = 999; /* VSync end */ in SiS_GetLCDResInfo()
1813 SiS_Pr->SiS_NeedRomModeData = false; in SiS_GetLCDResInfo()
1816 SiS_Pr->Alternate1600x1200 = false; in SiS_GetLCDResInfo()
1818 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA))) return; in SiS_GetLCDResInfo()
1820 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetLCDResInfo()
1822 if((ModeNo > 0x13) && (!SiS_Pr->UseCustomMode)) { in SiS_GetLCDResInfo()
1823 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetLCDResInfo()
1824 modexres = SiS_Pr->SiS_ModeResInfo[resinfo].HTotal; in SiS_GetLCDResInfo()
1825 modeyres = SiS_Pr->SiS_ModeResInfo[resinfo].VTotal; in SiS_GetLCDResInfo()
1828 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_GetLCDResInfo()
1833 if((SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_GetLCDResInfo()
1834 SiS_Pr->SiS_LCDTypeInfo = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x39) & 0x7c) >> 2; in SiS_GetLCDResInfo()
1835 } else if((SiS_Pr->ChipType < SIS_315H) || (SiS_Pr->ChipType >= SIS_661)) { in SiS_GetLCDResInfo()
1836 SiS_Pr->SiS_LCDTypeInfo = temp >> 4; in SiS_GetLCDResInfo()
1838 SiS_Pr->SiS_LCDTypeInfo = (temp & 0x0F) - 1; in SiS_GetLCDResInfo()
1842 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
1844 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_GetLCDResInfo()
1854 if(SiS_Pr->ChipType == SIS_550) { in SiS_GetLCDResInfo()
1858 } else if(SiS_Pr->ChipType >= SIS_661) { in SiS_GetLCDResInfo()
1863 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* SiS LVDS */ in SiS_GetLCDResInfo()
1867 if(SiS_Pr->SiS_ROMNew) { in SiS_GetLCDResInfo()
1874 SiS_Pr->SiS_LCDResInfo = temp; in SiS_GetLCDResInfo()
1877 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
1878 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetLCDResInfo()
1879 SiS_Pr->SiS_LCDResInfo = Panel_Barco1366; in SiS_GetLCDResInfo()
1880 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL848) { in SiS_GetLCDResInfo()
1881 SiS_Pr->SiS_LCDResInfo = Panel_848x480; in SiS_GetLCDResInfo()
1882 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetLCDResInfo()
1883 SiS_Pr->SiS_LCDResInfo = Panel_856x480; in SiS_GetLCDResInfo()
1888 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetLCDResInfo()
1889 if(SiS_Pr->SiS_LCDResInfo < SiS_Pr->SiS_PanelMin301) in SiS_GetLCDResInfo()
1890 SiS_Pr->SiS_LCDResInfo = SiS_Pr->SiS_PanelMin301; in SiS_GetLCDResInfo()
1892 if(SiS_Pr->SiS_LCDResInfo < SiS_Pr->SiS_PanelMinLVDS) in SiS_GetLCDResInfo()
1893 SiS_Pr->SiS_LCDResInfo = SiS_Pr->SiS_PanelMinLVDS; in SiS_GetLCDResInfo()
1896 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); in SiS_GetLCDResInfo()
1897 SiS_Pr->SiS_LCDInfo = temp & ~0x000e; in SiS_GetLCDResInfo()
1901 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
1906 SiS_Pr->SiS_LCDInfo &= ~DontExpandLCD; in SiS_GetLCDResInfo()
1909 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1912 panelcanscale = (bool)(SiS_Pr->SiS_LCDInfo & DontExpandLCD); in SiS_GetLCDResInfo()
1914 if(!SiS_Pr->UsePanelScaler) SiS_Pr->SiS_LCDInfo &= ~DontExpandLCD; in SiS_GetLCDResInfo()
1915 else if(SiS_Pr->UsePanelScaler == 1) SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
1919 if(SiS_Pr->ChipType >= SIS_661) { in SiS_GetLCDResInfo()
1920 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
1921 if(temp & 0x08) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1923 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1924 if(SiS_Pr->SiS_ROMNew) { in SiS_GetLCDResInfo()
1925 if(temp & 0x02) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1926 } else if((myptr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetLCDResInfo()
1927 if(myptr[2] & 0x01) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1930 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetLCDResInfo()
1931 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
1932 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x39) & 0x01) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1934 if((SiS_Pr->SiS_ROMNew) && (!(SiS_Pr->PanelSelfDetected))) { in SiS_GetLCDResInfo()
1935 SiS_Pr->SiS_LCDInfo &= ~(LCDRGB18Bit); in SiS_GetLCDResInfo()
1936 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); in SiS_GetLCDResInfo()
1937 if(temp & 0x01) SiS_Pr->SiS_LCDInfo |= LCDRGB18Bit; in SiS_GetLCDResInfo()
1938 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1939 if(temp & 0x02) SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1941 } else if(!(SiS_Pr->SiS_ROMNew)) { in SiS_GetLCDResInfo()
1942 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_GetLCDResInfo()
1943 if((SiS_Pr->SiS_CustomT == CUT_CLEVO1024) && in SiS_GetLCDResInfo()
1944 (SiS_Pr->SiS_LCDResInfo == Panel_1024x768)) { in SiS_GetLCDResInfo()
1945 SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1947 if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_GetLCDResInfo()
1948 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_GetLCDResInfo()
1949 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) || in SiS_GetLCDResInfo()
1950 (SiS_Pr->SiS_LCDResInfo == Panel_1680x1050)) { in SiS_GetLCDResInfo()
1951 SiS_Pr->SiS_LCDInfo |= LCDDualLink; in SiS_GetLCDResInfo()
1959 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetLCDResInfo()
1961 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1962 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetLCDResInfo()
1963 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_GetLCDResInfo()
1965 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1968 if(panelcanscale) SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
1969 if(SiS_Pr->CenterScreen == 1) SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
1973 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
1974 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
1976 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
1979 case Panel_320x240_3: SiS_Pr->PanelXRes = 640; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1980 SiS_Pr->PanelVRS = 24; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1981 SiS_Pr->PanelVCLKIdx300 = VCLK28; in SiS_GetLCDResInfo()
1982 SiS_Pr->PanelVCLKIdx315 = VCLK28; in SiS_GetLCDResInfo()
1984 case Panel_640x480: SiS_Pr->PanelXRes = 640; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
1985 SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
1986 SiS_Pr->PanelVCLKIdx300 = VCLK28; in SiS_GetLCDResInfo()
1987 SiS_Pr->PanelVCLKIdx315 = VCLK28; in SiS_GetLCDResInfo()
1989 case Panel_800x600: SiS_Pr->PanelXRes = 800; SiS_Pr->PanelYRes = 600; in SiS_GetLCDResInfo()
1990 SiS_Pr->PanelHT = 1056; SiS_Pr->PanelVT = 628; in SiS_GetLCDResInfo()
1991 SiS_Pr->PanelHRS = 40; SiS_Pr->PanelHRE = 128; in SiS_GetLCDResInfo()
1992 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 4; in SiS_GetLCDResInfo()
1993 SiS_Pr->PanelVCLKIdx300 = VCLK40; in SiS_GetLCDResInfo()
1994 SiS_Pr->PanelVCLKIdx315 = VCLK40; in SiS_GetLCDResInfo()
1996 case Panel_1024x600: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 600; in SiS_GetLCDResInfo()
1997 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 800; in SiS_GetLCDResInfo()
1998 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
1999 SiS_Pr->PanelVRS = 2 /* 88 */ ; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2000 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
2001 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
2003 case Panel_1024x768: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
2004 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
2005 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
2006 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2007 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
2008 SiS_Pr->PanelHRS = 23; in SiS_GetLCDResInfo()
2009 SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
2011 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
2012 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
2013 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2015 case Panel_1152x768: SiS_Pr->PanelXRes = 1152; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
2016 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
2017 SiS_Pr->PanelHRS = 24; SiS_Pr->PanelHRE = 136; in SiS_GetLCDResInfo()
2018 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2019 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
2020 SiS_Pr->PanelHRS = 23; in SiS_GetLCDResInfo()
2021 SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
2023 SiS_Pr->PanelVCLKIdx300 = VCLK65_300; in SiS_GetLCDResInfo()
2024 SiS_Pr->PanelVCLKIdx315 = VCLK65_315; in SiS_GetLCDResInfo()
2026 case Panel_1152x864: SiS_Pr->PanelXRes = 1152; SiS_Pr->PanelYRes = 864; in SiS_GetLCDResInfo()
2028 case Panel_1280x720: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 720; in SiS_GetLCDResInfo()
2029 SiS_Pr->PanelHT = 1650; SiS_Pr->PanelVT = 750; in SiS_GetLCDResInfo()
2030 SiS_Pr->PanelHRS = 110; SiS_Pr->PanelHRE = 40; in SiS_GetLCDResInfo()
2031 SiS_Pr->PanelVRS = 5; SiS_Pr->PanelVRE = 5; in SiS_GetLCDResInfo()
2032 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x720; in SiS_GetLCDResInfo()
2034 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2036 case Panel_1280x768: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
2037 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
2038 SiS_Pr->PanelHT = 1408; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
2039 SiS_Pr->PanelVCLKIdx300 = VCLK81_300; /* ? */ in SiS_GetLCDResInfo()
2040 SiS_Pr->PanelVCLKIdx315 = VCLK81_315; /* ? */ in SiS_GetLCDResInfo()
2042 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 802; in SiS_GetLCDResInfo()
2043 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2044 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2045 SiS_Pr->PanelVCLKIdx300 = VCLK81_300; in SiS_GetLCDResInfo()
2046 SiS_Pr->PanelVCLKIdx315 = VCLK81_315; in SiS_GetLCDResInfo()
2049 case Panel_1280x768_2: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
2050 SiS_Pr->PanelHT = 1660; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
2051 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2052 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2053 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x768_2; in SiS_GetLCDResInfo()
2054 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2056 case Panel_1280x800: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 800; in SiS_GetLCDResInfo()
2057 SiS_Pr->PanelHT = 1408; SiS_Pr->PanelVT = 816; in SiS_GetLCDResInfo()
2058 SiS_Pr->PanelHRS = 21; SiS_Pr->PanelHRE = 24; in SiS_GetLCDResInfo()
2059 SiS_Pr->PanelVRS = 4; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2060 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x800_315; in SiS_GetLCDResInfo()
2061 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2063 case Panel_1280x800_2: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 800; in SiS_GetLCDResInfo()
2064 SiS_Pr->PanelHT = 1552; SiS_Pr->PanelVT = 812; in SiS_GetLCDResInfo()
2065 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2066 SiS_Pr->PanelVRS = 4; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2067 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x800_315_2; in SiS_GetLCDResInfo()
2068 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2070 case Panel_1280x854: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 854; in SiS_GetLCDResInfo()
2071 SiS_Pr->PanelHT = 1664; SiS_Pr->PanelVT = 861; in SiS_GetLCDResInfo()
2072 SiS_Pr->PanelHRS = 16; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2073 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2074 SiS_Pr->PanelVCLKIdx315 = VCLK_1280x854; in SiS_GetLCDResInfo()
2075 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2077 case Panel_1280x960: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 960; in SiS_GetLCDResInfo()
2078 SiS_Pr->PanelHT = 1800; SiS_Pr->PanelVT = 1000; in SiS_GetLCDResInfo()
2079 SiS_Pr->PanelVCLKIdx300 = VCLK108_3_300; in SiS_GetLCDResInfo()
2080 SiS_Pr->PanelVCLKIdx315 = VCLK108_3_315; in SiS_GetLCDResInfo()
2082 SiS_Pr->PanelVCLKIdx300 = VCLK100_300; in SiS_GetLCDResInfo()
2083 SiS_Pr->PanelVCLKIdx315 = VCLK100_315; in SiS_GetLCDResInfo()
2086 case Panel_1280x1024: SiS_Pr->PanelXRes = 1280; SiS_Pr->PanelYRes = 1024; in SiS_GetLCDResInfo()
2087 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
2088 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2089 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2090 SiS_Pr->PanelVCLKIdx300 = VCLK108_3_300; in SiS_GetLCDResInfo()
2091 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
2092 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2094 case Panel_1400x1050: SiS_Pr->PanelXRes = 1400; SiS_Pr->PanelYRes = 1050; in SiS_GetLCDResInfo()
2095 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
2096 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 112; in SiS_GetLCDResInfo()
2097 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2098 SiS_Pr->PanelVCLKIdx315 = VCLK108_2_315; in SiS_GetLCDResInfo()
2099 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2101 case Panel_1600x1200: SiS_Pr->PanelXRes = 1600; SiS_Pr->PanelYRes = 1200; in SiS_GetLCDResInfo()
2102 SiS_Pr->PanelHT = 2160; SiS_Pr->PanelVT = 1250; in SiS_GetLCDResInfo()
2103 SiS_Pr->PanelHRS = 64; SiS_Pr->PanelHRE = 192; in SiS_GetLCDResInfo()
2104 SiS_Pr->PanelVRS = 1; SiS_Pr->PanelVRE = 3; in SiS_GetLCDResInfo()
2105 SiS_Pr->PanelVCLKIdx315 = VCLK162_315; in SiS_GetLCDResInfo()
2106 if(SiS_Pr->SiS_VBType & VB_SISTMDSLCDA) { in SiS_GetLCDResInfo()
2107 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_GetLCDResInfo()
2108 SiS_Pr->PanelHT = 1760; SiS_Pr->PanelVT = 1235; in SiS_GetLCDResInfo()
2109 SiS_Pr->PanelHRS = 48; SiS_Pr->PanelHRE = 32; in SiS_GetLCDResInfo()
2110 SiS_Pr->PanelVRS = 2; SiS_Pr->PanelVRE = 4; in SiS_GetLCDResInfo()
2111 SiS_Pr->PanelVCLKIdx315 = VCLK130_315; in SiS_GetLCDResInfo()
2112 SiS_Pr->Alternate1600x1200 = true; in SiS_GetLCDResInfo()
2114 } else if(SiS_Pr->SiS_IF_DEF_LVDS) { in SiS_GetLCDResInfo()
2115 SiS_Pr->PanelHT = 2048; SiS_Pr->PanelVT = 1320; in SiS_GetLCDResInfo()
2116 SiS_Pr->PanelHRS = SiS_Pr->PanelHRE = 999; in SiS_GetLCDResInfo()
2117 SiS_Pr->PanelVRS = SiS_Pr->PanelVRE = 999; in SiS_GetLCDResInfo()
2119 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2121 case Panel_1680x1050: SiS_Pr->PanelXRes = 1680; SiS_Pr->PanelYRes = 1050; in SiS_GetLCDResInfo()
2122 SiS_Pr->PanelHT = 1900; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
2123 SiS_Pr->PanelHRS = 26; SiS_Pr->PanelHRE = 76; in SiS_GetLCDResInfo()
2124 SiS_Pr->PanelVRS = 3; SiS_Pr->PanelVRE = 6; in SiS_GetLCDResInfo()
2125 SiS_Pr->PanelVCLKIdx315 = VCLK121_315; in SiS_GetLCDResInfo()
2126 SiS_GetLCDInfoBIOS(SiS_Pr); in SiS_GetLCDResInfo()
2128 case Panel_Barco1366: SiS_Pr->PanelXRes = 1360; SiS_Pr->PanelYRes = 1024; in SiS_GetLCDResInfo()
2129 SiS_Pr->PanelHT = 1688; SiS_Pr->PanelVT = 1066; in SiS_GetLCDResInfo()
2131 case Panel_848x480: SiS_Pr->PanelXRes = 848; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
2132 SiS_Pr->PanelHT = 1088; SiS_Pr->PanelVT = 525; in SiS_GetLCDResInfo()
2134 case Panel_856x480: SiS_Pr->PanelXRes = 856; SiS_Pr->PanelYRes = 480; in SiS_GetLCDResInfo()
2135 SiS_Pr->PanelHT = 1088; SiS_Pr->PanelVT = 525; in SiS_GetLCDResInfo()
2137 case Panel_Custom: SiS_Pr->PanelXRes = SiS_Pr->CP_MaxX; in SiS_GetLCDResInfo()
2138 SiS_Pr->PanelYRes = SiS_Pr->CP_MaxY; in SiS_GetLCDResInfo()
2139 SiS_Pr->PanelHT = SiS_Pr->CHTotal; in SiS_GetLCDResInfo()
2140 SiS_Pr->PanelVT = SiS_Pr->CVTotal; in SiS_GetLCDResInfo()
2141 if(SiS_Pr->CP_PreferredIndex != -1) { in SiS_GetLCDResInfo()
2142 SiS_Pr->PanelXRes = SiS_Pr->CP_HDisplay[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2143 SiS_Pr->PanelYRes = SiS_Pr->CP_VDisplay[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2144 SiS_Pr->PanelHT = SiS_Pr->CP_HTotal[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2145 SiS_Pr->PanelVT = SiS_Pr->CP_VTotal[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2146 SiS_Pr->PanelHRS = SiS_Pr->CP_HSyncStart[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2147 SiS_Pr->PanelHRE = SiS_Pr->CP_HSyncEnd[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2148 SiS_Pr->PanelVRS = SiS_Pr->CP_VSyncStart[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2149 SiS_Pr->PanelVRE = SiS_Pr->CP_VSyncEnd[SiS_Pr->CP_PreferredIndex]; in SiS_GetLCDResInfo()
2150 SiS_Pr->PanelHRS -= SiS_Pr->PanelXRes; in SiS_GetLCDResInfo()
2151 SiS_Pr->PanelHRE -= SiS_Pr->PanelHRS; in SiS_GetLCDResInfo()
2152 SiS_Pr->PanelVRS -= SiS_Pr->PanelYRes; in SiS_GetLCDResInfo()
2153 SiS_Pr->PanelVRE -= SiS_Pr->PanelVRS; in SiS_GetLCDResInfo()
2154 if(SiS_Pr->CP_PrefClock) { in SiS_GetLCDResInfo()
2156 SiS_Pr->PanelVCLKIdx315 = VCLK_CUSTOM_315; in SiS_GetLCDResInfo()
2157 SiS_Pr->PanelVCLKIdx300 = VCLK_CUSTOM_300; in SiS_GetLCDResInfo()
2158 if(SiS_Pr->ChipType < SIS_315H) idx = VCLK_CUSTOM_300; in SiS_GetLCDResInfo()
2160 SiS_Pr->SiS_VCLKData[idx].CLOCK = in SiS_GetLCDResInfo()
2161 SiS_Pr->SiS_VBVCLKData[idx].CLOCK = SiS_Pr->CP_PrefClock; in SiS_GetLCDResInfo()
2162 SiS_Pr->SiS_VCLKData[idx].SR2B = in SiS_GetLCDResInfo()
2163 SiS_Pr->SiS_VBVCLKData[idx].Part4_A = SiS_Pr->CP_PrefSR2B; in SiS_GetLCDResInfo()
2164 SiS_Pr->SiS_VCLKData[idx].SR2C = in SiS_GetLCDResInfo()
2165 SiS_Pr->SiS_VBVCLKData[idx].Part4_B = SiS_Pr->CP_PrefSR2C; in SiS_GetLCDResInfo()
2169 default: SiS_Pr->PanelXRes = 1024; SiS_Pr->PanelYRes = 768; in SiS_GetLCDResInfo()
2170 SiS_Pr->PanelHT = 1344; SiS_Pr->PanelVT = 806; in SiS_GetLCDResInfo()
2175 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_GetLCDResInfo()
2176 (SiS_Pr->SiS_IF_DEF_DSTN) || in SiS_GetLCDResInfo()
2177 (SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_GetLCDResInfo()
2178 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_GetLCDResInfo()
2179 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLCDResInfo()
2180 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_GetLCDResInfo()
2181 SiS_Pr->PanelHRS = 999; in SiS_GetLCDResInfo()
2182 SiS_Pr->PanelHRE = 999; in SiS_GetLCDResInfo()
2185 if( (SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_GetLCDResInfo()
2186 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_GetLCDResInfo()
2187 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLCDResInfo()
2188 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_GetLCDResInfo()
2189 SiS_Pr->PanelVRS = 999; in SiS_GetLCDResInfo()
2190 SiS_Pr->PanelVRE = 999; in SiS_GetLCDResInfo()
2194 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_GetLCDResInfo()
2196 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (modeflag & NoSupportLCDScale)) { in SiS_GetLCDResInfo()
2198 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2201 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
2206 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2213 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2222 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2231 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2232 if(SiS_Pr->PanelHT == 1650) { in SiS_GetLCDResInfo()
2233 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2243 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2245 case SIS_RI_1280x720: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
2246 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2258 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2267 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2270 case SIS_RI_1280x768: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
2271 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2283 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2287 case SIS_RI_1280x800: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
2288 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2301 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2311 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2321 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2323 case SIS_RI_1280x720: if(SiS_Pr->UsePanelScaler == -1) { in SiS_GetLCDResInfo()
2324 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2327 case SIS_RI_1280x1024: SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetLCDResInfo()
2339 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2349 SiS_CheckScaling(SiS_Pr, resinfo, nonscalingmodes); in SiS_GetLCDResInfo()
2356 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
2357 if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetLCDResInfo()
2358 SiS_Pr->SiS_LCDInfo = 0x80 | 0x40 | 0x20; /* neg h/v sync, RGB24(D0 = 0) */ in SiS_GetLCDResInfo()
2362 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLCDResInfo()
2363 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_GetLCDResInfo()
2364 if(SiS_Pr->SiS_UseROM) { in SiS_GetLCDResInfo()
2367 SiS_Pr->SiS_LCDInfo &= (~DontExpandLCD); in SiS_GetLCDResInfo()
2371 } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_GetLCDResInfo()
2372 if((SiS_Pr->SiS_SetFlag & SetDOSMode) && ((ModeNo == 0x03) || (ModeNo == 0x10))) { in SiS_GetLCDResInfo()
2373 SiS_Pr->SiS_LCDInfo &= (~DontExpandLCD); in SiS_GetLCDResInfo()
2381 if(modexres == SiS_Pr->PanelXRes && modeyres == SiS_Pr->PanelYRes) { in SiS_GetLCDResInfo()
2382 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2385 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_GetLCDResInfo()
2386 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2389 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLCDResInfo()
2391 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2395 if(SiS_Pr->CenterScreen == -1) SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2398 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2401 if((!SiS_Pr->CP_PrefClock) || in SiS_GetLCDResInfo()
2402 (modexres > SiS_Pr->PanelXRes) || (modeyres > SiS_Pr->PanelYRes)) { in SiS_GetLCDResInfo()
2403 SiS_Pr->SiS_LCDInfo |= LCDPass11; in SiS_GetLCDResInfo()
2408 if((SiS_Pr->UseCustomMode) || (SiS_Pr->SiS_CustomT == CUT_UNKNOWNLCD)) { in SiS_GetLCDResInfo()
2409 SiS_Pr->SiS_LCDInfo |= (DontExpandLCD | LCDPass11); in SiS_GetLCDResInfo()
2413 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLCDResInfo()
2414 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetLCDResInfo()
2418 if(!((SiS_Pr->ChipType < SIS_315H) && (SiS_Pr->SiS_SetFlag & SetDOSMode))) { in SiS_GetLCDResInfo()
2420 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_GetLCDResInfo()
2421 if(SiS_Pr->SiS_IF_DEF_TRUMPION == 0) { in SiS_GetLCDResInfo()
2423 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_GetLCDResInfo()
2424 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2427 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x600) { in SiS_GetLCDResInfo()
2428 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLCDResInfo()
2430 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2439 if(SiS_Pr->SiS_IF_DEF_TRUMPION == 1) { in SiS_GetLCDResInfo()
2440 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2441 } else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLCDResInfo()
2442 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2443 } else if(SiS_Pr->SiS_LCDResInfo == Panel_640x480) { in SiS_GetLCDResInfo()
2444 SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2446 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLCDResInfo()
2447 if(resinfo == SIS_RI_512x384) SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2448 } else if(SiS_Pr->SiS_LCDResInfo == Panel_800x600) { in SiS_GetLCDResInfo()
2449 if(resinfo == SIS_RI_400x300) SiS_Pr->SiS_SetFlag |= EnableLVDSDDA; in SiS_GetLCDResInfo()
2457 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetLCDResInfo()
2458 if(SiS_Pr->SiS_VBInfo & SetNotSimuMode) { in SiS_GetLCDResInfo()
2459 SiS_Pr->SiS_SetFlag |= LCDVESATiming; in SiS_GetLCDResInfo()
2462 SiS_Pr->SiS_SetFlag |= LCDVESATiming; in SiS_GetLCDResInfo()
2467 SiS_Pr->SiS_LCDInfo, SiS_Pr->SiS_LCDResInfo, SiS_Pr->SiS_LCDTypeInfo); in SiS_GetLCDResInfo()
2476 SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetVCLK2Ptr() argument
2484 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_GetVCLK2Ptr()
2485 CRT2Index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetVCLK2Ptr()
2486 VCLKIndexGEN = (SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)) >> 2) & 0x03; in SiS_GetVCLK2Ptr()
2489 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetVCLK2Ptr()
2490 CRT2Index = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetVCLK2Ptr()
2491 VCLKIndexGEN = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRTVCLK; in SiS_GetVCLK2Ptr()
2492 VCLKIndexGENCRT = SiS_GetRefCRTVCLK(SiS_Pr, RefreshRateTableIndex, in SiS_GetVCLK2Ptr()
2493 (SiS_Pr->SiS_SetFlag & ProgrammingCRT2) ? SiS_Pr->SiS_UseWideCRT2 : SiS_Pr->SiS_UseWide); in SiS_GetVCLK2Ptr()
2496 if(SiS_Pr->SiS_VBType & VB_SISVB) { /* 30x/B/LV */ in SiS_GetVCLK2Ptr()
2498 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetVCLK2Ptr()
2501 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { /* LCD */ in SiS_GetVCLK2Ptr()
2503 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2504 VCLKIndex = SiS_Pr->PanelVCLKIdx300; in SiS_GetVCLK2Ptr()
2505 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_GetVCLK2Ptr()
2509 VCLKIndex = SiS_Pr->PanelVCLKIdx315; in SiS_GetVCLK2Ptr()
2510 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_GetVCLK2Ptr()
2527 if(SiS_Pr->ChipType <= SIS_315PRO) { in SiS_GetVCLK2Ptr()
2528 if(SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC == 1) VCLKIndex = 0x42; in SiS_GetVCLK2Ptr()
2530 if(SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC == 1) VCLKIndex = 0x00; in SiS_GetVCLK2Ptr()
2533 if(SiS_Pr->ChipType <= SIS_315PRO) { in SiS_GetVCLK2Ptr()
2541 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { /* TV */ in SiS_GetVCLK2Ptr()
2543 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetVCLK2Ptr()
2544 if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) VCLKIndex = HiTVVCLKDIV2; in SiS_GetVCLK2Ptr()
2546 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) VCLKIndex = HiTVSimuVCLK; in SiS_GetVCLK2Ptr()
2547 } else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) VCLKIndex = YPbPr750pVCLK; in SiS_GetVCLK2Ptr()
2548 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) VCLKIndex = TVVCLKDIV2; in SiS_GetVCLK2Ptr()
2549 else if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) VCLKIndex = TVVCLKDIV2; in SiS_GetVCLK2Ptr()
2552 if(SiS_Pr->ChipType < SIS_315H) VCLKIndex += TVCLKBASE_300; in SiS_GetVCLK2Ptr()
2558 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2560 if( (SiS_Pr->ChipType == SIS_630) && in SiS_GetVCLK2Ptr()
2561 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_GetVCLK2Ptr()
2573 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2575 if( (SiS_Pr->ChipType != SIS_630) && in SiS_GetVCLK2Ptr()
2576 (SiS_Pr->ChipType != SIS_300) ) { in SiS_GetVCLK2Ptr()
2587 if(SiS_Pr->SiS_SetFlag & ProgrammingCRT2) { in SiS_GetVCLK2Ptr()
2589 if( (SiS_Pr->SiS_IF_DEF_CH70xx != 0) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) ) { in SiS_GetVCLK2Ptr()
2593 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2594 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetVCLK2Ptr()
2596 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetVCLK2Ptr()
2597 if(SiS_Pr->SiS_CHSOverScan) tempbx = 8; in SiS_GetVCLK2Ptr()
2599 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_GetVCLK2Ptr()
2601 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2602 } else if(SiS_Pr->SiS_TVMode & TVSetPALN) { in SiS_GetVCLK2Ptr()
2604 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx += 1; in SiS_GetVCLK2Ptr()
2608 case 0: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUNTSC; break; in SiS_GetVCLK2Ptr()
2609 case 1: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKONTSC; break; in SiS_GetVCLK2Ptr()
2610 case 2: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPAL; break; in SiS_GetVCLK2Ptr()
2611 case 3: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPAL; break; in SiS_GetVCLK2Ptr()
2612 case 4: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPALM; break; in SiS_GetVCLK2Ptr()
2613 case 5: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPALM; break; in SiS_GetVCLK2Ptr()
2614 case 6: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKUPALN; break; in SiS_GetVCLK2Ptr()
2615 case 7: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPALN; break; in SiS_GetVCLK2Ptr()
2616 case 8: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKSOPAL; break; in SiS_GetVCLK2Ptr()
2617 default: CHTVVCLKPtr = SiS_Pr->SiS_CHTVVCLKOPAL; break; in SiS_GetVCLK2Ptr()
2621 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetVCLK2Ptr()
2623 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2624 VCLKIndex = SiS_Pr->PanelVCLKIdx300; in SiS_GetVCLK2Ptr()
2626 VCLKIndex = SiS_Pr->PanelVCLKIdx315; in SiS_GetVCLK2Ptr()
2631 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) VCLKIndex = 0x44; in SiS_GetVCLK2Ptr()
2634 if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetVCLK2Ptr()
2635 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2648 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2650 if( (SiS_Pr->ChipType == SIS_630) && in SiS_GetVCLK2Ptr()
2651 (SiS_Pr->ChipRevision >= 0x30) ) { in SiS_GetVCLK2Ptr()
2661 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetVCLK2Ptr()
2663 if( (SiS_Pr->ChipType != SIS_630) && in SiS_GetVCLK2Ptr()
2664 (SiS_Pr->ChipType != SIS_300) ) { in SiS_GetVCLK2Ptr()
2668 if(SiS_Pr->ChipType == SIS_730) { in SiS_GetVCLK2Ptr()
2688 SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetCRT2ModeRegs() argument
2696 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2ModeRegs()
2700 modeflag = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2ModeRegs()
2702 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetCRT2ModeRegs()
2704 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xAF,0x40); in SiS_SetCRT2ModeRegs()
2705 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2E,0xF7); in SiS_SetCRT2ModeRegs()
2709 for(i=0,j=4; i<3; i++,j++) SiS_SetReg(SiS_Pr->SiS_Part1Port,j,0); in SiS_SetCRT2ModeRegs()
2710 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2711 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0x7F); in SiS_SetCRT2ModeRegs()
2714 tempcl = SiS_Pr->SiS_ModeType; in SiS_SetCRT2ModeRegs()
2716 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2721 if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_SetCRT2ModeRegs()
2722 tempbl = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32); in SiS_SetCRT2ModeRegs()
2725 if((SiS_Pr->SiS_VBInfo & SetCRT2ToTV) || (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2ModeRegs()
2729 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,tempbl); in SiS_SetCRT2ModeRegs()
2739 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0xA0; in SiS_SetCRT2ModeRegs()
2756 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0x50; in SiS_SetCRT2ModeRegs()
2762 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2764 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2765 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); in SiS_SetCRT2ModeRegs()
2768 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetCRT2ModeRegs()
2769 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); in SiS_SetCRT2ModeRegs()
2770 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2772 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); in SiS_SetCRT2ModeRegs()
2774 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); in SiS_SetCRT2ModeRegs()
2780 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2783 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetCRT2ModeRegs()
2786 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2ModeRegs()
2788 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetCRT2ModeRegs()
2793 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2ModeRegs()
2795 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2798 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,tempah); in SiS_SetCRT2ModeRegs()
2803 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0x08; in SiS_SetCRT2ModeRegs()
2804 else if(!(SiS_IsDualEdge(SiS_Pr))) tempah |= 0x08; in SiS_SetCRT2ModeRegs()
2805 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2E,0xF0,tempah); in SiS_SetCRT2ModeRegs()
2810 if((SiS_Pr->SiS_ModeType == ModeVGA) && (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode))) { in SiS_SetCRT2ModeRegs()
2815 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2816 if(SiS_Pr->PanelXRes < 1280 && SiS_Pr->PanelYRes < 960) tempah &= ~0x80; in SiS_SetCRT2ModeRegs()
2819 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2ModeRegs()
2820 if(!(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p | TVSetYPbPr525p))) { in SiS_SetCRT2ModeRegs()
2821 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetCRT2ModeRegs()
2827 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0D,0x40,tempah); in SiS_SetCRT2ModeRegs()
2830 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2831 if(SiS_Pr->PanelXRes < 1280 && SiS_Pr->PanelYRes < 960) tempah = 0; in SiS_SetCRT2ModeRegs()
2834 if(SiS_IsDualLink(SiS_Pr)) tempah |= 0x40; in SiS_SetCRT2ModeRegs()
2836 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2ModeRegs()
2837 if(SiS_Pr->SiS_TVMode & TVRPLLDIV2XO) { in SiS_SetCRT2ModeRegs()
2842 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0C,tempah); in SiS_SetCRT2ModeRegs()
2846 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2851 if((modeflag & CRT2Mode) && (SiS_Pr->SiS_ModeType > ModeVGA)) { in SiS_SetCRT2ModeRegs()
2852 if(SiS_Pr->SiS_VBInfo & DriverMode) { in SiS_SetCRT2ModeRegs()
2857 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) tempah |= 0x02; in SiS_SetCRT2ModeRegs()
2859 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) tempah ^= 0x01; in SiS_SetCRT2ModeRegs()
2861 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 1; in SiS_SetCRT2ModeRegs()
2863 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2e,0xF0,tempah); in SiS_SetCRT2ModeRegs()
2870 if( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) && (SiS_Pr->SiS_ModeType > ModeVGA) ) { in SiS_SetCRT2ModeRegs()
2875 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0; in SiS_SetCRT2ModeRegs()
2877 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,tempah); in SiS_SetCRT2ModeRegs()
2886 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2ModeRegs()
2888 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
2907 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2909 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_SetCRT2ModeRegs()
2913 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2925 if((IS_SIS740) || (SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_SetCRT2ModeRegs()
2928 if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || in SiS_SetCRT2ModeRegs()
2929 ((SiS_Pr->SiS_ROMNew) && (!(ROMAddr[0x5b] & 0x04)))) { in SiS_SetCRT2ModeRegs()
2933 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,0xcf,tempah); in SiS_SetCRT2ModeRegs()
2934 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,0x3f,tempbl); in SiS_SetCRT2ModeRegs()
2935 } else if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetCRT2ModeRegs()
2937 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2c,0xcf); /* For 301 */ in SiS_SetCRT2ModeRegs()
2938 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); in SiS_SetCRT2ModeRegs()
2939 } else if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetCRT2ModeRegs()
2940 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); /* For 30xLV */ in SiS_SetCRT2ModeRegs()
2941 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x21,0xc0); in SiS_SetCRT2ModeRegs()
2942 } else if(SiS_Pr->SiS_VBType & VB_NoLCD) { /* For 301B-DH */ in SiS_SetCRT2ModeRegs()
2945 if(SiS_Pr->SiS_TVBlue == 0) { in SiS_SetCRT2ModeRegs()
2947 } else if(SiS_Pr->SiS_TVBlue == -1) { in SiS_SetCRT2ModeRegs()
2953 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2954 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,tempbl2,tempah2); in SiS_SetCRT2ModeRegs()
2958 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2960 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_SetCRT2ModeRegs()
2964 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2c,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2965 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,tempbl2,tempah2); in SiS_SetCRT2ModeRegs()
2970 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) tempah = 0x00; in SiS_SetCRT2ModeRegs()
2971 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,0x7f,tempah); in SiS_SetCRT2ModeRegs()
2975 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
2977 if(!(SiS_IsDualEdge(SiS_Pr))) tempah = 0x80; in SiS_SetCRT2ModeRegs()
2979 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,tempbl,tempah); in SiS_SetCRT2ModeRegs()
2984 } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2ModeRegs()
2987 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); in SiS_SetCRT2ModeRegs()
2989 if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || in SiS_SetCRT2ModeRegs()
2990 ((SiS_Pr->SiS_VBType & VB_NoLCD) && in SiS_SetCRT2ModeRegs()
2991 (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD))) { in SiS_SetCRT2ModeRegs()
2992 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x23,0x7F); in SiS_SetCRT2ModeRegs()
2994 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x23,0x80); in SiS_SetCRT2ModeRegs()
3000 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2ModeRegs()
3001 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x0D,0x80); in SiS_SetCRT2ModeRegs()
3002 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetCRT2ModeRegs()
3003 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x3A,0xC0); in SiS_SetCRT2ModeRegs()
3010 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2ModeRegs()
3012 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetCRT2ModeRegs()
3016 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ModeRegs()
3018 if(SiS_IsDualEdge(SiS_Pr)) tempbl = 0xff; in SiS_SetCRT2ModeRegs()
3020 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,tempbl,tempah); in SiS_SetCRT2ModeRegs()
3022 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) { in SiS_SetCRT2ModeRegs()
3023 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_SetCRT2ModeRegs()
3026 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); in SiS_SetCRT2ModeRegs()
3028 } else if(SiS_Pr->ChipType == SIS_550) { in SiS_SetCRT2ModeRegs()
3030 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_SetCRT2ModeRegs()
3031 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2c,0x30); in SiS_SetCRT2ModeRegs()
3047 SiS_GetResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetResInfo() argument
3050 return ((unsigned short)SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo); in SiS_GetResInfo()
3052 return ((unsigned short)SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO); in SiS_GetResInfo()
3056 SiS_GetCRT2ResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_GetCRT2ResInfo() argument
3060 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2ResInfo()
3061 xres = SiS_Pr->CHDisplay; in SiS_GetCRT2ResInfo()
3062 if(SiS_Pr->CModeFlag & HalfDCLK) xres <<= 1; in SiS_GetCRT2ResInfo()
3063 SiS_Pr->SiS_VGAHDE = SiS_Pr->SiS_HDE = xres; in SiS_GetCRT2ResInfo()
3065 SiS_Pr->SiS_VGAVDE = SiS_Pr->SiS_VDE = SiS_Pr->CVDisplay; in SiS_GetCRT2ResInfo()
3069 resindex = SiS_GetResInfo(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetCRT2ResInfo()
3072 xres = SiS_Pr->SiS_StResInfo[resindex].HTotal; in SiS_GetCRT2ResInfo()
3073 yres = SiS_Pr->SiS_StResInfo[resindex].VTotal; in SiS_GetCRT2ResInfo()
3075 xres = SiS_Pr->SiS_ModeResInfo[resindex].HTotal; in SiS_GetCRT2ResInfo()
3076 yres = SiS_Pr->SiS_ModeResInfo[resindex].VTotal; in SiS_GetCRT2ResInfo()
3077 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetCRT2ResInfo()
3080 if(!SiS_Pr->SiS_IF_DEF_DSTN && !SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_GetCRT2ResInfo()
3082 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_IF_DEF_LVDS == 1)) { in SiS_GetCRT2ResInfo()
3083 if((ModeNo != 0x03) && (SiS_Pr->SiS_SetFlag & SetDOSMode)) { in SiS_GetCRT2ResInfo()
3086 if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x3a) & 0x01) { in SiS_GetCRT2ResInfo()
3096 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_GetCRT2ResInfo()
3098 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetCRT2ResInfo()
3099 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2ResInfo()
3101 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2ResInfo()
3102 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2ResInfo()
3110 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2ResInfo()
3115 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_GetCRT2ResInfo()
3120 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2ResInfo()
3129 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2ResInfo()
3130 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToHiVision)) { in SiS_GetCRT2ResInfo()
3135 if(SiS_Pr->SiS_SetFlag & SetDOSMode) { in SiS_GetCRT2ResInfo()
3137 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_GetCRT2ResInfo()
3138 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x17) & 0x80) yres = 480; in SiS_GetCRT2ResInfo()
3140 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x80) yres = 480; in SiS_GetCRT2ResInfo()
3142 if(SiS_Pr->SiS_IF_DEF_DSTN || SiS_Pr->SiS_IF_DEF_FSTN) yres = 480; in SiS_GetCRT2ResInfo()
3146 SiS_Pr->SiS_VGAHDE = SiS_Pr->SiS_HDE = xres; in SiS_GetCRT2ResInfo()
3147 SiS_Pr->SiS_VGAVDE = SiS_Pr->SiS_VDE = yres; in SiS_GetCRT2ResInfo()
3155 SiS_GetCRT2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Ptr() argument
3162 tempal = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetCRT2Ptr()
3164 tempal = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetCRT2Ptr()
3165 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetCRT2Ptr()
3168 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_IF_DEF_LVDS == 0)) { in SiS_GetCRT2Ptr()
3170 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { /* LCD */ in SiS_GetCRT2Ptr()
3172 tempbx = SiS_Pr->SiS_LCDResInfo; in SiS_GetCRT2Ptr()
3173 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx += 32; in SiS_GetCRT2Ptr()
3176 if(SiS_Pr->SiS_LCDResInfo == Panel_1680x1050) { in SiS_GetCRT2Ptr()
3179 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x800) || in SiS_GetCRT2Ptr()
3180 (SiS_Pr->SiS_LCDResInfo == Panel_1280x800_2) || in SiS_GetCRT2Ptr()
3181 (SiS_Pr->SiS_LCDResInfo == Panel_1280x854)) { in SiS_GetCRT2Ptr()
3185 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetCRT2Ptr()
3191 tempal = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC_NS; in SiS_GetCRT2Ptr()
3196 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_GetCRT2Ptr()
3197 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_GetCRT2Ptr()
3198 if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetCRT2Ptr()
3200 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx++; in SiS_GetCRT2Ptr()
3208 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetCRT2Ptr()
3211 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetCRT2Ptr()
3213 if(!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) tempbx = 14; in SiS_GetCRT2Ptr()
3215 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
3216 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempbx = 7; in SiS_GetCRT2Ptr()
3217 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tempbx = 6; in SiS_GetCRT2Ptr()
3219 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) tempbx += 5; in SiS_GetCRT2Ptr()
3221 if(SiS_Pr->SiS_TVMode & TVSetPAL) tempbx = 3; in SiS_GetCRT2Ptr()
3223 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) tempbx += 5; in SiS_GetCRT2Ptr()
3231 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision) { in SiS_GetCRT2Ptr()
3235 if(SiS_Pr->SiS_TVMode & (TVSetPAL | TVSetPALN)) tempal = 9; in SiS_GetCRT2Ptr()
3241 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
3242 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempal = 8; in SiS_GetCRT2Ptr()
3251 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
3252 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tempal = 8; in SiS_GetCRT2Ptr()
3256 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Ptr()
3257 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempal = 9; in SiS_GetCRT2Ptr()
3270 if((SiS_Pr->SiS_IF_DEF_CH70xx) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetCRT2Ptr()
3273 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetCRT2Ptr()
3275 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetCRT2Ptr()
3276 if(SiS_Pr->SiS_CHSOverScan) tempbx = 99; in SiS_GetCRT2Ptr()
3278 if(SiS_Pr->SiS_TVMode & TVSetPALM) tempbx = 94; in SiS_GetCRT2Ptr()
3279 else if(SiS_Pr->SiS_TVMode & TVSetPALN) tempbx = 96; in SiS_GetCRT2Ptr()
3282 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) tempbx++; in SiS_GetCRT2Ptr()
3287 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Ptr()
3305 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Ptr()
3312 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
3315 if(SiS_Pr->SiS_LCDInfo & LCDPass11) tempbx = 30; in SiS_GetCRT2Ptr()
3318 if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SiS_GetCRT2Ptr()
3320 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
3321 } else if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { in SiS_GetCRT2Ptr()
3323 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in SiS_GetCRT2Ptr()
3335 SiS_GetRAMDAC2DATA(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetRAMDAC2DATA() argument
3341 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetRAMDAC2DATA()
3342 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetRAMDAC2DATA()
3346 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetRAMDAC2DATA()
3347 index = SiS_GetModePtr(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetRAMDAC2DATA()
3349 tempax = SiS_Pr->SiS_StandTable[index].CRTC[0]; in SiS_GetRAMDAC2DATA()
3350 tempbx = SiS_Pr->SiS_StandTable[index].CRTC[6]; in SiS_GetRAMDAC2DATA()
3351 temp1 = SiS_Pr->SiS_StandTable[index].CRTC[7]; in SiS_GetRAMDAC2DATA()
3357 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetRAMDAC2DATA()
3358 index = SiS_GetRefCRT1CRTC(SiS_Pr, RefreshRateTableIndex, SiS_Pr->SiS_UseWideCRT2); in SiS_GetRAMDAC2DATA()
3360 tempax = SiS_Pr->SiS_CRT1Table[index].CR[0]; in SiS_GetRAMDAC2DATA()
3361 tempax |= (SiS_Pr->SiS_CRT1Table[index].CR[14] << 8); in SiS_GetRAMDAC2DATA()
3363 tempbx = SiS_Pr->SiS_CRT1Table[index].CR[6]; in SiS_GetRAMDAC2DATA()
3364 tempcx = SiS_Pr->SiS_CRT1Table[index].CR[13] << 8; in SiS_GetRAMDAC2DATA()
3368 temp1 = SiS_Pr->SiS_CRT1Table[index].CR[7]; in SiS_GetRAMDAC2DATA()
3383 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetRAMDAC2DATA()
3384 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = tempbx; in SiS_GetRAMDAC2DATA()
3388 SiS_CalcPanelLinkTiming(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_CalcPanelLinkTiming() argument
3393 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_CalcPanelLinkTiming()
3394 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_CalcPanelLinkTiming()
3395 if(SiS_Pr->UseCustomMode) { in SiS_CalcPanelLinkTiming()
3396 ResIndex = SiS_Pr->CHTotal; in SiS_CalcPanelLinkTiming()
3397 if(SiS_Pr->CModeFlag & HalfDCLK) ResIndex <<= 1; in SiS_CalcPanelLinkTiming()
3398 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = ResIndex; in SiS_CalcPanelLinkTiming()
3399 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_CalcPanelLinkTiming()
3402 ResIndex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_CalcPanelLinkTiming()
3404 ResIndex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC_NS; in SiS_CalcPanelLinkTiming()
3407 if(SiS_Pr->Alternate1600x1200) ResIndex = 0x20; /* 1600x1200 LCDA */ in SiS_CalcPanelLinkTiming()
3408 else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) ResIndex = 0x21; /* 1600x1200 LVDS */ in SiS_CalcPanelLinkTiming()
3410 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_NoScaleData[ResIndex].VGAHT; in SiS_CalcPanelLinkTiming()
3411 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_NoScaleData[ResIndex].VGAVT; in SiS_CalcPanelLinkTiming()
3412 SiS_Pr->SiS_HT = SiS_Pr->SiS_NoScaleData[ResIndex].LCDHT; in SiS_CalcPanelLinkTiming()
3413 SiS_Pr->SiS_VT = SiS_Pr->SiS_NoScaleData[ResIndex].LCDVT; in SiS_CalcPanelLinkTiming()
3416 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_CalcPanelLinkTiming()
3417 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_CalcPanelLinkTiming()
3421 SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; in SiS_CalcPanelLinkTiming()
3422 SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; in SiS_CalcPanelLinkTiming()
3423 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_CalcPanelLinkTiming()
3424 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_CalcPanelLinkTiming()
3425 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT - (SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE); in SiS_CalcPanelLinkTiming()
3426 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT - (SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE); in SiS_CalcPanelLinkTiming()
3431 SiS_GetCRT2DataLVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2DataLVDS() argument
3437 SiS_GetCRT2ResInfo(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetCRT2DataLVDS()
3439 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2DataLVDS()
3440 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2DataLVDS()
3441 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2DataLVDS()
3442 SiS_Pr->SiS_NewFlickerMode = 0; in SiS_GetCRT2DataLVDS()
3443 SiS_Pr->SiS_RVBHRS = 50; in SiS_GetCRT2DataLVDS()
3444 SiS_Pr->SiS_RY1COE = 0; in SiS_GetCRT2DataLVDS()
3445 SiS_Pr->SiS_RY2COE = 0; in SiS_GetCRT2DataLVDS()
3446 SiS_Pr->SiS_RY3COE = 0; in SiS_GetCRT2DataLVDS()
3447 SiS_Pr->SiS_RY4COE = 0; in SiS_GetCRT2DataLVDS()
3448 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2DataLVDS()
3451 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetCRT2DataLVDS()
3454 SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2DataLVDS()
3455 SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); in SiS_GetCRT2DataLVDS()
3461 backup = SiS_Pr->SiS_IF_DEF_LVDS; in SiS_GetCRT2DataLVDS()
3462 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_GetCRT2DataLVDS()
3463 SiS_Pr->SiS_IF_DEF_LVDS = 1; in SiS_GetCRT2DataLVDS()
3466 SiS_GetCRT2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_GetCRT2DataLVDS()
3469 SiS_Pr->SiS_IF_DEF_LVDS = backup; in SiS_GetCRT2DataLVDS()
3472 case 10: LVDSData = SiS_Pr->SiS_LVDS320x240Data_1; break; in SiS_GetCRT2DataLVDS()
3473 case 14: LVDSData = SiS_Pr->SiS_LVDS320x240Data_2; break; in SiS_GetCRT2DataLVDS()
3474 case 12: LVDSData = SiS_Pr->SiS_LVDS640x480Data_1; break; in SiS_GetCRT2DataLVDS()
3475 case 16: LVDSData = SiS_Pr->SiS_LVDS800x600Data_1; break; in SiS_GetCRT2DataLVDS()
3476 case 18: LVDSData = SiS_Pr->SiS_LVDS1024x600Data_1; break; in SiS_GetCRT2DataLVDS()
3477 case 20: LVDSData = SiS_Pr->SiS_LVDS1024x768Data_1; break; in SiS_GetCRT2DataLVDS()
3479 case 80: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_1; break; in SiS_GetCRT2DataLVDS()
3480 case 81: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_2; break; in SiS_GetCRT2DataLVDS()
3481 case 82: LVDSData = SiS_Pr->SiS_LVDSBARCO1024Data_1; break; in SiS_GetCRT2DataLVDS()
3482 case 84: LVDSData = SiS_Pr->SiS_LVDS848x480Data_1; break; in SiS_GetCRT2DataLVDS()
3483 case 85: LVDSData = SiS_Pr->SiS_LVDS848x480Data_2; break; in SiS_GetCRT2DataLVDS()
3485 case 90: LVDSData = SiS_Pr->SiS_CHTVUNTSCData; break; in SiS_GetCRT2DataLVDS()
3486 case 91: LVDSData = SiS_Pr->SiS_CHTVONTSCData; break; in SiS_GetCRT2DataLVDS()
3487 case 92: LVDSData = SiS_Pr->SiS_CHTVUPALData; break; in SiS_GetCRT2DataLVDS()
3488 case 93: LVDSData = SiS_Pr->SiS_CHTVOPALData; break; in SiS_GetCRT2DataLVDS()
3489 case 94: LVDSData = SiS_Pr->SiS_CHTVUPALMData; break; in SiS_GetCRT2DataLVDS()
3490 case 95: LVDSData = SiS_Pr->SiS_CHTVOPALMData; break; in SiS_GetCRT2DataLVDS()
3491 case 96: LVDSData = SiS_Pr->SiS_CHTVUPALNData; break; in SiS_GetCRT2DataLVDS()
3492 case 97: LVDSData = SiS_Pr->SiS_CHTVOPALNData; break; in SiS_GetCRT2DataLVDS()
3493 case 99: LVDSData = SiS_Pr->SiS_CHTVSOPALData; break; in SiS_GetCRT2DataLVDS()
3497 SiS_Pr->SiS_VGAHT = (LVDSData+ResIndex)->VGAHT; in SiS_GetCRT2DataLVDS()
3498 SiS_Pr->SiS_VGAVT = (LVDSData+ResIndex)->VGAVT; in SiS_GetCRT2DataLVDS()
3499 SiS_Pr->SiS_HT = (LVDSData+ResIndex)->LCDHT; in SiS_GetCRT2DataLVDS()
3500 SiS_Pr->SiS_VT = (LVDSData+ResIndex)->LCDVT; in SiS_GetCRT2DataLVDS()
3502 SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2DataLVDS()
3505 if( (!(SiS_Pr->SiS_VBType & VB_SISVB)) && in SiS_GetCRT2DataLVDS()
3506 (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && in SiS_GetCRT2DataLVDS()
3507 (!(SiS_Pr->SiS_LCDInfo & LCDPass11)) ) { in SiS_GetCRT2DataLVDS()
3508 if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) || in SiS_GetCRT2DataLVDS()
3509 (SiS_Pr->SiS_SetFlag & SetDOSMode) ) { in SiS_GetCRT2DataLVDS()
3510 SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; in SiS_GetCRT2DataLVDS()
3511 SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; in SiS_GetCRT2DataLVDS()
3513 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetCRT2DataLVDS()
3515 SiS_Pr->SiS_HDE = 1280; in SiS_GetCRT2DataLVDS()
3516 SiS_Pr->SiS_VDE = 1024; in SiS_GetCRT2DataLVDS()
3526 SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Data301() argument
3539 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetCRT2Data301()
3540 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_GetCRT2Data301()
3541 } else if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3542 modeflag = SiS_Pr->CModeFlag; in SiS_GetCRT2Data301()
3545 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetCRT2Data301()
3546 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_GetCRT2Data301()
3548 resinfo661 = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].ROMMODEIDX661; in SiS_GetCRT2Data301()
3549 if( (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && in SiS_GetCRT2Data301()
3550 (SiS_Pr->SiS_SetFlag & LCDVESATiming) && in SiS_GetCRT2Data301()
3552 (SiS_Pr->SiS_NeedRomModeData) ) { in SiS_GetCRT2Data301()
3553 if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { in SiS_GetCRT2Data301()
3556 ROMAddr = SiS_Pr->VirtualRomBase; in SiS_GetCRT2Data301()
3563 SiS_Pr->SiS_NewFlickerMode = 0; in SiS_GetCRT2Data301()
3564 SiS_Pr->SiS_RVBHRS = 50; in SiS_GetCRT2Data301()
3565 SiS_Pr->SiS_RY1COE = 0; in SiS_GetCRT2Data301()
3566 SiS_Pr->SiS_RY2COE = 0; in SiS_GetCRT2Data301()
3567 SiS_Pr->SiS_RY3COE = 0; in SiS_GetCRT2Data301()
3568 SiS_Pr->SiS_RY4COE = 0; in SiS_GetCRT2Data301()
3569 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2Data301()
3571 SiS_GetCRT2ResInfo(SiS_Pr,ModeNo,ModeIdIndex); in SiS_GetCRT2Data301()
3573 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_GetCRT2Data301()
3575 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3577 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3578 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3579 SiS_Pr->SiS_HDE = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3580 SiS_Pr->SiS_VDE = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3582 tempax = SiS_Pr->CHTotal; in SiS_GetCRT2Data301()
3584 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetCRT2Data301()
3585 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_GetCRT2Data301()
3589 SiS_GetRAMDAC2DATA(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data301()
3593 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_GetCRT2Data301()
3595 SiS_GetCRT2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex, in SiS_GetCRT2Data301()
3599 case 2: TVPtr = SiS_Pr->SiS_ExtHiTVData; break; in SiS_GetCRT2Data301()
3600 case 3: TVPtr = SiS_Pr->SiS_ExtPALData; break; in SiS_GetCRT2Data301()
3601 case 4: TVPtr = SiS_Pr->SiS_ExtNTSCData; break; in SiS_GetCRT2Data301()
3602 case 5: TVPtr = SiS_Pr->SiS_Ext525iData; break; in SiS_GetCRT2Data301()
3603 case 6: TVPtr = SiS_Pr->SiS_Ext525pData; break; in SiS_GetCRT2Data301()
3604 case 7: TVPtr = SiS_Pr->SiS_Ext750pData; break; in SiS_GetCRT2Data301()
3605 case 8: TVPtr = SiS_Pr->SiS_StPALData; break; in SiS_GetCRT2Data301()
3606 case 9: TVPtr = SiS_Pr->SiS_StNTSCData; break; in SiS_GetCRT2Data301()
3607 case 10: TVPtr = SiS_Pr->SiS_St525iData; break; in SiS_GetCRT2Data301()
3608 case 11: TVPtr = SiS_Pr->SiS_St525pData; break; in SiS_GetCRT2Data301()
3609 case 12: TVPtr = SiS_Pr->SiS_St750pData; break; in SiS_GetCRT2Data301()
3610 case 13: TVPtr = SiS_Pr->SiS_St1HiTVData; break; in SiS_GetCRT2Data301()
3611 case 14: TVPtr = SiS_Pr->SiS_St2HiTVData; break; in SiS_GetCRT2Data301()
3612 default: TVPtr = SiS_Pr->SiS_StPALData; break; in SiS_GetCRT2Data301()
3615 SiS_Pr->SiS_RVBHCMAX = (TVPtr+ResIndex)->RVBHCMAX; in SiS_GetCRT2Data301()
3616 SiS_Pr->SiS_RVBHCFACT = (TVPtr+ResIndex)->RVBHCFACT; in SiS_GetCRT2Data301()
3617 SiS_Pr->SiS_VGAHT = (TVPtr+ResIndex)->VGAHT; in SiS_GetCRT2Data301()
3618 SiS_Pr->SiS_VGAVT = (TVPtr+ResIndex)->VGAVT; in SiS_GetCRT2Data301()
3619 SiS_Pr->SiS_HDE = (TVPtr+ResIndex)->TVHDE; in SiS_GetCRT2Data301()
3620 SiS_Pr->SiS_VDE = (TVPtr+ResIndex)->TVVDE; in SiS_GetCRT2Data301()
3621 SiS_Pr->SiS_RVBHRS2 = (TVPtr+ResIndex)->RVBHRS2 & 0x0fff; in SiS_GetCRT2Data301()
3623 SiS_Pr->SiS_RVBHRS = (TVPtr+ResIndex)->HALFRVBHRS; in SiS_GetCRT2Data301()
3624 if(SiS_Pr->SiS_RVBHRS2) { in SiS_GetCRT2Data301()
3625 SiS_Pr->SiS_RVBHRS2 = ((SiS_Pr->SiS_RVBHRS2 + 3) >> 1) - 3; in SiS_GetCRT2Data301()
3627 if((TVPtr+ResIndex)->RVBHRS2 & 0x8000) SiS_Pr->SiS_RVBHRS2 -= tempax; in SiS_GetCRT2Data301()
3628 else SiS_Pr->SiS_RVBHRS2 += tempax; in SiS_GetCRT2Data301()
3631 SiS_Pr->SiS_RVBHRS = (TVPtr+ResIndex)->RVBHRS; in SiS_GetCRT2Data301()
3633 SiS_Pr->SiS_NewFlickerMode = ((TVPtr+ResIndex)->FlickerMode) << 7; in SiS_GetCRT2Data301()
3635 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetCRT2Data301()
3641 SiS_Pr->SiS_NewFlickerMode = 0x40; in SiS_GetCRT2Data301()
3644 if(SiS_Pr->SiS_VGAVDE == 350) SiS_Pr->SiS_TVMode |= TVSetTVSimuMode; in SiS_GetCRT2Data301()
3646 SiS_Pr->SiS_HT = ExtHiTVHT; in SiS_GetCRT2Data301()
3647 SiS_Pr->SiS_VT = ExtHiTVVT; in SiS_GetCRT2Data301()
3648 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_GetCRT2Data301()
3649 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_GetCRT2Data301()
3650 SiS_Pr->SiS_HT = StHiTVHT; in SiS_GetCRT2Data301()
3651 SiS_Pr->SiS_VT = StHiTVVT; in SiS_GetCRT2Data301()
3655 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetCRT2Data301()
3657 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_GetCRT2Data301()
3658 SiS_Pr->SiS_HT = 1650; in SiS_GetCRT2Data301()
3659 SiS_Pr->SiS_VT = 750; in SiS_GetCRT2Data301()
3660 } else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_GetCRT2Data301()
3661 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3662 if(SiS_Pr->SiS_TVMode & TVSet525p1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3663 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3665 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3666 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3667 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3672 SiS_Pr->SiS_RY1COE = (TVPtr+ResIndex)->RY1COE; in SiS_GetCRT2Data301()
3673 SiS_Pr->SiS_RY2COE = (TVPtr+ResIndex)->RY2COE; in SiS_GetCRT2Data301()
3674 SiS_Pr->SiS_RY3COE = (TVPtr+ResIndex)->RY3COE; in SiS_GetCRT2Data301()
3675 SiS_Pr->SiS_RY4COE = (TVPtr+ResIndex)->RY4COE; in SiS_GetCRT2Data301()
3678 SiS_Pr->SiS_RY1COE = 0x00; in SiS_GetCRT2Data301()
3679 SiS_Pr->SiS_RY2COE = 0xf4; in SiS_GetCRT2Data301()
3680 SiS_Pr->SiS_RY3COE = 0x10; in SiS_GetCRT2Data301()
3681 SiS_Pr->SiS_RY4COE = 0x38; in SiS_GetCRT2Data301()
3684 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_GetCRT2Data301()
3685 SiS_Pr->SiS_HT = NTSCHT; in SiS_GetCRT2Data301()
3686 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) SiS_Pr->SiS_HT = NTSC2HT; in SiS_GetCRT2Data301()
3687 SiS_Pr->SiS_VT = NTSCVT; in SiS_GetCRT2Data301()
3689 SiS_Pr->SiS_HT = PALHT; in SiS_GetCRT2Data301()
3690 SiS_Pr->SiS_VT = PALVT; in SiS_GetCRT2Data301()
3695 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetCRT2Data301()
3697 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3698 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3700 if(SiS_Pr->UseCustomMode) { in SiS_GetCRT2Data301()
3702 SiS_Pr->SiS_HDE = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3703 SiS_Pr->SiS_VDE = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3705 tempax = SiS_Pr->CHTotal; in SiS_GetCRT2Data301()
3707 SiS_Pr->SiS_VGAHT = SiS_Pr->SiS_HT = tempax; in SiS_GetCRT2Data301()
3708 SiS_Pr->SiS_VGAVT = SiS_Pr->SiS_VT = SiS_Pr->CVTotal; in SiS_GetCRT2Data301()
3714 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_GetCRT2Data301()
3716 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3717 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3718 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3719 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3722 } else if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) && (romptr) && (ROMAddr) ) { in SiS_GetCRT2Data301()
3725 SiS_Pr->SiS_RVBHCMAX = ROMAddr[romptr]; in SiS_GetCRT2Data301()
3726 SiS_Pr->SiS_RVBHCFACT = ROMAddr[romptr+1]; in SiS_GetCRT2Data301()
3727 SiS_Pr->SiS_VGAHT = ROMAddr[romptr+2] | ((ROMAddr[romptr+3] & 0x0f) << 8); in SiS_GetCRT2Data301()
3728 SiS_Pr->SiS_VGAVT = (ROMAddr[romptr+4] << 4) | ((ROMAddr[romptr+3] & 0xf0) >> 4); in SiS_GetCRT2Data301()
3729 SiS_Pr->SiS_HT = ROMAddr[romptr+5] | ((ROMAddr[romptr+6] & 0x0f) << 8); in SiS_GetCRT2Data301()
3730 SiS_Pr->SiS_VT = (ROMAddr[romptr+7] << 4) | ((ROMAddr[romptr+6] & 0xf0) >> 4); in SiS_GetCRT2Data301()
3731 SiS_Pr->SiS_RVBHRS2 = ROMAddr[romptr+8] | ((ROMAddr[romptr+9] & 0x0f) << 8); in SiS_GetCRT2Data301()
3732 if((SiS_Pr->SiS_RVBHRS2) && (modeflag & HalfDCLK)) { in SiS_GetCRT2Data301()
3733 SiS_Pr->SiS_RVBHRS2 = ((SiS_Pr->SiS_RVBHRS2 + 3) >> 1) - 3; in SiS_GetCRT2Data301()
3735 if(ROMAddr[romptr+9] & 0x80) SiS_Pr->SiS_RVBHRS2 -= tempax; in SiS_GetCRT2Data301()
3736 else SiS_Pr->SiS_RVBHRS2 += tempax; in SiS_GetCRT2Data301()
3738 if(SiS_Pr->SiS_VGAHT) gotit = true; in SiS_GetCRT2Data301()
3740 SiS_Pr->SiS_LCDInfo |= DontExpandLCD; in SiS_GetCRT2Data301()
3741 SiS_Pr->SiS_LCDInfo &= ~LCDPass11; in SiS_GetCRT2Data301()
3742 SiS_Pr->SiS_RVBHCMAX = 1; in SiS_GetCRT2Data301()
3743 SiS_Pr->SiS_RVBHCFACT = 1; in SiS_GetCRT2Data301()
3744 SiS_Pr->SiS_VGAHT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3745 SiS_Pr->SiS_VGAVT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3746 SiS_Pr->SiS_HT = SiS_Pr->PanelHT; in SiS_GetCRT2Data301()
3747 SiS_Pr->SiS_VT = SiS_Pr->PanelVT; in SiS_GetCRT2Data301()
3748 SiS_Pr->SiS_RVBHRS2 = 0; in SiS_GetCRT2Data301()
3757 SiS_GetCRT2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex, in SiS_GetCRT2Data301()
3761 case Panel_1024x768 : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; in SiS_GetCRT2Data301()
3762 case Panel_1024x768 + 32: LCDPtr = SiS_Pr->SiS_St2LCD1024x768Data; break; in SiS_GetCRT2Data301()
3764 case Panel_1280x720 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x720Data; break; in SiS_GetCRT2Data301()
3765 case Panel_1280x768_2 : LCDPtr = SiS_Pr->SiS_ExtLCD1280x768_2Data; break; in SiS_GetCRT2Data301()
3766 case Panel_1280x768_2+ 32: LCDPtr = SiS_Pr->SiS_StLCD1280x768_2Data; break; in SiS_GetCRT2Data301()
3768 case Panel_1280x800 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x800Data; break; in SiS_GetCRT2Data301()
3770 case Panel_1280x800_2+ 32: LCDPtr = SiS_Pr->SiS_LCD1280x800_2Data; break; in SiS_GetCRT2Data301()
3772 case Panel_1280x854 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x854Data; break; in SiS_GetCRT2Data301()
3774 case Panel_1280x960 + 32: LCDPtr = SiS_Pr->SiS_LCD1280x960Data; break; in SiS_GetCRT2Data301()
3775 case Panel_1280x1024 : LCDPtr = SiS_Pr->SiS_ExtLCD1280x1024Data; break; in SiS_GetCRT2Data301()
3776 case Panel_1280x1024 + 32: LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; in SiS_GetCRT2Data301()
3777 case Panel_1400x1050 : LCDPtr = SiS_Pr->SiS_ExtLCD1400x1050Data; break; in SiS_GetCRT2Data301()
3778 case Panel_1400x1050 + 32: LCDPtr = SiS_Pr->SiS_StLCD1400x1050Data; break; in SiS_GetCRT2Data301()
3779 case Panel_1600x1200 : LCDPtr = SiS_Pr->SiS_ExtLCD1600x1200Data; break; in SiS_GetCRT2Data301()
3780 case Panel_1600x1200 + 32: LCDPtr = SiS_Pr->SiS_StLCD1600x1200Data; break; in SiS_GetCRT2Data301()
3782 case Panel_1680x1050 + 32: LCDPtr = SiS_Pr->SiS_LCD1680x1050Data; break; in SiS_GetCRT2Data301()
3783 case 100 : LCDPtr = SiS_Pr->SiS_NoScaleData; break; in SiS_GetCRT2Data301()
3786 case 201 : LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; in SiS_GetCRT2Data301()
3788 default : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; in SiS_GetCRT2Data301()
3791 SiS_Pr->SiS_RVBHCMAX = (LCDPtr+ResIndex)->RVBHCMAX; in SiS_GetCRT2Data301()
3792 SiS_Pr->SiS_RVBHCFACT = (LCDPtr+ResIndex)->RVBHCFACT; in SiS_GetCRT2Data301()
3793 SiS_Pr->SiS_VGAHT = (LCDPtr+ResIndex)->VGAHT; in SiS_GetCRT2Data301()
3794 SiS_Pr->SiS_VGAVT = (LCDPtr+ResIndex)->VGAVT; in SiS_GetCRT2Data301()
3795 SiS_Pr->SiS_HT = (LCDPtr+ResIndex)->LCDHT; in SiS_GetCRT2Data301()
3796 SiS_Pr->SiS_VT = (LCDPtr+ResIndex)->LCDVT; in SiS_GetCRT2Data301()
3800 tempax = SiS_Pr->PanelXRes; in SiS_GetCRT2Data301()
3801 tempbx = SiS_Pr->PanelYRes; in SiS_GetCRT2Data301()
3803 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetCRT2Data301()
3805 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_GetCRT2Data301()
3806 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetCRT2Data301()
3807 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 560; in SiS_GetCRT2Data301()
3808 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 640; in SiS_GetCRT2Data301()
3811 if (SiS_Pr->SiS_VGAVDE == 357) tempbx = 527; in SiS_GetCRT2Data301()
3812 else if(SiS_Pr->SiS_VGAVDE == 420) tempbx = 620; in SiS_GetCRT2Data301()
3813 else if(SiS_Pr->SiS_VGAVDE == 525) tempbx = 775; in SiS_GetCRT2Data301()
3814 else if(SiS_Pr->SiS_VGAVDE == 600) tempbx = 775; in SiS_GetCRT2Data301()
3815 else if(SiS_Pr->SiS_VGAVDE == 350) tempbx = 560; in SiS_GetCRT2Data301()
3816 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 640; in SiS_GetCRT2Data301()
3820 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 700; in SiS_GetCRT2Data301()
3821 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 800; in SiS_GetCRT2Data301()
3822 else if(SiS_Pr->SiS_VGAVDE == 1024) tempbx = 960; in SiS_GetCRT2Data301()
3825 if (SiS_Pr->SiS_VGAVDE == 360) tempbx = 768; in SiS_GetCRT2Data301()
3826 else if(SiS_Pr->SiS_VGAVDE == 375) tempbx = 800; in SiS_GetCRT2Data301()
3827 else if(SiS_Pr->SiS_VGAVDE == 405) tempbx = 864; in SiS_GetCRT2Data301()
3830 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2Data301()
3831 if (SiS_Pr->SiS_VGAVDE == 350) tempbx = 875; in SiS_GetCRT2Data301()
3832 else if(SiS_Pr->SiS_VGAVDE == 400) tempbx = 1000; in SiS_GetCRT2Data301()
3837 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetCRT2Data301()
3838 tempax = SiS_Pr->SiS_VGAHDE; in SiS_GetCRT2Data301()
3839 tempbx = SiS_Pr->SiS_VGAVDE; in SiS_GetCRT2Data301()
3842 SiS_Pr->SiS_HDE = tempax; in SiS_GetCRT2Data301()
3843 SiS_Pr->SiS_VDE = tempbx; in SiS_GetCRT2Data301()
3849 SiS_GetCRT2Data(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetCRT2Data() argument
3853 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_GetCRT2Data()
3855 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_GetCRT2Data()
3856 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3858 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_GetCRT2Data()
3860 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3862 SiS_GetCRT2Data301(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3868 SiS_GetCRT2DataLVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_GetCRT2Data()
3878 SiS_GetLVDSDesPtr(struct SiS_Private *SiS_Pr) in SiS_GetLVDSDesPtr() argument
3883 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetLVDSDesPtr()
3885 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesPtr()
3886 if(SiS_Pr->SiS_LCDTypeInfo == 4) { in SiS_GetLVDSDesPtr()
3887 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SiS_GetLVDSDesPtr()
3888 PanelDesPtr = SiS_Pr->SiS_PanelType04_1a; in SiS_GetLVDSDesPtr()
3889 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesPtr()
3890 PanelDesPtr = SiS_Pr->SiS_PanelType04_2a; in SiS_GetLVDSDesPtr()
3892 } else if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SiS_GetLVDSDesPtr()
3893 PanelDesPtr = SiS_Pr->SiS_PanelType04_1b; in SiS_GetLVDSDesPtr()
3894 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesPtr()
3895 PanelDesPtr = SiS_Pr->SiS_PanelType04_2b; in SiS_GetLVDSDesPtr()
3906 SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetLVDSDesData() argument
3912 SiS_Pr->SiS_LCDHDES = 0; in SiS_GetLVDSDesData()
3913 SiS_Pr->SiS_LCDVDES = 0; in SiS_GetLVDSDesData()
3916 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_GetLVDSDesData()
3919 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_GetLVDSDesData()
3920 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLVDSDesData()
3921 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3922 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3929 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
3930 if(SiS_Pr->SiS_LCDResInfo == Panel_640x480 && SiS_Pr->SiS_LCDTypeInfo == 3) { in SiS_GetLVDSDesData()
3931 SiS_Pr->SiS_LCDHDES = 8; in SiS_GetLVDSDesData()
3932 if (SiS_Pr->SiS_VGAVDE >= 480) SiS_Pr->SiS_LCDVDES = 512; in SiS_GetLVDSDesData()
3933 else if(SiS_Pr->SiS_VGAVDE >= 400) SiS_Pr->SiS_LCDVDES = 436; in SiS_GetLVDSDesData()
3934 else if(SiS_Pr->SiS_VGAVDE >= 350) SiS_Pr->SiS_LCDVDES = 440; in SiS_GetLVDSDesData()
3941 if( (SiS_Pr->UseCustomMode) || in SiS_GetLVDSDesData()
3942 (SiS_Pr->SiS_LCDResInfo == Panel_Custom) || in SiS_GetLVDSDesData()
3943 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_GetLVDSDesData()
3944 (SiS_Pr->SiS_CustomT == CUT_PANEL856) || in SiS_GetLVDSDesData()
3945 (SiS_Pr->SiS_LCDInfo & LCDPass11) ) { in SiS_GetLVDSDesData()
3949 if(ModeNo <= 0x13) ResIndex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetLVDSDesData()
3950 else ResIndex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetLVDSDesData()
3952 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetLVDSDesData()
3955 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesData()
3957 if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { in SiS_GetLVDSDesData()
3958 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE) / 2); in SiS_GetLVDSDesData()
3960 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3961 SiS_Pr->SiS_LCDVDES = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE) / 2); in SiS_GetLVDSDesData()
3964 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
3965 switch(SiS_Pr->SiS_CustomT) { in SiS_GetLVDSDesData()
3969 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetLVDSDesData()
3970 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3974 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
3976 if(SiS_Pr->SiS_CustomT != CUT_COMPAQ1280) { in SiS_GetLVDSDesData()
3977 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3983 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
3991 if((SiS_Pr->SiS_IF_DEF_CH70xx != 0) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetLVDSDesData()
3993 if((SiS_Pr->SiS_TVMode & TVSetPAL) && (!(SiS_Pr->SiS_TVMode & TVSetPALM))) { in SiS_GetLVDSDesData()
3994 if(ResIndex <= 3) SiS_Pr->SiS_LCDHDES = 256; in SiS_GetLVDSDesData()
3997 } else if((PanelDesPtr = SiS_GetLVDSDesPtr(SiS_Pr))) { in SiS_GetLVDSDesData()
3999 SiS_Pr->SiS_LCDHDES = (PanelDesPtr+ResIndex)->LCDHDES; in SiS_GetLVDSDesData()
4000 SiS_Pr->SiS_LCDVDES = (PanelDesPtr+ResIndex)->LCDVDES; in SiS_GetLVDSDesData()
4002 } else if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_GetLVDSDesData()
4004 if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { in SiS_GetLVDSDesData()
4005 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_VGAHDE) / 2); in SiS_GetLVDSDesData()
4007 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
4008 SiS_Pr->SiS_LCDVDES = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VGAVDE) / 2); in SiS_GetLVDSDesData()
4010 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
4011 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4013 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
4017 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT; in SiS_GetLVDSDesData()
4020 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4028 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
4030 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
4032 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
4033 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4035 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT + 3; in SiS_GetLVDSDesData()
4036 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT; in SiS_GetLVDSDesData()
4037 if(SiS_Pr->SiS_VGAVDE == 400) SiS_Pr->SiS_LCDVDES -= 2; in SiS_GetLVDSDesData()
4038 else SiS_Pr->SiS_LCDVDES -= 4; in SiS_GetLVDSDesData()
4042 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
4043 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4045 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT - 1; in SiS_GetLVDSDesData()
4046 if(SiS_Pr->SiS_VGAVDE <= 400) SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 8; in SiS_GetLVDSDesData()
4047 if(SiS_Pr->SiS_VGAVDE <= 350) SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 12; in SiS_GetLVDSDesData()
4052 if( (SiS_Pr->SiS_VGAHDE == SiS_Pr->PanelXRes) && in SiS_GetLVDSDesData()
4053 (SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) ) { in SiS_GetLVDSDesData()
4054 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4056 SiS_Pr->SiS_LCDHDES = SiS_Pr->PanelHT - 1; in SiS_GetLVDSDesData()
4061 switch(SiS_Pr->SiS_LCDTypeInfo) { in SiS_GetLVDSDesData()
4063 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_LCDVDES = 0; in SiS_GetLVDSDesData()
4066 SiS_Pr->SiS_LCDHDES = 8; in SiS_GetLVDSDesData()
4067 if (SiS_Pr->SiS_VGAVDE >= 480) SiS_Pr->SiS_LCDVDES = 512; in SiS_GetLVDSDesData()
4068 else if(SiS_Pr->SiS_VGAVDE >= 400) SiS_Pr->SiS_LCDVDES = 436; in SiS_GetLVDSDesData()
4069 else if(SiS_Pr->SiS_VGAVDE >= 350) SiS_Pr->SiS_LCDVDES = 440; in SiS_GetLVDSDesData()
4075 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSDesData()
4078 if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { in SiS_GetLVDSDesData()
4079 SiS_Pr->SiS_LCDVDES = SiS_Pr->PanelVT - 1; in SiS_GetLVDSDesData()
4085 SiS_Pr->SiS_LCDVDES = 524; in SiS_GetLVDSDesData()
4092 if((ModeNo <= 0x13) && (SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { in SiS_GetLVDSDesData()
4093 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetLVDSDesData()
4094 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_GetLVDSDesData()
4095 if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 632; in SiS_GetLVDSDesData()
4096 } else if(!(SiS_Pr->SiS_SetFlag & SetDOSMode)) { in SiS_GetLVDSDesData()
4097 if(SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) { in SiS_GetLVDSDesData()
4098 if(SiS_Pr->SiS_LCDResInfo >= Panel_1024x768) { in SiS_GetLVDSDesData()
4099 if(SiS_Pr->ChipType < SIS_315H) { in SiS_GetLVDSDesData()
4100 if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 320; in SiS_GetLVDSDesData()
4103 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) SiS_Pr->SiS_LCDHDES = 480; in SiS_GetLVDSDesData()
4104 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 804; in SiS_GetLVDSDesData()
4105 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 704; in SiS_GetLVDSDesData()
4107 SiS_Pr->SiS_LCDHDES = 320; in SiS_GetLVDSDesData()
4108 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 632; in SiS_GetLVDSDesData()
4109 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 542; in SiS_GetLVDSDesData()
4126 SiS_HandlePWD(struct SiS_Private *SiS_Pr) in SiS_HandlePWD() argument
4130 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_HandlePWD()
4131 unsigned short romptr = GetLCDStructPtr661_2(SiS_Pr); in SiS_HandlePWD()
4132 unsigned char drivermode = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40; in SiS_HandlePWD()
4135 if( (SiS_Pr->SiS_VBType & VB_SISPWD) && in SiS_HandlePWD()
4137 (SiS_Pr->SiS_PWDOffset) ) { in SiS_HandlePWD()
4138 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2b,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 0]); in SiS_HandlePWD()
4139 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2c,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 1]); in SiS_HandlePWD()
4140 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2d,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 2]); in SiS_HandlePWD()
4141 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2e,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 3]); in SiS_HandlePWD()
4142 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2f,ROMAddr[romptr + SiS_Pr->SiS_PWDOffset + 4]); in SiS_HandlePWD()
4148 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x27,0x7f,temp); in SiS_HandlePWD()
4160 SiS_DisableBridge(struct SiS_Private *SiS_Pr) in SiS_DisableBridge() argument
4167 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_DisableBridge()
4169 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* ===== For 30xB/C/LV ===== */ in SiS_DisableBridge()
4171 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
4175 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4176 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4177 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFE); in SiS_DisableBridge()
4179 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4181 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4183 if(SiS_Is301B(SiS_Pr)) { in SiS_DisableBridge()
4184 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1f,0x3f); in SiS_DisableBridge()
4185 SiS_ShortDelay(SiS_Pr,1); in SiS_DisableBridge()
4187 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xDF); in SiS_DisableBridge()
4188 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4189 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4190 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4191 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
4192 if(!(SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_DisableBridge()
4193 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); in SiS_DisableBridge()
4194 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_DisableBridge()
4196 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
4197 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
4198 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4199 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4200 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFD); in SiS_DisableBridge()
4202 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4213 bool custom1 = (SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) || in SiS_DisableBridge()
4214 (SiS_Pr->SiS_CustomT == CUT_CLEVO1400); in SiS_DisableBridge()
4216 modenum = SiS_GetReg(SiS_Pr->SiS_P3d4,0x34) & 0x7f; in SiS_DisableBridge()
4218 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4221 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_DisableBridge()
4222 if(SiS_Pr->SiS_CustomT != CUT_CLEVO1400) { in SiS_DisableBridge()
4223 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_DisableBridge()
4228 didpwd = SiS_HandlePWD(SiS_Pr); in SiS_DisableBridge()
4231 (SiS_IsVAMode(SiS_Pr)) || in SiS_DisableBridge()
4232 (!(SiS_IsDualEdge(SiS_Pr))) ) { in SiS_DisableBridge()
4234 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xfe); in SiS_DisableBridge()
4235 if(custom1) SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4237 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xfc); in SiS_DisableBridge()
4242 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_DisableBridge()
4243 SiS_DDC2Delay(SiS_Pr,0xe000); in SiS_DisableBridge()
4244 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0x00); in SiS_DisableBridge()
4245 pushax = SiS_GetReg(SiS_Pr->SiS_P3c4,0x06); in SiS_DisableBridge()
4247 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x06,0xE3); in SiS_DisableBridge()
4249 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4254 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_DisableBridge()
4257 if(SiS_IsVAMode(SiS_Pr)) tempah = 0xf7; in SiS_DisableBridge()
4258 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x4c,tempah); in SiS_DisableBridge()
4262 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4263 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1F,~0x10); in SiS_DisableBridge()
4267 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_DisableBridge()
4269 if(!(SiS_IsVAMode(SiS_Pr))) tempah = 0xbf; in SiS_DisableBridge()
4271 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1F,tempah); in SiS_DisableBridge()
4273 if((SiS_IsVAMode(SiS_Pr)) || in SiS_DisableBridge()
4274 ((SiS_Pr->SiS_VBType & VB_SISLVDS) && (modenum <= 0x13))) { in SiS_DisableBridge()
4276 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4277 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4278 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4280 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4281 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1E,0xDF); in SiS_DisableBridge()
4285 if((!(SiS_IsVAMode(SiS_Pr))) || in SiS_DisableBridge()
4286 ((SiS_Pr->SiS_VBType & VB_SISLVDS) && (modenum <= 0x13))) { in SiS_DisableBridge()
4288 if(!(SiS_IsDualEdge(SiS_Pr))) { in SiS_DisableBridge()
4289 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xdf); in SiS_DisableBridge()
4290 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4292 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
4294 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4295 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4298 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4299 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_DisableBridge()
4300 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x10); in SiS_DisableBridge()
4301 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4302 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); in SiS_DisableBridge()
4306 if(SiS_IsNotM650orLater(SiS_Pr)) { in SiS_DisableBridge()
4307 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_DisableBridge()
4310 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_DisableBridge()
4312 if( (!(SiS_IsVAMode(SiS_Pr))) && in SiS_DisableBridge()
4313 (!(SiS_CRT2IsLCD(SiS_Pr))) && in SiS_DisableBridge()
4314 (!(SiS_IsDualEdge(SiS_Pr))) ) { in SiS_DisableBridge()
4316 if(custom1) SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4318 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFD); in SiS_DisableBridge()
4320 if(custom1) SiS_PanelDelay(SiS_Pr, 4); in SiS_DisableBridge()
4324 SiS_SetReg(SiS_Pr->SiS_P3c4,0x06,pushax); in SiS_DisableBridge()
4325 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_DisableBridge()
4326 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_DisableBridge()
4327 SiS_PanelDelayLoop(SiS_Pr, 3, 20); in SiS_DisableBridge()
4340 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
4342 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4343 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4344 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4349 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xDF); /* disable VB */ in SiS_DisableBridge()
4350 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4352 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_DisableBridge()
4353 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
4356 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); /* disable lock mode */ in SiS_DisableBridge()
4358 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_DisableBridge()
4359 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SiS_DisableBridge()
4360 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x10); in SiS_DisableBridge()
4361 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_DisableBridge()
4362 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); in SiS_DisableBridge()
4365 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); /* disable CRT2 */ in SiS_DisableBridge()
4366 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
4367 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
4368 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4369 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4378 if(SiS_Pr->ChipType < SIS_315H) { in SiS_DisableBridge()
4382 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_DisableBridge()
4383 SiS_SetCH700x(SiS_Pr,0x0E,0x09); in SiS_DisableBridge()
4386 if(SiS_Pr->ChipType == SIS_730) { in SiS_DisableBridge()
4387 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x08)) { in SiS_DisableBridge()
4388 SiS_WaitVBRetrace(SiS_Pr); in SiS_DisableBridge()
4390 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4391 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4392 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4395 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x08)) { in SiS_DisableBridge()
4396 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_DisableBridge()
4397 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_DisableBridge()
4398 SiS_WaitVBRetrace(SiS_Pr); in SiS_DisableBridge()
4399 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x06) & 0x1c)) { in SiS_DisableBridge()
4400 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4402 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4403 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4409 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4411 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4413 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4414 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
4415 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); in SiS_DisableBridge()
4416 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_DisableBridge()
4418 if( (!(SiS_CRT2IsLCD(SiS_Pr))) || in SiS_DisableBridge()
4419 (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { in SiS_DisableBridge()
4420 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4421 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4430 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_DisableBridge()
4432 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x4c,~0x18); in SiS_DisableBridge()
4436 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_DisableBridge()
4438 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4439 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_DisableBridge()
4441 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_DisableBridge()
4442 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_DisableBridge()
4445 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4446 (SiS_IsTVOrYPbPrOrScart(SiS_Pr)) ) { in SiS_DisableBridge()
4447 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_DisableBridge()
4451 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4452 (SiS_IsVAMode(SiS_Pr)) ) { in SiS_DisableBridge()
4453 SiS_Chrontel701xBLOff(SiS_Pr); in SiS_DisableBridge()
4454 SiS_Chrontel701xOff(SiS_Pr); in SiS_DisableBridge()
4457 if(SiS_Pr->ChipType != SIS_740) { in SiS_DisableBridge()
4458 if( (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4459 (SiS_IsTVOrYPbPrOrScart(SiS_Pr)) ) { in SiS_DisableBridge()
4460 SiS_SetCH701x(SiS_Pr,0x49,0x01); in SiS_DisableBridge()
4466 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4467 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); in SiS_DisableBridge()
4468 SiS_PanelDelay(SiS_Pr, 3); in SiS_DisableBridge()
4471 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4472 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4473 (!(SiS_IsTVOrYPbPrOrScart(SiS_Pr))) ) { in SiS_DisableBridge()
4474 SiS_DisplayOff(SiS_Pr); in SiS_DisableBridge()
4477 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4478 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4479 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4480 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_DisableBridge()
4483 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4484 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_DisableBridge()
4487 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x32,0xDF); in SiS_DisableBridge()
4489 if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4490 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4491 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4492 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); in SiS_DisableBridge()
4495 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4496 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_DisableBridge()
4497 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4498 if(SiS_Pr->ChipType == SIS_550) { in SiS_DisableBridge()
4499 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xbf); in SiS_DisableBridge()
4500 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xef); in SiS_DisableBridge()
4504 if(SiS_Pr->ChipType == SIS_740) { in SiS_DisableBridge()
4505 if(SiS_IsLCDOrLCDA(SiS_Pr)) { in SiS_DisableBridge()
4506 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4508 } else if(SiS_IsVAMode(SiS_Pr)) { in SiS_DisableBridge()
4509 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x1e,0xdf); in SiS_DisableBridge()
4513 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_DisableBridge()
4514 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_DisableBridge()
4517 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); in SiS_DisableBridge()
4521 SiS_UnLockCRT2(SiS_Pr); in SiS_DisableBridge()
4523 if(SiS_Pr->ChipType == SIS_550) { in SiS_DisableBridge()
4524 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x80); /* DirectDVD PAL?*/ in SiS_DisableBridge()
4525 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); /* VB clock / 4 ? */ in SiS_DisableBridge()
4526 } else if( (SiS_Pr->SiS_IF_DEF_CH70xx == 0) || in SiS_DisableBridge()
4527 (!(SiS_IsDualEdge(SiS_Pr))) || in SiS_DisableBridge()
4528 (!(SiS_IsVAMode(SiS_Pr))) ) { in SiS_DisableBridge()
4529 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0xf7); in SiS_DisableBridge()
4532 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_DisableBridge()
4533 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_DisableBridge()
4534 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_DisableBridge()
4535 SiS_PanelDelay(SiS_Pr, 2); in SiS_DisableBridge()
4536 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); in SiS_DisableBridge()
4559 SiS_EnableBridge(struct SiS_Private *SiS_Pr) in SiS_EnableBridge() argument
4567 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_EnableBridge()
4569 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* ====== For 301B et al ====== */ in SiS_EnableBridge()
4571 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4575 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4576 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4577 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_EnableBridge()
4578 } else if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_EnableBridge()
4579 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4581 if(SiS_Pr->SiS_VBType & (VB_SISLVDS | VB_NoLCD)) { in SiS_EnableBridge()
4582 if(!(SiS_CR36BIOSWord23d(SiS_Pr))) { in SiS_EnableBridge()
4583 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4588 if((SiS_Pr->SiS_VBType & VB_NoLCD) && in SiS_EnableBridge()
4589 (SiS_CRT2IsLCD(SiS_Pr))) { in SiS_EnableBridge()
4591 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* Enable CRT2 */ in SiS_EnableBridge()
4592 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4593 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
4594 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xBF); in SiS_EnableBridge()
4595 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4596 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x01,0x1F); in SiS_EnableBridge()
4598 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0x1F,0x40); in SiS_EnableBridge()
4600 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_EnableBridge()
4601 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
4602 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
4603 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4605 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4606 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4612 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; /* lock mode */ in SiS_EnableBridge()
4613 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4614 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4617 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4618 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
4619 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1F,0x20); /* enable VB processor */ in SiS_EnableBridge()
4620 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1F,0xC0); in SiS_EnableBridge()
4621 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4622 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4623 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4624 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
4625 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
4626 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4628 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_EnableBridge()
4648 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4649 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x1f,0xef); in SiS_EnableBridge()
4651 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4652 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_EnableBridge()
4657 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_EnableBridge()
4660 if(SiS_LCDAEnabled(SiS_Pr)) { in SiS_EnableBridge()
4661 if(SiS_TVEnabled(SiS_Pr)) tempah = 0x18; in SiS_EnableBridge()
4664 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4c,tempah); in SiS_EnableBridge()
4668 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4670 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0x00); in SiS_EnableBridge()
4671 SiS_DisplayOff(SiS_Pr); in SiS_EnableBridge()
4672 pushax = SiS_GetReg(SiS_Pr->SiS_P3c4,0x06); in SiS_EnableBridge()
4674 SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x06,0xE3); in SiS_EnableBridge()
4677 didpwd = SiS_HandlePWD(SiS_Pr); in SiS_EnableBridge()
4679 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_EnableBridge()
4681 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x02)) { in SiS_EnableBridge()
4682 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4683 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_EnableBridge()
4684 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4685 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4686 SiS_GenericDelay(SiS_Pr, 17664); in SiS_EnableBridge()
4690 SiS_PanelDelayLoop(SiS_Pr, 3, 2); in SiS_EnableBridge()
4691 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4692 SiS_GenericDelay(SiS_Pr, 17664); in SiS_EnableBridge()
4697 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40)) { in SiS_EnableBridge()
4698 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4704 if(!(SiS_IsVAMode(SiS_Pr))) { in SiS_EnableBridge()
4706 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; in SiS_EnableBridge()
4707 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4708 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4710 if(!(SiS_LCDAEnabled(SiS_Pr))) temp |= 0x20; in SiS_EnableBridge()
4713 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4715 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* enable CRT2 */ in SiS_EnableBridge()
4717 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_EnableBridge()
4718 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4720 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4721 SiS_PanelDelay(SiS_Pr, 2); in SiS_EnableBridge()
4726 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x20); in SiS_EnableBridge()
4730 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1f,0x20); in SiS_EnableBridge()
4731 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4733 if(SiS_Pr->SiS_VBType & VB_SISPOWER) { in SiS_EnableBridge()
4734 if( (SiS_LCDAEnabled(SiS_Pr)) || in SiS_EnableBridge()
4735 (SiS_CRT2IsLCD(SiS_Pr)) ) { in SiS_EnableBridge()
4737 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x2a,0x7f); in SiS_EnableBridge()
4739 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x7f); in SiS_EnableBridge()
4744 if(SiS_IsDualEdge(SiS_Pr)) { in SiS_EnableBridge()
4746 if(!(SiS_IsVAMode(SiS_Pr))) tempah = 0x40; in SiS_EnableBridge()
4748 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1F,tempah); in SiS_EnableBridge()
4750 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_EnableBridge()
4752 SiS_PanelDelay(SiS_Pr, 2); in SiS_EnableBridge()
4754 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x1f,0x10); in SiS_EnableBridge()
4755 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2e,0x80); in SiS_EnableBridge()
4757 if(SiS_Pr->SiS_CustomT != CUT_CLEVO1400) { in SiS_EnableBridge()
4759 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4760 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_EnableBridge()
4761 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4764 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x27,0x0c); in SiS_EnableBridge()
4766 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4768 cr36 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); in SiS_EnableBridge()
4770 if(SiS_Pr->SiS_ROMNew) { in SiS_EnableBridge()
4771 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_EnableBridge()
4772 unsigned short romptr = GetLCDStructPtr661_2(SiS_Pr); in SiS_EnableBridge()
4774 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x20); /* Reset */ in SiS_EnableBridge()
4775 SiS_Pr->EMI_30 = 0; in SiS_EnableBridge()
4776 SiS_Pr->EMI_31 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 0]; in SiS_EnableBridge()
4777 SiS_Pr->EMI_32 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 1]; in SiS_EnableBridge()
4778 SiS_Pr->EMI_33 = ROMAddr[romptr + SiS_Pr->SiS_EMIOffset + 2]; in SiS_EnableBridge()
4779 if(ROMAddr[romptr + 1] & 0x10) SiS_Pr->EMI_30 = 0x40; in SiS_EnableBridge()
4781 SiS_Pr->HaveEMI = SiS_Pr->HaveEMILCD = SiS_Pr->OverruleEMI = true; in SiS_EnableBridge()
4796 if(SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4797 r30 = SiS_Pr->EMI_30; r31 = SiS_Pr->EMI_31; in SiS_EnableBridge()
4798 r32 = SiS_Pr->EMI_32; r33 = SiS_Pr->EMI_33; in SiS_EnableBridge()
4810 if((!SiS_Pr->HaveEMI) || (!SiS_Pr->HaveEMILCD)) { in SiS_EnableBridge()
4814 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) r30 &= ~0x40; in SiS_EnableBridge()
4815 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4823 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) r30 |= 0x40; in SiS_EnableBridge()
4824 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4826 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_EnableBridge()
4833 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4835 if(SiS_Pr->SiS_CustomT == CUT_COMPAL1400_2) { in SiS_EnableBridge()
4842 if(!SiS_Pr->HaveEMI) { in SiS_EnableBridge()
4849 if(!SiS_Pr->OverruleEMI) { in SiS_EnableBridge()
4851 if(SiS_Pr->SiS_CustomT == CUT_COMPAL1400_2) { in SiS_EnableBridge()
4858 if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { in SiS_EnableBridge()
4865 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_EnableBridge()
4876 if(!(SiS_Pr->OverruleEMI && (!r30) && (!r31) && (!r32) && (!r33))) { in SiS_EnableBridge()
4877 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x20); /* Reset */ in SiS_EnableBridge()
4878 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4880 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x31,r31); in SiS_EnableBridge()
4881 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x32,r32); in SiS_EnableBridge()
4882 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x33,r33); in SiS_EnableBridge()
4885 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_EnableBridge()
4888 if( (SiS_LCDAEnabled(SiS_Pr)) || in SiS_EnableBridge()
4889 (SiS_CRT2IsLCD(SiS_Pr)) ) { in SiS_EnableBridge()
4892 SiS_PanelDelayLoop(SiS_Pr, 3, 5); in SiS_EnableBridge()
4894 SiS_PanelDelayLoop(SiS_Pr, 3, 5); in SiS_EnableBridge()
4897 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4898 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4899 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_EnableBridge()
4900 SiS_GenericDelay(SiS_Pr, 1280); in SiS_EnableBridge()
4902 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x30,0x40); /* Enable */ in SiS_EnableBridge()
4910 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4911 if(SiS_IsVAorLCD(SiS_Pr)) { in SiS_EnableBridge()
4912 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4914 SiS_PanelDelayLoop(SiS_Pr, 3, 10); in SiS_EnableBridge()
4916 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4917 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_EnableBridge()
4918 SiS_GenericDelay(SiS_Pr, 2048); in SiS_EnableBridge()
4919 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
4922 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_EnableBridge()
4924 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x03); in SiS_EnableBridge()
4929 SiS_SetReg(SiS_Pr->SiS_P3c4,0x06,pushax); in SiS_EnableBridge()
4930 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4931 SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xff); in SiS_EnableBridge()
4935 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
4936 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
4945 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4946 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4947 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4948 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
4952 temp = SiS_GetReg(SiS_Pr->SiS_P3c4,0x32) & 0xDF; /* lock mode */ in SiS_EnableBridge()
4953 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
4954 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); in SiS_EnableBridge()
4957 SiS_SetReg(SiS_Pr->SiS_P3c4,0x32,temp); in SiS_EnableBridge()
4959 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); /* enable CRT2 */ in SiS_EnableBridge()
4961 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_EnableBridge()
4962 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x2E); in SiS_EnableBridge()
4964 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2E,0x80); /* BVBDOENABLE=1 */ in SiS_EnableBridge()
4968 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x00,0x1F,0x20); /* enable VB processor */ in SiS_EnableBridge()
4970 SiS_VBLongWait(SiS_Pr); in SiS_EnableBridge()
4971 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
4972 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_EnableBridge()
4973 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
4975 SiS_VBLongWait(SiS_Pr); in SiS_EnableBridge()
4977 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4978 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4979 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4980 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
4988 if(SiS_Pr->ChipType < SIS_315H) { in SiS_EnableBridge()
4992 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
4993 if(SiS_Pr->ChipType == SIS_730) { in SiS_EnableBridge()
4994 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4995 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4996 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
4998 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
4999 if(!(SiS_CR36BIOSWord23d(SiS_Pr))) { in SiS_EnableBridge()
5000 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
5004 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
5005 SiS_DisplayOn(SiS_Pr); in SiS_EnableBridge()
5006 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
5007 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xBF); in SiS_EnableBridge()
5008 if(SiS_BridgeInSlavemode(SiS_Pr)) { in SiS_EnableBridge()
5009 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x01,0x1F); in SiS_EnableBridge()
5011 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0x1F,0x40); in SiS_EnableBridge()
5014 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_EnableBridge()
5015 if(!(SiS_CRT2IsLCD(SiS_Pr))) { in SiS_EnableBridge()
5016 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
5017 SiS_SetCH700x(SiS_Pr,0x0E,0x0B); in SiS_EnableBridge()
5021 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
5022 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x13) & 0x40)) { in SiS_EnableBridge()
5023 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x16) & 0x10)) { in SiS_EnableBridge()
5024 if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { in SiS_EnableBridge()
5025 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
5026 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
5028 SiS_WaitVBRetrace(SiS_Pr); in SiS_EnableBridge()
5029 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
5040 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in SiS_EnableBridge()
5042 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x4c,0x18); in SiS_EnableBridge()
5046 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
5047 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
5048 SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x00); in SiS_EnableBridge()
5049 SiS_PanelDelay(SiS_Pr, 0); in SiS_EnableBridge()
5053 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_EnableBridge()
5054 SiS_UnLockCRT2(SiS_Pr); in SiS_EnableBridge()
5056 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0xf7); in SiS_EnableBridge()
5058 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
5059 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_EnableBridge()
5061 SiS_Chrontel701xBLOff(SiS_Pr); in SiS_EnableBridge()
5064 if(SiS_Pr->ChipType != SIS_550) { in SiS_EnableBridge()
5065 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2e,0x7f); in SiS_EnableBridge()
5068 if(SiS_Pr->ChipType == SIS_740) { in SiS_EnableBridge()
5069 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
5070 if(SiS_IsLCDOrLCDA(SiS_Pr)) { in SiS_EnableBridge()
5071 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
5076 temp1 = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x2E); in SiS_EnableBridge()
5078 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2E,0x80); in SiS_EnableBridge()
5081 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
5083 SiS_Chrontel701xBLOn(SiS_Pr); in SiS_EnableBridge()
5087 if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
5088 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
5089 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
5090 if(SiS_Pr->ChipType == SIS_550) { in SiS_EnableBridge()
5091 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x40); in SiS_EnableBridge()
5092 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x10); in SiS_EnableBridge()
5095 } else if(SiS_IsVAMode(SiS_Pr)) { in SiS_EnableBridge()
5096 if(SiS_Pr->ChipType != SIS_740) { in SiS_EnableBridge()
5097 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1E,0x20); in SiS_EnableBridge()
5101 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
5102 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); in SiS_EnableBridge()
5105 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
5106 if(SiS_IsTVOrYPbPrOrScart(SiS_Pr)) { in SiS_EnableBridge()
5107 SiS_Chrontel701xOn(SiS_Pr); in SiS_EnableBridge()
5109 if( (SiS_IsVAMode(SiS_Pr)) || in SiS_EnableBridge()
5110 (SiS_IsLCDOrLCDA(SiS_Pr)) ) { in SiS_EnableBridge()
5111 SiS_ChrontelDoSomething1(SiS_Pr); in SiS_EnableBridge()
5115 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_EnableBridge()
5116 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
5117 if( (SiS_IsVAMode(SiS_Pr)) || in SiS_EnableBridge()
5118 (SiS_IsLCDOrLCDA(SiS_Pr)) ) { in SiS_EnableBridge()
5119 SiS_Chrontel701xBLOn(SiS_Pr); in SiS_EnableBridge()
5120 SiS_ChrontelInitTVVSync(SiS_Pr); in SiS_EnableBridge()
5123 } else if(SiS_Pr->SiS_IF_DEF_CH70xx == 0) { in SiS_EnableBridge()
5124 if(!(SiS_WeHaveBacklightCtrl(SiS_Pr))) { in SiS_EnableBridge()
5125 if(SiS_CRT2IsLCD(SiS_Pr)) { in SiS_EnableBridge()
5126 SiS_PanelDelay(SiS_Pr, 1); in SiS_EnableBridge()
5127 SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x00); in SiS_EnableBridge()
5146 SiS_SetCRT2Offset(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2Offset() argument
5152 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) return; in SiS_SetCRT2Offset()
5154 offset = SiS_GetOffset(SiS_Pr,ModeNo,ModeIdIndex,RRTI); in SiS_SetCRT2Offset()
5156 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x07,(offset & 0xFF)); in SiS_SetCRT2Offset()
5157 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x09,(offset >> 8)); in SiS_SetCRT2Offset()
5161 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x03,temp); in SiS_SetCRT2Offset()
5166 SiS_SetCRT2Sync(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short RefreshRateTableI… in SiS_SetCRT2Sync() argument
5172 if(SiS_Pr->UseCustomMode) { in SiS_SetCRT2Sync()
5173 infoflag = SiS_Pr->CInfoFlag; in SiS_SetCRT2Sync()
5175 infoflag = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_InfoFlag; in SiS_SetCRT2Sync()
5178 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { /* LVDS */ in SiS_SetCRT2Sync()
5180 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Sync()
5182 } else if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (SiS_Pr->SiS_LCDInfo & LCDSync)) { in SiS_SetCRT2Sync()
5183 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
5187 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
5188 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
5189 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_SetCRT2Sync()
5190 (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2Sync()
5193 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_SetCRT2Sync()
5194 (SiS_Pr->SiS_IF_DEF_DSTN) || in SiS_SetCRT2Sync()
5195 (SiS_Pr->SiS_IF_DEF_TRUMPION) || in SiS_SetCRT2Sync()
5196 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_SetCRT2Sync()
5197 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) { in SiS_SetCRT2Sync()
5200 if( (SiS_Pr->SiS_IF_DEF_FSTN) || in SiS_SetCRT2Sync()
5201 (SiS_Pr->SiS_IF_DEF_DSTN) ) { in SiS_SetCRT2Sync()
5205 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Sync()
5206 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2Sync()
5209 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xE7,tempah); in SiS_SetCRT2Sync()
5212 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,0xe0); in SiS_SetCRT2Sync()
5215 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
5218 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2Sync()
5220 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2Sync()
5224 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* 630 - 301B(-DH) */ in SiS_SetCRT2Sync()
5228 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
5229 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
5230 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
5236 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
5238 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
5239 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_SetCRT2Sync()
5240 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
5246 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
5247 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
5257 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* 315 - LVDS */ in SiS_SetCRT2Sync()
5260 if((SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) && in SiS_SetCRT2Sync()
5261 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetCRT2Sync()
5263 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
5264 tempbl = ((SiS_Pr->SiS_LCDInfo & 0xc0) >> 6); in SiS_SetCRT2Sync()
5266 } else if((SiS_Pr->SiS_CustomT == CUT_CLEVO1400) && in SiS_SetCRT2Sync()
5267 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050)) { in SiS_SetCRT2Sync()
5271 tempah = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); in SiS_SetCRT2Sync()
5274 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempbl |= 0x04; in SiS_SetCRT2Sync()
5278 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
5279 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) tempah |= 0xc0; in SiS_SetCRT2Sync()
5280 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
5281 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2Sync()
5282 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
5283 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
5290 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2Sync()
5292 if((SiS_Pr->SiS_VBType & VB_SIS30xC) && (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2Sync()
5294 tempah = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); in SiS_SetCRT2Sync()
5297 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetCRT2Sync()
5298 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetCRT2Sync()
5299 if(SiS_Pr->SiS_LCDInfo & LCDSync) { in SiS_SetCRT2Sync()
5300 tempah = SiS_Pr->SiS_LCDInfo; in SiS_SetCRT2Sync()
5308 if(!(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit)) tempah |= 0x10; in SiS_SetCRT2Sync()
5309 if(SiS_Pr->SiS_VBType & VB_NoLCD) { in SiS_SetCRT2Sync()
5311 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) tempah |= 0xc0; in SiS_SetCRT2Sync()
5313 if((SiS_Pr->SiS_VBType & VB_SIS30xC) && (SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC)) { in SiS_SetCRT2Sync()
5316 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xe7,tempah); in SiS_SetCRT2Sync()
5318 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0F,tempah); in SiS_SetCRT2Sync()
5319 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2Sync()
5320 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetCRT2Sync()
5321 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xf0,tempbl); in SiS_SetCRT2Sync()
5335 SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) in SiS_SetCRT2FIFO_300() argument
5337 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2FIFO_300()
5346 SelectRate_backup = SiS_Pr->SiS_SelectCRT2Rate; in SiS_SetCRT2FIFO_300()
5348 if(!SiS_Pr->CRT1UsesCustomMode) { in SiS_SetCRT2FIFO_300()
5350 CRT1ModeNo = SiS_Pr->SiS_CRT1Mode; /* get CRT1 ModeNo */ in SiS_SetCRT2FIFO_300()
5351 SiS_SearchModeID(SiS_Pr, &CRT1ModeNo, &modeidindex); in SiS_SetCRT2FIFO_300()
5352 SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); in SiS_SetCRT2FIFO_300()
5353 SiS_Pr->SiS_SelectCRT2Rate = 0; in SiS_SetCRT2FIFO_300()
5354 refreshratetableindex = SiS_GetRatePtr(SiS_Pr, CRT1ModeNo, modeidindex); in SiS_SetCRT2FIFO_300()
5358 index = SiS_GetRefCRTVCLK(SiS_Pr, refreshratetableindex, SiS_Pr->SiS_UseWide); in SiS_SetCRT2FIFO_300()
5359 VCLK = SiS_Pr->SiS_VCLKData[index].CLOCK; in SiS_SetCRT2FIFO_300()
5362 colorth = SiS_GetColorDepth(SiS_Pr,CRT1ModeNo,modeidindex) >> 1; in SiS_SetCRT2FIFO_300()
5371 VCLK = SiS_Pr->CSRClock_CRT1; in SiS_SetCRT2FIFO_300()
5374 colorth = colortharray[((SiS_Pr->CModeFlag_CRT1 & ModeTypeMask) - 2)]; in SiS_SetCRT2FIFO_300()
5380 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5381 index = SiS_GetReg(SiS_Pr->SiS_P3c4,0x3A); in SiS_SetCRT2FIFO_300()
5383 index = SiS_GetReg(SiS_Pr->SiS_P3c4,0x1A); in SiS_SetCRT2FIFO_300()
5386 MCLK = SiS_Pr->SiS_MCLKData_0[index].CLOCK; in SiS_SetCRT2FIFO_300()
5388 temp = ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) >> 6) & 0x03) << 1; in SiS_SetCRT2FIFO_300()
5398 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5400 SiS_GetFIFOThresholdIndex300(SiS_Pr, &tempbx, &tempcl); in SiS_SetCRT2FIFO_300()
5405 pci50 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); in SiS_SetCRT2FIFO_300()
5406 pciA0 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xa0); in SiS_SetCRT2FIFO_300()
5408 if(SiS_Pr->ChipType == SIS_730) { in SiS_SetCRT2FIFO_300()
5426 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) & 0x80) index += 12; in SiS_SetCRT2FIFO_300()
5430 data = SiS_GetLatencyFactor630(SiS_Pr, index) + 15; in SiS_SetCRT2FIFO_300()
5431 if(!(SiS_GetReg(SiS_Pr->SiS_P3c4,0x14) & 0x80)) data += 5; in SiS_SetCRT2FIFO_300()
5437 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2FIFO_300()
5438 SiS_Pr->SiS_SelectCRT2Rate = SelectRate_backup; in SiS_SetCRT2FIFO_300()
5440 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2FIFO_300()
5443 SiS_SearchModeID(SiS_Pr, &CRT2ModeNo, &modeidindex); in SiS_SetCRT2FIFO_300()
5445 refreshratetableindex = SiS_GetRatePtr(SiS_Pr, CRT2ModeNo, modeidindex); in SiS_SetCRT2FIFO_300()
5448 index = SiS_GetVCLK2Ptr(SiS_Pr, CRT2ModeNo, modeidindex, refreshratetableindex); in SiS_SetCRT2FIFO_300()
5449 VCLK = SiS_Pr->SiS_VCLKData[index].CLOCK; in SiS_SetCRT2FIFO_300()
5451 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2FIFO_300()
5452 if(SiS_Pr->SiS_UseROM) { in SiS_SetCRT2FIFO_300()
5463 VCLK = SiS_Pr->CSRClock; in SiS_SetCRT2FIFO_300()
5468 colorth = SiS_GetColorDepth(SiS_Pr,CRT2ModeNo,modeidindex) >> 1; in SiS_SetCRT2FIFO_300()
5479 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetCRT2FIFO_300()
5481 if((data <= 0x0f) || (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) in SiS_SetCRT2FIFO_300()
5485 if(( (SiS_Pr->ChipType == SIS_630) || in SiS_SetCRT2FIFO_300()
5486 (SiS_Pr->ChipType == SIS_730) ) && in SiS_SetCRT2FIFO_300()
5487 (SiS_Pr->ChipRevision >= 0x30)) in SiS_SetCRT2FIFO_300()
5490 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x01,0xe0,temp); in SiS_SetCRT2FIFO_300()
5492 if((SiS_Pr->ChipType == SIS_630) && in SiS_SetCRT2FIFO_300()
5493 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_SetCRT2FIFO_300()
5496 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x02,0xe0,data); in SiS_SetCRT2FIFO_300()
5500 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2FIFO_300()
5501 SiS_Pr->SiS_SelectCRT2Rate = SelectRate_backup; in SiS_SetCRT2FIFO_300()
5510 SiS_SetCRT2FIFO_310(struct SiS_Private *SiS_Pr) in SiS_SetCRT2FIFO_310() argument
5512 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,0x3B); in SiS_SetCRT2FIFO_310()
5513 if( (SiS_Pr->ChipType == SIS_760) && in SiS_SetCRT2FIFO_310()
5514 (SiS_Pr->SiS_SysFlags & SF_760LFB) && in SiS_SetCRT2FIFO_310()
5515 (SiS_Pr->SiS_ModeType == Mode32Bpp) && in SiS_SetCRT2FIFO_310()
5516 (SiS_Pr->SiS_VGAHDE >= 1280) && in SiS_SetCRT2FIFO_310()
5517 (SiS_Pr->SiS_VGAVDE >= 1024) ) { in SiS_SetCRT2FIFO_310()
5518 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2f,0x03); in SiS_SetCRT2FIFO_310()
5519 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x01,0x3b); in SiS_SetCRT2FIFO_310()
5520 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4d,0xc0); in SiS_SetCRT2FIFO_310()
5521 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2f,0x01); in SiS_SetCRT2FIFO_310()
5522 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x4d,0xc0); in SiS_SetCRT2FIFO_310()
5523 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x02,0x6e); in SiS_SetCRT2FIFO_310()
5525 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x02,~0x3f,0x04); in SiS_SetCRT2FIFO_310()
5532 SiS_GetVGAHT2(struct SiS_Private *SiS_Pr) in SiS_GetVGAHT2() argument
5536 tempbx = (SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE) * SiS_Pr->SiS_RVBHCMAX; in SiS_GetVGAHT2()
5537 tempax = (SiS_Pr->SiS_VT - SiS_Pr->SiS_VDE) * SiS_Pr->SiS_RVBHCFACT; in SiS_GetVGAHT2()
5538 tempax = (tempax * SiS_Pr->SiS_HT) / tempbx; in SiS_GetVGAHT2()
5544 SiS_SetGroup1_301(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, in SiS_SetGroup1_301() argument
5558 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1_301()
5559 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1_301()
5560 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1_301()
5561 xres = SiS_Pr->CHDisplay; in SiS_SetGroup1_301()
5563 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1_301()
5564 xres = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].XRes; in SiS_SetGroup1_301()
5569 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_301()
5571 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x31,0x04); in SiS_SetGroup1_301()
5575 SiS_Pr->CHTotal = 8224; /* Max HT, 0x2020, results in 0x3ff in registers */ in SiS_SetGroup1_301()
5577 SiS_Pr->CHDisplay = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup1_301()
5578 if(modeflag & HalfDCLK) SiS_Pr->CHDisplay >>= 1; in SiS_SetGroup1_301()
5580 SiS_Pr->CHBlankStart = SiS_Pr->CHDisplay; in SiS_SetGroup1_301()
5581 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup1_301()
5582 SiS_Pr->CHBlankStart += 16; in SiS_SetGroup1_301()
5585 SiS_Pr->CHBlankEnd = 32; in SiS_SetGroup1_301()
5586 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1_301()
5587 if(xres == 1600) SiS_Pr->CHBlankEnd += 80; in SiS_SetGroup1_301()
5590 temp = SiS_Pr->SiS_VGAHT - 96; in SiS_SetGroup1_301()
5592 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetGroup1_301()
5593 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x04); in SiS_SetGroup1_301()
5594 temp |= ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x0b) & 0xc0) << 2); in SiS_SetGroup1_301()
5598 if(SiS_Pr->SiS_RVBHRS2) temp = SiS_Pr->SiS_RVBHRS2; in SiS_SetGroup1_301()
5600 SiS_Pr->CHSyncStart = temp; in SiS_SetGroup1_301()
5602 SiS_Pr->CHSyncEnd = 0xffe8; /* results in 0x2000 in registers */ in SiS_SetGroup1_301()
5604 SiS_Pr->CVTotal = 2049; /* Max VT, 0x0801, results in 0x7ff in registers */ in SiS_SetGroup1_301()
5606 VGAVDE = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_301()
5614 SiS_Pr->CVDisplay = VGAVDE; in SiS_SetGroup1_301()
5616 SiS_Pr->CVBlankStart = SiS_Pr->CVDisplay; in SiS_SetGroup1_301()
5618 SiS_Pr->CVBlankEnd = 1; in SiS_SetGroup1_301()
5619 if(ModeNo == 0x3c) SiS_Pr->CVBlankEnd = 226; in SiS_SetGroup1_301()
5621 temp = (SiS_Pr->SiS_VGAVT - VGAVDE) >> 1; in SiS_SetGroup1_301()
5622 SiS_Pr->CVSyncStart = VGAVDE + temp; in SiS_SetGroup1_301()
5625 SiS_Pr->CVSyncEnd = SiS_Pr->CVSyncStart + temp; in SiS_SetGroup1_301()
5627 SiS_CalcCRRegisters(SiS_Pr, 0); in SiS_SetGroup1_301()
5628 SiS_Pr->CCRT1CRTC[16] &= ~0xE0; in SiS_SetGroup1_301()
5631 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[i]); in SiS_SetGroup1_301()
5634 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5637 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5640 SiS_SetReg(SiS_Pr->SiS_Part1Port,CRTranslation[i],SiS_Pr->CCRT1CRTC[j]); in SiS_SetGroup1_301()
5643 temp = SiS_Pr->CCRT1CRTC[16] & 0xE0; in SiS_SetGroup1_301()
5644 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,CRTranslation[0x0E],0x1F,temp); in SiS_SetGroup1_301()
5646 temp = (SiS_Pr->CCRT1CRTC[16] & 0x01) << 5; in SiS_SetGroup1_301()
5648 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,CRTranslation[0x09],0x5F,temp); in SiS_SetGroup1_301()
5651 temp |= (SiS_GetReg(SiS_Pr->SiS_P3c4,0x01) & 0x01); in SiS_SetGroup1_301()
5653 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,temp); /* SR01: HalfDCLK[3], 8/9 div dotclock[… in SiS_SetGroup1_301()
5655 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0F,0x00); /* CR14: (text mode: underline location… in SiS_SetGroup1_301()
5656 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x12,0x00); /* CR17: n/a */ in SiS_SetGroup1_301()
5659 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup1_301()
5660 temp = (SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) << 7; in SiS_SetGroup1_301()
5662 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1A,temp); /* SR0E, dither[7] */ in SiS_SetGroup1_301()
5664 temp = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); in SiS_SetGroup1_301()
5665 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); /* ? */ in SiS_SetGroup1_301()
5673 SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup1_LVDS() argument
5688 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1_LVDS()
5689 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_SetGroup1_LVDS()
5691 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetGroup1_LVDS()
5693 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1_LVDS()
5694 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1_LVDS()
5696 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1_LVDS()
5697 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup1_LVDS()
5699 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetGroup1_LVDS()
5704 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) || (SiS_Pr->SiS_VBType & VB_NoLCD)) { in SiS_SetGroup1_LVDS()
5709 if((SiS_Pr->SiS_VBType & VB_SISVB) && (!(SiS_Pr->SiS_VBType & VB_NoLCD))) { in SiS_SetGroup1_LVDS()
5713 if((SiS_Pr->ChipType >= SIS_315H) && (islvds) && (!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA))) { in SiS_SetGroup1_LVDS()
5714 if((!SiS_Pr->SiS_IF_DEF_FSTN) && (!SiS_Pr->SiS_IF_DEF_DSTN)) { in SiS_SetGroup1_LVDS()
5720 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5722 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); in SiS_SetGroup1_LVDS()
5725 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xfb,0x04); in SiS_SetGroup1_LVDS()
5726 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x03); in SiS_SetGroup1_LVDS()
5727 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1_LVDS()
5728 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); in SiS_SetGroup1_LVDS()
5732 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,0xfb,0x04); in SiS_SetGroup1_LVDS()
5733 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x00); in SiS_SetGroup1_LVDS()
5734 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1_LVDS()
5735 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x2D,0x0f); in SiS_SetGroup1_LVDS()
5736 if(SiS_Pr->SiS_VBType & VB_SIS30xC) { in SiS_SetGroup1_LVDS()
5737 if((SiS_Pr->SiS_LCDResInfo == Panel_1024x768) || in SiS_SetGroup1_LVDS()
5738 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetGroup1_LVDS()
5739 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x20); in SiS_SetGroup1_LVDS()
5749 tempax = SiS_Pr->SiS_LCDHDES; in SiS_SetGroup1_LVDS()
5751 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5752 if(!SiS_Pr->SiS_IF_DEF_FSTN && !SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
5753 if((SiS_Pr->SiS_LCDResInfo == Panel_640x480) && in SiS_SetGroup1_LVDS()
5754 (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode))) { in SiS_SetGroup1_LVDS()
5762 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1A,temp); /* BPLHDESKEW[2:0] */ in SiS_SetGroup1_LVDS()
5764 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,temp); /* BPLHDESKEW[10:3] */ in SiS_SetGroup1_LVDS()
5766 tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
5767 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5768 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5769 tempbx = SiS_Pr->PanelXRes; in SiS_SetGroup1_LVDS()
5771 if((SiS_Pr->SiS_LCDResInfo == Panel_320x240_1) || in SiS_SetGroup1_LVDS()
5772 (SiS_Pr->SiS_LCDResInfo == Panel_320x240_2) || in SiS_SetGroup1_LVDS()
5773 (SiS_Pr->SiS_LCDResInfo == Panel_320x240_3)) { in SiS_SetGroup1_LVDS()
5779 if(tempax >= SiS_Pr->SiS_HT) tempax -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5784 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,temp); /* BPLHDEE */ in SiS_SetGroup1_LVDS()
5786 tempcx = (SiS_Pr->SiS_HT - tempbx) >> 2; in SiS_SetGroup1_LVDS()
5788 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5789 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5790 if(SiS_Pr->PanelHRS != 999) tempcx = SiS_Pr->PanelHRS; in SiS_SetGroup1_LVDS()
5795 if(tempcx >= SiS_Pr->SiS_HT) tempcx -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5798 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5799 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
5800 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
5821 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,temp); /* BPLHRS */ in SiS_SetGroup1_LVDS()
5823 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5825 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5827 if(SiS_Pr->PanelHRE != 999) { in SiS_SetGroup1_LVDS()
5828 temp = tempcx + SiS_Pr->PanelHRE; in SiS_SetGroup1_LVDS()
5829 if(temp >= SiS_Pr->SiS_HT) temp -= SiS_Pr->SiS_HT; in SiS_SetGroup1_LVDS()
5839 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,temp); /* BPLHRE */ in SiS_SetGroup1_LVDS()
5843 tempax = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5844 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5845 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5846 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup1_LVDS()
5850 tempbx = SiS_Pr->SiS_LCDVDES + tempax; in SiS_SetGroup1_LVDS()
5851 if(tempbx >= SiS_Pr->SiS_VT) tempbx -= SiS_Pr->SiS_VT; in SiS_SetGroup1_LVDS()
5855 tempcx = SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5856 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5857 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5858 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5859 tempcx = SiS_Pr->SiS_VGAVT - SiS_Pr->PanelYRes; in SiS_SetGroup1_LVDS()
5866 if( (SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) && in SiS_SetGroup1_LVDS()
5867 (!(SiS_Pr->SiS_LCDInfo & LCDPass11)) && in SiS_SetGroup1_LVDS()
5868 (SiS_Pr->PanelVRS != 999) ) { in SiS_SetGroup1_LVDS()
5869 tempcx = SiS_Pr->PanelVRS; in SiS_SetGroup1_LVDS()
5874 if(SiS_Pr->ChipType < SIS_315H) tempbx++; in SiS_SetGroup1_LVDS()
5878 if(tempbx >= SiS_Pr->SiS_VT) tempbx -= SiS_Pr->SiS_VT; in SiS_SetGroup1_LVDS()
5881 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
5882 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
5886 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,temp); /* BPLVRS */ in SiS_SetGroup1_LVDS()
5891 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5892 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SiS_SetGroup1_LVDS()
5893 if(SiS_Pr->PanelVRE != 999) tempcx = SiS_Pr->PanelVRE; in SiS_SetGroup1_LVDS()
5899 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0xF0,temp); /* BPLVRE */ in SiS_SetGroup1_LVDS()
5902 if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
5903 if(SiS_Pr->SiS_HDE != 640) { in SiS_SetGroup1_LVDS()
5904 if(SiS_Pr->SiS_VGAVDE != SiS_Pr->SiS_VDE) temp |= 0x40; in SiS_SetGroup1_LVDS()
5906 } else if(SiS_Pr->SiS_VGAVDE != SiS_Pr->SiS_VDE) temp |= 0x40; in SiS_SetGroup1_LVDS()
5907 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) temp |= 0x40; in SiS_SetGroup1_LVDS()
5909 if((SiS_Pr->ChipType >= SIS_315H) || in SiS_SetGroup1_LVDS()
5910 (SiS_Pr->ChipRevision >= 0x30)) { in SiS_SetGroup1_LVDS()
5912 if((SiS_Pr->SiS_IF_DEF_CH70xx == 1) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup1_LVDS()
5913 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x03) temp |= 0x80; in SiS_SetGroup1_LVDS()
5916 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup1_LVDS()
5917 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1_LVDS()
5918 if(SiS_GetReg(SiS_Pr->SiS_P3c4,0x06) & 0x10) temp |= 0x80; in SiS_SetGroup1_LVDS()
5920 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) temp |= 0x80; in SiS_SetGroup1_LVDS()
5924 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1A,tempbx,temp); in SiS_SetGroup1_LVDS()
5928 tempcx = SiS_Pr->SiS_LCDVDES; /* BPLVDES */ in SiS_SetGroup1_LVDS()
5930 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetGroup1_LVDS()
5931 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_SetGroup1_LVDS()
5933 tempbx = SiS_Pr->SiS_VGAVDE - 1; in SiS_SetGroup1_LVDS()
5934 tempcx = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup1_LVDS()
5937 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5942 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5944 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup1_LVDS()
5950 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5951 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1_LVDS()
5961 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1D,temp); in SiS_SetGroup1_LVDS()
5962 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1C,tempbx); in SiS_SetGroup1_LVDS()
5963 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1B,tempcx); in SiS_SetGroup1_LVDS()
5967 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1_LVDS()
5970 tempeax = SiS_Pr->SiS_VGAVDE << 6; in SiS_SetGroup1_LVDS()
5971 temp = (tempeax % (unsigned int)SiS_Pr->SiS_VDE); in SiS_SetGroup1_LVDS()
5972 tempeax = tempeax / (unsigned int)SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
5975 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) tempeax = 0x3F; in SiS_SetGroup1_LVDS()
5978 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1E,temp); /* BPLVCFACT */ in SiS_SetGroup1_LVDS()
5985 tempeax = SiS_Pr->SiS_VGAVDE << 18; in SiS_SetGroup1_LVDS()
5986 tempebx = SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
5993 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x37,temp); in SiS_SetGroup1_LVDS()
5995 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x36,temp); in SiS_SetGroup1_LVDS()
5997 if(SiS_Pr->SiS_VDE == SiS_Pr->SiS_VGAVDE) temp |= 0x04; in SiS_SetGroup1_LVDS()
5998 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x35,temp); in SiS_SetGroup1_LVDS()
6000 if(SiS_Pr->SiS_VBType & VB_SISPART4SCALER) { in SiS_SetGroup1_LVDS()
6002 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x3c,temp); in SiS_SetGroup1_LVDS()
6004 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x3b,temp); in SiS_SetGroup1_LVDS()
6006 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0x3f,temp); in SiS_SetGroup1_LVDS()
6008 if(SiS_Pr->SiS_VDE != SiS_Pr->SiS_VGAVDE) temp |= 0x08; in SiS_SetGroup1_LVDS()
6009 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x30,0xf3,temp); in SiS_SetGroup1_LVDS()
6017 tempeax = SiS_Pr->SiS_VGAHDE; /* 1f = ( (VGAHDE * 65536) / ( (VGAHDE * 65536) / HDE ) ) - 1*/ in SiS_SetGroup1_LVDS()
6022 if(SiS_Pr->SiS_HDE == tempeax) { in SiS_SetGroup1_LVDS()
6025 tempecx = tempebx / SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
6026 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
6027 if(tempebx % SiS_Pr->SiS_HDE) tempecx++; in SiS_SetGroup1_LVDS()
6031 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
6034 tempeax = ((SiS_Pr->SiS_VGAHT << 16) / tempecx) - 1; in SiS_SetGroup1_LVDS()
6038 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1F,temp); in SiS_SetGroup1_LVDS()
6040 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
6041 tempeax = (SiS_Pr->SiS_VGAVDE << 18) / tempvcfact; in SiS_SetGroup1_LVDS()
6044 tempeax = SiS_Pr->SiS_VGAVDE << 6; in SiS_SetGroup1_LVDS()
6050 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tempbx--; in SiS_SetGroup1_LVDS()
6051 if(SiS_Pr->SiS_SetFlag & EnableLVDSDDA) { in SiS_SetGroup1_LVDS()
6052 if((!SiS_Pr->SiS_IF_DEF_FSTN) && (!SiS_Pr->SiS_IF_DEF_DSTN)) tempbx = 1; in SiS_SetGroup1_LVDS()
6053 else if(SiS_Pr->SiS_LCDResInfo != Panel_640x480) tempbx = 1; in SiS_SetGroup1_LVDS()
6058 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x20,temp); in SiS_SetGroup1_LVDS()
6059 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x21,tempbx); in SiS_SetGroup1_LVDS()
6066 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x22,temp); in SiS_SetGroup1_LVDS()
6068 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x23,temp); in SiS_SetGroup1_LVDS()
6071 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1_LVDS()
6072 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1_LVDS()
6073 if((islvds) || (SiS_Pr->SiS_VBInfo & VB_SISLVDS)) { in SiS_SetGroup1_LVDS()
6074 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1e,0x20); in SiS_SetGroup1_LVDS()
6078 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetGroup1_LVDS()
6079 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x03); in SiS_SetGroup1_LVDS()
6081 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1e,0x23); in SiS_SetGroup1_LVDS()
6089 if(SiS_Pr->SiS_IF_DEF_TRUMPION) { in SiS_SetGroup1_LVDS()
6090 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup1_LVDS()
6097 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1_LVDS()
6100 if(SiS_Pr->SiS_LCDTypeInfo == 0x0e) j += 7; in SiS_SetGroup1_LVDS()
6104 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x02,0xbf); in SiS_SetGroup1_LVDS()
6106 SiS_SetTrumpionBlock(SiS_Pr, trumpdata); in SiS_SetGroup1_LVDS()
6108 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup1_LVDS()
6111 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode13[0]); in SiS_SetGroup1_LVDS()
6115 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode10_1[0]); in SiS_SetGroup1_LVDS()
6116 SiS_SetTrumpionBlock(SiS_Pr, &TrumpMode10_2[0]); in SiS_SetGroup1_LVDS()
6120 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x02,0x40); in SiS_SetGroup1_LVDS()
6125 if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { in SiS_SetGroup1_LVDS()
6126 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x25,0x00); in SiS_SetGroup1_LVDS()
6127 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x26,0x00); in SiS_SetGroup1_LVDS()
6128 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x27,0x00); in SiS_SetGroup1_LVDS()
6129 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x28,0x87); in SiS_SetGroup1_LVDS()
6130 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x29,0x5A); in SiS_SetGroup1_LVDS()
6131 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2A,0x4B); in SiS_SetGroup1_LVDS()
6132 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x44,~0x07,0x03); in SiS_SetGroup1_LVDS()
6133 tempax = SiS_Pr->SiS_HDE; /* Blps = lcdhdee(lcdhdes+HDE) + 64 */ in SiS_SetGroup1_LVDS()
6134 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
6135 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
6136 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
6138 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x38,tempax & 0xff); in SiS_SetGroup1_LVDS()
6140 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,~0x078,temp); in SiS_SetGroup1_LVDS()
6142 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x39,tempax & 0xff); in SiS_SetGroup1_LVDS()
6143 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3A,0x00); /* Bflml = 0 */ in SiS_SetGroup1_LVDS()
6144 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x3C,~0x007); in SiS_SetGroup1_LVDS()
6146 tempax = SiS_Pr->SiS_VDE; in SiS_SetGroup1_LVDS()
6147 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
6148 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
6149 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
6151 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3B,tempax & 0xff); in SiS_SetGroup1_LVDS()
6153 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x3C,~0x038,temp); in SiS_SetGroup1_LVDS()
6155 tempeax = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
6156 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
6157 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
6158 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempeax >>= 1; in SiS_SetGroup1_LVDS()
6164 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,temp); in SiS_SetGroup1_LVDS()
6165 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3F,0x00); /* BDxWadrst0 */ in SiS_SetGroup1_LVDS()
6166 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3E,0x00); in SiS_SetGroup1_LVDS()
6167 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3D,0x10); in SiS_SetGroup1_LVDS()
6168 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x3C,~0x040); in SiS_SetGroup1_LVDS()
6170 tempax = SiS_Pr->SiS_HDE; in SiS_SetGroup1_LVDS()
6171 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
6172 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
6173 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
6177 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x43,temp); in SiS_SetGroup1_LVDS()
6179 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, 0x44, 0x07, temp); in SiS_SetGroup1_LVDS()
6181 tempax = SiS_Pr->SiS_VDE; /* BDxWadrst1 = BDxWadrst0 + BDxWadroff * VDE */ in SiS_SetGroup1_LVDS()
6182 if(SiS_Pr->SiS_LCDResInfo == Panel_320x240_1 || in SiS_SetGroup1_LVDS()
6183 SiS_Pr->SiS_LCDResInfo == Panel_320x240_2 || in SiS_SetGroup1_LVDS()
6184 SiS_Pr->SiS_LCDResInfo == Panel_320x240_3) tempax >>= 1; in SiS_SetGroup1_LVDS()
6187 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x42,temp); in SiS_SetGroup1_LVDS()
6189 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x41,temp); in SiS_SetGroup1_LVDS()
6191 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x40,temp); in SiS_SetGroup1_LVDS()
6193 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, 0x3C, 0x7F, temp); in SiS_SetGroup1_LVDS()
6195 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2F,0x03); in SiS_SetGroup1_LVDS()
6196 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x03,0x50); in SiS_SetGroup1_LVDS()
6197 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x04,0x00); in SiS_SetGroup1_LVDS()
6198 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2F,0x01); in SiS_SetGroup1_LVDS()
6199 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0x38); in SiS_SetGroup1_LVDS()
6201 if(SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_SetGroup1_LVDS()
6202 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2b,0x02); in SiS_SetGroup1_LVDS()
6203 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2c,0x00); in SiS_SetGroup1_LVDS()
6204 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x00); in SiS_SetGroup1_LVDS()
6205 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x35,0x0c); in SiS_SetGroup1_LVDS()
6206 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x36,0x00); in SiS_SetGroup1_LVDS()
6207 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x37,0x00); in SiS_SetGroup1_LVDS()
6208 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x38,0x80); in SiS_SetGroup1_LVDS()
6209 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x39,0xA0); in SiS_SetGroup1_LVDS()
6210 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3a,0x00); in SiS_SetGroup1_LVDS()
6211 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3b,0xf0); in SiS_SetGroup1_LVDS()
6212 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3c,0x00); in SiS_SetGroup1_LVDS()
6213 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3d,0x10); in SiS_SetGroup1_LVDS()
6214 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3e,0x00); in SiS_SetGroup1_LVDS()
6215 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x3f,0x00); in SiS_SetGroup1_LVDS()
6216 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x40,0x10); in SiS_SetGroup1_LVDS()
6217 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x41,0x25); in SiS_SetGroup1_LVDS()
6218 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x42,0x80); in SiS_SetGroup1_LVDS()
6219 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x43,0x14); in SiS_SetGroup1_LVDS()
6220 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x44,0x03); in SiS_SetGroup1_LVDS()
6221 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,0x0a); in SiS_SetGroup1_LVDS()
6229 SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup1() argument
6233 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup1()
6241 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup1()
6242 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6247 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup1()
6248 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6249 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup1()
6251 CRT1Index = SiS_GetRefCRT1CRTC(SiS_Pr, RefreshRateTableIndex, SiS_Pr->SiS_UseWideCRT2); in SiS_SetGroup1()
6252 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup1()
6253 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup1()
6256 SiS_SetCRT2Offset(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6258 if( ! ((SiS_Pr->ChipType >= SIS_315H) && in SiS_SetGroup1()
6259 (SiS_Pr->SiS_IF_DEF_LVDS == 1) && in SiS_SetGroup1()
6260 (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) ) { in SiS_SetGroup1()
6262 if(SiS_Pr->ChipType < SIS_315H ) { in SiS_SetGroup1()
6264 SiS_SetCRT2FIFO_300(SiS_Pr, ModeNo); in SiS_SetGroup1()
6268 SiS_SetCRT2FIFO_310(SiS_Pr); in SiS_SetGroup1()
6274 if(SiS_Pr->ChipType < SIS_315H ) { in SiS_SetGroup1()
6278 temp = (SiS_Pr->SiS_VGAHT - 1) & 0x0FF; /* BTVGA2HT 0x08,0x09 */ in SiS_SetGroup1()
6279 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,temp); /* CRT2 Horizontal Total */ in SiS_SetGroup1()
6281 temp = (((SiS_Pr->SiS_VGAHT - 1) & 0xFF00) >> 8) << 4; in SiS_SetGroup1()
6282 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x09,0x0f,temp); /* CRT2 Horizontal Total Overflow [7:4] … in SiS_SetGroup1()
6284 temp = (SiS_Pr->SiS_VGAHDE + 12) & 0x0FF; /* BTVGA2HDEE 0x0A,0x0C */ in SiS_SetGroup1()
6285 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0A,temp); /* CRT2 Horizontal Display Enable End */ in SiS_SetGroup1()
6287 pushbx = SiS_Pr->SiS_VGAHDE + 12; /* bx BTVGA2HRS 0x0B,0x0C */ in SiS_SetGroup1()
6288 tempcx = (SiS_Pr->SiS_VGAHT - SiS_Pr->SiS_VGAHDE) >> 2; in SiS_SetGroup1()
6301 tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HT 0x08,0x09 */ in SiS_SetGroup1()
6303 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6306 tempax = SiS_Pr->SiS_VGAHDE >> 1; in SiS_SetGroup1()
6307 tempcx = SiS_Pr->SiS_HT - SiS_Pr->SiS_HDE + tempax; in SiS_SetGroup1()
6308 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup1()
6309 tempcx = SiS_Pr->SiS_HT - tempax; in SiS_SetGroup1()
6314 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,tempcx); /* CRT2 Horizontal Total */ in SiS_SetGroup1()
6316 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x09,0x0F,temp); /* CRT2 Horizontal Total Overflow [7:4] … in SiS_SetGroup1()
6318 tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HDEE 0x0A,0x0C */ in SiS_SetGroup1()
6319 tempbx = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup1()
6328 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0A,tempbx); /* CRT2 Horizontal Display Enable End */ in SiS_SetGroup1()
6337 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6338 if(SiS_Pr->ChipType >= SIS_661) { in SiS_SetGroup1()
6339 if((SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) || in SiS_SetGroup1()
6340 (SiS_Pr->SiS_LCDResInfo == Panel_1280x1024)) { in SiS_SetGroup1()
6354 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6356 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6357 tempbx = SiS_Pr->CHSyncStart + bridgeadd; in SiS_SetGroup1()
6358 tempcx = SiS_Pr->CHSyncEnd + bridgeadd; in SiS_SetGroup1()
6359 tempax = SiS_Pr->SiS_VGAHT; in SiS_SetGroup1()
6365 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_SetGroup1()
6367 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6368 cr4 = SiS_Pr->CCRT1CRTC[4]; in SiS_SetGroup1()
6369 cr14 = SiS_Pr->CCRT1CRTC[14]; in SiS_SetGroup1()
6370 cr5 = SiS_Pr->CCRT1CRTC[5]; in SiS_SetGroup1()
6371 cr15 = SiS_Pr->CCRT1CRTC[15]; in SiS_SetGroup1()
6373 cr4 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[4]; in SiS_SetGroup1()
6374 cr14 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[14]; in SiS_SetGroup1()
6375 cr5 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[5]; in SiS_SetGroup1()
6376 cr15 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[15]; in SiS_SetGroup1()
6384 tempax = SiS_Pr->SiS_VGAHT; in SiS_SetGroup1()
6390 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSet525p1024)) { in SiS_SetGroup1()
6397 … SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0B,tempbx); /* CRT2 Horizontal Retrace Start */ in SiS_SetGroup1()
6399 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0D,tempcx); /* CRT2 Horizontal Retrace End */ in SiS_SetGroup1()
6402 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0C,temp); /* Overflow */ in SiS_SetGroup1()
6406 tempcx = SiS_Pr->SiS_VGAVT - 1; in SiS_SetGroup1()
6409 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetGroup1()
6410 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetGroup1()
6411 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6412 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6413 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)) { in SiS_SetGroup1()
6420 } else if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup1()
6424 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0E,temp); /* CRT2 Vertical Total */ in SiS_SetGroup1()
6426 tempbx = SiS_Pr->SiS_VGAVDE - 1; in SiS_SetGroup1()
6427 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x0F,tempbx); /* CRT2 Vertical Display Enable End */ in SiS_SetGroup1()
6430 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x12,temp); /* Overflow */ in SiS_SetGroup1()
6432 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) { in SiS_SetGroup1()
6444 …tempbx = (SiS_Pr->SiS_VGAVT + SiS_Pr->SiS_VGAVDE) >> 1; /* BTVGA2VRS 0x10,0x1… in SiS_SetGroup1()
6445 …tempcx = ((SiS_Pr->SiS_VGAVT - SiS_Pr->SiS_VGAVDE) >> 4) + tempbx + 1; /* BTVGA2VRE 0x11 … in SiS_SetGroup1()
6448 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6449 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6450 tempbx = SiS_Pr->CVSyncStart; in SiS_SetGroup1()
6451 tempcx = SiS_Pr->CVSyncEnd; in SiS_SetGroup1()
6453 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { in SiS_SetGroup1()
6455 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup1()
6456 cr8 = SiS_Pr->CCRT1CRTC[8]; in SiS_SetGroup1()
6457 cr7 = SiS_Pr->CCRT1CRTC[7]; in SiS_SetGroup1()
6458 cr13 = SiS_Pr->CCRT1CRTC[13]; in SiS_SetGroup1()
6459 tempcx = SiS_Pr->CCRT1CRTC[9]; in SiS_SetGroup1()
6461 cr8 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[8]; in SiS_SetGroup1()
6462 cr7 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[7]; in SiS_SetGroup1()
6463 cr13 = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[13]; in SiS_SetGroup1()
6464 tempcx = SiS_Pr->SiS_CRT1Table[CRT1Index].CR[9]; in SiS_SetGroup1()
6472 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x10,tempbx); /* CRT2 Vertical Retrace Start */ in SiS_SetGroup1()
6475 …SiS_SetReg(SiS_Pr->SiS_Part1Port,0x11,temp); /* CRT2 Vert. Retrace End; Overflow */ in SiS_SetGroup1()
6479 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6483 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6485 if(SiS_Pr->ChipType == SIS_300) { in SiS_SetGroup1()
6487 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) temp = 0x2c; in SiS_SetGroup1()
6488 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) temp = 0x20; in SiS_SetGroup1()
6490 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetGroup1()
6491 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) temp = 0x20; in SiS_SetGroup1()
6493 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x960) temp = 0x24; in SiS_SetGroup1()
6494 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) temp = 0x2c; in SiS_SetGroup1()
6495 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp = 0x08; in SiS_SetGroup1()
6496 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup1()
6497 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) temp = 0x2c; in SiS_SetGroup1()
6500 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1()
6502 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoYPbPrHiVision) in SiS_SetGroup1()
6504 else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) in SiS_SetGroup1()
6506 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) in SiS_SetGroup1()
6512 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1()
6513 if(SiS_Pr->PDC != -1) temp = SiS_Pr->PDC; in SiS_SetGroup1()
6518 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup1()
6519 if(SiS_Pr->SiS_LCDResInfo == Panel_640x480) temp = 0x04; in SiS_SetGroup1()
6521 if(SiS_Pr->SiS_UseROM) { in SiS_SetGroup1()
6526 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup1()
6527 if(SiS_Pr->PDC != -1) temp = SiS_Pr->PDC; in SiS_SetGroup1()
6533 …SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* Panel Link Delay Compensation; (Softw… in SiS_SetGroup1()
6541 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetGroup1()
6543 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetGroup1()
6545 if(SiS_Pr->ChipType == SIS_740) temp = 0x03; in SiS_SetGroup1()
6548 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp = 0x0a; in SiS_SetGroup1()
6550 if(SiS_Pr->ChipType == SIS_650) { in SiS_SetGroup1()
6551 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6552 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) tempbl = 0x0F; in SiS_SetGroup1()
6556 if(SiS_Pr->SiS_IF_DEF_DSTN || SiS_Pr->SiS_IF_DEF_FSTN) { in SiS_SetGroup1()
6559 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetGroup1()
6564 … SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,tempbl,temp); /* Panel Link Delay Compensation */ in SiS_SetGroup1()
6572 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2C,0x3f,tempax); in SiS_SetGroup1()
6580 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetGroup1()
6581 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetGroup1()
6583 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6584 } else if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup1()
6585 SiS_SetGroup1_301(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6588 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetGroup1()
6589 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup1()
6591 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetGroup1()
6592 if((!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) || (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup1()
6593 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetGroup1()
6596 SiS_SetGroup1_LVDS(SiS_Pr, ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetGroup1()
6608 SiS_GetGroup2CLVXPtr(struct SiS_Private *SiS_Pr, int tabletype) in SiS_GetGroup2CLVXPtr() argument
6613 a = SiS_Pr->SiS_VGAHDE; in SiS_GetGroup2CLVXPtr()
6614 b = SiS_Pr->SiS_HDE; in SiS_GetGroup2CLVXPtr()
6616 a = SiS_Pr->SiS_VGAVDE; in SiS_GetGroup2CLVXPtr()
6617 b = SiS_Pr->SiS_VDE; in SiS_GetGroup2CLVXPtr()
6625 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_GetGroup2CLVXPtr()
6630 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_GetGroup2CLVXPtr()
6631 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) tableptr = SiS_Part2CLVX_3; in SiS_GetGroup2CLVXPtr()
6632 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) tableptr = SiS_Part2CLVX_3; in SiS_GetGroup2CLVXPtr()
6634 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_GetGroup2CLVXPtr()
6648 SiS_SetGroup2_C_ELV(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup2_C_ELV() argument
6655 if(!(SiS_Pr->SiS_VBType & VB_SISTAP4SCALER)) return; in SiS_SetGroup2_C_ELV()
6657 tableptr = SiS_GetGroup2CLVXPtr(SiS_Pr, 0); in SiS_SetGroup2_C_ELV()
6659 SiS_SetReg(SiS_Pr->SiS_Part2Port, i, tableptr[j]); in SiS_SetGroup2_C_ELV()
6661 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2_C_ELV()
6662 tableptr = SiS_GetGroup2CLVXPtr(SiS_Pr, 1); in SiS_SetGroup2_C_ELV()
6664 SiS_SetReg(SiS_Pr->SiS_Part2Port, i, tableptr[j]); in SiS_SetGroup2_C_ELV()
6668 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) temp |= 0x04; in SiS_SetGroup2_C_ELV()
6669 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x4e,0xeb,temp); in SiS_SetGroup2_C_ELV()
6673 SiS_GetCRT2Part2Ptr(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex, in SiS_GetCRT2Part2Ptr() argument
6678 if(SiS_Pr->ChipType < SIS_315H) return false; in SiS_GetCRT2Part2Ptr()
6681 (*ResIndex) = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetCRT2Part2Ptr()
6683 (*ResIndex) = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetCRT2Part2Ptr()
6688 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetCRT2Part2Ptr()
6689 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_GetCRT2Part2Ptr()
6694 if(SiS_Pr->SiS_CustomT == CUT_ASUSA2H_2) { in SiS_GetCRT2Part2Ptr()
6695 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_GetCRT2Part2Ptr()
6696 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) (*CRT2Index) = 206; in SiS_GetCRT2Part2Ptr()
6705 SiS_Group2LCDSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short crt2crtc) in SiS_Group2LCDSpecial() argument
6713 if(!SiS_Pr->UseCustomMode) { in SiS_Group2LCDSpecial()
6714 if( ( ( (SiS_Pr->ChipType == SIS_630) || in SiS_Group2LCDSpecial()
6715 (SiS_Pr->ChipType == SIS_730) ) && in SiS_Group2LCDSpecial()
6716 (SiS_Pr->ChipRevision > 2) ) && in SiS_Group2LCDSpecial()
6717 (SiS_Pr->SiS_LCDResInfo == Panel_1024x768) && in SiS_Group2LCDSpecial()
6718 (!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) && in SiS_Group2LCDSpecial()
6719 (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) ) { in SiS_Group2LCDSpecial()
6721 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,0xB9); in SiS_Group2LCDSpecial()
6722 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,0xCC); in SiS_Group2LCDSpecial()
6723 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xA6); in SiS_Group2LCDSpecial()
6725 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x2B); in SiS_Group2LCDSpecial()
6726 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x13); in SiS_Group2LCDSpecial()
6727 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,0xE5); in SiS_Group2LCDSpecial()
6728 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,0x08); in SiS_Group2LCDSpecial()
6729 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xE2); in SiS_Group2LCDSpecial()
6733 if(SiS_Pr->ChipType < SIS_315H) { in SiS_Group2LCDSpecial()
6734 if(SiS_Pr->SiS_LCDTypeInfo == 0x0c) { in SiS_Group2LCDSpecial()
6737 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_Group2LCDSpecial()
6738 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_Group2LCDSpecial()
6744 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,0xff); in SiS_Group2LCDSpecial()
6747 if(!(SiS_Pr->SiS_VBInfo & SetNotSimuMode)) { in SiS_Group2LCDSpecial()
6748 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_Group2LCDSpecial()
6750 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x28); in SiS_Group2LCDSpecial()
6754 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x18); in SiS_Group2LCDSpecial()
6755 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,atable[tempcx]); in SiS_Group2LCDSpecial()
6763 SiS_Set300Part2Regs(struct SiS_Private *SiS_Pr, unsigned short ModeIdIndex, unsigned short RefreshR… in SiS_Set300Part2Regs() argument
6770 if(SiS_Pr->ChipType != SIS_300) return; in SiS_Set300Part2Regs()
6771 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) return; in SiS_Set300Part2Regs()
6772 if(SiS_Pr->UseCustomMode) return; in SiS_Set300Part2Regs()
6775 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_Set300Part2Regs()
6777 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_Set300Part2Regs()
6781 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; in SiS_Set300Part2Regs()
6782 else CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_2; in SiS_Set300Part2Regs()
6786 CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; in SiS_Set300Part2Regs()
6790 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,(CRT2Part2Ptr+resindex)->CR[0]); in SiS_Set300Part2Regs()
6791 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x02,0x80,(CRT2Part2Ptr+resindex)->CR[1]); in SiS_Set300Part2Regs()
6793 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6796 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6799 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_Set300Part2Regs()
6801 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,(CRT2Part2Ptr+resindex)->CR[10]); in SiS_Set300Part2Regs()
6802 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0f,(CRT2Part2Ptr+resindex)->CR[11]); in SiS_Set300Part2Regs()
6807 SiS_SetTVSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetTVSpecial() argument
6809 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) return; in SiS_SetTVSpecial()
6810 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision)) return; in SiS_SetTVSpecial()
6811 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) return; in SiS_SetTVSpecial()
6813 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetTVSpecial()
6814 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in SiS_SetTVSpecial()
6822 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,specialtv[j]); in SiS_SetTVSpecial()
6824 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,0x72); in SiS_SetTVSpecial()
6825 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750)) { in SiS_SetTVSpecial()
6826 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetTVSpecial()
6827 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x14); in SiS_SetTVSpecial()
6828 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1b); in SiS_SetTVSpecial()
6830 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x14); /* 15 */ in SiS_SetTVSpecial()
6831 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1a); /* 1b */ in SiS_SetTVSpecial()
6838 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1b); /* 21 */ in SiS_SetTVSpecial()
6839 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x54); /* 5a */ in SiS_SetTVSpecial()
6841 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1a); /* 21 */ in SiS_SetTVSpecial()
6842 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x53); /* 5a */ in SiS_SetTVSpecial()
6848 SiS_SetGroup2_Tail(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetGroup2_Tail() argument
6852 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) { in SiS_SetGroup2_Tail()
6853 if(SiS_Pr->SiS_VGAVDE == 525) { in SiS_SetGroup2_Tail()
6855 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2_Tail()
6857 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) temp += 2; in SiS_SetGroup2_Tail()
6859 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2f,temp); in SiS_SetGroup2_Tail()
6860 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x30,0xb3); in SiS_SetGroup2_Tail()
6861 } else if(SiS_Pr->SiS_VGAVDE == 420) { in SiS_SetGroup2_Tail()
6863 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2_Tail()
6865 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) temp++; in SiS_SetGroup2_Tail()
6867 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2f,temp); in SiS_SetGroup2_Tail()
6871 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup2_Tail()
6872 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) { in SiS_SetGroup2_Tail()
6873 if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SiS_SetGroup2_Tail()
6874 SiS_SetRegOR(SiS_Pr->SiS_Part2Port,0x1a,0x03); in SiS_SetGroup2_Tail()
6879 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0b,temp); in SiS_SetGroup2_Tail()
6883 if((SiS_Pr->SiS_PanelXRes == 1280) && (SiS_Pr->SiS_PanelYRes == 768)) { in SiS_SetGroup2_Tail()
6884 if(SiS_Pr->SiS_VBInfo & SetSimuScanMode) { in SiS_SetGroup2_Tail()
6885 if(((SiS_Pr->SiS_HDE == 640) && (SiS_Pr->SiS_VDE == 480)) || in SiS_SetGroup2_Tail()
6886 ((SiS_Pr->SiS_HDE == 320) && (SiS_Pr->SiS_VDE == 240))) { in SiS_SetGroup2_Tail()
6907 SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup2() argument
6919 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup2()
6923 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup2()
6924 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetGroup2()
6925 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
6926 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup2()
6929 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup2()
6930 crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetGroup2()
6934 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToAVIDEO)) temp |= 0x08; in SiS_SetGroup2()
6935 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToSVIDEO)) temp |= 0x04; in SiS_SetGroup2()
6936 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) temp |= 0x02; in SiS_SetGroup2()
6937 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) temp |= 0x01; in SiS_SetGroup2()
6939 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) temp |= 0x10; in SiS_SetGroup2()
6941 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x00,temp); in SiS_SetGroup2()
6944 TimingPoint = SiS_Pr->SiS_PALTiming; in SiS_SetGroup2()
6947 if( (SiS_Pr->SiS_VBType & VB_SIS30xBLV) && in SiS_SetGroup2()
6948 ( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || in SiS_SetGroup2()
6949 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode) ) ) { in SiS_SetGroup2()
6953 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
6955 TimingPoint = SiS_Pr->SiS_HiTVExtTiming; in SiS_SetGroup2()
6956 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
6957 TimingPoint = SiS_Pr->SiS_HiTVSt2Timing; in SiS_SetGroup2()
6958 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup2()
6959 TimingPoint = SiS_Pr->SiS_HiTVSt1Timing; in SiS_SetGroup2()
6963 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup2()
6966 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) i = 2; in SiS_SetGroup2()
6967 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) i = 1; in SiS_SetGroup2()
6973 } else if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
6979 TimingPoint = SiS_Pr->SiS_NTSCTiming; in SiS_SetGroup2()
6980 … PhaseIndex = (SiS_Pr->SiS_TVMode & TVSetNTSCJ) ? 0x01 : 0x00; /* SiS_PALPhase : SiS_NTSCPhase */ in SiS_SetGroup2()
6985 if(SiS_Pr->SiS_TVMode & (TVSetPALM | TVSetPALN)) { in SiS_SetGroup2()
6986 … PhaseIndex = (SiS_Pr->SiS_TVMode & TVSetPALM) ? 0x02 : 0x03; /* SiS_PALMPhase : SiS_PALNPhase */ in SiS_SetGroup2()
6990 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in SiS_SetGroup2()
6991 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup2()
6993 } else if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) { in SiS_SetGroup2()
7001 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS_TVPhase[(PhaseIndex * 4) + j]); in SiS_SetGroup2()
7005 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,TimingPoint[j]); in SiS_SetGroup2()
7008 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,TimingPoint[j]); in SiS_SetGroup2()
7011 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2()
7012 if(SiS_Pr->SiS_ModeType != ModeText) { in SiS_SetGroup2()
7013 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x3A,0x1F); in SiS_SetGroup2()
7017 SiS_SetRegOR(SiS_Pr->SiS_Part2Port,0x0A,SiS_Pr->SiS_NewFlickerMode); in SiS_SetGroup2()
7019 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x35,SiS_Pr->SiS_RY1COE); in SiS_SetGroup2()
7020 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x36,SiS_Pr->SiS_RY2COE); in SiS_SetGroup2()
7021 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x37,SiS_Pr->SiS_RY3COE); in SiS_SetGroup2()
7022 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x38,SiS_Pr->SiS_RY4COE); in SiS_SetGroup2()
7024 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempax = 950; in SiS_SetGroup2()
7025 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempax = 680; in SiS_SetGroup2()
7026 else if(SiS_Pr->SiS_TVMode & TVSetPAL) tempax = 520; in SiS_SetGroup2()
7029 if( ((SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) && (SiS_Pr->SiS_VDE <= tempax)) || in SiS_SetGroup2()
7030 ( (SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoHiVision) && in SiS_SetGroup2()
7031 ((SiS_Pr->SiS_VGAHDE == 1024) || (SiS_Pr->SiS_VDE <= tempax)) ) ) { in SiS_SetGroup2()
7033 tempax -= SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7035 if(!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p))) { in SiS_SetGroup2()
7041 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); in SiS_SetGroup2()
7044 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,temp); in SiS_SetGroup2()
7046 if((SiS_Pr->SiS_VBInfo & SetCRT2ToTVNoYPbPrHiVision) && (SiS_Pr->SiS_VGAHDE >= 1024)) { in SiS_SetGroup2()
7047 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
7048 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x1b); in SiS_SetGroup2()
7049 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x54); in SiS_SetGroup2()
7051 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,0x17); in SiS_SetGroup2()
7052 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,0x1d); in SiS_SetGroup2()
7058 tempcx = SiS_Pr->SiS_HT; in SiS_SetGroup2()
7059 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
7061 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) tempcx--; in SiS_SetGroup2()
7062 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1B,tempcx); in SiS_SetGroup2()
7063 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0xF0,((tempcx >> 8) & 0x0f)); in SiS_SetGroup2()
7065 tempcx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup2()
7066 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
7068 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempcx -= 4; in SiS_SetGroup2()
7069 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x22,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
7073 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x24,tempbx); in SiS_SetGroup2()
7074 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
7077 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
7081 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x29,0x0F,((tempbx << 4) & 0xf0)); in SiS_SetGroup2()
7085 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x27,tempcx); in SiS_SetGroup2()
7086 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x28,0x0F,((tempcx >> 4) & 0xf0)); in SiS_SetGroup2()
7089 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) tempcx -= 4; in SiS_SetGroup2()
7090 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2A,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
7092 tempcx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup2()
7093 if(SiS_IsDualLink(SiS_Pr)) tempcx >>= 1; in SiS_SetGroup2()
7096 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2D,0x0F,((tempcx << 4) & 0xf0)); in SiS_SetGroup2()
7099 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_SetGroup2()
7100 tempcx = SiS_GetVGAHT2(SiS_Pr) - 1; in SiS_SetGroup2()
7102 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2E,tempcx); in SiS_SetGroup2()
7104 tempbx = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7105 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup2()
7106 if(SiS_Pr->SiS_VGAVDE == 360) tempbx = 746; in SiS_SetGroup2()
7107 if(SiS_Pr->SiS_VGAVDE == 375) tempbx = 746; in SiS_SetGroup2()
7108 if(SiS_Pr->SiS_VGAVDE == 405) tempbx = 853; in SiS_SetGroup2()
7109 } else if( (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) && in SiS_SetGroup2()
7110 (!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p|TVSetYPbPr750p))) ) { in SiS_SetGroup2()
7112 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup2()
7113 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup2()
7115 } else if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
7116 if(SiS_Pr->SiS_ModeType <= ModeVGA) { in SiS_SetGroup2()
7121 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup2()
7122 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
7125 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { in SiS_SetGroup2()
7131 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2F,tempbx); in SiS_SetGroup2()
7135 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)) { in SiS_SetGroup2()
7137 if(SiS_Pr->SiS_VBInfo & SetCRT2ToAVIDEO) temp |= 0x20; in SiS_SetGroup2()
7139 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x30,temp); in SiS_SetGroup2()
7141 if(SiS_Pr->SiS_VBType & VB_SISPART4OVERFLOW) { in SiS_SetGroup2()
7142 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x10,0xdf,((tempbx & 0x0400) >> 5)); in SiS_SetGroup2()
7145 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup2()
7146 tempbx = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7147 if( (SiS_Pr->SiS_VBInfo & SetCRT2ToTV) && in SiS_SetGroup2()
7148 (!(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p))) ) { in SiS_SetGroup2()
7153 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x46,temp); in SiS_SetGroup2()
7154 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x47,tempbx); in SiS_SetGroup2()
7156 if(SiS_Pr->SiS_VBType & VB_SISPART4OVERFLOW) { in SiS_SetGroup2()
7157 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x10,0xbf,((tempbx & 0x0400) >> 4)); in SiS_SetGroup2()
7163 if(SiS_Pr->SiS_VGAHDE >= SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
7170 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup2()
7171 if(SiS_Pr->SiS_VGAHDE >= 960) { in SiS_SetGroup2()
7172 if((!(modeflag & HalfDCLK)) || (SiS_Pr->ChipType < SIS_315H)) { in SiS_SetGroup2()
7174 if(SiS_Pr->SiS_VGAHDE >= 1280) { in SiS_SetGroup2()
7186 longtemp = ((SiS_Pr->SiS_VGAHDE * tempch) / tempcl) << 13; in SiS_SetGroup2()
7187 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) longtemp <<= 3; in SiS_SetGroup2()
7188 tempax = longtemp / SiS_Pr->SiS_HDE; in SiS_SetGroup2()
7189 if(longtemp % SiS_Pr->SiS_HDE) tempax++; in SiS_SetGroup2()
7194 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x44,tempax); in SiS_SetGroup2()
7195 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x45,0xC0,tempbx); in SiS_SetGroup2()
7197 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup2()
7201 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x46,0xF8,tempcx); in SiS_SetGroup2()
7203 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup2()
7210 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4B,tempbx); in SiS_SetGroup2()
7211 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4C,tempcx); in SiS_SetGroup2()
7214 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup2()
7216 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) temp |= 0x20; in SiS_SetGroup2()
7217 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) temp |= 0x40; in SiS_SetGroup2()
7219 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x4D,temp); in SiS_SetGroup2()
7221 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x43); in SiS_SetGroup2()
7222 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,(temp - 3)); in SiS_SetGroup2()
7224 SiS_SetTVSpecial(SiS_Pr, ModeNo); in SiS_SetGroup2()
7226 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetGroup2()
7228 if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 8; in SiS_SetGroup2()
7229 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x4e,0xf7,temp); in SiS_SetGroup2()
7234 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup2()
7235 if(!(SiS_Pr->SiS_TVMode & TVSetNTSC1024)) { in SiS_SetGroup2()
7236 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x01); in SiS_SetGroup2()
7237 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,(temp - 1)); in SiS_SetGroup2()
7239 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x00,0xEF); in SiS_SetGroup2()
7242 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup2()
7243 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetGroup2()
7244 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0B,0x00); in SiS_SetGroup2()
7248 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) return; in SiS_SetGroup2()
7252 tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup2()
7253 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
7255 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x2C,tempbx); in SiS_SetGroup2()
7256 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2B,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
7259 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_SetGroup2()
7260 if(SiS_Pr->SiS_ModeType == ModeEGA) { in SiS_SetGroup2()
7261 if(SiS_Pr->SiS_VGAHDE >= 1024) { in SiS_SetGroup2()
7263 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_SetGroup2()
7269 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x0B,temp); in SiS_SetGroup2()
7271 tempbx = SiS_Pr->SiS_VDE - 1; in SiS_SetGroup2()
7272 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x03,tempbx); in SiS_SetGroup2()
7273 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0C,0xF8,((tempbx >> 8) & 0x07)); in SiS_SetGroup2()
7275 tempcx = SiS_Pr->SiS_VT - 1; in SiS_SetGroup2()
7276 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x19,tempcx); in SiS_SetGroup2()
7278 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SiS_SetGroup2()
7280 if(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x01) { in SiS_SetGroup2()
7284 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1A,0x0f,temp); in SiS_SetGroup2()
7286 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x09,0xF0); in SiS_SetGroup2()
7287 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x0A,0xF0); in SiS_SetGroup2()
7289 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x17,0xFB); in SiS_SetGroup2()
7290 SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x18,0xDF); in SiS_SetGroup2()
7293 if(SiS_GetCRT2Part2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_SetGroup2()
7298 case 200: CRT2Part2Ptr = SiS_Pr->SiS_CRT2Part2_1024x768_1; break; in SiS_SetGroup2()
7301 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,(CRT2Part2Ptr+resindex)->CR[0]); in SiS_SetGroup2()
7302 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x02,0x80,(CRT2Part2Ptr+resindex)->CR[1]); in SiS_SetGroup2()
7304 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
7307 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
7310 SiS_SetReg(SiS_Pr->SiS_Part2Port,j,(CRT2Part2Ptr+resindex)->CR[i]); in SiS_SetGroup2()
7312 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,(CRT2Part2Ptr+resindex)->CR[10]); in SiS_SetGroup2()
7313 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0x0f,(CRT2Part2Ptr+resindex)->CR[11]); in SiS_SetGroup2()
7315 SiS_SetGroup2_Tail(SiS_Pr, ModeNo); in SiS_SetGroup2()
7325 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7326 if((SiS_Pr->SiS_LCDInfo & LCDPass11) || (SiS_Pr->PanelYRes == SiS_Pr->SiS_VDE)) { in SiS_SetGroup2()
7327 tempbx = SiS_Pr->SiS_VDE - 1; in SiS_SetGroup2()
7328 tempcx = SiS_Pr->SiS_VT - 1; in SiS_SetGroup2()
7330 tempbx = SiS_Pr->SiS_VDE + ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VDE) / 2); in SiS_SetGroup2()
7331 tempcx = SiS_Pr->SiS_VT - ((SiS_Pr->PanelYRes - SiS_Pr->SiS_VDE) / 2); in SiS_SetGroup2()
7334 tempbx = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7335 tempcx = SiS_Pr->SiS_VT; in SiS_SetGroup2()
7337 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7338 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7340 if(SiS_Pr->PanelYRes < SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7343 tempax -= SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7353 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,tempcx); /* lcdvdes */ in SiS_SetGroup2()
7354 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,tempbx); /* lcdvdee */ in SiS_SetGroup2()
7358 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x02,temp); in SiS_SetGroup2()
7360 tempax = SiS_Pr->SiS_VDE; in SiS_SetGroup2()
7361 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7362 tempax = SiS_Pr->PanelYRes; in SiS_SetGroup2()
7364 tempcx = (SiS_Pr->SiS_VT - tempax) >> 4; in SiS_SetGroup2()
7365 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7366 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7367 tempcx = (SiS_Pr->SiS_VT - tempax) / 10; in SiS_SetGroup2()
7371 tempbx = ((SiS_Pr->SiS_VT + SiS_Pr->SiS_VDE) >> 1) - 1; in SiS_SetGroup2()
7372 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7373 if(SiS_Pr->PanelYRes != SiS_Pr->SiS_VDE) { in SiS_SetGroup2()
7374 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { /* ? */ in SiS_SetGroup2()
7375 tempax = SiS_Pr->SiS_VT - SiS_Pr->PanelYRes; in SiS_SetGroup2()
7381 if(tempbx <= SiS_Pr->SiS_VDE) tempbx = SiS_Pr->SiS_VDE + 1; in SiS_SetGroup2()
7385 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_SetGroup2()
7387 if((!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) || (crt2crtc == 6)) { in SiS_SetGroup2()
7388 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_SetGroup2()
7397 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7398 tempbx = SiS_Pr->CVSyncStart; in SiS_SetGroup2()
7401 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,tempbx); /* lcdvrs */ in SiS_SetGroup2()
7407 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7409 temp |= (SiS_Pr->CVSyncEnd & 0x0f); in SiS_SetGroup2()
7412 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); in SiS_SetGroup2()
7415 SiS_Group2LCDSpecial(SiS_Pr, ModeNo, crt2crtc); in SiS_SetGroup2()
7419 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) bridgeoffset += 2; in SiS_SetGroup2()
7420 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) bridgeoffset += 2; /* OK for Averatec 1280x800 (301C) */ in SiS_SetGroup2()
7421 if(SiS_IsDualLink(SiS_Pr)) bridgeoffset++; in SiS_SetGroup2()
7422 else if(SiS_Pr->SiS_VBType & VB_SIS302LV) bridgeoffset++; /* OK for Asus A4L 1280x800 */ in SiS_SetGroup2()
7426 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7427 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
7428 temp = SiS_Pr->SiS_HT - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_HDE) / 2); in SiS_SetGroup2()
7429 if(SiS_IsDualLink(SiS_Pr)) temp >>= 1; in SiS_SetGroup2()
7433 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1F,temp); /* lcdhdes */ in SiS_SetGroup2()
7434 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x20,0x0F,((temp >> 4) & 0xf0)); in SiS_SetGroup2()
7436 tempcx = SiS_Pr->SiS_HT; in SiS_SetGroup2()
7437 tempax = tempbx = SiS_Pr->SiS_HDE; in SiS_SetGroup2()
7438 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7439 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) { in SiS_SetGroup2()
7440 tempax = SiS_Pr->PanelXRes; in SiS_SetGroup2()
7441 tempbx = SiS_Pr->PanelXRes - ((SiS_Pr->PanelXRes - SiS_Pr->SiS_HDE) / 2); in SiS_SetGroup2()
7444 if(SiS_IsDualLink(SiS_Pr)) { in SiS_SetGroup2()
7452 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,tempbx); /* lcdhdee */ in SiS_SetGroup2()
7453 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x25,0xF0,((tempbx >> 8) & 0x0f)); in SiS_SetGroup2()
7460 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_SetGroup2()
7461 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { in SiS_SetGroup2()
7462 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetGroup2()
7463 if(SiS_Pr->SiS_HDE == 1280) tempbx = (tempbx & 0xff00) | 0x47; in SiS_SetGroup2()
7468 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7469 tempbx = SiS_Pr->CHSyncStart; in SiS_SetGroup2()
7471 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
7475 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1C,tempbx); /* lcdhrs */ in SiS_SetGroup2()
7476 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0x0F,((tempbx >> 4) & 0xf0)); in SiS_SetGroup2()
7481 if((SiS_Pr->SiS_LCDInfo & DontExpandLCD) && (!(SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SiS_SetGroup2()
7482 if(SiS_Pr->PanelXRes != SiS_Pr->SiS_HDE) tempcx >>= 2; in SiS_SetGroup2()
7486 if(SiS_Pr->UseCustomMode) { in SiS_SetGroup2()
7487 tempbx = SiS_Pr->CHSyncEnd; in SiS_SetGroup2()
7489 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup2()
7493 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x21,tempbx); /* lcdhre */ in SiS_SetGroup2()
7495 SiS_SetGroup2_Tail(SiS_Pr, ModeNo); in SiS_SetGroup2()
7498 SiS_Set300Part2Regs(SiS_Pr, ModeIdIndex, RefreshRateTableIndex, ModeNo); in SiS_SetGroup2()
7510 SiS_SetGroup3(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup3() argument
7515 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup3()
7518 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x00,0x00); in SiS_SetGroup3()
7523 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetGroup3()
7524 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xFA); in SiS_SetGroup3()
7525 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xC8); in SiS_SetGroup3()
7527 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xF5); in SiS_SetGroup3()
7528 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xB7); in SiS_SetGroup3()
7531 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetGroup3()
7532 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x13,0xFA); in SiS_SetGroup3()
7533 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x14,0xC8); in SiS_SetGroup3()
7534 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x3D,0xA8); in SiS_SetGroup3()
7538 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup3()
7539 tempdi = SiS_Pr->SiS_HiTVGroup3Data; in SiS_SetGroup3()
7540 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) { in SiS_SetGroup3()
7541 tempdi = SiS_Pr->SiS_HiTVGroup3Simu; in SiS_SetGroup3()
7543 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) { in SiS_SetGroup3()
7544 if(!(SiS_Pr->SiS_TVMode & TVSetYPbPr525i)) { in SiS_SetGroup3()
7546 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) tempdi = SiS_HiTVGroup3_2; in SiS_SetGroup3()
7551 SiS_SetReg(SiS_Pr->SiS_Part3Port,i,tempdi[i]); in SiS_SetGroup3()
7553 if(SiS_Pr->SiS_VBType & VB_SIS30xCLV) { in SiS_SetGroup3()
7554 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) { in SiS_SetGroup3()
7555 SiS_SetReg(SiS_Pr->SiS_Part3Port,0x28,0x3f); in SiS_SetGroup3()
7572 SiS_ShiftXPos(struct SiS_Private *SiS_Pr, int shift)
7576 temp1 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x1f);
7577 temp2 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x20);
7579 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1f,temp);
7580 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x20,0x0f,((temp >> 4) & 0xf0));
7581 temp = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x2b) & 0x0f;
7583 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x2b,0xf0,(temp & 0x0f));
7584 temp1 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x43);
7585 temp2 = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x42);
7587 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x43,temp);
7588 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x42,0x0f,((temp >> 4) & 0xf0));
7593 SiS_SetGroup4_C_ELV(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup4_C_ELV() argument
7596 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetGroup4_C_ELV()
7598 if(!(SiS_Pr->SiS_VBType & VB_SIS30xCLV)) return; in SiS_SetGroup4_C_ELV()
7599 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToHiVision | SetCRT2ToYPbPr525750))) return; in SiS_SetGroup4_C_ELV()
7601 if(SiS_Pr->ChipType >= XGI_20) return; in SiS_SetGroup4_C_ELV()
7603 if((SiS_Pr->ChipType >= SIS_661) && (SiS_Pr->SiS_ROMNew)) { in SiS_SetGroup4_C_ELV()
7607 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x3a,0x08); in SiS_SetGroup4_C_ELV()
7608 temp = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x3a); in SiS_SetGroup4_C_ELV()
7610 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x3a,0xdf); in SiS_SetGroup4_C_ELV()
7611 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x25,0xfc); in SiS_SetGroup4_C_ELV()
7612 if((SiS_Pr->ChipType < SIS_661) && (!(SiS_Pr->SiS_ROMNew))) { in SiS_SetGroup4_C_ELV()
7613 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x25,0xf8); in SiS_SetGroup4_C_ELV()
7615 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x0f,0xfb); in SiS_SetGroup4_C_ELV()
7616 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) temp = 0x0000; in SiS_SetGroup4_C_ELV()
7617 else if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) temp = 0x0002; in SiS_SetGroup4_C_ELV()
7618 else if(SiS_Pr->SiS_TVMode & TVSetHiVision) temp = 0x0400; in SiS_SetGroup4_C_ELV()
7620 if((SiS_Pr->ChipType >= SIS_661) || (SiS_Pr->SiS_ROMNew)) { in SiS_SetGroup4_C_ELV()
7622 if(SiS_Pr->SiS_TVMode & TVAspect43) temp1 = 4; in SiS_SetGroup4_C_ELV()
7623 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0f,0xfb,temp1); in SiS_SetGroup4_C_ELV()
7624 if(SiS_Pr->SiS_TVMode & TVAspect43LB) temp |= 0x01; in SiS_SetGroup4_C_ELV()
7625 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x26,0x7c,(temp & 0xff)); in SiS_SetGroup4_C_ELV()
7626 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0xfb,(temp >> 8)); in SiS_SetGroup4_C_ELV()
7628 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x39,0xfd); in SiS_SetGroup4_C_ELV()
7631 temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x3b) & 0x03; in SiS_SetGroup4_C_ELV()
7634 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x26,0xf8,(temp & 0xff)); in SiS_SetGroup4_C_ELV()
7635 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x3a,0xfb,(temp >> 8)); in SiS_SetGroup4_C_ELV()
7637 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x3b,0xfd); in SiS_SetGroup4_C_ELV()
7642 if(SiS_Pr->ChipType >= SIS_661) { /* ? */ in SiS_SetGroup4_C_ELV()
7643 if(SiS_Pr->SiS_TVMode & TVAspect43) { in SiS_SetGroup4_C_ELV()
7644 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) { in SiS_SetGroup4_C_ELV()
7646 SiS_ShiftXPos(SiS_Pr, 97); in SiS_SetGroup4_C_ELV()
7648 SiS_ShiftXPos(SiS_Pr, 111); in SiS_SetGroup4_C_ELV()
7650 } else if(SiS_Pr->SiS_TVMode & TVSetHiVision) { in SiS_SetGroup4_C_ELV()
7651 SiS_ShiftXPos(SiS_Pr, 136); in SiS_SetGroup4_C_ELV()
7663 SiS_SetCRT2VCLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2VCLK() argument
7668 if(SiS_Pr->UseCustomMode) { in SiS_SetCRT2VCLK()
7669 reg1 = SiS_Pr->CSR2B; in SiS_SetCRT2VCLK()
7670 reg2 = SiS_Pr->CSR2C; in SiS_SetCRT2VCLK()
7672 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2VCLK()
7673 reg1 = SiS_Pr->SiS_VBVCLKData[vclkindex].Part4_A; in SiS_SetCRT2VCLK()
7674 reg2 = SiS_Pr->SiS_VBVCLKData[vclkindex].Part4_B; in SiS_SetCRT2VCLK()
7677 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetCRT2VCLK()
7678 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSet525p1024)) { in SiS_SetCRT2VCLK()
7679 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,0x57); in SiS_SetCRT2VCLK()
7680 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,0x46); in SiS_SetCRT2VCLK()
7681 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1f,0xf6); in SiS_SetCRT2VCLK()
7683 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,reg1); in SiS_SetCRT2VCLK()
7684 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,reg2); in SiS_SetCRT2VCLK()
7687 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,0x01); in SiS_SetCRT2VCLK()
7688 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0b,reg2); in SiS_SetCRT2VCLK()
7689 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x0a,reg1); in SiS_SetCRT2VCLK()
7691 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x12,0x00); in SiS_SetCRT2VCLK()
7693 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) temp |= 0x20; in SiS_SetCRT2VCLK()
7694 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x12,temp); in SiS_SetCRT2VCLK()
7698 SiS_SetDualLinkEtc(struct SiS_Private *SiS_Pr) in SiS_SetDualLinkEtc() argument
7700 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetDualLinkEtc()
7701 if(SiS_Pr->SiS_VBType & VB_SISDUALLINK) { in SiS_SetDualLinkEtc()
7702 if((SiS_CRT2IsLCD(SiS_Pr)) || in SiS_SetDualLinkEtc()
7703 (SiS_IsVAMode(SiS_Pr))) { in SiS_SetDualLinkEtc()
7704 if(SiS_Pr->SiS_LCDInfo & LCDDualLink) { in SiS_SetDualLinkEtc()
7705 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x27,0x2c); in SiS_SetDualLinkEtc()
7707 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x27,~0x20); in SiS_SetDualLinkEtc()
7712 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_SetDualLinkEtc()
7713 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2a,0x00); in SiS_SetDualLinkEtc()
7715 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_SetDualLinkEtc()
7717 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_SetDualLinkEtc()
7722 SiS_SetGroup4(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetGroup4() argument
7729 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_SetGroup4()
7730 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_SetGroup4()
7731 } else if(SiS_Pr->UseCustomMode) { in SiS_SetGroup4()
7732 modeflag = SiS_Pr->CModeFlag; in SiS_SetGroup4()
7735 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_SetGroup4()
7736 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_SetGroup4()
7739 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup4()
7740 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetGroup4()
7741 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup4()
7742 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x24,0x0e); in SiS_SetGroup4()
7747 if(SiS_Pr->SiS_VBType & (VB_SIS30xCLV | VB_SIS302LV)) { in SiS_SetGroup4()
7748 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7749 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x10,0x9f); in SiS_SetGroup4()
7753 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetGroup4()
7754 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_SetGroup4()
7755 SiS_SetDualLinkEtc(SiS_Pr); in SiS_SetGroup4()
7760 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x13,SiS_Pr->SiS_RVBHCFACT); in SiS_SetGroup4()
7762 tempbx = SiS_Pr->SiS_RVBHCMAX; in SiS_SetGroup4()
7763 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x14,tempbx); in SiS_SetGroup4()
7767 tempcx = SiS_Pr->SiS_VGAHT - 1; in SiS_SetGroup4()
7768 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x16,tempcx); in SiS_SetGroup4()
7772 tempcx = SiS_Pr->SiS_VGAVT - 1; in SiS_SetGroup4()
7773 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) tempcx -= 5; in SiS_SetGroup4()
7774 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x17,tempcx); in SiS_SetGroup4()
7777 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x15,temp); in SiS_SetGroup4()
7779 tempbx = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup4()
7781 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup4()
7783 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7786 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup4()
7790 } else if(SiS_Pr->SiS_TVMode & (TVSetYPbPr525p | TVSetYPbPr750p)) { in SiS_SetGroup4()
7799 temp |= SiS_Pr->Init_P4_0E; in SiS_SetGroup4()
7801 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_SetGroup4()
7802 if(SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) { in SiS_SetGroup4()
7808 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0E,0x10,temp); in SiS_SetGroup4()
7810 tempeax = SiS_Pr->SiS_VGAVDE; in SiS_SetGroup4()
7811 tempebx = SiS_Pr->SiS_VDE; in SiS_SetGroup4()
7812 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SiS_SetGroup4()
7816 tempcx = SiS_Pr->SiS_RVBHRS; in SiS_SetGroup4()
7817 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x18,tempcx); in SiS_SetGroup4()
7833 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1B,temp); in SiS_SetGroup4()
7835 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1A,temp); in SiS_SetGroup4()
7838 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x19,temp); in SiS_SetGroup4()
7840 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SiS_SetGroup4()
7842 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1C,0x28); in SiS_SetGroup4()
7846 if(SiS_Pr->SiS_TVMode & (TVSetHiVision | TVSetYPbPr750p)) tempbx = 0x08; in SiS_SetGroup4()
7847 tempax = SiS_Pr->SiS_VGAHDE; in SiS_SetGroup4()
7849 if(SiS_IsDualLink(SiS_Pr)) tempax >>= 1; in SiS_SetGroup4()
7851 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7862 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7875 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1D,tempax); in SiS_SetGroup4()
7876 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x1E,temp); in SiS_SetGroup4()
7879 if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_SetGroup4()
7882 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetGroup4()
7883 … if(!(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSetHiVision | TVSetYPbPr750p | TVSetYPbPr525p))) { in SiS_SetGroup4()
7885 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetGroup4()
7886 if(!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in SiS_SetGroup4()
7892 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x1F,tempbx,temp); in SiS_SetGroup4()
7894 tempbx = SiS_Pr->SiS_HT >> 1; in SiS_SetGroup4()
7895 if(SiS_IsDualLink(SiS_Pr)) tempbx >>= 1; in SiS_SetGroup4()
7897 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x22,tempbx); in SiS_SetGroup4()
7899 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x21,0xC0,temp); in SiS_SetGroup4()
7901 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SiS_SetGroup4()
7902 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_SetGroup4()
7903 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x24,0x0e); in SiS_SetGroup4()
7908 SiS_SetDualLinkEtc(SiS_Pr); in SiS_SetGroup4()
7912 SiS_SetCRT2VCLK(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetGroup4()
7920 SiS_SetGroup5(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_SetGroup5() argument
7923 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) return; in SiS_SetGroup5()
7925 if(SiS_Pr->SiS_ModeType == ModeVGA) { in SiS_SetGroup5()
7926 if(!(SiS_Pr->SiS_VBInfo & (SetInSlaveMode | LoadDACFlag))) { in SiS_SetGroup5()
7927 SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); in SiS_SetGroup5()
7928 SiS_LoadDAC(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetGroup5()
7938 SiS_GetLVDSCRT1Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_GetLVDSCRT1Ptr() argument
7948 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_GetLVDSCRT1Ptr()
7949 (*ResIndex) = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_GetLVDSCRT1Ptr()
7951 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_GetLVDSCRT1Ptr()
7952 (*ResIndex) = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_GetLVDSCRT1Ptr()
7957 if((SiS_Pr->SiS_IF_DEF_CH70xx) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_GetLVDSCRT1Ptr()
7960 if((SiS_Pr->SiS_TVMode & TVSetPAL) && (!(SiS_Pr->SiS_TVMode & TVSetPALM))) { in SiS_GetLVDSCRT1Ptr()
7962 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_GetLVDSCRT1Ptr()
7963 if(SiS_Pr->SiS_CHSOverScan) (*DisplayType) = 84; in SiS_GetLVDSCRT1Ptr()
7967 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) (*DisplayType)++; in SiS_GetLVDSCRT1Ptr()
7973 switch(SiS_Pr->SiS_LCDResInfo) { in SiS_GetLVDSCRT1Ptr()
7992 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x600) { in SiS_GetLVDSCRT1Ptr()
7993 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) (*DisplayType) += 2; in SiS_GetLVDSCRT1Ptr()
8002 SiS_ModCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_ModCRT1CRTC() argument
8012 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_ModCRT1CRTC()
8013 (SiS_Pr->SiS_CustomT == CUT_BARCO1024) || in SiS_ModCRT1CRTC()
8014 (SiS_Pr->SiS_CustomT == CUT_PANEL848) || in SiS_ModCRT1CRTC()
8015 (SiS_Pr->SiS_CustomT == CUT_PANEL856) ) in SiS_ModCRT1CRTC()
8018 if(SiS_Pr->SiS_IF_DEF_LVDS) { in SiS_ModCRT1CRTC()
8019 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_ModCRT1CRTC()
8020 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) return; in SiS_ModCRT1CRTC()
8022 } else if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_ModCRT1CRTC()
8023 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) return; in SiS_ModCRT1CRTC()
8026 if(SiS_Pr->SiS_LCDInfo & LCDPass11) return; in SiS_ModCRT1CRTC()
8028 if(SiS_Pr->ChipType < SIS_315H) { in SiS_ModCRT1CRTC()
8029 if(SiS_Pr->SiS_SetFlag & SetDOSMode) return; in SiS_ModCRT1CRTC()
8032 if(!(SiS_GetLVDSCRT1Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, in SiS_ModCRT1CRTC()
8038 case 50: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_1; break; /* xSTN */ in SiS_ModCRT1CRTC()
8039 case 14: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_2; break; /* xSTN */ in SiS_ModCRT1CRTC()
8040 case 15: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_2_H; break; /* xSTN */ in SiS_ModCRT1CRTC()
8041 case 18: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_3; break; /* xSTN */ in SiS_ModCRT1CRTC()
8042 case 19: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1320x240_3_H; break; /* xSTN */ in SiS_ModCRT1CRTC()
8043 case 10: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1640x480_1; break; in SiS_ModCRT1CRTC()
8044 case 11: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT1640x480_1_H; break; in SiS_ModCRT1CRTC()
8046 case 26: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_1; break; in SiS_ModCRT1CRTC()
8047 case 27: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_1_H; break; in SiS_ModCRT1CRTC()
8048 case 28: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_2; break; in SiS_ModCRT1CRTC()
8049 case 29: LVDSCRT1Ptr = SiS_Pr->SiS_LVDSCRT11024x600_2_H; break; in SiS_ModCRT1CRTC()
8051 case 80: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1UNTSC; break; in SiS_ModCRT1CRTC()
8052 case 81: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1ONTSC; break; in SiS_ModCRT1CRTC()
8053 case 82: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1UPAL; break; in SiS_ModCRT1CRTC()
8054 case 83: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1OPAL; break; in SiS_ModCRT1CRTC()
8055 case 84: LVDSCRT1Ptr = SiS_Pr->SiS_CHTVCRT1SOPAL; break; in SiS_ModCRT1CRTC()
8060 SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x11,0x7f); in SiS_ModCRT1CRTC()
8064 SiS_SetReg(SiS_Pr->SiS_P3d4,CRIdx[i],tempah); in SiS_ModCRT1CRTC()
8069 SiS_SetReg(SiS_Pr->SiS_P3c4,i,tempah); in SiS_ModCRT1CRTC()
8073 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x0E,0x1f,tempah); in SiS_ModCRT1CRTC()
8075 if(ModeNo <= 0x13) modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_ModCRT1CRTC()
8076 else modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_ModCRT1CRTC()
8080 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x09,~0x020,tempah); in SiS_ModCRT1CRTC()
8084 SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); in SiS_ModCRT1CRTC()
8094 SiS_SetCRT2ECLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCRT2ECLK() argument
8097 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2ECLK()
8101 if(SiS_Pr->SiS_LCDInfo & LCDPass11) { in SiS_SetCRT2ECLK()
8102 SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); in SiS_SetCRT2ECLK()
8103 if(SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRTVCLK == 2) { in SiS_SetCRT2ECLK()
8106 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, in SiS_SetCRT2ECLK()
8108 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2ECLK()
8110 vclkindex = SiS_GetVCLK2Ptr(SiS_Pr, ModeNo, ModeIdIndex, in SiS_SetCRT2ECLK()
8114 sr2b = SiS_Pr->SiS_VCLKData[vclkindex].SR2B; in SiS_SetCRT2ECLK()
8115 sr2c = SiS_Pr->SiS_VCLKData[vclkindex].SR2C; in SiS_SetCRT2ECLK()
8117 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2ECLK()
8118 if(SiS_Pr->SiS_UseROM) { in SiS_SetCRT2ECLK()
8127 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { in SiS_SetCRT2ECLK()
8128 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) { in SiS_SetCRT2ECLK()
8133 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x20); in SiS_SetCRT2ECLK()
8134 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
8135 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
8136 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x10); in SiS_SetCRT2ECLK()
8137 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
8138 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
8139 SiS_SetReg(SiS_Pr->SiS_P3c4,0x31,0x00); in SiS_SetCRT2ECLK()
8140 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase,sr2b); in SiS_SetCRT2ECLK()
8141 SiS_SetReg(SiS_Pr->SiS_P3c4,clkbase+1,sr2c); in SiS_SetCRT2ECLK()
8149 SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_SetCHTVReg() argument
8156 resindex = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SiS_SetCHTVReg()
8158 resindex = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; in SiS_SetCHTVReg()
8163 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
8164 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetCHTVReg()
8166 if(SiS_Pr->SiS_ModeType > ModeVGA) { in SiS_SetCHTVReg()
8167 if(SiS_Pr->SiS_CHSOverScan) TVType = 8; in SiS_SetCHTVReg()
8169 if(SiS_Pr->SiS_TVMode & TVSetPALM) { in SiS_SetCHTVReg()
8171 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
8172 } else if(SiS_Pr->SiS_TVMode & TVSetPALN) { in SiS_SetCHTVReg()
8174 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) TVType += 1; in SiS_SetCHTVReg()
8179 case 0: CHTVRegData = SiS_Pr->SiS_CHTVReg_UNTSC; break; in SiS_SetCHTVReg()
8180 case 1: CHTVRegData = SiS_Pr->SiS_CHTVReg_ONTSC; break; in SiS_SetCHTVReg()
8181 case 2: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPAL; break; in SiS_SetCHTVReg()
8182 case 3: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPAL; break; in SiS_SetCHTVReg()
8183 case 4: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPALM; break; in SiS_SetCHTVReg()
8184 case 5: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPALM; break; in SiS_SetCHTVReg()
8185 case 6: CHTVRegData = SiS_Pr->SiS_CHTVReg_UPALN; break; in SiS_SetCHTVReg()
8186 case 7: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPALN; break; in SiS_SetCHTVReg()
8187 case 8: CHTVRegData = SiS_Pr->SiS_CHTVReg_SOPAL; break; in SiS_SetCHTVReg()
8188 default: CHTVRegData = SiS_Pr->SiS_CHTVReg_OPAL; break; in SiS_SetCHTVReg()
8192 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetCHTVReg()
8201 if(SiS_Pr->SiS_TVMode & TVSetPAL) { in SiS_SetCHTVReg()
8202 SiS_SetCH700x(SiS_Pr,0x04,0x43); /* 0x40=76uA (PAL); 0x03=15bit non-multi RGB*/ in SiS_SetCHTVReg()
8203 SiS_SetCH700x(SiS_Pr,0x09,0x69); /* Black level for PAL (105)*/ in SiS_SetCHTVReg()
8205 SiS_SetCH700x(SiS_Pr,0x04,0x03); /* upper nibble=71uA (NTSC), 0x03=15bit non-multi RGB*/ in SiS_SetCHTVReg()
8206 SiS_SetCH700x(SiS_Pr,0x09,0x71); /* Black level for NTSC (113)*/ in SiS_SetCHTVReg()
8209 SiS_SetCH700x(SiS_Pr,0x00,CHTVRegData[resindex].Reg[0]); /* Mode register */ in SiS_SetCHTVReg()
8210 SiS_SetCH700x(SiS_Pr,0x07,CHTVRegData[resindex].Reg[1]); /* Start active video register */ in SiS_SetCHTVReg()
8211 SiS_SetCH700x(SiS_Pr,0x08,CHTVRegData[resindex].Reg[2]); /* Position overflow register */ in SiS_SetCHTVReg()
8212 SiS_SetCH700x(SiS_Pr,0x0a,CHTVRegData[resindex].Reg[3]); /* Horiz Position register */ in SiS_SetCHTVReg()
8213 SiS_SetCH700x(SiS_Pr,0x0b,CHTVRegData[resindex].Reg[4]); /* Vertical Position register */ in SiS_SetCHTVReg()
8220 SiS_SetCH700x(SiS_Pr,0x01,0x28); in SiS_SetCHTVReg()
8229 SiS_SetCH700x(SiS_Pr,0x03,0xb1); /* old: 3103 */ in SiS_SetCHTVReg()
8235 SiS_SetCH70xx(SiS_Pr,0x3d,0x00); in SiS_SetCHTVReg()
8241 SiS_SetCH70xxANDOR(SiS_Pr,0x10,0x00,0x1F); in SiS_SetCHTVReg()
8246 SiS_SetCH70xxANDOR(SiS_Pr,0x11,0x02,0xF8); in SiS_SetCHTVReg()
8250 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x00,0xEF); in SiS_SetCHTVReg()
8252 if(!(SiS_Pr->SiS_TVMode & TVSetPAL)) { /* ---- NTSC ---- */ in SiS_SetCHTVReg()
8253 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) { in SiS_SetCHTVReg()
8255 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
8256 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); /* ACIV on, no need to set FSCI */ in SiS_SetCHTVReg()
8258 SiS_SetCH70xxANDOR(SiS_Pr,0x18,0x01,0xF0); /* 0x18-0x1f: FSCI 469,762,048 */ in SiS_SetCHTVReg()
8259 SiS_SetCH70xxANDOR(SiS_Pr,0x19,0x0C,0xF0); in SiS_SetCHTVReg()
8260 SiS_SetCH70xxANDOR(SiS_Pr,0x1a,0x00,0xF0); in SiS_SetCHTVReg()
8261 SiS_SetCH70xxANDOR(SiS_Pr,0x1b,0x00,0xF0); in SiS_SetCHTVReg()
8262 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x00,0xF0); in SiS_SetCHTVReg()
8263 SiS_SetCH70xxANDOR(SiS_Pr,0x1d,0x00,0xF0); in SiS_SetCHTVReg()
8264 SiS_SetCH70xxANDOR(SiS_Pr,0x1e,0x00,0xF0); in SiS_SetCHTVReg()
8265 SiS_SetCH70xxANDOR(SiS_Pr,0x1f,0x00,0xF0); in SiS_SetCHTVReg()
8266 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x01,0xEF); /* Loop filter on for mode 23 */ in SiS_SetCHTVReg()
8267 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x00,0xFE); /* ACIV off, need to set FSCI */ in SiS_SetCHTVReg()
8271 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
8272 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); in SiS_SetCHTVReg()
8275 … SiS_SetCH70xxANDOR(SiS_Pr,0x18,0x01,0xF0); /* (FSCI was 0x1f1c71c7 - this is for mode 22) */ in SiS_SetCHTVReg()
8276 SiS_SetCH70xxANDOR(SiS_Pr,0x19,0x09,0xF0); /* FSCI for mode 24 is 428,554,851 */ in SiS_SetCHTVReg()
8277 SiS_SetCH70xxANDOR(SiS_Pr,0x1a,0x08,0xF0); /* 198b3a63 */ in SiS_SetCHTVReg()
8278 SiS_SetCH70xxANDOR(SiS_Pr,0x1b,0x0b,0xF0); in SiS_SetCHTVReg()
8279 SiS_SetCH70xxANDOR(SiS_Pr,0x1c,0x04,0xF0); in SiS_SetCHTVReg()
8280 SiS_SetCH70xxANDOR(SiS_Pr,0x1d,0x01,0xF0); in SiS_SetCHTVReg()
8281 SiS_SetCH70xxANDOR(SiS_Pr,0x1e,0x06,0xF0); in SiS_SetCHTVReg()
8282 SiS_SetCH70xxANDOR(SiS_Pr,0x1f,0x05,0xF0); in SiS_SetCHTVReg()
8283 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off for mode 24 */ in SiS_SetCHTVReg()
8284 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x00,0xFE); * ACIV off, need to set FSCI */ in SiS_SetCHTVReg()
8286 SiS_SetCH70xxANDOR(SiS_Pr,0x20,0x00,0xEF); /* loop filter off */ in SiS_SetCHTVReg()
8287 SiS_SetCH70xxANDOR(SiS_Pr,0x21,0x01,0xFE); in SiS_SetCHTVReg()
8292 SiS_SetCH70xxANDOR(SiS_Pr, 0x20, 0x00, 0xEF); /* loop filter off */ in SiS_SetCHTVReg()
8293 SiS_SetCH70xxANDOR(SiS_Pr, 0x21, 0x01, 0xFE); /* ACIV on */ in SiS_SetCHTVReg()
8310 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp |= 0x10; in SiS_SetCHTVReg()
8311 SiS_SetCH701x(SiS_Pr,0x00,temp); in SiS_SetCHTVReg()
8313 SiS_SetCH701x(SiS_Pr,0x01,CHTVRegData[resindex].Reg[1]); in SiS_SetCHTVReg()
8314 SiS_SetCH701x(SiS_Pr,0x02,CHTVRegData[resindex].Reg[2]); in SiS_SetCHTVReg()
8315 SiS_SetCH701x(SiS_Pr,0x04,CHTVRegData[resindex].Reg[3]); in SiS_SetCHTVReg()
8316 SiS_SetCH701x(SiS_Pr,0x03,CHTVRegData[resindex].Reg[4]); in SiS_SetCHTVReg()
8317 SiS_SetCH701x(SiS_Pr,0x05,CHTVRegData[resindex].Reg[5]); in SiS_SetCHTVReg()
8318 SiS_SetCH701x(SiS_Pr,0x06,CHTVRegData[resindex].Reg[6]); in SiS_SetCHTVReg()
8321 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp = 0x66; in SiS_SetCHTVReg()
8322 SiS_SetCH701x(SiS_Pr,0x07,temp); in SiS_SetCHTVReg()
8324 SiS_SetCH701x(SiS_Pr,0x08,CHTVRegData[resindex].Reg[8]); in SiS_SetCHTVReg()
8325 SiS_SetCH701x(SiS_Pr,0x15,CHTVRegData[resindex].Reg[9]); in SiS_SetCHTVReg()
8326 SiS_SetCH701x(SiS_Pr,0x1f,CHTVRegData[resindex].Reg[10]); in SiS_SetCHTVReg()
8327 SiS_SetCH701x(SiS_Pr,0x0c,CHTVRegData[resindex].Reg[11]); in SiS_SetCHTVReg()
8328 SiS_SetCH701x(SiS_Pr,0x0d,CHTVRegData[resindex].Reg[12]); in SiS_SetCHTVReg()
8329 SiS_SetCH701x(SiS_Pr,0x0e,CHTVRegData[resindex].Reg[13]); in SiS_SetCHTVReg()
8330 SiS_SetCH701x(SiS_Pr,0x0f,CHTVRegData[resindex].Reg[14]); in SiS_SetCHTVReg()
8331 SiS_SetCH701x(SiS_Pr,0x10,CHTVRegData[resindex].Reg[15]); in SiS_SetCHTVReg()
8333 temp = SiS_GetCH701x(SiS_Pr,0x21) & ~0x02; in SiS_SetCHTVReg()
8340 if(SiS_Pr->SiS_TVMode & (TVSetPALN | TVSetNTSCJ)) temp |= 0x02; in SiS_SetCHTVReg()
8341 SiS_SetCH701x(SiS_Pr,0x21,temp); in SiS_SetCHTVReg()
8356 SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xBLOn() argument
8361 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xBLOn()
8362 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xBLOn()
8363 SiS_SetCH701x(SiS_Pr,0x66,0x65); in SiS_Chrontel701xBLOn()
8365 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_Chrontel701xBLOn()
8367 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_Chrontel701xBLOn()
8373 SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xBLOff() argument
8378 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xBLOff()
8379 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_Chrontel701xBLOff()
8381 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_Chrontel701xBLOff()
8386 SiS_ChrontelPowerSequencing(struct SiS_Private *SiS_Pr) in SiS_ChrontelPowerSequencing() argument
8400 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelPowerSequencing()
8401 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_ChrontelPowerSequencing()
8402 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) tableptr = asus1024_740; in SiS_ChrontelPowerSequencing()
8404 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_ChrontelPowerSequencing()
8405 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_ChrontelPowerSequencing()
8406 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200)) { in SiS_ChrontelPowerSequencing()
8407 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) tableptr = asus1400_740; in SiS_ChrontelPowerSequencing()
8411 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_ChrontelPowerSequencing()
8413 } else if((SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) || in SiS_ChrontelPowerSequencing()
8414 (SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) || in SiS_ChrontelPowerSequencing()
8415 (SiS_Pr->SiS_LCDResInfo == Panel_1600x1200)) { in SiS_ChrontelPowerSequencing()
8421 SiS_SetCH701x(SiS_Pr, regtable[i], tableptr[i]); in SiS_ChrontelPowerSequencing()
8426 SiS_SetCH701xForLCD(struct SiS_Private *SiS_Pr) in SiS_SetCH701xForLCD() argument
8468 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetCH701xForLCD()
8469 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tableptr = table1024_740; in SiS_SetCH701xForLCD()
8470 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) tableptr = table1280_740; in SiS_SetCH701xForLCD()
8471 else if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) tableptr = table1400_740; in SiS_SetCH701xForLCD()
8472 else if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) tableptr = table1600_740; in SiS_SetCH701xForLCD()
8475 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) tableptr = table1024_650; in SiS_SetCH701xForLCD()
8476 else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) tableptr = table1280_650; in SiS_SetCH701xForLCD()
8477 else if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) tableptr = table1400_650; in SiS_SetCH701xForLCD()
8478 else if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) tableptr = table1600_650; in SiS_SetCH701xForLCD()
8482 tempbh = SiS_GetCH701x(SiS_Pr,0x74); in SiS_SetCH701xForLCD()
8484 tempbh = SiS_GetCH701x(SiS_Pr,0x73); in SiS_SetCH701xForLCD()
8486 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) return; in SiS_SetCH701xForLCD()
8488 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) return; in SiS_SetCH701xForLCD()
8489 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) return; in SiS_SetCH701xForLCD()
8491 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) return; in SiS_SetCH701xForLCD()
8495 if(SiS_Pr->ChipType == SIS_740) tempbh = 0x0d; in SiS_SetCH701xForLCD()
8499 SiS_SetCH701x(SiS_Pr, regtable[i], tableptr[i]); in SiS_SetCH701xForLCD()
8501 SiS_ChrontelPowerSequencing(SiS_Pr); in SiS_SetCH701xForLCD()
8502 tempbh = SiS_GetCH701x(SiS_Pr,0x1e); in SiS_SetCH701xForLCD()
8504 SiS_SetCH701x(SiS_Pr,0x1e,tempbh); in SiS_SetCH701xForLCD()
8506 if(SiS_Pr->ChipType == SIS_740) { in SiS_SetCH701xForLCD()
8507 tempbh = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_SetCH701xForLCD()
8509 SiS_SetCH701x(SiS_Pr,0x1c,tempbh); in SiS_SetCH701xForLCD()
8510 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x03); in SiS_SetCH701xForLCD()
8511 tempbh = SiS_GetCH701x(SiS_Pr,0x64); in SiS_SetCH701xForLCD()
8513 SiS_SetCH701x(SiS_Pr,0x64,tempbh); in SiS_SetCH701xForLCD()
8514 tempbh = SiS_GetCH701x(SiS_Pr,0x03); in SiS_SetCH701xForLCD()
8516 SiS_SetCH701x(SiS_Pr,0x03,tempbh); in SiS_SetCH701xForLCD()
8521 SiS_ChrontelResetVSync(struct SiS_Private *SiS_Pr) in SiS_ChrontelResetVSync() argument
8525 temp1 = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelResetVSync()
8526 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_ChrontelResetVSync()
8527 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelResetVSync()
8529 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_ChrontelResetVSync()
8530 SiS_LongDelay(SiS_Pr, 3); in SiS_ChrontelResetVSync()
8531 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelResetVSync()
8533 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_ChrontelResetVSync()
8534 SiS_SetCH701x(SiS_Pr,0x49,temp1); in SiS_ChrontelResetVSync()
8538 SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xOn() argument
8542 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xOn()
8543 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOn()
8544 temp = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_Chrontel701xOn()
8546 SiS_SetCH701x(SiS_Pr,0x1c,temp); in SiS_Chrontel701xOn()
8548 if(SiS_IsYPbPr(SiS_Pr)) { in SiS_Chrontel701xOn()
8549 temp = SiS_GetCH701x(SiS_Pr,0x01); in SiS_Chrontel701xOn()
8552 SiS_SetCH701x(SiS_Pr,0x01,temp); in SiS_Chrontel701xOn()
8554 if(SiS_IsChScart(SiS_Pr)) { in SiS_Chrontel701xOn()
8555 temp = SiS_GetCH701x(SiS_Pr,0x01); in SiS_Chrontel701xOn()
8558 SiS_SetCH701x(SiS_Pr,0x01,temp); in SiS_Chrontel701xOn()
8560 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOn()
8561 SiS_ChrontelResetVSync(SiS_Pr); in SiS_Chrontel701xOn()
8562 SiS_SetCH701x(SiS_Pr,0x49,0x20); /* Enable TV path */ in SiS_Chrontel701xOn()
8564 SiS_SetCH701x(SiS_Pr,0x49,0x20); /* Enable TV path */ in SiS_Chrontel701xOn()
8565 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_Chrontel701xOn()
8566 if(SiS_IsYPbPr(SiS_Pr)) { in SiS_Chrontel701xOn()
8567 temp = SiS_GetCH701x(SiS_Pr,0x73); in SiS_Chrontel701xOn()
8569 SiS_SetCH701x(SiS_Pr,0x73,temp); in SiS_Chrontel701xOn()
8571 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_Chrontel701xOn()
8573 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_Chrontel701xOn()
8574 SiS_LongDelay(SiS_Pr, 2); in SiS_Chrontel701xOn()
8575 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_Chrontel701xOn()
8577 SiS_SetCH701x(SiS_Pr,0x47,temp); in SiS_Chrontel701xOn()
8583 SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr) in SiS_Chrontel701xOff() argument
8588 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_Chrontel701xOff()
8589 if(SiS_Pr->ChipType == SIS_740) { in SiS_Chrontel701xOff()
8590 SiS_LongDelay(SiS_Pr, 1); in SiS_Chrontel701xOff()
8591 SiS_GenericDelay(SiS_Pr, 5887); in SiS_Chrontel701xOff()
8592 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_Chrontel701xOff()
8593 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_Chrontel701xOff()
8595 SiS_LongDelay(SiS_Pr, 2); in SiS_Chrontel701xOff()
8596 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_Chrontel701xOff()
8598 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_Chrontel701xOff()
8599 SiS_SetCH701x(SiS_Pr,0x66,0x00); in SiS_Chrontel701xOff()
8605 SiS_ChrontelResetDB(struct SiS_Private *SiS_Pr) in SiS_ChrontelResetDB() argument
8609 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelResetDB()
8611 temp = SiS_GetCH701x(SiS_Pr,0x4a); /* Version ID */ in SiS_ChrontelResetDB()
8615 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelResetDB()
8616 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelResetDB()
8617 SiS_SetCH701x(SiS_Pr,0x49,0x3e); in SiS_ChrontelResetDB()
8621 SiS_SetCH701x(SiS_Pr,0x48,0x10); in SiS_ChrontelResetDB()
8622 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelResetDB()
8623 SiS_SetCH701x(SiS_Pr,0x48,0x18); in SiS_ChrontelResetDB()
8625 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelResetDB()
8626 SiS_ChrontelResetVSync(SiS_Pr); in SiS_ChrontelResetDB()
8627 SiS_SetCH701x(SiS_Pr,0x49,temp); in SiS_ChrontelResetDB()
8633 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8635 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8636 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8638 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8639 temp = SiS_GetCH701x(SiS_Pr,0x5c); in SiS_ChrontelResetDB()
8641 SiS_SetCH701x(SiS_Pr,0x5c,temp); in SiS_ChrontelResetDB()
8642 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelResetDB()
8644 SiS_SetCH701xForLCD(SiS_Pr); in SiS_ChrontelResetDB()
8650 SiS_SetCH701x(SiS_Pr,0x48,0x10); in SiS_ChrontelResetDB()
8651 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelResetDB()
8652 SiS_SetCH701x(SiS_Pr,0x48,0x18); in SiS_ChrontelResetDB()
8657 SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr) in SiS_ChrontelInitTVVSync() argument
8661 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelInitTVVSync()
8663 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelInitTVVSync()
8664 SiS_ChrontelResetVSync(SiS_Pr); in SiS_ChrontelInitTVVSync()
8669 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* Power up LVDS block */ in SiS_ChrontelInitTVVSync()
8670 temp = SiS_GetCH701x(SiS_Pr,0x49); in SiS_ChrontelInitTVVSync()
8673 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelInitTVVSync()
8675 SiS_SetCH701x(SiS_Pr,0x47,temp); /* enable VSYNC */ in SiS_ChrontelInitTVVSync()
8676 SiS_LongDelay(SiS_Pr, 3); in SiS_ChrontelInitTVVSync()
8677 temp = SiS_GetCH701x(SiS_Pr,0x47); in SiS_ChrontelInitTVVSync()
8679 SiS_SetCH701x(SiS_Pr,0x47,temp); /* disable VSYNC */ in SiS_ChrontelInitTVVSync()
8686 SiS_ChrontelDoSomething3(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_ChrontelDoSomething3() argument
8690 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething3()
8692 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelDoSomething3()
8695 SiS_SetCH701x(SiS_Pr,0x61,temp); in SiS_ChrontelDoSomething3()
8697 SiS_SetCH701x(SiS_Pr,0x66,0x45); /* Panel power on */ in SiS_ChrontelDoSomething3()
8698 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* All power on */ in SiS_ChrontelDoSomething3()
8699 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething3()
8700 SiS_GenericDelay(SiS_Pr, 5887); in SiS_ChrontelDoSomething3()
8705 temp = SiS_GetCH701x(SiS_Pr,0x61); in SiS_ChrontelDoSomething3()
8708 SiS_SetCH701x(SiS_Pr,0x61,temp); in SiS_ChrontelDoSomething3()
8711 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_ChrontelDoSomething3()
8712 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething3()
8714 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_ChrontelDoSomething3()
8716 if(SiS_WeHaveBacklightCtrl(SiS_Pr)) { in SiS_ChrontelDoSomething3()
8717 SiS_GenericDelay(SiS_Pr, 1023); in SiS_ChrontelDoSomething3()
8719 SiS_GenericDelay(SiS_Pr, 767); in SiS_ChrontelDoSomething3()
8723 SiS_GenericDelay(SiS_Pr, 767); in SiS_ChrontelDoSomething3()
8725 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething3()
8727 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething3()
8728 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething3()
8730 SiS_SetCH701x(SiS_Pr,0x66,temp); in SiS_ChrontelDoSomething3()
8731 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething3()
8737 SiS_ChrontelDoSomething2(struct SiS_Private *SiS_Pr) in SiS_ChrontelDoSomething2() argument
8741 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething2()
8744 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething2()
8748 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething2()
8750 SiS_SetCH701x(SiS_Pr,0x76,0xac); in SiS_ChrontelDoSomething2()
8753 SiS_SetCH701xForLCD(SiS_Pr); in SiS_ChrontelDoSomething2()
8755 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething2()
8757 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething2()
8758 SiS_LongDelay(SiS_Pr, 2); in SiS_ChrontelDoSomething2()
8759 temp = SiS_GetCH701x(SiS_Pr,0x76); in SiS_ChrontelDoSomething2()
8761 SiS_SetCH701x(SiS_Pr,0x76,temp); in SiS_ChrontelDoSomething2()
8762 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething2()
8763 SiS_SetCH701x(SiS_Pr,0x78,0xe0); /* PLL loop filter */ in SiS_ChrontelDoSomething2()
8765 SiS_SetCH701x(SiS_Pr,0x78,0x60); in SiS_ChrontelDoSomething2()
8767 SiS_LongDelay(SiS_Pr, 2); in SiS_ChrontelDoSomething2()
8770 SiS_SetCH701x(SiS_Pr,0x77,0x00); /* MV? */ in SiS_ChrontelDoSomething2()
8774 SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr) in SiS_ChrontelDoSomething1() argument
8778 temp = SiS_GetCH701x(SiS_Pr,0x03); in SiS_ChrontelDoSomething1()
8781 SiS_SetCH701x(SiS_Pr,0x03,temp); in SiS_ChrontelDoSomething1()
8783 if(SiS_Pr->ChipType == SIS_740) { in SiS_ChrontelDoSomething1()
8785 temp = SiS_GetCH701x(SiS_Pr,0x1c); in SiS_ChrontelDoSomething1()
8787 SiS_SetCH701x(SiS_Pr,0x1c,temp); in SiS_ChrontelDoSomething1()
8789 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2d,0x03); in SiS_ChrontelDoSomething1()
8791 temp = SiS_GetCH701x(SiS_Pr,0x64); in SiS_ChrontelDoSomething1()
8793 SiS_SetCH701x(SiS_Pr,0x64,temp); in SiS_ChrontelDoSomething1()
8795 temp = SiS_GetCH701x(SiS_Pr,0x03); in SiS_ChrontelDoSomething1()
8797 SiS_SetCH701x(SiS_Pr,0x03,temp); in SiS_ChrontelDoSomething1()
8799 if(SiS_Pr->SiS_CustomT == CUT_ASUSL3000D) { in SiS_ChrontelDoSomething1()
8800 SiS_SetCH701x(SiS_Pr,0x63,0x40); /* LVDS off */ in SiS_ChrontelDoSomething1()
8801 SiS_LongDelay(SiS_Pr, 1); in SiS_ChrontelDoSomething1()
8802 SiS_SetCH701x(SiS_Pr,0x63,0x00); /* LVDS on */ in SiS_ChrontelDoSomething1()
8803 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8804 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8805 SiS_ChrontelDoSomething3(SiS_Pr, 0); in SiS_ChrontelDoSomething1()
8807 temp = SiS_GetCH701x(SiS_Pr,0x66); in SiS_ChrontelDoSomething1()
8809 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8810 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8811 SiS_ChrontelDoSomething3(SiS_Pr, 0); in SiS_ChrontelDoSomething1()
8817 SiS_ChrontelResetDB(SiS_Pr); in SiS_ChrontelDoSomething1()
8818 SiS_ChrontelDoSomething2(SiS_Pr); in SiS_ChrontelDoSomething1()
8819 temp = SiS_GetReg(SiS_Pr->SiS_P3d4,0x34); in SiS_ChrontelDoSomething1()
8820 SiS_ChrontelDoSomething3(SiS_Pr,temp); in SiS_ChrontelDoSomething1()
8821 SiS_SetCH701x(SiS_Pr,0x76,0xaf); /* All power on, LVDS normal operation */ in SiS_ChrontelDoSomething1()
8833 SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SiS_SetCRT2Group() argument
8836 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SiS_SetCRT2Group()
8840 SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; in SiS_SetCRT2Group()
8842 if(!SiS_Pr->UseCustomMode) { in SiS_SetCRT2Group()
8843 SiS_SearchModeID(SiS_Pr, &ModeNo, &ModeIdIndex); in SiS_SetCRT2Group()
8849 SiS_Pr->SiS_SelectCRT2Rate = 4; in SiS_SetCRT2Group()
8851 SiS_UnLockCRT2(SiS_Pr); in SiS_SetCRT2Group()
8853 RefreshRateTableIndex = SiS_GetRatePtr(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8855 SiS_SaveCRT2Info(SiS_Pr,ModeNo); in SiS_SetCRT2Group()
8857 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8858 SiS_DisableBridge(SiS_Pr); in SiS_SetCRT2Group()
8859 if((SiS_Pr->SiS_IF_DEF_LVDS == 1) && (SiS_Pr->ChipType == SIS_730)) { in SiS_SetCRT2Group()
8860 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,0x80); in SiS_SetCRT2Group()
8862 SiS_SetCRT2ModeRegs(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8865 if(SiS_Pr->SiS_VBInfo & DisableCRT2Display) { in SiS_SetCRT2Group()
8866 SiS_LockCRT2(SiS_Pr); in SiS_SetCRT2Group()
8867 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8871 SiS_GetCRT2Data(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8874 SiS_Pr->SiS_LCDHDES = SiS_Pr->SiS_LCDVDES = 0; in SiS_SetCRT2Group()
8875 if( (SiS_Pr->SiS_IF_DEF_LVDS == 1) || in SiS_SetCRT2Group()
8876 ((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) || in SiS_SetCRT2Group()
8877 ((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBType & VB_SIS30xBLV)) ) { in SiS_SetCRT2Group()
8878 SiS_GetLVDSDesData(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8881 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8882 SiS_SetGroup1(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8885 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_SetCRT2Group()
8887 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8889 SiS_SetGroup2(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8891 SiS_SetGroup2_C_ELV(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8893 SiS_SetGroup3(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8894 SiS_SetGroup4(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8896 SiS_SetGroup4_C_ELV(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8898 SiS_SetGroup5(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8900 SiS_SetCRT2Sync(SiS_Pr, ModeNo, RefreshRateTableIndex); in SiS_SetCRT2Group()
8903 if((SiS_Pr->SiS_VBType & VB_NoLCD) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD)) { in SiS_SetCRT2Group()
8905 if(!((SiS_Pr->SiS_SetFlag & SetDOSMode) && ((ModeNo == 0x03) || (ModeNo == 0x10)))) { in SiS_SetCRT2Group()
8906 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { in SiS_SetCRT2Group()
8907 SiS_ModCRT1CRTC(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8910 SiS_SetCRT2ECLK(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8916 SiS_SetCRT2Sync(SiS_Pr, ModeNo, RefreshRateTableIndex); in SiS_SetCRT2Group()
8918 SiS_ModCRT1CRTC(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8920 SiS_SetCRT2ECLK(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8922 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8923 if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { in SiS_SetCRT2Group()
8924 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_SetCRT2Group()
8925 if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { in SiS_SetCRT2Group()
8927 SiS_SetCH701xForLCD(SiS_Pr); in SiS_SetCRT2Group()
8931 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Group()
8932 SiS_SetCHTVReg(SiS_Pr,ModeNo,ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8940 if(SiS_Pr->ChipType < SIS_315H) { in SiS_SetCRT2Group()
8941 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8942 if(SiS_Pr->SiS_UseOEM) { in SiS_SetCRT2Group()
8943 if((SiS_Pr->SiS_UseROM) && (SiS_Pr->SiS_UseOEM == -1)) { in SiS_SetCRT2Group()
8945 SiS_OEM300Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8948 SiS_OEM300Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8951 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_SetCRT2Group()
8952 if((SiS_Pr->SiS_CustomT == CUT_BARCO1366) || in SiS_SetCRT2Group()
8953 (SiS_Pr->SiS_CustomT == CUT_BARCO1024)) { in SiS_SetCRT2Group()
8954 SetOEMLCDData2(SiS_Pr, ModeNo, ModeIdIndex,RefreshRateTableIndex); in SiS_SetCRT2Group()
8956 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8963 if(SiS_Pr->ChipType >= SIS_315H) { in SiS_SetCRT2Group()
8964 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8965 if(SiS_Pr->ChipType < SIS_661) { in SiS_SetCRT2Group()
8966 SiS_FinalizeLCD(SiS_Pr, ModeNo, ModeIdIndex); in SiS_SetCRT2Group()
8967 SiS_OEM310Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8969 SiS_OEM661Setting(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); in SiS_SetCRT2Group()
8971 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x01,0x40); in SiS_SetCRT2Group()
8976 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8977 SiS_EnableBridge(SiS_Pr); in SiS_SetCRT2Group()
8980 SiS_DisplayOn(SiS_Pr); in SiS_SetCRT2Group()
8982 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { in SiS_SetCRT2Group()
8983 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_SetCRT2Group()
8985 SiS_SetRegSR11ANDOR(SiS_Pr,0xFF,0x0C); in SiS_SetCRT2Group()
8988 SiS_SetCH70xxANDOR(SiS_Pr,0x0e,0x01,0xf8); in SiS_SetCRT2Group()
8992 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SiS_SetCRT2Group()
8993 SiS_LockCRT2(SiS_Pr); in SiS_SetCRT2Group()
9005 SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr) in SiS_SiS30xBLOn() argument
9008 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_SiS30xBLOn()
9009 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x02)) { in SiS_SiS30xBLOn()
9010 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x02); in SiS_SiS30xBLOn()
9011 SiS_WaitVBRetrace(SiS_Pr); in SiS_SiS30xBLOn()
9013 if(!(SiS_GetReg(SiS_Pr->SiS_Part4Port,0x26) & 0x01)) { in SiS_SiS30xBLOn()
9014 SiS_SetRegOR(SiS_Pr->SiS_Part4Port,0x26,0x01); in SiS_SiS30xBLOn()
9019 SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr) in SiS_SiS30xBLOff() argument
9022 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x26,0xFE); in SiS_SiS30xBLOff()
9023 SiS_DDC2Delay(SiS_Pr,0xff00); in SiS_SiS30xBLOff()
9031 SiS_SetupDDCN(struct SiS_Private *SiS_Pr) in SiS_SetupDDCN() argument
9033 SiS_Pr->SiS_DDC_NData = ~SiS_Pr->SiS_DDC_Data; in SiS_SetupDDCN()
9034 SiS_Pr->SiS_DDC_NClk = ~SiS_Pr->SiS_DDC_Clk; in SiS_SetupDDCN()
9035 if((SiS_Pr->SiS_DDC_Index == 0x11) && (SiS_Pr->SiS_SensibleSR11)) { in SiS_SetupDDCN()
9036 SiS_Pr->SiS_DDC_NData &= 0x0f; in SiS_SetupDDCN()
9037 SiS_Pr->SiS_DDC_NClk &= 0x0f; in SiS_SetupDDCN()
9043 SiS_SetTrumpBlockLoop(struct SiS_Private *SiS_Pr, unsigned char *dataptr) in SiS_SetTrumpBlockLoop() argument
9054 SiS_SetStop(SiS_Pr); in SiS_SetTrumpBlockLoop()
9055 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 2); in SiS_SetTrumpBlockLoop()
9057 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_SetTrumpBlockLoop()
9058 tempah = SiS_Pr->SiS_DDC_DeviceAddr; in SiS_SetTrumpBlockLoop()
9059 temp = SiS_WriteDDC2Data(SiS_Pr,tempah); /* Write DAB (S0=0=write) */ in SiS_SetTrumpBlockLoop()
9062 temp = SiS_WriteDDC2Data(SiS_Pr,tempah); /* Write register number */ in SiS_SetTrumpBlockLoop()
9066 temp = SiS_WriteDDC2Data(SiS_Pr,tempah);/* Write DAB (S0=0=write) */ in SiS_SetTrumpBlockLoop()
9070 if(SiS_SetStop(SiS_Pr)) continue; in SiS_SetTrumpBlockLoop()
9077 SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr) in SiS_SetTrumpionBlock() argument
9079 SiS_Pr->SiS_DDC_DeviceAddr = 0xF0; /* DAB (Device Address Byte) */ in SiS_SetTrumpionBlock()
9080 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetTrumpionBlock()
9081 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_SetTrumpionBlock()
9082 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_SetTrumpionBlock()
9083 SiS_SetupDDCN(SiS_Pr); in SiS_SetTrumpionBlock()
9085 SiS_SetSwitchDDC2(SiS_Pr); in SiS_SetTrumpionBlock()
9088 dataptr = SiS_SetTrumpBlockLoop(SiS_Pr, dataptr); in SiS_SetTrumpionBlock()
9103 SiS_SetChReg(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val, unsigned short myor) in SiS_SetChReg() argument
9109 SiS_SetStop(SiS_Pr); in SiS_SetChReg()
9110 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 4); in SiS_SetChReg()
9112 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_SetChReg()
9113 temp = SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_DeviceAddr); /* Write DAB (S0=0=write) */ in SiS_SetChReg()
9115 … temp = SiS_WriteDDC2Data(SiS_Pr, (reg | myor)); /* Write RAB (700x: set bit 7, see datasheet) */ in SiS_SetChReg()
9117 temp = SiS_WriteDDC2Data(SiS_Pr, val); /* Write data */ in SiS_SetChReg()
9119 if(SiS_SetStop(SiS_Pr)) continue; /* Set stop condition */ in SiS_SetChReg()
9120 SiS_Pr->SiS_ChrontelInit = 1; in SiS_SetChReg()
9128 SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH700x() argument
9130 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB (Device Address Byte) */ in SiS_SetCH700x()
9132 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetCH700x()
9134 if(!(SiS_Pr->SiS_ChrontelInit)) { in SiS_SetCH700x()
9135 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetCH700x()
9136 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_SetCH700x()
9137 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_SetCH700x()
9138 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH700x()
9141 if( (!(SiS_SetChReg(SiS_Pr, reg, val, 0x80))) && in SiS_SetCH700x()
9142 (!(SiS_Pr->SiS_ChrontelInit)) ) { in SiS_SetCH700x()
9143 SiS_Pr->SiS_DDC_Index = 0x0a; in SiS_SetCH700x()
9144 SiS_Pr->SiS_DDC_Data = 0x80; in SiS_SetCH700x()
9145 SiS_Pr->SiS_DDC_Clk = 0x40; in SiS_SetCH700x()
9146 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH700x()
9148 SiS_SetChReg(SiS_Pr, reg, val, 0x80); in SiS_SetCH700x()
9155 SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH701x() argument
9157 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_SetCH701x()
9158 SiS_Pr->SiS_DDC_Data = 0x08; /* Bitmask in IndexReg for Data */ in SiS_SetCH701x()
9159 SiS_Pr->SiS_DDC_Clk = 0x04; /* Bitmask in IndexReg for Clk */ in SiS_SetCH701x()
9160 SiS_SetupDDCN(SiS_Pr); in SiS_SetCH701x()
9161 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB (Device Address Byte) */ in SiS_SetCH701x()
9162 SiS_SetChReg(SiS_Pr, reg, val, 0); in SiS_SetCH701x()
9167 SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) in SiS_SetCH70xx() argument
9169 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) in SiS_SetCH70xx()
9170 SiS_SetCH700x(SiS_Pr, reg, val); in SiS_SetCH70xx()
9172 SiS_SetCH701x(SiS_Pr, reg, val); in SiS_SetCH70xx()
9176 SiS_GetChReg(struct SiS_Private *SiS_Pr, unsigned short myor) in SiS_GetChReg() argument
9182 SiS_SetStop(SiS_Pr); in SiS_GetChReg()
9183 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT * 4); in SiS_GetChReg()
9185 if(SiS_SetStart(SiS_Pr)) continue; /* Set start condition */ in SiS_GetChReg()
9186 temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_DeviceAddr); /* Write DAB (S0=0=write) */ in SiS_GetChReg()
9188 … temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_ReadAddr | myor); /* Write RAB (700x: | 0x80) */ in SiS_GetChReg()
9190 if (SiS_SetStart(SiS_Pr)) continue; /* Re-start */ in SiS_GetChReg()
9191 temp = SiS_WriteDDC2Data(SiS_Pr,SiS_Pr->SiS_DDC_DeviceAddr | 0x01);/* DAB (S0=1=read) */ in SiS_GetChReg()
9193 tempah = SiS_ReadDDC2Data(SiS_Pr); /* Read byte */ in SiS_GetChReg()
9194 if(SiS_SetStop(SiS_Pr)) continue; /* Stop condition */ in SiS_GetChReg()
9195 SiS_Pr->SiS_ChrontelInit = 1; in SiS_GetChReg()
9204 SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH700x() argument
9208 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB */ in SiS_GetCH700x()
9210 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_GetCH700x()
9212 if(!(SiS_Pr->SiS_ChrontelInit)) { in SiS_GetCH700x()
9213 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_GetCH700x()
9214 SiS_Pr->SiS_DDC_Data = 0x02; /* Bitmask in IndexReg for Data */ in SiS_GetCH700x()
9215 SiS_Pr->SiS_DDC_Clk = 0x01; /* Bitmask in IndexReg for Clk */ in SiS_GetCH700x()
9216 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH700x()
9219 SiS_Pr->SiS_DDC_ReadAddr = tempbx; in SiS_GetCH700x()
9221 if( ((result = SiS_GetChReg(SiS_Pr,0x80)) == 0xFFFF) && in SiS_GetCH700x()
9222 (!SiS_Pr->SiS_ChrontelInit) ) { in SiS_GetCH700x()
9224 SiS_Pr->SiS_DDC_Index = 0x0a; in SiS_GetCH700x()
9225 SiS_Pr->SiS_DDC_Data = 0x80; in SiS_GetCH700x()
9226 SiS_Pr->SiS_DDC_Clk = 0x40; in SiS_GetCH700x()
9227 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH700x()
9229 result = SiS_GetChReg(SiS_Pr,0x80); in SiS_GetCH700x()
9237 SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH701x() argument
9239 SiS_Pr->SiS_DDC_Index = 0x11; /* Bit 0 = SC; Bit 1 = SD */ in SiS_GetCH701x()
9240 SiS_Pr->SiS_DDC_Data = 0x08; /* Bitmask in IndexReg for Data */ in SiS_GetCH701x()
9241 SiS_Pr->SiS_DDC_Clk = 0x04; /* Bitmask in IndexReg for Clk */ in SiS_GetCH701x()
9242 SiS_SetupDDCN(SiS_Pr); in SiS_GetCH701x()
9243 SiS_Pr->SiS_DDC_DeviceAddr = 0xEA; /* DAB */ in SiS_GetCH701x()
9245 SiS_Pr->SiS_DDC_ReadAddr = tempbx; in SiS_GetCH701x()
9247 return SiS_GetChReg(SiS_Pr,0); in SiS_GetCH701x()
9254 SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempbx) in SiS_GetCH70xx() argument
9256 if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) in SiS_GetCH70xx()
9257 return SiS_GetCH700x(SiS_Pr, tempbx); in SiS_GetCH70xx()
9259 return SiS_GetCH701x(SiS_Pr, tempbx); in SiS_GetCH70xx()
9263 SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, in SiS_SetCH70xxANDOR() argument
9268 tempbl = (SiS_GetCH70xx(SiS_Pr, (reg & 0xFF)) & myand) | myor; in SiS_SetCH70xxANDOR()
9269 SiS_SetCH70xx(SiS_Pr, reg, tempbl); in SiS_SetCH70xxANDOR()
9275 SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, in SiS_InitDDCRegs() argument
9290 SiS_Pr->SiS_ChrontelInit = 0; /* force re-detection! */ in SiS_InitDDCRegs()
9292 SiS_Pr->SiS_DDC_SecAddr = 0; in SiS_InitDDCRegs()
9293 SiS_Pr->SiS_DDC_DeviceAddr = ddcdtype[DDCdatatype]; in SiS_InitDDCRegs()
9294 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_P3c4; in SiS_InitDDCRegs()
9295 SiS_Pr->SiS_DDC_Index = 0x11; in SiS_InitDDCRegs()
9298 cr32 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x32); in SiS_InitDDCRegs()
9321 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_Part4Port; in SiS_InitDDCRegs()
9322 SiS_Pr->SiS_DDC_Index = 0x0f; in SiS_InitDDCRegs()
9353 SiS_Pr->SiS_DDC_Port = SiS_Pr->SiS_Part4Port; in SiS_InitDDCRegs()
9354 SiS_Pr->SiS_DDC_Index = 0x0f; in SiS_InitDDCRegs()
9376 SiS_Pr->SiS_DDC_Data = 0x02 << temp; in SiS_InitDDCRegs()
9377 SiS_Pr->SiS_DDC_Clk = 0x01 << temp; in SiS_InitDDCRegs()
9379 SiS_SetupDDCN(SiS_Pr); in SiS_InitDDCRegs()
9385 SiS_WriteDABDDC(struct SiS_Private *SiS_Pr) in SiS_WriteDABDDC() argument
9387 if(SiS_SetStart(SiS_Pr)) return 0xFFFF; in SiS_WriteDABDDC()
9388 if(SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_DeviceAddr)) { in SiS_WriteDABDDC()
9391 if(SiS_WriteDDC2Data(SiS_Pr, SiS_Pr->SiS_DDC_SecAddr)) { in SiS_WriteDABDDC()
9398 SiS_PrepareReadDDC(struct SiS_Private *SiS_Pr) in SiS_PrepareReadDDC() argument
9400 if(SiS_SetStart(SiS_Pr)) return 0xFFFF; in SiS_PrepareReadDDC()
9401 if(SiS_WriteDDC2Data(SiS_Pr, (SiS_Pr->SiS_DDC_DeviceAddr | 0x01))) { in SiS_PrepareReadDDC()
9408 SiS_PrepareDDC(struct SiS_Private *SiS_Pr) in SiS_PrepareDDC() argument
9410 if(SiS_WriteDABDDC(SiS_Pr)) SiS_WriteDABDDC(SiS_Pr); in SiS_PrepareDDC()
9411 if(SiS_PrepareReadDDC(SiS_Pr)) return (SiS_PrepareReadDDC(SiS_Pr)); in SiS_PrepareDDC()
9416 SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno) in SiS_SendACK() argument
9418 SiS_SetSCLKLow(SiS_Pr); in SiS_SendACK()
9420 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SendACK()
9421 SiS_Pr->SiS_DDC_Index, in SiS_SendACK()
9422 SiS_Pr->SiS_DDC_NData, in SiS_SendACK()
9423 SiS_Pr->SiS_DDC_Data); in SiS_SendACK()
9425 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SendACK()
9426 SiS_Pr->SiS_DDC_Index, in SiS_SendACK()
9427 SiS_Pr->SiS_DDC_NData, in SiS_SendACK()
9430 SiS_SetSCLKHigh(SiS_Pr); in SiS_SendACK()
9434 SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) in SiS_DoProbeDDC() argument
9440 SiS_SetSwitchDDC2(SiS_Pr); in SiS_DoProbeDDC()
9441 if(SiS_PrepareDDC(SiS_Pr)) { in SiS_DoProbeDDC()
9442 SiS_SetStop(SiS_Pr); in SiS_DoProbeDDC()
9447 if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { in SiS_DoProbeDDC()
9448 temp = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_DoProbeDDC()
9449 SiS_SendACK(SiS_Pr, 0); in SiS_DoProbeDDC()
9459 temp = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_DoProbeDDC()
9460 SiS_SendACK(SiS_Pr, 1); in SiS_DoProbeDDC()
9465 if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { in SiS_DoProbeDDC()
9470 SiS_SetStop(SiS_Pr); in SiS_DoProbeDDC()
9476 SiS_ProbeDDC(struct SiS_Private *SiS_Pr) in SiS_ProbeDDC() argument
9481 SiS_Pr->SiS_DDC_DeviceAddr = 0xa0; in SiS_ProbeDDC()
9482 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x02; in SiS_ProbeDDC()
9483 SiS_Pr->SiS_DDC_DeviceAddr = 0xa2; in SiS_ProbeDDC()
9484 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x08; in SiS_ProbeDDC()
9485 SiS_Pr->SiS_DDC_DeviceAddr = 0xa6; in SiS_ProbeDDC()
9486 if(!(SiS_DoProbeDDC(SiS_Pr))) flag |= 0x10; in SiS_ProbeDDC()
9493 SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, unsigned char *buffer) in SiS_ReadDDC() argument
9501 SiS_SetSwitchDDC2(SiS_Pr); in SiS_ReadDDC()
9502 if(!(SiS_PrepareDDC(SiS_Pr))) { in SiS_ReadDDC()
9508 buffer[i] = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_ReadDDC()
9511 SiS_SendACK(SiS_Pr, 0); in SiS_ReadDDC()
9513 buffer[i] = (unsigned char)SiS_ReadDDC2Data(SiS_Pr); in SiS_ReadDDC()
9515 SiS_SendACK(SiS_Pr, 1); in SiS_ReadDDC()
9521 SiS_SetStop(SiS_Pr); in SiS_ReadDDC()
9547 SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, in SiS_HandleDDC() argument
9563 if(SiS_InitDDCRegs(SiS_Pr, VBFlags, VGAEngine, adaptnum, DDCdatatype, false, VBFlags2) == 0xFFFF) in SiS_HandleDDC()
9566 sr1f = SiS_GetReg(SiS_Pr->SiS_P3c4,0x1f); in SiS_HandleDDC()
9567 SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x1f,0x3f,0x04); in SiS_HandleDDC()
9569 cr17 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x17) & 0x80; in SiS_HandleDDC()
9571 SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x17,0x80); in SiS_HandleDDC()
9572 SiS_SetReg(SiS_Pr->SiS_P3c4,0x00,0x01); in SiS_HandleDDC()
9573 SiS_SetReg(SiS_Pr->SiS_P3c4,0x00,0x03); in SiS_HandleDDC()
9577 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9578 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9579 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9580 SiS_WaitRetrace1(SiS_Pr); in SiS_HandleDDC()
9584 result = SiS_ProbeDDC(SiS_Pr); in SiS_HandleDDC()
9586 result = SiS_ReadDDC(SiS_Pr, DDCdatatype, buffer); in SiS_HandleDDC()
9593 if(!SiS_Pr->DDCPortMixup) { in SiS_HandleDDC()
9603 SiS_SetReg(SiS_Pr->SiS_P3c4,0x1f,sr1f); in SiS_HandleDDC()
9605 SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x17,0x7f,cr17); in SiS_HandleDDC()
9613 SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr) in SiS_SetSwitchDDC2() argument
9615 SiS_SetSCLKHigh(SiS_Pr); in SiS_SetSwitchDDC2()
9616 SiS_WaitRetrace1(SiS_Pr); in SiS_SetSwitchDDC2()
9618 SiS_SetSCLKLow(SiS_Pr); in SiS_SetSwitchDDC2()
9619 SiS_WaitRetrace1(SiS_Pr); in SiS_SetSwitchDDC2()
9623 SiS_ReadDDC1Bit(struct SiS_Private *SiS_Pr) in SiS_ReadDDC1Bit() argument
9625 SiS_WaitRetrace1(SiS_Pr); in SiS_ReadDDC1Bit()
9626 return ((SiS_GetReg(SiS_Pr->SiS_P3c4,0x11) & 0x02) >> 1); in SiS_ReadDDC1Bit()
9632 SiS_SetStart(struct SiS_Private *SiS_Pr) in SiS_SetStart() argument
9634 if(SiS_SetSCLKLow(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStart()
9635 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStart()
9636 SiS_Pr->SiS_DDC_Index, in SiS_SetStart()
9637 SiS_Pr->SiS_DDC_NData, in SiS_SetStart()
9638 SiS_Pr->SiS_DDC_Data); /* SD->high */ in SiS_SetStart()
9639 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* SC->high */ in SiS_SetStart()
9640 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStart()
9641 SiS_Pr->SiS_DDC_Index, in SiS_SetStart()
9642 SiS_Pr->SiS_DDC_NData, in SiS_SetStart()
9644 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStart()
9651 SiS_SetStop(struct SiS_Private *SiS_Pr) in SiS_SetStop() argument
9653 if(SiS_SetSCLKLow(SiS_Pr)) return 0xFFFF; /* (SC->low) */ in SiS_SetStop()
9654 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStop()
9655 SiS_Pr->SiS_DDC_Index, in SiS_SetStop()
9656 SiS_Pr->SiS_DDC_NData, in SiS_SetStop()
9658 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* SC->high */ in SiS_SetStop()
9659 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetStop()
9660 SiS_Pr->SiS_DDC_Index, in SiS_SetStop()
9661 SiS_Pr->SiS_DDC_NData, in SiS_SetStop()
9662 SiS_Pr->SiS_DDC_Data); /* SD->high = stop condition */ in SiS_SetStop()
9663 if(SiS_SetSCLKHigh(SiS_Pr)) return 0xFFFF; /* (SC->high) */ in SiS_SetStop()
9669 SiS_WriteDDC2Data(struct SiS_Private *SiS_Pr, unsigned short tempax) in SiS_WriteDDC2Data() argument
9675 SiS_SetSCLKLow(SiS_Pr); /* SC->low */ in SiS_WriteDDC2Data()
9677 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_WriteDDC2Data()
9678 SiS_Pr->SiS_DDC_Index, in SiS_WriteDDC2Data()
9679 SiS_Pr->SiS_DDC_NData, in SiS_WriteDDC2Data()
9680 SiS_Pr->SiS_DDC_Data); /* Write bit (1) to SD */ in SiS_WriteDDC2Data()
9682 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_WriteDDC2Data()
9683 SiS_Pr->SiS_DDC_Index, in SiS_WriteDDC2Data()
9684 SiS_Pr->SiS_DDC_NData, in SiS_WriteDDC2Data()
9687 SiS_SetSCLKHigh(SiS_Pr); /* SC->high */ in SiS_WriteDDC2Data()
9690 temp = SiS_CheckACK(SiS_Pr); /* Check acknowledge */ in SiS_WriteDDC2Data()
9695 SiS_ReadDDC2Data(struct SiS_Private *SiS_Pr) in SiS_ReadDDC2Data() argument
9702 SiS_SetSCLKLow(SiS_Pr); in SiS_ReadDDC2Data()
9703 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_ReadDDC2Data()
9704 SiS_Pr->SiS_DDC_Index, in SiS_ReadDDC2Data()
9705 SiS_Pr->SiS_DDC_NData, in SiS_ReadDDC2Data()
9706 SiS_Pr->SiS_DDC_Data); in SiS_ReadDDC2Data()
9707 SiS_SetSCLKHigh(SiS_Pr); in SiS_ReadDDC2Data()
9708 temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); in SiS_ReadDDC2Data()
9709 if(temp & SiS_Pr->SiS_DDC_Data) getdata |= 0x01; in SiS_ReadDDC2Data()
9715 SiS_SetSCLKLow(struct SiS_Private *SiS_Pr) in SiS_SetSCLKLow() argument
9717 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetSCLKLow()
9718 SiS_Pr->SiS_DDC_Index, in SiS_SetSCLKLow()
9719 SiS_Pr->SiS_DDC_NClk, in SiS_SetSCLKLow()
9721 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetSCLKLow()
9726 SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr) in SiS_SetSCLKHigh() argument
9730 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_SetSCLKHigh()
9731 SiS_Pr->SiS_DDC_Index, in SiS_SetSCLKHigh()
9732 SiS_Pr->SiS_DDC_NClk, in SiS_SetSCLKHigh()
9733 SiS_Pr->SiS_DDC_Clk); /* SetSCLKHigh() */ in SiS_SetSCLKHigh()
9735 temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); in SiS_SetSCLKHigh()
9736 } while((!(temp & SiS_Pr->SiS_DDC_Clk)) && --watchdog); in SiS_SetSCLKHigh()
9740 SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); in SiS_SetSCLKHigh()
9747 SiS_CheckACK(struct SiS_Private *SiS_Pr) in SiS_CheckACK() argument
9751 SiS_SetSCLKLow(SiS_Pr); /* (SC->low) */ in SiS_CheckACK()
9752 SiS_SetRegANDOR(SiS_Pr->SiS_DDC_Port, in SiS_CheckACK()
9753 SiS_Pr->SiS_DDC_Index, in SiS_CheckACK()
9754 SiS_Pr->SiS_DDC_NData, in SiS_CheckACK()
9755 SiS_Pr->SiS_DDC_Data); /* (SD->high) */ in SiS_CheckACK()
9756 SiS_SetSCLKHigh(SiS_Pr); /* SC->high = clock impulse for ack */ in SiS_CheckACK()
9757 tempah = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); /* Read SD */ in SiS_CheckACK()
9758 SiS_SetSCLKLow(SiS_Pr); /* SC->low = end of clock impulse */ in SiS_CheckACK()
9759 if(tempah & SiS_Pr->SiS_DDC_Data) return 1; /* Ack OK if bit = 0 */ in SiS_CheckACK()
9771 GetRAMDACromptr(struct SiS_Private *SiS_Pr) in GetRAMDACromptr() argument
9773 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetRAMDACromptr()
9776 if(SiS_Pr->ChipType < SIS_330) { in GetRAMDACromptr()
9778 if(SiS_Pr->SiS_VBType & VB_SIS30xB) in GetRAMDACromptr()
9782 if(SiS_Pr->SiS_VBType & VB_SIS30xB) in GetRAMDACromptr()
9789 GetLCDromptr(struct SiS_Private *SiS_Pr) in GetLCDromptr() argument
9791 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetLCDromptr()
9794 if(SiS_Pr->ChipType < SIS_330) { in GetLCDromptr()
9796 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetLCDromptr()
9800 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetLCDromptr()
9807 GetTVromptr(struct SiS_Private *SiS_Pr) in GetTVromptr() argument
9809 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetTVromptr()
9812 if(SiS_Pr->ChipType < SIS_330) { in GetTVromptr()
9814 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetTVromptr()
9818 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) in GetTVromptr()
9825 GetLCDPtrIndexBIOS(struct SiS_Private *SiS_Pr) in GetLCDPtrIndexBIOS() argument
9829 if((IS_SIS650) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in GetLCDPtrIndexBIOS()
9830 if(!(SiS_IsNotM650orLater(SiS_Pr))) { in GetLCDPtrIndexBIOS()
9831 if((index = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xf0)) { in GetLCDPtrIndexBIOS()
9834 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndexBIOS()
9835 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndexBIOS()
9841 index = SiS_GetBIOSLCDResInfo(SiS_Pr) & 0x0F; in GetLCDPtrIndexBIOS()
9842 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) index -= 5; in GetLCDPtrIndexBIOS()
9843 if(SiS_Pr->SiS_VBType & VB_SIS301C) { /* 1.15.20 and later (not VB specific) */ in GetLCDPtrIndexBIOS()
9844 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) index -= 5; in GetLCDPtrIndexBIOS()
9845 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x768) index -= 5; in GetLCDPtrIndexBIOS()
9847 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) index -= 6; in GetLCDPtrIndexBIOS()
9851 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndexBIOS()
9852 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndexBIOS()
9857 GetLCDPtrIndex(struct SiS_Private *SiS_Pr) in GetLCDPtrIndex() argument
9861 index = ((SiS_GetBIOSLCDResInfo(SiS_Pr) & 0x0F) - 1) * 3; in GetLCDPtrIndex()
9862 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) index += 2; in GetLCDPtrIndex()
9863 else if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) index++; in GetLCDPtrIndex()
9868 GetTVPtrIndex(struct SiS_Private *SiS_Pr) in GetTVPtrIndex() argument
9873 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 1; in GetTVPtrIndex()
9874 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) index = 2; in GetTVPtrIndex()
9876 if(SiS_Pr->SiS_VBInfo & SetCRT2ToYPbPr525750) index = 0; in GetTVPtrIndex()
9880 if((SiS_Pr->SiS_VBInfo & SetInSlaveMode) && in GetTVPtrIndex()
9881 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in GetTVPtrIndex()
9889 GetOEMTVPtr661_2_GEN(struct SiS_Private *SiS_Pr, int addme) in GetOEMTVPtr661_2_GEN() argument
9893 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 1; in GetOEMTVPtr661_2_GEN()
9894 if(SiS_Pr->SiS_TVMode & TVSetPALM) index = 2; in GetOEMTVPtr661_2_GEN()
9895 if(SiS_Pr->SiS_TVMode & TVSetPALN) index = 3; in GetOEMTVPtr661_2_GEN()
9896 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) index = 6; in GetOEMTVPtr661_2_GEN()
9897 if(SiS_Pr->SiS_TVMode & TVSetNTSC1024) { in GetOEMTVPtr661_2_GEN()
9899 if(SiS_Pr->SiS_TVMode & TVSetPALM) index++; in GetOEMTVPtr661_2_GEN()
9900 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) index = 7; in GetOEMTVPtr661_2_GEN()
9903 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in GetOEMTVPtr661_2_GEN()
9904 if((!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || in GetOEMTVPtr661_2_GEN()
9905 (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) { in GetOEMTVPtr661_2_GEN()
9915 GetOEMTVPtr661_2_OLD(struct SiS_Private *SiS_Pr) in GetOEMTVPtr661_2_OLD() argument
9917 return (GetOEMTVPtr661_2_GEN(SiS_Pr, 8)); in GetOEMTVPtr661_2_OLD()
9922 GetOEMTVPtr661_2_NEW(struct SiS_Private *SiS_Pr)
9924 return (GetOEMTVPtr661_2_GEN(SiS_Pr, 6));
9929 GetOEMTVPtr661(struct SiS_Private *SiS_Pr) in GetOEMTVPtr661() argument
9933 if(SiS_Pr->SiS_TVMode & TVSetPAL) index = 2; in GetOEMTVPtr661()
9934 if(SiS_Pr->SiS_ROMNew) { in GetOEMTVPtr661()
9935 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) index = 4; in GetOEMTVPtr661()
9936 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) index = 6; in GetOEMTVPtr661()
9937 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) index = 8; in GetOEMTVPtr661()
9938 if(SiS_Pr->SiS_TVMode & TVSetHiVision) index = 10; in GetOEMTVPtr661()
9940 if(SiS_Pr->SiS_TVMode & TVSetHiVision) index = 4; in GetOEMTVPtr661()
9941 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525i) index = 6; in GetOEMTVPtr661()
9942 if(SiS_Pr->SiS_TVMode & TVSetYPbPr525p) index = 8; in GetOEMTVPtr661()
9943 if(SiS_Pr->SiS_TVMode & TVSetYPbPr750p) index = 10; in GetOEMTVPtr661()
9946 if(SiS_Pr->SiS_TVMode & TVSetTVSimuMode) index++; in GetOEMTVPtr661()
9952 SetDelayComp(struct SiS_Private *SiS_Pr, unsigned short ModeNo) in SetDelayComp() argument
9954 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetDelayComp()
9958 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
9959 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x20,0xbf); in SetDelayComp()
9961 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x35,0x7f); in SetDelayComp()
9966 if(SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) { /* ------------ VGA */ in SetDelayComp()
9968 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
9969 romptr = GetRAMDACromptr(SiS_Pr); in SetDelayComp()
9974 if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SetDelayComp()
9982 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
9987 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD|SetCRT2ToLCDA)) { /* ---------- LCD/LCDA */ in SetDelayComp()
9993 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetDelayComp()
9994 if(SiS_Pr->PDC != -1) { in SetDelayComp()
9995 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((SiS_Pr->PDC >> 1) & 0x0f)); in SetDelayComp()
9996 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((SiS_Pr->PDC & 0x01) << 7)); in SetDelayComp()
10000 if(SiS_Pr->PDCA != -1) { in SetDelayComp()
10001 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((SiS_Pr->PDCA << 3) & 0xf0)); in SetDelayComp()
10002 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((SiS_Pr->PDCA & 0x01) << 6)); in SetDelayComp()
10009 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) { in SetDelayComp()
10010 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
10012 if((SiS_Pr->PanelXRes <= 1280) && (SiS_Pr->PanelYRes <= 1024)) { in SetDelayComp()
10015 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,delay); in SetDelayComp()
10018 if(SiS_Pr->SiS_VBType & VB_SIS301C) { in SetDelayComp()
10020 if((SiS_Pr->PanelXRes > 1280) && (SiS_Pr->PanelYRes > 1024)) { in SetDelayComp()
10023 } else if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetDelayComp()
10027 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,delay); in SetDelayComp()
10037 switch(SiS_Pr->SiS_CustomT) { in SetDelayComp()
10040 if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SetDelayComp()
10054 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SetDelayComp()
10058 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2D,delay); in SetDelayComp()
10068 index = GetLCDPtrIndexBIOS(SiS_Pr); in SetDelayComp()
10069 myindex = GetLCDPtrIndex(SiS_Pr); in SetDelayComp()
10071 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SetDelayComp()
10073 if(SiS_IsNotM650orLater(SiS_Pr)) { in SetDelayComp()
10075 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
10090 if(SiS_Pr->SiS_VBType & (VB_SIS302LV | VB_SIS302ELV)) in SetDelayComp()
10095 } else if(SiS_Pr->SiS_UseROM && in SetDelayComp()
10096 (!(SiS_Pr->SiS_ROMNew)) && in SetDelayComp()
10097 (SiS_Pr->SiS_LCDResInfo != Panel_1280x1024) && in SetDelayComp()
10098 (SiS_Pr->SiS_LCDResInfo != Panel_1280x768) && in SetDelayComp()
10099 (SiS_Pr->SiS_LCDResInfo != Panel_1280x960) && in SetDelayComp()
10100 (SiS_Pr->SiS_LCDResInfo != Panel_1600x1200) && in SetDelayComp()
10101 ((romptr = GetLCDromptr(SiS_Pr)))) { in SetDelayComp()
10107 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
10115 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetDelayComp()
10117 … else if(SiS_Pr->ChipType <= SIS_315PRO) delay = SiS310_LCDDelayCompensation_3xx301LV[myindex]; in SetDelayComp()
10119 } else if(SiS_Pr->SiS_VBType & VB_SIS301C) { in SetDelayComp()
10122 if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) delay = 0x00; /* experience */ in SetDelayComp()
10123 } else if(SiS_Pr->SiS_VBType & VB_SIS30xB) { in SetDelayComp()
10132 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp()
10133 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0x0F,((delay << 4) & 0xf0)); in SetDelayComp()
10137 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { /* ------------ TV */ in SetDelayComp()
10139 index = GetTVPtrIndex(SiS_Pr); in SetDelayComp()
10141 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SetDelayComp()
10143 if(SiS_IsNotM650orLater(SiS_Pr)) { in SetDelayComp()
10145 if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
10162 switch(SiS_Pr->SiS_CustomT) { in SetDelayComp()
10177 if(SiS_Pr->SiS_VBType & VB_SIS302LV) { in SetDelayComp()
10183 } else if((SiS_Pr->SiS_UseROM) && (!(SiS_Pr->SiS_ROMNew))) { in SetDelayComp()
10185 romptr = GetTVromptr(SiS_Pr); in SetDelayComp()
10189 } else if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SetDelayComp()
10196 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetDelayComp()
10202 if(SiS_Pr->SiS_VBType & VB_SIS301C) delay = 0x02; in SetDelayComp()
10208 if(SiS_LCDAEnabled(SiS_Pr)) { in SetDelayComp()
10217 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetDelayComp()
10219 if(IS_SIS650 && (SiS_Pr->SiS_VBType & VB_SISLVDS) && dochiptest) { in SetDelayComp()
10221 temp = (SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0xf0) >> 4; in SetDelayComp()
10231 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x2D,delay); in SetDelayComp()
10235 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
10241 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp()
10242 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
10244 if(IS_SIS650 && (SiS_Pr->SiS_IF_DEF_CH70xx != 0)) { in SetDelayComp()
10246 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0x0F,delay); in SetDelayComp()
10248 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2D,0xF0,delay); in SetDelayComp()
10257 SetAntiFlicker(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetAntiFlicker() argument
10259 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetAntiFlicker()
10262 if(SiS_Pr->SiS_TVMode & (TVSetYPbPr750p|TVSetYPbPr525p)) return; in SetAntiFlicker()
10265 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVFlickerIndex; in SetAntiFlicker()
10267 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVFlickerIndex; in SetAntiFlicker()
10269 temp = GetTVPtrIndex(SiS_Pr); in SetAntiFlicker()
10273 if(SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SetAntiFlicker()
10274 if(SiS_Pr->ChipType >= SIS_661) { in SetAntiFlicker()
10275 temp1 = GetOEMTVPtr661(SiS_Pr); in SetAntiFlicker()
10278 if(SiS_Pr->ChipType >= SIS_760) { in SetAntiFlicker()
10281 } else if(SiS_Pr->ChipType >= SIS_330) { in SetAntiFlicker()
10296 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0A,0x8f,temp); /* index 0A D[6:4] */ in SetAntiFlicker()
10300 SetEdgeEnhance(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetEdgeEnhance() argument
10302 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetEdgeEnhance()
10305 temp = temp1 = GetTVPtrIndex(SiS_Pr) >> 1; /* 0: NTSC/YPbPr, 1: PAL, 2: HiTV */ in SetEdgeEnhance()
10308 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVEdgeIndex; in SetEdgeEnhance()
10310 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVEdgeIndex; in SetEdgeEnhance()
10312 if(SiS_Pr->SiS_UseROM && (!(SiS_Pr->SiS_ROMNew))) { in SetEdgeEnhance()
10313 if(SiS_Pr->ChipType >= SIS_661) { in SetEdgeEnhance()
10315 if(SiS_Pr->ChipType >= SIS_760) { in SetEdgeEnhance()
10318 temp1 = GetOEMTVPtr661(SiS_Pr); in SetEdgeEnhance()
10320 } else if(SiS_Pr->ChipType >= SIS_330) { in SetEdgeEnhance()
10334 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x3A,0x1F,temp); /* index 0A D[7:5] */ in SetEdgeEnhance()
10338 SetYFilter(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetYFilter() argument
10343 index = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].VB_StTVYFilterIndex; in SetYFilter()
10345 index = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].VB_ExtTVYFilterIndex; in SetYFilter()
10348 temp = GetTVPtrIndex(SiS_Pr) >> 1; /* 0: NTSC/YPbPr, 1: PAL, 2: HiTV */ in SetYFilter()
10350 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) temp = 1; /* NTSC-J uses PAL */ in SetYFilter()
10351 else if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 3; /* PAL-M */ in SetYFilter()
10352 else if(SiS_Pr->SiS_TVMode & TVSetPALN) temp = 4; /* PAL-N */ in SetYFilter()
10353 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) temp = 1; /* HiVision uses PAL */ in SetYFilter()
10355 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetYFilter()
10357 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter2[temp][index][j]); in SetYFilter()
10360 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter2[temp][index][j]); in SetYFilter()
10364 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVYFilter1[temp][index][j]); in SetYFilter()
10370 SetPhaseIncr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetPhaseIncr() argument
10372 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetPhaseIncr()
10376 if(!(SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) return; in SetPhaseIncr()
10379 if(SiS_Pr->SiS_TVMode & TVSetNTSCJ) return; in SetPhaseIncr()
10381 if((SiS_Pr->ChipType >= SIS_661) || SiS_Pr->SiS_ROMNew) { in SetPhaseIncr()
10382 lindex = GetOEMTVPtr661_2_OLD(SiS_Pr) & 0xffff; in SetPhaseIncr()
10385 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS_TVPhase[lindex + j]); in SetPhaseIncr()
10391 if(SiS_Pr->SiS_TVMode & (TVSetPALM | TVSetPALN)) return; in SetPhaseIncr()
10394 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SetPhaseIncr()
10396 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SetPhaseIncr()
10399 temp = GetTVPtrIndex(SiS_Pr); in SetPhaseIncr()
10403 if(SiS_Pr->SiS_UseROM) { in SetPhaseIncr()
10405 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10408 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetPhaseIncr()
10410 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10413 if((SiS_Pr->SiS_VBInfo & SetInSlaveMode) && (!(SiS_Pr->SiS_TVMode & TVSetTVSimuMode))) { in SetPhaseIncr()
10415 if(SiS_Pr->ChipType >= SIS_330) { in SetPhaseIncr()
10424 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetPhaseIncr()
10430 if(!(SiS_Pr->SiS_VBType & VB_SIS30xBLV)) in SetPhaseIncr()
10431 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr1[temp][index][j]); in SetPhaseIncr()
10432 else if((!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) || (SiS_Pr->SiS_TVMode & TVSetTVSimuMode)) in SetPhaseIncr()
10433 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr2[temp][index][j]); in SetPhaseIncr()
10435 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS310_TVPhaseIncr1[temp][index][j]); in SetPhaseIncr()
10439 if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (!(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision))) { in SetPhaseIncr()
10440 if((!(SiS_Pr->SiS_TVMode & (TVSetPAL | TVSetYPbPr525p | TVSetYPbPr750p))) && (ModeNo > 0x13)) { in SetPhaseIncr()
10443 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x31,0x21); in SetPhaseIncr()
10444 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x32,0xf0); in SetPhaseIncr()
10445 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x33,0xf5); in SetPhaseIncr()
10446 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x34,0x7f); in SetPhaseIncr()
10448 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x31,0x1e); in SetPhaseIncr()
10449 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x32,0x8b); in SetPhaseIncr()
10450 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x33,0xfb); in SetPhaseIncr()
10451 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x34,0x7b); in SetPhaseIncr()
10458 SetDelayComp661(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SetDelayComp661() argument
10462 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetDelayComp661()
10464 if(!(SiS_Pr->SiS_VBInfo & (SetCRT2ToTV | SetCRT2ToLCD | SetCRT2ToLCDA | SetCRT2ToRAMDAC))) in SetDelayComp661()
10470 if(SiS_Pr->SiS_ROMNew) { in SetDelayComp661()
10471 if((SiS_Pr->SiS_VBInfo & SetCRT2ToRAMDAC) || in SetDelayComp661()
10472 ((SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) && in SetDelayComp661()
10473 (SiS_Pr->SiS_LCDInfo & LCDPass11))) { in SetDelayComp661()
10475 if(SiS_Pr->UseCustomMode) { in SetDelayComp661()
10476 index = SiS_Pr->CSRClock; in SetDelayComp661()
10478 index = SiS_GetVCLK2Ptr(SiS_Pr,ModeNo,ModeIdIndex,RTI); in SetDelayComp661()
10479 index = SiS_Pr->SiS_VCLKData[index].CLOCK; in SetDelayComp661()
10483 if((ROMAddr[0x5b] & 0x80) || (SiS_Pr->SiS_VBInfo & (SetCRT2ToRAMDAC | SetCRT2ToLCD))) { in SetDelayComp661()
10488 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToRAMDAC | SetCRT2ToLCD)) { in SetDelayComp661()
10489 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((delay >> 1) & 0x0f)); in SetDelayComp661()
10490 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((delay & 0x01) << 7)); in SetDelayComp661()
10492 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((delay << 3) & 0xf0)); in SetDelayComp661()
10493 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((delay & 0x01) << 6)); in SetDelayComp661()
10501 if(SiS_Pr->UseCustomMode) delay = 0x04; in SetDelayComp661()
10503 else delay = (SiS_Pr->SiS_RefIndex[RTI].Ext_PDC >> 4); in SetDelayComp661()
10506 if(SiS_Pr->ChipType >= XGI_20) { in SetDelayComp661()
10509 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10512 if(SiS_Pr->SiS_XGIROM) { in SetDelayComp661()
10513 index = GetTVPtrIndex(SiS_Pr); in SetDelayComp661()
10520 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) { in SetDelayComp661()
10521 if(SiS_Pr->ChipType == XGI_40 && SiS_Pr->ChipRevision == 0x02) { in SetDelayComp661()
10527 } else if(SiS_Pr->ChipType >= SIS_340) { in SetDelayComp661()
10530 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10535 } else if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SetDelayComp661()
10539 index = GetOEMTVPtr661(SiS_Pr); in SetDelayComp661()
10540 if(SiS_Pr->SiS_ROMNew) { in SetDelayComp661()
10542 if(SiS_Pr->SiS_VBType & VB_UMC) romptr += 12; in SetDelayComp661()
10549 } else if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SetDelayComp661()
10553 if( (SiS_Pr->SiS_LCDResInfo != Panel_Custom) && in SetDelayComp661()
10554 ((romptr = GetLCDStructPtr661_2(SiS_Pr))) ) { in SetDelayComp661()
10556 lcdpdcindex = (SiS_Pr->SiS_VBType & VB_UMC) ? 14 : 12; in SetDelayComp661()
10566 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SetDelayComp661()
10567 switch(SiS_Pr->SiS_LCDResInfo) { in SetDelayComp661()
10580 if((SiS_Pr->PanelXRes <= 1024) && (SiS_Pr->PanelYRes <= 768)) { in SetDelayComp661()
10582 } else if((SiS_Pr->PanelXRes == 1280) && (SiS_Pr->PanelYRes == 1024)) { in SetDelayComp661()
10584 } else if((SiS_Pr->PanelXRes <= 1400) && (SiS_Pr->PanelYRes <= 1050)) { in SetDelayComp661()
10586 } else if((SiS_Pr->PanelXRes <= 1600) && (SiS_Pr->PanelYRes <= 1200)) { in SetDelayComp661()
10596 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && (SiS_Pr->PDC != -1)) { in SetDelayComp661()
10597 delay = SiS_Pr->PDC & 0x1f; in SetDelayComp661()
10599 if((SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) && (SiS_Pr->PDCA != -1)) { in SetDelayComp661()
10600 delay = (SiS_Pr->PDCA & 0x1f) << 8; in SetDelayComp661()
10607 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SetDelayComp661()
10609 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0x0f,((delay << 3) & 0xf0)); in SetDelayComp661()
10610 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x20,0xbf,((delay & 0x01) << 6)); in SetDelayComp661()
10612 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2d,0xf0,((delay >> 1) & 0x0f)); in SetDelayComp661()
10613 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x35,0x7f,((delay & 0x01) << 7)); in SetDelayComp661()
10618 SetCRT2SyncDither661(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short RTI) in SetCRT2SyncDither661() argument
10623 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SetCRT2SyncDither661()
10626 infoflag = SiS_GetRegByte(SiS_Pr->SiS_P3ca+2); in SetCRT2SyncDither661()
10627 } else if(SiS_Pr->UseCustomMode) { in SetCRT2SyncDither661()
10628 infoflag = SiS_Pr->CInfoFlag; in SetCRT2SyncDither661()
10630 infoflag = SiS_Pr->SiS_RefIndex[RTI].Ext_InfoFlag; in SetCRT2SyncDither661()
10633 if(!(SiS_Pr->SiS_LCDInfo & LCDPass11)) { in SetCRT2SyncDither661()
10634 infoflag = SiS_GetReg(SiS_Pr->SiS_P3d4,0x37); /* No longer check D5 */ in SetCRT2SyncDither661()
10639 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetCRT2SyncDither661()
10641 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SetCRT2SyncDither661()
10643 if(SiS_Pr->SiS_ModeType >= Mode24Bpp) temp |= 0x10; in SetCRT2SyncDither661()
10645 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1a,0xe0,temp); in SetCRT2SyncDither661()
10648 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) temp = 0x20; in SetCRT2SyncDither661()
10650 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x19,0x0f,temp); in SetCRT2SyncDither661()
10652 if(SiS_Pr->SiS_LCDInfo & LCDRGB18Bit) { in SetCRT2SyncDither661()
10653 if(SiS_Pr->SiS_ModeType >= Mode24Bpp) temp |= 0x80; in SetCRT2SyncDither661()
10655 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1a,0x7f,temp); in SetCRT2SyncDither661()
10662 SetPanelParms661(struct SiS_Private *SiS_Pr) in SetPanelParms661() argument
10664 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetPanelParms661()
10667 if(SiS_Pr->SiS_VBType & (VB_SISLVDS | VB_SIS30xC)) { in SetPanelParms661()
10668 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x24,0x0f); in SetPanelParms661()
10671 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetPanelParms661()
10672 if(SiS_Pr->LVDSHL != -1) { in SetPanelParms661()
10673 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,SiS_Pr->LVDSHL); in SetPanelParms661()
10677 if(SiS_Pr->SiS_ROMNew) { in SetPanelParms661()
10679 if((romptr = GetLCDStructPtr661_2(SiS_Pr))) { in SetPanelParms661()
10680 if(SiS_Pr->SiS_VBType & VB_SISLVDS) { in SetPanelParms661()
10683 if(SiS_Pr->LVDSHL != -1) { in SetPanelParms661()
10687 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,temp2,temp1); in SetPanelParms661()
10689 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SetPanelParms661()
10691 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0d,0xbf,temp1); in SetPanelParms661()
10699 SiS_OEM310Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, un… in SiS_OEM310Setting() argument
10701 if((SiS_Pr->SiS_ROMNew) && (SiS_Pr->SiS_VBType & VB_SISLVDS)) { in SiS_OEM310Setting()
10702 SetDelayComp661(SiS_Pr, ModeNo, ModeIdIndex, RRTI); in SiS_OEM310Setting()
10703 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_OEM310Setting()
10704 SetCRT2SyncDither661(SiS_Pr, ModeNo, RRTI); in SiS_OEM310Setting()
10705 SetPanelParms661(SiS_Pr); in SiS_OEM310Setting()
10708 SetDelayComp(SiS_Pr,ModeNo); in SiS_OEM310Setting()
10711 if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToTV)) { in SiS_OEM310Setting()
10712 SetAntiFlicker(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10713 SetPhaseIncr(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10714 SetYFilter(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10715 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_OEM310Setting()
10716 SetEdgeEnhance(SiS_Pr,ModeNo,ModeIdIndex); in SiS_OEM310Setting()
10722 SiS_OEM661Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, in SiS_OEM661Setting() argument
10725 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_OEM661Setting()
10727 SetDelayComp661(SiS_Pr, ModeNo, ModeIdIndex, RRTI); in SiS_OEM661Setting()
10729 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_OEM661Setting()
10730 SetCRT2SyncDither661(SiS_Pr, ModeNo, RRTI); in SiS_OEM661Setting()
10731 SetPanelParms661(SiS_Pr); in SiS_OEM661Setting()
10734 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_OEM661Setting()
10735 SetPhaseIncr(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10736 SetYFilter(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10737 SetAntiFlicker(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10738 if(SiS_Pr->SiS_VBType & VB_SIS301) { in SiS_OEM661Setting()
10739 SetEdgeEnhance(SiS_Pr, ModeNo, ModeIdIndex); in SiS_OEM661Setting()
10753 SiS_FinalizeLCD(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SiS_FinalizeLCD() argument
10758 if(!(SiS_Pr->SiS_VBType & VB_SISLVDS)) return; in SiS_FinalizeLCD()
10759 if(SiS_Pr->SiS_ROMNew) return; in SiS_FinalizeLCD()
10761 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10762 if(SiS_Pr->LVDSHL != -1) { in SiS_FinalizeLCD()
10763 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,SiS_Pr->LVDSHL); in SiS_FinalizeLCD()
10767 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) return; in SiS_FinalizeLCD()
10768 if(SiS_Pr->UseCustomMode) return; in SiS_FinalizeLCD()
10770 switch(SiS_Pr->SiS_CustomT) { in SiS_FinalizeLCD()
10779 resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; in SiS_FinalizeLCD()
10780 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SiS_FinalizeLCD()
10782 resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; in SiS_FinalizeLCD()
10783 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SiS_FinalizeLCD()
10787 if(!(SiS_GetReg(SiS_Pr->SiS_P3d4, 0x5f) & 0xf0)) { in SiS_FinalizeLCD()
10788 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) { in SiS_FinalizeLCD()
10789 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x02); in SiS_FinalizeLCD()
10791 SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x1e,0x03); in SiS_FinalizeLCD()
10796 if(SiS_Pr->SiS_CustomT == CUT_CLEVO1024) { in SiS_FinalizeLCD()
10797 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10799 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10800 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10806 if(SiS_Pr->SiS_CustomT == CUT_CLEVO10242) { in SiS_FinalizeLCD()
10807 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10808 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10809 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10811 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10813 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_FinalizeLCD()
10814 tempch = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_FinalizeLCD()
10816 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10817 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x25); in SiS_FinalizeLCD()
10818 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x00); in SiS_FinalizeLCD()
10819 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x1b); in SiS_FinalizeLCD()
10827 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { in SiS_FinalizeLCD()
10828 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10829 if(SiS_Pr->SiS_VBType & VB_SISEMI) { in SiS_FinalizeLCD()
10830 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x2a,0x00); in SiS_FinalizeLCD()
10832 SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x30,0x0c); in SiS_FinalizeLCD()
10834 SiS_SetReg(SiS_Pr->SiS_Part4Port,0x34,0x10); in SiS_FinalizeLCD()
10836 } else if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { in SiS_FinalizeLCD()
10837 if(SiS_Pr->LVDSHL == -1) { in SiS_FinalizeLCD()
10839 SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x24,0xfc,0x01); in SiS_FinalizeLCD()
10842 tempch = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) >> 4; in SiS_FinalizeLCD()
10843 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { in SiS_FinalizeLCD()
10844 if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) { in SiS_FinalizeLCD()
10845 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1f,0x76); in SiS_FinalizeLCD()
10846 } else if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10848 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10849 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x25); in SiS_FinalizeLCD()
10850 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x00); in SiS_FinalizeLCD()
10851 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x1b); in SiS_FinalizeLCD()
10853 if(SiS_Pr->Backup && (SiS_Pr->Backup_Mode == ModeNo)) { in SiS_FinalizeLCD()
10854 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,SiS_Pr->Backup_14); in SiS_FinalizeLCD()
10855 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,SiS_Pr->Backup_15); in SiS_FinalizeLCD()
10856 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,SiS_Pr->Backup_16); in SiS_FinalizeLCD()
10857 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,SiS_Pr->Backup_17); in SiS_FinalizeLCD()
10858 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,SiS_Pr->Backup_18); in SiS_FinalizeLCD()
10859 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,SiS_Pr->Backup_19); in SiS_FinalizeLCD()
10860 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1a,SiS_Pr->Backup_1a); in SiS_FinalizeLCD()
10861 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,SiS_Pr->Backup_1b); in SiS_FinalizeLCD()
10862 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,SiS_Pr->Backup_1c); in SiS_FinalizeLCD()
10863 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,SiS_Pr->Backup_1d); in SiS_FinalizeLCD()
10864 } else if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { /* 1.10.8w */ in SiS_FinalizeLCD()
10865 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,0x90); in SiS_FinalizeLCD()
10867 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x11); in SiS_FinalizeLCD()
10869 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x18); in SiS_FinalizeLCD()
10872 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); in SiS_FinalizeLCD()
10874 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x02); /* 1.10.7u */ in SiS_FinalizeLCD()
10879 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); in SiS_FinalizeLCD()
10881 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x1d,0xf8,temp); in SiS_FinalizeLCD()
10886 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x70); in SiS_FinalizeLCD()
10887 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xff); in SiS_FinalizeLCD()
10888 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x48); in SiS_FinalizeLCD()
10889 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x12); in SiS_FinalizeLCD()
10892 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x14,0x20); in SiS_FinalizeLCD()
10893 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x15,0x1a); in SiS_FinalizeLCD()
10894 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x16,0x28); in SiS_FinalizeLCD()
10895 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x17,0x00); in SiS_FinalizeLCD()
10896 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x4c); in SiS_FinalizeLCD()
10897 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xdc); in SiS_FinalizeLCD()
10901 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x95); in SiS_FinalizeLCD()
10902 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x19,0xdc); in SiS_FinalizeLCD()
10903 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1a,0x10); in SiS_FinalizeLCD()
10904 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x95); in SiS_FinalizeLCD()
10905 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1c,0x48); in SiS_FinalizeLCD()
10906 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1d,0x12); in SiS_FinalizeLCD()
10909 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,0x95); in SiS_FinalizeLCD()
10910 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x48); in SiS_FinalizeLCD()
10913 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,0x95); in SiS_FinalizeLCD()
10921 tempcl = tempbh = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x01); in SiS_FinalizeLCD()
10925 tempbl = SiS_GetReg(SiS_Pr->SiS_Part2Port,0x04); in SiS_FinalizeLCD()
10927 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in SiS_FinalizeLCD()
10928 if((resinfo == SIS_RI_1024x768) || (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD))) { in SiS_FinalizeLCD()
10929 if(SiS_Pr->SiS_SetFlag & LCDVESATiming) { in SiS_FinalizeLCD()
10933 if(SiS_Pr->SiS_VGAVDE < 600) { in SiS_FinalizeLCD()
10934 tempax = 768 - SiS_Pr->SiS_VGAVDE; in SiS_FinalizeLCD()
10936 if(SiS_Pr->SiS_VGAVDE <= 480) tempax >>= 4; /* 1.10.7w; 1.10.6s: < 480; >>=1; */ in SiS_FinalizeLCD()
10943 SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,temp); in SiS_FinalizeLCD()
10945 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x01,0x80,temp); in SiS_FinalizeLCD()
10957 SetOEMLCDData2(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, in SetOEMLCDData2() argument
10965 modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; in SetOEMLCDData2()
10966 crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; in SetOEMLCDData2()
10968 modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; in SetOEMLCDData2()
10969 crt2crtc = SiS_Pr->SiS_RefIndex[RefTabIndex].Ext_CRT2CRTC; in SetOEMLCDData2()
10974 if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { in SetOEMLCDData2()
10975 SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xdf); in SetOEMLCDData2()
10978 if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { in SetOEMLCDData2()
10981 if(SiS_Pr->SiS_SetFlag & LowModeTests) { in SetOEMLCDData2()
10984 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port, in SetOEMLCDData2()
10991 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00); in SetOEMLCDData2()
10993 temp = SiS_GetReg(SiS_Pr->SiS_Part1Port,0x18); in SetOEMLCDData2()
10995 SiS_SetReg(SiS_Pr->SiS_Part1Port,0x18,temp); in SetOEMLCDData2()
11001 GetOEMLCDPtr(struct SiS_Private *SiS_Pr, int Flag) in GetOEMLCDPtr() argument
11003 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in GetOEMLCDPtr()
11014 if(SiS_Pr->ChipType == SIS_300) { in GetOEMLCDPtr()
11016 tempbx = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36) & 0x0f; in GetOEMLCDPtr()
11017 if(SiS_Pr->SiS_VBType & VB_SIS301) tempbx &= 0x07; in GetOEMLCDPtr()
11019 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx += 4; in GetOEMLCDPtr()
11020 if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { in GetOEMLCDPtr()
11021 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx += 3; in GetOEMLCDPtr()
11023 if(SiS_Pr->SiS_UseROM) { in GetOEMLCDPtr()
11025 tempbx = SiS_Pr->SiS_LCDTypeInfo; in GetOEMLCDPtr()
11028 if(romptr) tempbx = ROMAddr[romptr + SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
11029 else tempbx = customtable300[SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
11033 if(!(SiS_Pr->SiS_SetFlag & LCDVESATiming)) tempbx++; in GetOEMLCDPtr()
11040 if(SiS_Pr->SiS_UseROM) { in GetOEMLCDPtr()
11042 if(romptr) tempbx = ROMAddr[romptr + SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
11045 tempbx = customtable630[SiS_Pr->SiS_LCDTypeInfo]; in GetOEMLCDPtr()
11049 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempbx += 2; in GetOEMLCDPtr()
11050 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in GetOEMLCDPtr()
11053 tempbx = SiS_Pr->SiS_LCDTypeInfo << 2; in GetOEMLCDPtr()
11054 if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempbx += 2; in GetOEMLCDPtr()
11055 if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; in GetOEMLCDPtr()
11063 SetOEMLCDDelay(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetOEMLCDDelay() argument
11065 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMLCDDelay()
11068 if(SiS_Pr->SiS_LCDResInfo == Panel_Custom) return; in SetOEMLCDDelay()
11070 if(SiS_Pr->SiS_UseROM) { in SetOEMLCDDelay()
11083 if(SiS_Pr->PDC != -1) return; in SetOEMLCDDelay()
11085 temp = GetOEMLCDPtr(SiS_Pr, 0); in SetOEMLCDDelay()
11087 if(SiS_Pr->UseCustomMode) in SetOEMLCDDelay()
11090 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_LCDDelayIndex; in SetOEMLCDDelay()
11092 if(SiS_Pr->ChipType != SIS_300) { in SetOEMLCDDelay()
11099 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetOEMLCDDelay()
11106 if(SiS_Pr->SiS_UseROM && (ROMAddr[0x235] & 0x80)) { in SetOEMLCDDelay()
11116 if(SiS_Pr->SiS_UseROM) { in SetOEMLCDDelay()
11132 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* index 0A D[6:4] */ in SetOEMLCDDelay()
11136 SetOEMLCDData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMLCDData() argument
11139 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMLCDData()
11142 if((SiS_Pr->SiS_UseROM) { in SetOEMLCDData()
11148 temp = GetOEMLCDPtr(SiS_Pr, 1); in SetOEMLCDData()
11151 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex]._VB_LCDHIndex; in SetOEMLCDData()
11153 SiS_SetReg(SiS_Pr->SiS_Part1Port,i,SiS300_LCDHData[temp][index][j]); in SetOEMLCDData()
11157 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex]._VB_LCDVIndex; in SetOEMLCDData()
11162 SiS_SetReg(SiS_Pr->SiS_Part1Port,i,SiS300_LCDVData[temp][index][j]); in SetOEMLCDData()
11168 GetOEMTVPtr(struct SiS_Private *SiS_Pr) in GetOEMTVPtr() argument
11173 if(!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) index += 4; in GetOEMTVPtr()
11174 if(SiS_Pr->SiS_VBType & VB_SISVB) { in GetOEMTVPtr()
11175 if(SiS_Pr->SiS_VBInfo & SetCRT2ToSCART) index += 2; in GetOEMTVPtr()
11176 else if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) index += 3; in GetOEMTVPtr()
11177 else if(SiS_Pr->SiS_TVMode & TVSetPAL) index += 1; in GetOEMTVPtr()
11179 if(SiS_Pr->SiS_TVMode & TVSetCHOverScan) index += 2; in GetOEMTVPtr()
11180 if(SiS_Pr->SiS_TVMode & TVSetPAL) index += 1; in GetOEMTVPtr()
11186 SetOEMTVDelay(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMTVDelay() argument
11188 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMTVDelay()
11191 if(SiS_Pr->SiS_UseROM) { in SetOEMTVDelay()
11197 temp = GetOEMTVPtr(SiS_Pr); in SetOEMTVDelay()
11199 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVDelayIndex; in SetOEMTVDelay()
11207 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SetOEMTVDelay()
11214 SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); in SetOEMTVDelay()
11218 SetOEMAntiFlicker(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMAntiFlicker() argument
11220 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMAntiFlicker()
11223 if(SiS_Pr->SiS_UseROM) { in SetOEMAntiFlicker()
11229 temp = GetOEMTVPtr(SiS_Pr); in SetOEMAntiFlicker()
11231 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVFlickerIndex; in SetOEMAntiFlicker()
11242 SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x0A,0x8F,temp); in SetOEMAntiFlicker()
11246 SetOEMPhaseIncr(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex) in SetOEMPhaseIncr() argument
11248 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMPhaseIncr()
11251 if(SiS_Pr->SiS_VBInfo & SetCRT2ToHiVision) return; in SetOEMPhaseIncr()
11253 if(SiS_Pr->SiS_TVMode & (TVSetNTSC1024 | TVSetNTSCJ | TVSetPALM | TVSetPALN)) return; in SetOEMPhaseIncr()
11255 if(SiS_Pr->SiS_UseROM) { in SetOEMPhaseIncr()
11261 temp = GetOEMTVPtr(SiS_Pr); in SetOEMPhaseIncr()
11263 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVPhaseIndex; in SetOEMPhaseIncr()
11265 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetOEMPhaseIncr()
11267 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Phase2[temp][index][j]); in SetOEMPhaseIncr()
11275 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetOEMPhaseIncr()
11279 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Phase1[temp][index][j]); in SetOEMPhaseIncr()
11286 SetOEMYFilter(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) in SetOEMYFilter() argument
11288 unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; in SetOEMYFilter()
11291 if(SiS_Pr->SiS_VBInfo & (SetCRT2ToSCART | SetCRT2ToHiVision | SetCRT2ToYPbPr525750)) return; in SetOEMYFilter()
11293 if(SiS_Pr->SiS_UseROM) { in SetOEMYFilter()
11299 temp = GetOEMTVPtr(SiS_Pr); in SetOEMYFilter()
11301 if(SiS_Pr->SiS_TVMode & TVSetPALM) temp = 8; in SetOEMYFilter()
11302 else if(SiS_Pr->SiS_TVMode & TVSetPALN) temp = 9; in SetOEMYFilter()
11305 index = SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].VB_TVYFilterIndex; in SetOEMYFilter()
11307 if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { in SetOEMYFilter()
11309 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter2[temp][index][j]); in SetOEMYFilter()
11312 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter2[temp][index][j]); in SetOEMYFilter()
11315 if((romptr) && (!(SiS_Pr->SiS_TVMode & (TVSetPALM|TVSetPALN)))) { in SetOEMYFilter()
11320 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,ROMAddr[romptr + j]); in SetOEMYFilter()
11324 SiS_SetReg(SiS_Pr->SiS_Part2Port,i,SiS300_Filter1[temp][index][j]); in SetOEMYFilter()
11331 SiS_SearchVBModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo) in SiS_SearchVBModeID() argument
11334 unsigned char VGAINFO = SiS_Pr->SiS_VGAINFO; in SiS_SearchVBModeID()
11339 if(SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].ModeID == *ModeNo) break; in SiS_SearchVBModeID()
11340 if(SiS_Pr->SiS_VBModeIDTable[ModeIdIndex].ModeID == 0xFF) return 0; in SiS_SearchVBModeID()
11355 SiS_OEM300Setting(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, in SiS_OEM300Setting() argument
11360 if(!SiS_Pr->UseCustomMode) { in SiS_OEM300Setting()
11361 OEMModeIdIndex = SiS_SearchVBModeID(SiS_Pr,&ModeNo); in SiS_OEM300Setting()
11365 if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { in SiS_OEM300Setting()
11366 SetOEMLCDDelay(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11367 if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { in SiS_OEM300Setting()
11368 SetOEMLCDData(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11371 if(SiS_Pr->UseCustomMode) return; in SiS_OEM300Setting()
11372 if(SiS_Pr->SiS_VBInfo & SetCRT2ToTV) { in SiS_OEM300Setting()
11373 SetOEMTVDelay(SiS_Pr, ModeNo,OEMModeIdIndex); in SiS_OEM300Setting()
11374 if(SiS_Pr->SiS_VBType & VB_SISVB) { in SiS_OEM300Setting()
11375 SetOEMAntiFlicker(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11376 SetOEMPhaseIncr(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()
11377 SetOEMYFilter(SiS_Pr, ModeNo, OEMModeIdIndex); in SiS_OEM300Setting()