diff options
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c')
-rw-r--r-- | xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c b/xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c index acc329ef2..35c01c120 100644 --- a/xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c +++ b/xc/programs/Xserver/hw/xfree86/drivers/glint/pm_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/pm_dac.c,v 1.9 2001/02/07 13:26:21 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/pm_dac.c,v 1.9.2.1 2001/05/24 20:12:48 alanh Exp $ */ #include "xf86.h" #include "xf86_OSproc.h" @@ -55,8 +55,8 @@ PermediaInit(ScrnInfoPtr pScrn, DisplayModePtr mode) pReg->glintRegs[PMFramebufferWriteMask >> 3] = 0xFFFFFFFF; pReg->glintRegs[PMBypassWriteMask >> 3] = 0xFFFFFFFF; - pReg->glintRegs[DFIFODis >> 3] = 0; - pReg->glintRegs[FIFODis >> 3] = 1; + pReg->glintRegs[DFIFODis >> 3] = 1; + pReg->glintRegs[FIFODis >> 3] = 3; temp1 = mode->CrtcHSyncStart - mode->CrtcHDisplay; temp2 = mode->CrtcVSyncStart - mode->CrtcVDisplay; @@ -122,6 +122,7 @@ PermediaInit(ScrnInfoPtr pScrn, DisplayModePtr mode) ramdacReg->DacRegs[IBMRGB_misc2] |= PCLK_SEL_LCLK; else ramdacReg->DacRegs[IBMRGB_misc2] |= PCLK_SEL_PLL; + ramdacReg->DacRegs[IBMRGB_misc3] = 0; ramdacReg->DacRegs[IBMRGB_misc_clock] = 1; ramdacReg->DacRegs[IBMRGB_sync] = 0; ramdacReg->DacRegs[IBMRGB_hsync_pos] = 0; @@ -139,6 +140,11 @@ PermediaSave(ScrnInfoPtr pScrn, GLINTRegPtr glintReg) { GLINTPtr pGlint = GLINTPTR(pScrn); + /* We can't rely on the vgahw layer copying the font information + * back properly, due to problems with MMIO access to VGA space + * so we memcpy the information using the slow routines */ + xf86SlowBcopy((CARD8*)pGlint->FbBase, (CARD8*)pGlint->VGAdata, 65536); + glintReg->glintRegs[Aperture0 >> 3] = GLINT_READ_REG(Aperture0); glintReg->glintRegs[Aperture1 >> 3] = GLINT_READ_REG(Aperture1); glintReg->glintRegs[PMFramebufferWriteMask] = @@ -169,6 +175,12 @@ PermediaRestore(ScrnInfoPtr pScrn, GLINTRegPtr pReg) { GLINTPtr pGlint = GLINTPTR(pScrn); + /* We can't rely on the vgahw layer copying the font information + * back properly, due to problems with MMIO access to VGA space + * so we memcpy the information using the slow routines */ + if (pGlint->STATE) + xf86SlowBcopy((CARD8*)pGlint->VGAdata, (CARD8*)pGlint->FbBase, 65536); + RESTOREREG(ChipConfig); RESTOREREG(DFIFODis); RESTOREREG(FIFODis); |