summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mga_dacG.c6
-rw-r--r--src/mga_driver.c8
-rw-r--r--src/mga_storm.c14
3 files changed, 22 insertions, 6 deletions
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
index af5d1d9..a47b6f6 100644
--- a/src/mga_dacG.c
+++ b/src/mga_dacG.c
@@ -122,12 +122,12 @@ MGAG200IPComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
if (ulFTmpDelta < ulFDelta) {
ulFDelta = ulFTmpDelta;
if (pMga->is_G200WB) {
- *M = (ulTestM - 1) | (((ulTestN -1) >> 1) & 0x80);
+ *M = (CARD8)(ulTestM - 1) | (CARD8)(((ulTestN -1) >> 1) & 0x80);
} else {
*M = ulTestM - 1;
}
- *N = ulTestN - 1;
- *P = ulTestP - 1;
+ *N = (CARD8)(ulTestN - 1);
+ *P = (CARD8)(ulTestP - 1);
}
}
}
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 7e84fd4..b363437 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -427,8 +427,8 @@ static SymTabRec MGAChipsets[] = {
{ PCI_CHIP_MGAG200_PCI, "mgag200 PCI" },
{ PCI_CHIP_MGAG200_SE_A_PCI, "mgag200 SE A PCI" },
{ PCI_CHIP_MGAG200_SE_B_PCI, "mgag200 SE B PCI" },
- { PCI_CHIP_MGAG200_EV_PCI, "mgag200 Maxim" },
- { PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 Winbond" },
+ { PCI_CHIP_MGAG200_EV_PCI, "mgag200 EV Maxim" },
+ { PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" },
{ PCI_CHIP_MGAG400, "mgag400" },
{ PCI_CHIP_MGAG550, "mgag550" },
{-1, NULL }
@@ -4508,11 +4508,13 @@ MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 256)
return MODE_BANDWIDTH;
} else if (pMga->is_G200WB){
+ if (mode->Flags & V_DBLSCAN)
+ return MODE_NO_DBLESCAN;
if (pMga->KVM && mode->HDisplay > 1280)
return MODE_VIRTUAL_X;
if (pMga->KVM && mode->VDisplay > 1024)
return MODE_VIRTUAL_Y;
- if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 315)
+ if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
return MODE_BANDWIDTH;
} else if (pMga->is_G200EV
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
diff --git a/src/mga_storm.c b/src/mga_storm.c
index aa6ad82..0d04c63 100644
--- a/src/mga_storm.c
+++ b/src/mga_storm.c
@@ -1138,6 +1138,20 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
break;
}
+ if (pMga->is_G200WB)
+ {
+ CARD32 dwgctl = MGADWG_RSTR | 0x00060000 | MGADWG_SHIFTZERO |
+ MGADWG_BITBLT | MGADWG_BFCOL;
+ WAITFIFO(7);
+ OUTREG(MGAREG_DWGCTL, dwgctl);
+ OUTREG(MGAREG_SGN, 0);
+ OUTREG(MGAREG_AR5, 1);
+ OUTREG(MGAREG_AR0, 1);
+ OUTREG(MGAREG_AR3, 0);
+ OUTREG(MGAREG_FXBNDRY, (1 << 16) | (1 & 0xffff));
+ OUTREG(MGAREG_YDSTLEN + MGAREG_EXEC, (1 << 16) | 1);
+ }
+
xf86SetLastScrnFlag(pScrn->entityList[0], pScrn->scrnIndex);
}