diff options
author | Alex Deucher <alex@cube.(none)> | 2008-02-12 15:35:46 -0500 |
---|---|---|
committer | Alex Deucher <alex@cube.(none)> | 2008-02-12 15:35:46 -0500 |
commit | 422d7f441fdbb318d22d44db661ac9bd61387bd2 (patch) | |
tree | 24dff225b44bc7b155c1ce9781c71aa2314cd419 | |
parent | 860f5af75274cb236f536e1da09da6bd9a579530 (diff) |
R6xx: when both crtcs are in use make sure they are both enabled
sometimes setting a mode on one crtc can cuase a blank screen on the other.
make sure they are both enabled if they should be.
-rw-r--r-- | src/radeon_crtc.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index d21612a5..3524b753 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -81,14 +81,14 @@ radeon_crtc_dpms(xf86CrtcPtr crtc, int mode) */ if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) { if (crtc0->enabled) - crtc0->funcs->dpms(crtc0, DPMSModeOff); + legacy_crtc_dpms(crtc0, DPMSModeOff); } legacy_crtc_dpms(crtc, mode); if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) { if (crtc0->enabled) - crtc0->funcs->dpms(crtc0, mode); + legacy_crtc_dpms(crtc0, mode); } } } @@ -223,6 +223,20 @@ radeon_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, static void radeon_crtc_mode_commit(xf86CrtcPtr crtc) { + RADEONInfoPtr info = RADEONPTR(crtc->scrn); + RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + + if (info->ChipFamily >= CHIP_FAMILY_R600) { + xf86CrtcPtr other; + if (radeon_crtc->crtc_id == 1) + other = pRADEONEnt->pCrtc[0]; + else + other = pRADEONEnt->pCrtc[1]; + if (other->enabled) + radeon_crtc_dpms(other, DPMSModeOn); + } + radeon_crtc_dpms(crtc, DPMSModeOn); } |