diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-05-03 01:13:14 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-05-18 04:21:50 -0400 |
commit | d7311171c4cc8d6231427f7ac5056b939a184b80 (patch) | |
tree | bbe3db53048b12ccf1e480261e69121f095226d7 /drivers/gpu/drm/radeon/atombios_crtc.c | |
parent | ca2af92311eee95820f3b48c35045e5f56bc1477 (diff) |
drm/radeon/kms/pm: add support for no display power states
The lowest power states often cause display problems, so only enable
them when all displays are off.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/atombios_crtc.c')
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_crtc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 4151ad8affe..03dd6c41dc1 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
@@ -245,13 +245,15 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
245 | 245 | ||
246 | switch (mode) { | 246 | switch (mode) { |
247 | case DRM_MODE_DPMS_ON: | 247 | case DRM_MODE_DPMS_ON: |
248 | radeon_crtc->enabled = true; | ||
249 | /* adjust pm to dpms changes BEFORE enabling crtcs */ | ||
250 | radeon_pm_compute_clocks(rdev); | ||
248 | atombios_enable_crtc(crtc, ATOM_ENABLE); | 251 | atombios_enable_crtc(crtc, ATOM_ENABLE); |
249 | if (ASIC_IS_DCE3(rdev)) | 252 | if (ASIC_IS_DCE3(rdev)) |
250 | atombios_enable_crtc_memreq(crtc, ATOM_ENABLE); | 253 | atombios_enable_crtc_memreq(crtc, ATOM_ENABLE); |
251 | atombios_blank_crtc(crtc, ATOM_DISABLE); | 254 | atombios_blank_crtc(crtc, ATOM_DISABLE); |
252 | drm_vblank_post_modeset(dev, radeon_crtc->crtc_id); | 255 | drm_vblank_post_modeset(dev, radeon_crtc->crtc_id); |
253 | radeon_crtc_load_lut(crtc); | 256 | radeon_crtc_load_lut(crtc); |
254 | radeon_crtc->enabled = true; | ||
255 | break; | 257 | break; |
256 | case DRM_MODE_DPMS_STANDBY: | 258 | case DRM_MODE_DPMS_STANDBY: |
257 | case DRM_MODE_DPMS_SUSPEND: | 259 | case DRM_MODE_DPMS_SUSPEND: |
@@ -262,11 +264,10 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode) | |||
262 | atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); | 264 | atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); |
263 | atombios_enable_crtc(crtc, ATOM_DISABLE); | 265 | atombios_enable_crtc(crtc, ATOM_DISABLE); |
264 | radeon_crtc->enabled = false; | 266 | radeon_crtc->enabled = false; |
267 | /* adjust pm to dpms changes AFTER disabling crtcs */ | ||
268 | radeon_pm_compute_clocks(rdev); | ||
265 | break; | 269 | break; |
266 | } | 270 | } |
267 | |||
268 | /* adjust pm to dpms change */ | ||
269 | radeon_pm_compute_clocks(rdev); | ||
270 | } | 271 | } |
271 | 272 | ||
272 | static void | 273 | static void |