diff options
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c')
-rw-r--r-- | xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c b/xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c index b33ca8ced..9cd969b0a 100644 --- a/xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c +++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c @@ -27,7 +27,7 @@ * this work is sponsored by S.u.S.E. GmbH, Fuerth, Elsa GmbH, Aachen and * Siemens Nixdorf Informationssysteme */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c,v 1.13 2001/04/19 09:28:32 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/tx_dac.c,v 1.13.2.2 2001/05/29 11:32:23 alanh Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -155,11 +155,16 @@ TXInit(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg) STOREREG(VTGModeCtl, 0x44); } - if (IS_GMX2000 || IS_GLORIAXXL) + if (IS_GMX2000 || IS_GLORIAXXL) { STOREREG(FBMemoryCtl, 0x800); /* Optimum memory timings */ + } else { + STOREREG(FBMemoryCtl, GLINT_READ_REG(FBMemoryCtl)); + } /* Override FBModeSel for 300SX chip */ - if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_300SX) { + if ( (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_300SX) || + ((pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_DELTA) && + (pGlint->MultiChip == PCI_CHIP_300SX)) ) { switch (pScrn->bitsPerPixel) { case 8: STOREREG(FBModeSel, 0x905); @@ -236,7 +241,7 @@ TXInit(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg) STORERAMDAC(RGB640_VGA_CONTROL, temp1); STORERAMDAC(RGB640_DAC_CONTROL, IBM640_DACENBL | IBM640_SHUNT); - STORERAMDAC(RGB640_OUTPUT_CONTROL, IBM640_WATCTL); + STORERAMDAC(RGB640_OUTPUT_CONTROL, IBM640_RDAI | IBM640_WATCTL); STORERAMDAC(RGB640_SYNC_CONTROL, 0x00); STORERAMDAC(RGB640_VRAM_MASK0, 0xFF); STORERAMDAC(RGB640_VRAM_MASK1, 0xFF); |