summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgbert Eich <eich@freedesktop.org>2008-07-17 08:41:32 +0200
committerEgbert Eich <eich@freedesktop.org>2008-07-17 19:39:07 +0200
commitf594c7ce12acd85e18879d3e81f0a891a8d401e6 (patch)
tree3733b903050039b958e31bc4a11ea2a79640b37f
parent75c09c8efb746bab2ba7d71688f284fa5d25b714 (diff)
Crtc: Call CRTC Save/Restore wrapper directly.
These functions used to save/restore CRTC registers directly. Since the save/restore functions of the different CRTC subsystems have been separated out it only serves as a wrapper. Therefore it doesn't need to live in the Crtc structure any more but can be moved up to a generic level that is called directly.
-rw-r--r--src/rhd_crtc.c103
-rw-r--r--src/rhd_crtc.h15
-rw-r--r--src/rhd_driver.c8
3 files changed, 61 insertions, 65 deletions
diff --git a/src/rhd_crtc.c b/src/rhd_crtc.c
index b089cb6..8b364da 100644
--- a/src/rhd_crtc.c
+++ b/src/rhd_crtc.c
@@ -1167,55 +1167,6 @@ D2Blank(struct rhdCrtc *Crtc, Bool Blank)
*
*/
static void
-DxSave(struct rhdCrtc *Crtc)
-{
- RHDDebug(Crtc->scrnIndex, "%s: %s\n", __func__, Crtc->Name);
-
- if (Crtc->FMTSave)
- Crtc->FMTSave(Crtc);
-
- if (Crtc->FBSave)
- Crtc->FBSave(Crtc);
-
- if (Crtc->LUTSave)
- Crtc->LUTSave(Crtc);
-
- if (Crtc->ScaleSave)
- Crtc->ScaleSave(Crtc);
-
- if (Crtc->ModeSave)
- Crtc->ModeSave(Crtc);
-}
-
-/*
- *
- */
-static void
-DxRestore(struct rhdCrtc *Crtc)
-{
-
- RHDDebug(Crtc->scrnIndex, "%s: %s\n", __func__, Crtc->Name);
-
- if (Crtc->FMTRestore)
- Crtc->FMTRestore(Crtc);
-
- if (Crtc->FBRestore)
- Crtc->FBRestore(Crtc);
-
- if (Crtc->LUTRestore)
- Crtc->LUTRestore(Crtc);
-
- if (Crtc->ScaleRestore)
- Crtc->ScaleRestore(Crtc);
-
- if (Crtc->ModeRestore)
- Crtc->ModeRestore(Crtc);
-}
-
-/*
- *
- */
-static void
DxFMTSet(struct rhdCrtc *Crtc, struct rhdFMTDither *FMTDither)
{
CARD32 RegOff;
@@ -1416,8 +1367,6 @@ RHDCrtcsInit(RHDPtr rhdPtr)
Crtc->Power = D1Power;
Crtc->Blank = D1Blank;
- Crtc->Save = DxSave;
- Crtc->Restore = DxRestore;
rhdPtr->Crtc[0] = Crtc;
@@ -1466,8 +1415,6 @@ RHDCrtcsInit(RHDPtr rhdPtr)
Crtc->Power = D2Power;
Crtc->Blank = D2Blank;
- Crtc->Save = DxSave;
- Crtc->Restore = DxRestore;
rhdPtr->Crtc[1] = Crtc;
}
@@ -1506,3 +1453,53 @@ RHDCrtcsDestroy(RHDPtr rhdPtr)
}
}
}
+
+
+/*
+ *
+ */
+void
+RHDCrtcSave(struct rhdCrtc *Crtc)
+{
+ RHDDebug(Crtc->scrnIndex, "%s: %s\n", __func__, Crtc->Name);
+
+ if (Crtc->FMTSave)
+ Crtc->FMTSave(Crtc);
+
+ if (Crtc->FBSave)
+ Crtc->FBSave(Crtc);
+
+ if (Crtc->LUTSave)
+ Crtc->LUTSave(Crtc);
+
+ if (Crtc->ScaleSave)
+ Crtc->ScaleSave(Crtc);
+
+ if (Crtc->ModeSave)
+ Crtc->ModeSave(Crtc);
+}
+
+/*
+ *
+ */
+void
+RHDCrtcRestore(struct rhdCrtc *Crtc)
+{
+
+ RHDDebug(Crtc->scrnIndex, "%s: %s\n", __func__, Crtc->Name);
+
+ if (Crtc->FMTRestore)
+ Crtc->FMTRestore(Crtc);
+
+ if (Crtc->FBRestore)
+ Crtc->FBRestore(Crtc);
+
+ if (Crtc->LUTRestore)
+ Crtc->LUTRestore(Crtc);
+
+ if (Crtc->ScaleRestore)
+ Crtc->ScaleRestore(Crtc);
+
+ if (Crtc->ModeRestore)
+ Crtc->ModeRestore(Crtc);
+}
diff --git a/src/rhd_crtc.h b/src/rhd_crtc.h
index 79ae886..5c44c6b 100644
--- a/src/rhd_crtc.h
+++ b/src/rhd_crtc.h
@@ -69,13 +69,13 @@ struct rhdCrtc {
DisplayModePtr ScaledToMode; /* usually a fixed mode from one of the monitors */
- struct rhdCrtcFMTPrivate *FMTPriv;
+ struct rhdCrtcFMTPrivate *FMTPriv; /* each CRTC subsystem may define this independently */
void (*FMTModeSet)(struct rhdCrtc *Crtc, struct rhdFMTDither *FMTDither);
void (*FMTSave)(struct rhdCrtc *Crtc);
void (*FMTRestore)(struct rhdCrtc *Crtc);
void (*FMTDestroy) (struct rhdCrtc *Crtc);
- struct rhdCrtcFBPrivate *FBPriv;
+ struct rhdCrtcFBPrivate *FBPriv; /* each CRTC subsystem may define this independently */
ModeStatus (*FBValid) (struct rhdCrtc *Crtc, CARD16 Width, CARD16 Height,
int bpp, CARD32 Offset, CARD32 Size, CARD32 *pPitch);
void (*FBSet) (struct rhdCrtc *Crtc, CARD16 Pitch, CARD16 Width,
@@ -84,14 +84,14 @@ struct rhdCrtc {
void (*FBRestore) (struct rhdCrtc *Crtc);
void (*FBDestroy) (struct rhdCrtc *Crtc);
- struct rhdCrtcModePrivate *ModePriv;
+ struct rhdCrtcModePrivate *ModePriv; /* each CRTC subsystem may define this independently */
ModeStatus (*ModeValid) (struct rhdCrtc *Crtc, DisplayModePtr Mode);
void (*ModeSet) (struct rhdCrtc *Crtc, DisplayModePtr Mode);
void (*ModeSave) (struct rhdCrtc *Crtc);
void (*ModeRestore) (struct rhdCrtc *Crtc);
void (*ModeDestroy) (struct rhdCrtc *Crtc);
- struct rhdCrtcScalePrivate *ScalePriv;
+ struct rhdCrtcScalePrivate *ScalePriv; /* each CRTC subsystem may define this independently */
ModeStatus (*ScaleValid) (struct rhdCrtc *Crtc, enum rhdCrtcScaleType Type, DisplayModePtr Mode, DisplayModePtr ScaledToMode);
void (*ScaleSet) (struct rhdCrtc *Crtc, enum rhdCrtcScaleType Type, DisplayModePtr Mode, DisplayModePtr ScaledToMode);
void (*ScaleSave) (struct rhdCrtc *Crtc);
@@ -102,7 +102,7 @@ struct rhdCrtc {
/* callback for pll setting lives here */
/* callback for lut setting lives here */
- struct rhdCrtcLUTPrivate *LUTPriv;
+ struct rhdCrtcLUTPrivate *LUTPriv; /* each CRTC subsystem may define this independently */
void (*LUTSelect) (struct rhdCrtc *Crtc, struct rhdLUT *LUT);
void (*LUTSave) (struct rhdCrtc *Crtc);
void (*LUTRestore) (struct rhdCrtc *Crtc);
@@ -110,14 +110,13 @@ struct rhdCrtc {
void (*Power) (struct rhdCrtc *Crtc, int Power);
void (*Blank) (struct rhdCrtc *Crtc, Bool Blank);
-
- void (*Save) (struct rhdCrtc *Crtc);
- void (*Restore) (struct rhdCrtc *Crtc);
};
void RHDCrtcsInit(RHDPtr rhdPtr);
void RHDAtomCrtcsInit(RHDPtr rhdPtr);
void RHDCrtcsDestroy(RHDPtr rhdPtr);
+void RHDCrtcSave(struct rhdCrtc *Crtc);
+void RHDCrtcRestore(struct rhdCrtc *Crtc);
/*
* Calculate overscan values for scaler.
diff --git a/src/rhd_driver.c b/src/rhd_driver.c
index 33547c7..7c77fee 100644
--- a/src/rhd_driver.c
+++ b/src/rhd_driver.c
@@ -2120,8 +2120,8 @@ rhdSave(RHDPtr rhdPtr)
RHDPLLsSave(rhdPtr);
RHDLUTsSave(rhdPtr);
- rhdPtr->Crtc[0]->Save(rhdPtr->Crtc[0]);
- rhdPtr->Crtc[1]->Save(rhdPtr->Crtc[1]);
+ RHDCrtcSave(rhdPtr->Crtc[0]);
+ RHDCrtcSave(rhdPtr->Crtc[1]);
rhdSaveCursor(pScrn);
}
@@ -2145,8 +2145,8 @@ rhdRestore(RHDPtr rhdPtr)
RHDVGARestore(rhdPtr);
- rhdPtr->Crtc[0]->Restore(rhdPtr->Crtc[0]);
- rhdPtr->Crtc[1]->Restore(rhdPtr->Crtc[1]);
+ RHDCrtcRestore(rhdPtr->Crtc[0]);
+ RHDCrtcRestore(rhdPtr->Crtc[1]);
RHDOutputsRestore(rhdPtr);
}