summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2010-11-10 17:01:26 +0000
committerBartosz Kosiorek <gang65@poczta.onet.pl>2010-11-10 17:01:26 +0000
commit185cfc63a76b7502069d239fda9f53b5b4ac3286 (patch)
tree873581d51e2d22eda77929405e95e1ad6928c1f6
parent1a8d4cbfe704336edb6e59d9d8b3bfcb964e7744 (diff)
Fix bug #342 with TV out flickering
-rw-r--r--src/via_vt162x.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/via_vt162x.c b/src/via_vt162x.c
index aa64b33..963e33d 100644
--- a/src/via_vt162x.c
+++ b/src/via_vt162x.c
@@ -41,30 +41,42 @@ ViaSetTVClockSource(ScrnInfoPtr pScrn)
VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
vgaHWPtr hwp = VGAHWPTR(pScrn);
- /* External TV: */
- switch(pVia->Chipset) {
- case VIA_CX700:
- case VIA_VX800:
- if (pBIOSInfo->FirstCRTC->IsActive) {
- if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
- ViaCrtcMask(hwp, 0x6C, 0xB0, 0xF0);
- else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
- ViaCrtcMask(hwp, 0x6C, 0x90, 0xF0);
- } else {
- /* IGA2 */
- if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
- ViaCrtcMask(hwp, 0x6C, 0x0B, 0x0F);
- else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
- ViaCrtcMask(hwp, 0x6C, 0x09, 0x0F);
+ switch(pBIOSInfo->TVEncoder) {
+ case VIA_VT1625:
+ /* External TV: */
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+ case VIA_VX800:
+ case VIA_VX855:
+ if (pBIOSInfo->FirstCRTC->IsActive) {
+ if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
+ ViaCrtcMask(hwp, 0x6C, 0xB0, 0xF0);
+ else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
+ ViaCrtcMask(hwp, 0x6C, 0x90, 0xF0);
+ } else {
+ /* IGA2 */
+ if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP1)
+ ViaCrtcMask(hwp, 0x6C, 0x0B, 0x0F);
+ else if(pBIOSInfo->TVDIPort == VIA_DI_PORT_DVP0)
+ ViaCrtcMask(hwp, 0x6C, 0x09, 0x0F);
+ }
+ break;
+ default:
+ if (pBIOSInfo->FirstCRTC->IsActive)
+ ViaCrtcMask(hwp, 0x6C, 0x21, 0x21);
+ else
+ ViaCrtcMask(hwp, 0x6C, 0xA1, 0xA1);
+ break;
}
break;
default:
if (pBIOSInfo->FirstCRTC->IsActive)
- ViaCrtcMask(hwp, 0x6C, 0x21, 0x21);
+ ViaCrtcMask(hwp, 0x6C, 0x50, 0xF0);
else
- ViaCrtcMask(hwp, 0x6C, 0xA1, 0xA1);
+ ViaCrtcMask(hwp, 0x6C, 0x05, 0x0F);
break;
}
+
}
static void