diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_legacy_crtc.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index 7701d42c480..e1e5255396a 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c | |||
@@ -314,6 +314,9 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
314 | 314 | ||
315 | switch (mode) { | 315 | switch (mode) { |
316 | case DRM_MODE_DPMS_ON: | 316 | case DRM_MODE_DPMS_ON: |
317 | radeon_crtc->enabled = true; | ||
318 | /* adjust pm to dpms changes BEFORE enabling crtcs */ | ||
319 | radeon_pm_compute_clocks(rdev); | ||
317 | if (radeon_crtc->crtc_id) | 320 | if (radeon_crtc->crtc_id) |
318 | WREG32_P(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~(RADEON_CRTC2_EN | mask)); | 321 | WREG32_P(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_EN, ~(RADEON_CRTC2_EN | mask)); |
319 | else { | 322 | else { |
@@ -323,7 +326,6 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
323 | } | 326 | } |
324 | drm_vblank_post_modeset(dev, radeon_crtc->crtc_id); | 327 | drm_vblank_post_modeset(dev, radeon_crtc->crtc_id); |
325 | radeon_crtc_load_lut(crtc); | 328 | radeon_crtc_load_lut(crtc); |
326 | radeon_crtc->enabled = true; | ||
327 | break; | 329 | break; |
328 | case DRM_MODE_DPMS_STANDBY: | 330 | case DRM_MODE_DPMS_STANDBY: |
329 | case DRM_MODE_DPMS_SUSPEND: | 331 | case DRM_MODE_DPMS_SUSPEND: |
@@ -337,11 +339,10 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
337 | WREG32_P(RADEON_CRTC_EXT_CNTL, mask, ~mask); | 339 | WREG32_P(RADEON_CRTC_EXT_CNTL, mask, ~mask); |
338 | } | 340 | } |
339 | radeon_crtc->enabled = false; | 341 | radeon_crtc->enabled = false; |
342 | /* adjust pm to dpms changes AFTER disabling crtcs */ | ||
343 | radeon_pm_compute_clocks(rdev); | ||
340 | break; | 344 | break; |
341 | } | 345 | } |
342 | |||
343 | /* adjust pm to dpms change */ | ||
344 | radeon_pm_compute_clocks(rdev); | ||
345 | } | 346 | } |
346 | 347 | ||
347 | int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, | 348 | int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, |