aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-03-16 17:42:46 -0400
committerDave Airlie <airlied@redhat.com>2010-05-18 04:20:55 -0400
commit03214bd5c6e59c83703238227254deef8810513d (patch)
treecff47cda415e5508f0475f1a8007367ffba8a419 /drivers/gpu
parent8a56df632e524a1c444c56bb7ce9fe8d94e639e0 (diff)
drm/radeon/kms/pm: move pm state update to crtc functions
crtcs are what we ultimately care about wrt to pm. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c9
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c5
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_crtc.c9
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_encoders.c15
4 files changed, 18 insertions, 20 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index 3feca6aec4c4..12fb12a2bbac 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -262,6 +262,9 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
262 atombios_enable_crtc(crtc, ATOM_DISABLE); 262 atombios_enable_crtc(crtc, ATOM_DISABLE);
263 break; 263 break;
264 } 264 }
265
266 /* adjust pm to dpms change */
267 radeon_pm_compute_clocks(rdev);
265} 268}
266 269
267static void 270static void
@@ -1156,6 +1159,12 @@ static bool atombios_crtc_mode_fixup(struct drm_crtc *crtc,
1156 struct drm_display_mode *mode, 1159 struct drm_display_mode *mode,
1157 struct drm_display_mode *adjusted_mode) 1160 struct drm_display_mode *adjusted_mode)
1158{ 1161{
1162 struct drm_device *dev = crtc->dev;
1163 struct radeon_device *rdev = dev->dev_private;
1164
1165 /* adjust pm to upcoming mode change */
1166 radeon_pm_compute_clocks(rdev);
1167
1159 if (!radeon_crtc_scaling_mode_fixup(crtc, mode, adjusted_mode)) 1168 if (!radeon_crtc_scaling_mode_fixup(crtc, mode, adjusted_mode))
1160 return false; 1169 return false;
1161 return true; 1170 return true;
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 1ec292ef11b0..b5dff14ea8c6 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -262,9 +262,6 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
262 struct drm_device *dev = encoder->dev; 262 struct drm_device *dev = encoder->dev;
263 struct radeon_device *rdev = dev->dev_private; 263 struct radeon_device *rdev = dev->dev_private;
264 264
265 /* adjust pm to upcoming mode change */
266 radeon_pm_compute_clocks(rdev);
267
268 /* set the active encoder to connector routing */ 265 /* set the active encoder to connector routing */
269 radeon_encoder_set_active_device(encoder); 266 radeon_encoder_set_active_device(encoder);
270 drm_mode_set_crtcinfo(adjusted_mode, 0); 267 drm_mode_set_crtcinfo(adjusted_mode, 0);
@@ -1074,8 +1071,6 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1074 } 1071 }
1075 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 1072 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1076 1073
1077 /* adjust pm to dpms change */
1078 radeon_pm_compute_clocks(rdev);
1079} 1074}
1080 1075
1081union crtc_source_param { 1076union crtc_source_param {
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index 88865e38fe30..60c0dcb8e11e 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -337,6 +337,9 @@ void radeon_crtc_dpms(struct drm_crtc *crtc, int mode)
337 } 337 }
338 break; 338 break;
339 } 339 }
340
341 /* adjust pm to dpms change */
342 radeon_pm_compute_clocks(rdev);
340} 343}
341 344
342int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y, 345int radeon_crtc_set_base(struct drm_crtc *crtc, int x, int y,
@@ -966,6 +969,12 @@ static bool radeon_crtc_mode_fixup(struct drm_crtc *crtc,
966 struct drm_display_mode *mode, 969 struct drm_display_mode *mode,
967 struct drm_display_mode *adjusted_mode) 970 struct drm_display_mode *adjusted_mode)
968{ 971{
972 struct drm_device *dev = crtc->dev;
973 struct radeon_device *rdev = dev->dev_private;
974
975 /* adjust pm to upcoming mode change */
976 radeon_pm_compute_clocks(rdev);
977
969 if (!radeon_crtc_scaling_mode_fixup(crtc, mode, adjusted_mode)) 978 if (!radeon_crtc_scaling_mode_fixup(crtc, mode, adjusted_mode))
970 return false; 979 return false;
971 return true; 980 return true;
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index 2441cca7d775..341df86a253b 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -116,8 +116,6 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
116 else 116 else
117 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 117 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
118 118
119 /* adjust pm to dpms change */
120 radeon_pm_compute_clocks(rdev);
121} 119}
122 120
123static void radeon_legacy_lvds_prepare(struct drm_encoder *encoder) 121static void radeon_legacy_lvds_prepare(struct drm_encoder *encoder)
@@ -217,11 +215,6 @@ static bool radeon_legacy_mode_fixup(struct drm_encoder *encoder,
217 struct drm_display_mode *adjusted_mode) 215 struct drm_display_mode *adjusted_mode)
218{ 216{
219 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 217 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
220 struct drm_device *dev = encoder->dev;
221 struct radeon_device *rdev = dev->dev_private;
222
223 /* adjust pm to upcoming mode change */
224 radeon_pm_compute_clocks(rdev);
225 218
226 /* set the active encoder to connector routing */ 219 /* set the active encoder to connector routing */
227 radeon_encoder_set_active_device(encoder); 220 radeon_encoder_set_active_device(encoder);
@@ -294,8 +287,6 @@ static void radeon_legacy_primary_dac_dpms(struct drm_encoder *encoder, int mode
294 else 287 else
295 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 288 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
296 289
297 /* adjust pm to dpms change */
298 radeon_pm_compute_clocks(rdev);
299} 290}
300 291
301static void radeon_legacy_primary_dac_prepare(struct drm_encoder *encoder) 292static void radeon_legacy_primary_dac_prepare(struct drm_encoder *encoder)
@@ -482,8 +473,6 @@ static void radeon_legacy_tmds_int_dpms(struct drm_encoder *encoder, int mode)
482 else 473 else
483 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 474 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
484 475
485 /* adjust pm to dpms change */
486 radeon_pm_compute_clocks(rdev);
487} 476}
488 477
489static void radeon_legacy_tmds_int_prepare(struct drm_encoder *encoder) 478static void radeon_legacy_tmds_int_prepare(struct drm_encoder *encoder)
@@ -650,8 +639,6 @@ static void radeon_legacy_tmds_ext_dpms(struct drm_encoder *encoder, int mode)
650 else 639 else
651 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 640 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
652 641
653 /* adjust pm to dpms change */
654 radeon_pm_compute_clocks(rdev);
655} 642}
656 643
657static void radeon_legacy_tmds_ext_prepare(struct drm_encoder *encoder) 644static void radeon_legacy_tmds_ext_prepare(struct drm_encoder *encoder)
@@ -860,8 +847,6 @@ static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode)
860 else 847 else
861 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 848 radeon_combios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
862 849
863 /* adjust pm to dpms change */
864 radeon_pm_compute_clocks(rdev);
865} 850}
866 851
867static void radeon_legacy_tv_dac_prepare(struct drm_encoder *encoder) 852static void radeon_legacy_tv_dac_prepare(struct drm_encoder *encoder)