summaryrefslogtreecommitdiff
path: root/src/radeon_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/radeon_output.c')
-rw-r--r--src/radeon_output.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/radeon_output.c b/src/radeon_output.c
index a52b1fc9..c2bebf0a 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -215,13 +215,11 @@ radeon_dpms(xf86OutputPtr output, int mode)
switch(mode) {
case DPMSModeOn:
RADEONEnableDisplay(output, TRUE);
- /* RADEONDPMSSetOn(output);*/
break;
case DPMSModeOff:
case DPMSModeSuspend:
case DPMSModeStandby:
RADEONEnableDisplay(output, FALSE);
- /*RADEONDPMSSetOff(output);*/
break;
}
}
@@ -299,7 +297,18 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode,
{
ScrnInfoPtr pScrn = output->scrn;
RADEONInfoPtr info = RADEONPTR(pScrn);
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
RADEONOutputPrivatePtr radeon_output = output->driver_private;
+ int i;
+
+ /* get the outputs connected to this CRTC */
+ for (i = 0; i < xf86_config->num_crtc; i++) {
+ xf86CrtcPtr crtc = xf86_config->crtc[i];
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ if (output->crtc == crtc) {
+ RADEONInitOutputRegisters(pScrn, &info->ModeReg, adjusted_mode, output, radeon_crtc->crtc_id);
+ }
+ }
switch(radeon_output->MonType) {
case MT_LCD:
@@ -312,12 +321,12 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode,
RADEONRestoreDACRegisters(pScrn, &info->ModeReg);
}
- RADEONEnableDisplay(output, TRUE);
}
static void
radeon_mode_commit(xf86OutputPtr output)
{
+ RADEONEnableDisplay(output, TRUE);
}
static xf86OutputStatus