summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2019-08-02 19:47:31 -0700
committerKevin Brace <kevinbrace@gmx.com>2019-08-02 19:47:31 -0700
commitdf543b5ff67259fb16b25ee287fee9e224995cfc (patch)
treecd821c1884b0841a0f146c9fd5a307425e6fca77
parent226b6f9a3f59785296f29623c4cbabe85e7d1cba (diff)
downloadxorg-driver-xf86-video-cirrus-df543b5ff67259fb16b25ee287fee9e224995cfc.tar.gz
Save and restore RIF Control and RAC Control registers
While the standby resume from ACPI S3 State still fails (i.e., hard system freeze), saving and restoring Rambus RIF (Rambus Interface) Control and RAC (Rambus ASIC Cell) Control registers prevents weird artifacts from being displayed after standby resume (i.e., merely a blank screen after standby resume). Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r--src/lg.h1
-rw-r--r--src/lg_driver.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/src/lg.h b/src/lg.h
index 3f5dcdf..4c1ea7b 100644
--- a/src/lg.h
+++ b/src/lg.h
@@ -44,6 +44,7 @@ typedef struct {
/* Laguna regs */
CARD8 TILE, BCLK;
CARD16 FORMAT, DTTC, TileCtrl, CONTROL;
+ CARD16 RIFCtrl, RACCtrl;
CARD32 VSC;
} LgRegRec, *LgRegPtr;
diff --git a/src/lg_driver.c b/src/lg_driver.c
index 3af8432..f6d721a 100644
--- a/src/lg_driver.c
+++ b/src/lg_driver.c
@@ -1081,6 +1081,12 @@ LgSave(ScrnInfoPtr pScrn)
pCir->chip.lg->ModeReg.CONTROL =
pCir->chip.lg->SavedReg.CONTROL = memrw(0x402);
+
+ pCir->chip.lg->ModeReg.RIFCtrl =
+ pCir->chip.lg->SavedReg.RIFCtrl = memrw(0x200);
+
+ pCir->chip.lg->ModeReg.RACCtrl =
+ pCir->chip.lg->SavedReg.RACCtrl = memrw(0x202);
}
/*
@@ -1549,6 +1555,9 @@ LgRestoreLgRegs(ScrnInfoPtr pScrn, LgRegPtr lgReg)
memwb(0x8C, lgReg->BCLK);
memww(0x402, lgReg->CONTROL);
+
+ memww(0x200, lgReg->RIFCtrl);
+ memww(0x202, lgReg->RACCtrl);
}
/*