diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-02-17 19:52:27 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-02-17 19:52:27 -0500 |
commit | 9a108f0a0b7203458673ce6221e747a166d39617 (patch) | |
tree | 8ef53b0769f32b0915096842fe646b3952f49860 /src/radeon_output.c | |
parent | 31bd6d28dd35021e0e706d4f094989deb856c26a (diff) |
ATOM: don't unblank uninitialized crtcs
If the crtc timing isn't setup, you might get stuck in a loop
in the BlankCRTC command table
fixes bug 16781
Diffstat (limited to 'src/radeon_output.c')
-rw-r--r-- | src/radeon_output.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/radeon_output.c b/src/radeon_output.c index ba4cb7f1..2128dab2 100644 --- a/src/radeon_output.c +++ b/src/radeon_output.c @@ -510,10 +510,12 @@ radeon_mode_prepare(xf86OutputPtr output) xf86CrtcPtr other_crtc = loop_output->crtc; RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; if (other_crtc->enabled) { - radeon_crtc_dpms(other_crtc, DPMSModeOff); - if (IS_AVIVO_VARIANT) - atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1); - radeon_dpms(loop_output, DPMSModeOff); + if (other_radeon_crtc->initialized) { + radeon_crtc_dpms(other_crtc, DPMSModeOff); + if (IS_AVIVO_VARIANT) + atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1); + radeon_dpms(loop_output, DPMSModeOff); + } } } } @@ -553,10 +555,12 @@ radeon_mode_commit(xf86OutputPtr output) xf86CrtcPtr other_crtc = loop_output->crtc; RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; if (other_crtc->enabled) { - radeon_crtc_dpms(other_crtc, DPMSModeOn); - if (IS_AVIVO_VARIANT) - atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0); - radeon_dpms(loop_output, DPMSModeOn); + if (other_radeon_crtc->initialized) { + radeon_crtc_dpms(other_crtc, DPMSModeOn); + if (IS_AVIVO_VARIANT) + atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0); + radeon_dpms(loop_output, DPMSModeOn); + } } } } |