Index: via_driver.c =================================================================== --- via_driver.c (wersja 793) +++ via_driver.c (kopia robocza) @@ -708,14 +708,14 @@ break; case VIA_K8M800: pVia->DRIIrqEnable = FALSE; - pVia->UseLegacyModeSwitch = TRUE; + //pVia->UseLegacyModeSwitch = TRUE; break; case VIA_PM800: pVia->VideoEngine = VIDEO_ENGINE_CME; - pVia->UseLegacyModeSwitch = TRUE; + //pVia->UseLegacyModeSwitch = TRUE; break; case VIA_VM800: - pVia->UseLegacyModeSwitch = TRUE; + //pVia->UseLegacyModeSwitch = TRUE; break; case VIA_K8M890: pVia->VideoEngine = VIDEO_ENGINE_CME; @@ -1533,7 +1533,7 @@ "VM800 is currently not supported.\n"); xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Using VBE to set modes to work around this.\n"); - pVia->useVBEModes = TRUE; +// pVia->useVBEModes = TRUE; } pVia->pVbe = NULL; @@ -2969,7 +2969,7 @@ VIAPtr pVia = VIAPTR(pScrn); CARD32 Base; - DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAAdjustFrame\n")); + DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAAdjustFrame %dx%d\n",x,y)); if (pVia->pVbe) { ViaVbeAdjustFrame(scrnIndex, x, y, flags); Index: via_crtc.c =================================================================== --- via_crtc.c (wersja 793) +++ via_crtc.c (kopia robocza) @@ -331,15 +331,19 @@ CARD32 Base; CARD32 tmp; + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaFirstCRTCSetStartingAddress\n")); + Base = (y * pScrn->displayWidth + x) * (pScrn->bitsPerPixel / 8); Base = Base >> 1; hwp->writeCrtc(hwp, 0x0C, (Base & 0xFF00) >> 8); hwp->writeCrtc(hwp, 0x0D, Base & 0xFF); + //if (!(pVia->Chipset == VIA_CLE266 && CLE266_REV_IS_AX(pVia->ChipRev))) + // ViaCrtcMask(hwp, 0x48, Base >> 24, 0x1F); + /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */ hwp->writeCrtc(hwp, 0x34, (Base & 0xFF0000) >> 16); - if (!(pVia->Chipset == VIA_CLE266 && CLE266_REV_IS_AX(pVia->ChipRev))) - ViaCrtcMask(hwp, 0x48, Base >> 24, 0x0F); + } void @@ -352,6 +356,9 @@ Base = (y * pScrn->displayWidth + x) * (pScrn->bitsPerPixel / 8); Base = (Base + pScrn->fbOffset) >> 3; + + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaSecondCRTCSetStartingAddress: pScrn->fbOffset=%lu, Base=%lu\n",pScrn->fbOffset,Base)); + tmp = hwp->readCrtc(hwp, 0x62) & 0x01; tmp |= (Base & 0x7F) << 1; hwp->writeCrtc(hwp, 0x62, tmp); @@ -555,7 +562,7 @@ if (mode->CrtcHSyncStart > 4095) return MODE_BAD_HVALUE; - if ((mode->CrtcHSyncEnd - mode->CrtcHSyncStart) > 256) + if ((mode->CrtcHSyncEnd - mode->CrtcHSyncStart) > 512) return MODE_HSYNC_WIDE; if (mode->CrtcVTotal > 2049) Index: via_cursor.c =================================================================== --- via_cursor.c (wersja 793) +++ via_cursor.c (kopia robocza) @@ -297,6 +297,7 @@ case VIA_P4M890: case VIA_P4M900: case VIA_VX800: + case VIA_VX855: if (pVia->pBIOSInfo->FirstCRTC->IsActive) { VIASETREG(VIA_REG_HI_CONTROL0, 0x36000005); } @@ -336,6 +337,7 @@ case VIA_P4M890: case VIA_P4M900: case VIA_VX800: + case VIA_VX855: if (pVia->pBIOSInfo->FirstCRTC->IsActive) { temp = VIAGETREG(VIA_REG_HI_CONTROL0); VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFA); @@ -377,6 +379,7 @@ case VIA_P4M890: case VIA_P4M900: case VIA_VX800: + case VIA_VX855: if (pVia->pBIOSInfo->FirstCRTC->IsActive) { VIASETREG(VIA_REG_HI_POS0, ((x << 16) | (y & 0x07ff))); VIASETREG(VIA_REG_HI_OFFSET0, ((xoff << 16) | (yoff & 0x07ff))); @@ -451,6 +454,7 @@ case VIA_P4M890: case VIA_P4M900: case VIA_VX800: + case VIA_VX855: if (pVia->pBIOSInfo->FirstCRTC->IsActive) { temp = VIAGETREG(VIA_REG_HI_CONTROL0); VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE); @@ -502,6 +506,7 @@ case VIA_P4M890: case VIA_P4M900: case VIA_VX800: + case VIA_VX855: if (pVia->pBIOSInfo->FirstCRTC->IsActive) { temp = VIAGETREG(VIA_REG_HI_CONTROL0); VIASETREG(VIA_REG_HI_CONTROL0, temp & 0xFFFFFFFE);