diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-12-03 12:15:54 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-12-03 19:32:18 -0500 |
commit | 8de21525439e6b5bb8d8c81e49094d867bf82f6d (patch) | |
tree | 7c77fc7a3c78a432e55e166f80403836104719f5 /drivers/gpu/drm/radeon | |
parent | 500b758725314ab1b5316eb0caa5b0fa26740e6b (diff) |
drm/radeon/kms: fix legacy crtc2 dpms
noticed by Matthijs Kooijman on fdo bug 22140
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index 6f3ff8b84faf..4a5f2d36efe6 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c | |||
@@ -292,8 +292,7 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
292 | uint32_t mask; | 292 | uint32_t mask; |
293 | 293 | ||
294 | if (radeon_crtc->crtc_id) | 294 | if (radeon_crtc->crtc_id) |
295 | mask = (RADEON_CRTC2_EN | | 295 | mask = (RADEON_CRTC2_DISP_DIS | |
296 | RADEON_CRTC2_DISP_DIS | | ||
297 | RADEON_CRTC2_VSYNC_DIS | | 296 | RADEON_CRTC2_VSYNC_DIS | |
298 | RADEON_CRTC2_HSYNC_DIS | | 297 | RADEON_CRTC2_HSYNC_DIS | |
299 | RADEON_CRTC2_DISP_REQ_EN_B); | 298 | RADEON_CRTC2_DISP_REQ_EN_B); |
@@ -305,7 +304,7 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
305 | switch (mode) { | 304 | switch (mode) { |
306 | case DRM_MODE_DPMS_ON: | 305 | case DRM_MODE_DPMS_ON: |
307 | if (radeon_crtc->crtc_id) | 306 | if (radeon_crtc->crtc_id) |
308 | WREG32_P(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~mask); | 307 | WREG32_P(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~(RADEON_CRTC2_EN | mask)); |
309 | else { | 308 | else { |
310 | WREG32_P(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_EN, ~(RADEON_CRTC_EN | | 309 | WREG32_P(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_EN, ~(RADEON_CRTC_EN | |
311 | RADEON_CRTC_DISP_REQ_EN_B)); | 310 | RADEON_CRTC_DISP_REQ_EN_B)); |
@@ -319,7 +318,7 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
319 | case DRM_MODE_DPMS_OFF: | 318 | case DRM_MODE_DPMS_OFF: |
320 | drm_vblank_pre_modeset(dev, radeon_crtc->crtc_id); | 319 | drm_vblank_pre_modeset(dev, radeon_crtc->crtc_id); |
321 | if (radeon_crtc->crtc_id) | 320 | if (radeon_crtc->crtc_id) |
322 | WREG32_P(RADEON_CRTC2_GEN_CNTL, mask, ~mask); | 321 | WREG32_P(RADEON_CRTC2_GEN_CNTL, mask, ~(RADEON_CRTC2_EN | mask)); |
323 | else { | 322 | else { |
324 | WREG32_P(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_DISP_REQ_EN_B, ~(RADEON_CRTC_EN | | 323 | WREG32_P(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_DISP_REQ_EN_B, ~(RADEON_CRTC_EN | |
325 | RADEON_CRTC_DISP_REQ_EN_B)); | 324 | RADEON_CRTC_DISP_REQ_EN_B)); |