diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2007-03-14 21:16:04 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2007-03-15 11:55:37 -0700 |
commit | 9d65abab153cdf3ab2b7e3e2843d573b22ea6769 (patch) | |
tree | 40ddf5dbca20efbe0614f24acf62237aa4ae2e79 | |
parent | 26a9f1fa5a92eba7d4b6ddfa47c0517e604be130 (diff) |
Fix VGA output with vesafb on nv4x and G7x GPUs.
SuSE bug #160812.
-rw-r--r-- | src/nv_hw.c | 12 | ||||
-rw-r--r-- | src/nv_type.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/nv_hw.c b/src/nv_hw.c index ab703f1..6232cd6 100644 --- a/src/nv_hw.c +++ b/src/nv_hw.c @@ -878,6 +878,10 @@ void NVCalcStateExt ( state->general = bpp == 16 ? 0x00101100 : 0x00100100; state->repaint1 = hDisplaySize < 1280 ? 0x04 : 0x00; break; + case NV_ARCH_40: + if(!pNv->FlatPanel) + state->control = pNv->PRAMDAC0[0x0580/4] & 0xeffffeff; + /* fallthrough */ case NV_ARCH_10: case NV_ARCH_20: case NV_ARCH_30: @@ -1475,6 +1479,10 @@ void NVLoadStateExt ( VGA_WR08(pNv->PCIO, 0x03D5, state->interlace); if(!pNv->FlatPanel) { + if(pNv->Architecture >= NV_ARCH_40) { + pNv->PRAMDAC0[0x0580/4] = state->control; + } + pNv->PRAMDAC0[0x050C/4] = state->pllsel; pNv->PRAMDAC0[0x0508/4] = state->vpll; if(pNv->twoHeads) @@ -1541,6 +1549,10 @@ void NVUnloadStateExt state->scale = pNv->PRAMDAC[0x0848/4]; state->config = pNv->PFB[0x0200/4]; + if(pNv->Architecture >= NV_ARCH_40 && !pNv->FlatPanel) { + state->control = pNv->PRAMDAC0[0x0580/4]; + } + if(pNv->Architecture >= NV_ARCH_10) { if(pNv->twoHeads) { state->head = pNv->PCRTC0[0x0860/4]; diff --git a/src/nv_type.h b/src/nv_type.h index d704e2e..6b29d99 100644 --- a/src/nv_type.h +++ b/src/nv_type.h @@ -56,6 +56,7 @@ typedef struct _riva_hw_state U032 vpllB; U032 vpll2B; U032 pllsel; + U032 control; U032 general; U032 crtcOwner; U032 head; |