diff options
-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; |