diff options
-rw-r--r-- | src/mga_dacG.c | 6 | ||||
-rw-r--r-- | src/mga_driver.c | 8 | ||||
-rw-r--r-- | src/mga_storm.c | 14 |
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); } |