diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2007-06-18 12:36:29 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2008-01-24 18:25:27 -0800 |
commit | a4ee96c9fb344560945db220c530f9308dd5def4 (patch) | |
tree | 587f01b8f478319a94e68667d4106a693b54a9a0 /src | |
parent | 41d9013e2087c4eb415e1a862e216c5fe477228f (diff) |
Fix some random colormap corruption on DFPs with certain pre-G80 GPUs.
(cherry picked from commit 24770ccf880f056bc0db9464249caca10692fb56)
Diffstat (limited to 'src')
-rw-r--r-- | src/nv_dac.c | 3 | ||||
-rw-r--r-- | src/nv_hw.c | 2 | ||||
-rw-r--r-- | src/nv_setup.c | 1 | ||||
-rw-r--r-- | src/nv_type.h | 2 |
4 files changed, 7 insertions, 1 deletions
diff --git a/src/nv_dac.c b/src/nv_dac.c index 3fb687f..e1f0740 100644 --- a/src/nv_dac.c +++ b/src/nv_dac.c @@ -1,6 +1,6 @@ /***************************************************************************\ |* *| -|* Copyright 2003 NVIDIA, Corporation. All rights reserved. *| +|* Copyright 2007 NVIDIA, Corporation. All rights reserved. *| |* *| |* NOTICE TO USER: The source code is copyrighted under U.S. and *| |* international laws. Users and possessors of this source code are *| @@ -221,6 +221,7 @@ NVDACInit(ScrnInfoPtr pScrn, DisplayModePtr mode) } nvReg->crtcSync = pNv->PRAMDAC[0x0828/4]; nvReg->crtcSync += NVDACPanelTweaks(pNv, nvReg); + nvReg->crtcVSync = pNv->fpVTotal - 6; } nvReg->vpll = nvReg->pll; diff --git a/src/nv_hw.c b/src/nv_hw.c index ae499fa..63f9067 100644 --- a/src/nv_hw.c +++ b/src/nv_hw.c @@ -1501,6 +1501,7 @@ void NVLoadStateExt ( } else { pNv->PRAMDAC[0x0848/4] = state->scale; pNv->PRAMDAC[0x0828/4] = state->crtcSync; + pNv->PRAMDAC[0x0808/4] = state->crtcVSync; } pNv->PRAMDAC[0x0600/4] = state->general; @@ -1588,6 +1589,7 @@ void NVUnloadStateExt if(pNv->FlatPanel) { state->crtcSync = pNv->PRAMDAC[0x0828/4]; + state->crtcVSync = pNv->PRAMDAC[0x0808/4]; } } diff --git a/src/nv_setup.c b/src/nv_setup.c index 71d7955..1bf58e0 100644 --- a/src/nv_setup.c +++ b/src/nv_setup.c @@ -687,6 +687,7 @@ NVCommonSetup(ScrnInfoPtr pScrn) if(pNv->FlatPanel && !pNv->Television) { pNv->fpWidth = pNv->PRAMDAC[0x0820/4] + 1; pNv->fpHeight = pNv->PRAMDAC[0x0800/4] + 1; + pNv->fpVTotal = pNv->PRAMDAC[0x804/4] + 1; pNv->fpSyncs = pNv->PRAMDAC[0x0848/4] & 0x30000033; xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Panel size is %i x %i\n", pNv->fpWidth, pNv->fpHeight); diff --git a/src/nv_type.h b/src/nv_type.h index b10babc..b4f1cd3 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -70,6 +70,7 @@ typedef struct _riva_hw_state U032 timingV; U032 displayV; U032 crtcSync; + U032 crtcVSync; } RIVA_HW_STATE, *NVRegPtr; @@ -161,6 +162,7 @@ typedef struct { Bool fpScaler; int fpWidth; int fpHeight; + CARD32 fpVTotal; CARD32 fpSyncs; Bool usePanelTweak; int PanelTweak; |