summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2006-03-02 17:53:38 -0800
committerEric Anholt <anholt@leguin.anholt.net>2006-04-06 15:57:51 -0700
commit33c62e8e654fa2228bc3fd31ec0fe010703f363a (patch)
treee1603bd4919abf01c003343f6c3fe5e82475a9cf /src
parent7f4dc09dcafc7f0423b7f3e970a0b19fbbf515dd (diff)
Change the order of reg writes for restore, possibly increasing chances of
success. Also save and restore ADPA.
Diffstat (limited to 'src')
-rw-r--r--src/i830.h1
-rw-r--r--src/i830_driver.c13
2 files changed, 10 insertions, 4 deletions
diff --git a/src/i830.h b/src/i830.h
index 199416a1..321827ad 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -403,6 +403,7 @@ typedef struct _I830Rec {
CARD32 saveDSPBSTRIDE;
CARD32 saveDSPBPOS;
CARD32 saveDSPBBASE;
+ CARD32 saveADPA;
} I830Rec;
diff --git a/src/i830_driver.c b/src/i830_driver.c
index f4184397..f3bc682d 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3578,6 +3578,8 @@ SaveHWState(ScrnInfoPtr pScrn)
pI830->saveDSPBPOS = INREG(DSPBPOS);
pI830->saveDSPBBASE = INREG(DSPBBASE);
+ pI830->saveADPA = INREG(ADPA);
+
if (I830IsPrimary(pScrn) && pI830->pipe != pI830->origPipe)
SetBIOSPipe(pScrn, pI830->origPipe);
else
@@ -3733,6 +3735,7 @@ RestoreHWState(ScrnInfoPtr pScrn)
OUTREG(DSPASTRIDE, pI830->saveDSPASTRIDE);
OUTREG(DSPAPOS, pI830->saveDSPAPOS);
OUTREG(DSPABASE, pI830->saveDSPABASE);
+ OUTREG(PIPEASRC, pI830->savePIPEASRC);
OUTREG(FPB0, pI830->saveFPB0);
OUTREG(FPB1, pI830->saveFPB1);
@@ -3746,13 +3749,15 @@ RestoreHWState(ScrnInfoPtr pScrn)
OUTREG(DSPBSTRIDE, pI830->saveDSPBSTRIDE);
OUTREG(DSPBPOS, pI830->saveDSPBPOS);
OUTREG(DSPBBASE, pI830->saveDSPBBASE);
+ OUTREG(PIPEBSRC, pI830->savePIPEBSRC);
- OUTREG(DSPACNTR, pI830->saveDSPACNTR);
- OUTREG(DSPBCNTR, pI830->saveDSPBCNTR);
OUTREG(PIPEACONF, pI830->savePIPEACONF);
OUTREG(PIPEBCONF, pI830->savePIPEBCONF);
- OUTREG(PIPEASRC, pI830->savePIPEASRC);
- OUTREG(PIPEBSRC, pI830->savePIPEBSRC);
+
+ OUTREG(DSPACNTR, pI830->saveDSPACNTR);
+ OUTREG(DSPBCNTR, pI830->saveDSPBCNTR);
+
+ OUTREG(ADPA, pI830->saveADPA);
return TRUE;
}