aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_legacy_encoders.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_legacy_encoders.c71
1 files changed, 17 insertions, 54 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index a1d9d29319b2..ae554bfa0548 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -184,9 +184,9 @@ static void radeon_legacy_lvds_mode_set(struct drm_encoder *encoder,
184 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id); 184 radeon_combios_encoder_crtc_scratch_regs(encoder, radeon_crtc->crtc_id);
185} 185}
186 186
187static bool radeon_legacy_lvds_mode_fixup(struct drm_encoder *encoder, 187static bool radeon_legacy_mode_fixup(struct drm_encoder *encoder,
188 struct drm_display_mode *mode, 188 struct drm_display_mode *mode,
189 struct drm_display_mode *adjusted_mode) 189 struct drm_display_mode *adjusted_mode)
190{ 190{
191 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 191 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
192 192
@@ -194,15 +194,22 @@ static bool radeon_legacy_lvds_mode_fixup(struct drm_encoder *encoder,
194 radeon_encoder_set_active_device(encoder); 194 radeon_encoder_set_active_device(encoder);
195 drm_mode_set_crtcinfo(adjusted_mode, 0); 195 drm_mode_set_crtcinfo(adjusted_mode, 0);
196 196
197 if (radeon_encoder->rmx_type != RMX_OFF) 197 /* get the native mode for LVDS */
198 radeon_rmx_mode_fixup(encoder, mode, adjusted_mode); 198 if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) {
199 struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
200 int mode_id = adjusted_mode->base.id;
201 *adjusted_mode = *native_mode;
202 adjusted_mode->hdisplay = mode->hdisplay;
203 adjusted_mode->vdisplay = mode->vdisplay;
204 adjusted_mode->base.id = mode_id;
205 }
199 206
200 return true; 207 return true;
201} 208}
202 209
203static const struct drm_encoder_helper_funcs radeon_legacy_lvds_helper_funcs = { 210static const struct drm_encoder_helper_funcs radeon_legacy_lvds_helper_funcs = {
204 .dpms = radeon_legacy_lvds_dpms, 211 .dpms = radeon_legacy_lvds_dpms,
205 .mode_fixup = radeon_legacy_lvds_mode_fixup, 212 .mode_fixup = radeon_legacy_mode_fixup,
206 .prepare = radeon_legacy_lvds_prepare, 213 .prepare = radeon_legacy_lvds_prepare,
207 .mode_set = radeon_legacy_lvds_mode_set, 214 .mode_set = radeon_legacy_lvds_mode_set,
208 .commit = radeon_legacy_lvds_commit, 215 .commit = radeon_legacy_lvds_commit,
@@ -214,17 +221,6 @@ static const struct drm_encoder_funcs radeon_legacy_lvds_enc_funcs = {
214 .destroy = radeon_enc_destroy, 221 .destroy = radeon_enc_destroy,
215}; 222};
216 223
217static bool radeon_legacy_primary_dac_mode_fixup(struct drm_encoder *encoder,
218 struct drm_display_mode *mode,
219 struct drm_display_mode *adjusted_mode)
220{
221 /* set the active encoder to connector routing */
222 radeon_encoder_set_active_device(encoder);
223 drm_mode_set_crtcinfo(adjusted_mode, 0);
224
225 return true;
226}
227
228static void radeon_legacy_primary_dac_dpms(struct drm_encoder *encoder, int mode) 224static void radeon_legacy_primary_dac_dpms(struct drm_encoder *encoder, int mode)
229{ 225{
230 struct drm_device *dev = encoder->dev; 226 struct drm_device *dev = encoder->dev;
@@ -410,7 +406,7 @@ static enum drm_connector_status radeon_legacy_primary_dac_detect(struct drm_enc
410 406
411static const struct drm_encoder_helper_funcs radeon_legacy_primary_dac_helper_funcs = { 407static const struct drm_encoder_helper_funcs radeon_legacy_primary_dac_helper_funcs = {
412 .dpms = radeon_legacy_primary_dac_dpms, 408 .dpms = radeon_legacy_primary_dac_dpms,
413 .mode_fixup = radeon_legacy_primary_dac_mode_fixup, 409 .mode_fixup = radeon_legacy_mode_fixup,
414 .prepare = radeon_legacy_primary_dac_prepare, 410 .prepare = radeon_legacy_primary_dac_prepare,
415 .mode_set = radeon_legacy_primary_dac_mode_set, 411 .mode_set = radeon_legacy_primary_dac_mode_set,
416 .commit = radeon_legacy_primary_dac_commit, 412 .commit = radeon_legacy_primary_dac_commit,
@@ -423,17 +419,6 @@ static const struct drm_encoder_funcs radeon_legacy_primary_dac_enc_funcs = {
423 .destroy = radeon_enc_destroy, 419 .destroy = radeon_enc_destroy,
424}; 420};
425 421
426static bool radeon_legacy_tmds_int_mode_fixup(struct drm_encoder *encoder,
427 struct drm_display_mode *mode,
428 struct drm_display_mode *adjusted_mode)
429{
430 /* set the active encoder to connector routing */
431 radeon_encoder_set_active_device(encoder);
432 drm_mode_set_crtcinfo(adjusted_mode, 0);
433
434 return true;
435}
436
437static void radeon_legacy_tmds_int_dpms(struct drm_encoder *encoder, int mode) 422static void radeon_legacy_tmds_int_dpms(struct drm_encoder *encoder, int mode)
438{ 423{
439 struct drm_device *dev = encoder->dev; 424 struct drm_device *dev = encoder->dev;
@@ -585,7 +570,7 @@ static void radeon_legacy_tmds_int_mode_set(struct drm_encoder *encoder,
585 570
586static const struct drm_encoder_helper_funcs radeon_legacy_tmds_int_helper_funcs = { 571static const struct drm_encoder_helper_funcs radeon_legacy_tmds_int_helper_funcs = {
587 .dpms = radeon_legacy_tmds_int_dpms, 572 .dpms = radeon_legacy_tmds_int_dpms,
588 .mode_fixup = radeon_legacy_tmds_int_mode_fixup, 573 .mode_fixup = radeon_legacy_mode_fixup,
589 .prepare = radeon_legacy_tmds_int_prepare, 574 .prepare = radeon_legacy_tmds_int_prepare,
590 .mode_set = radeon_legacy_tmds_int_mode_set, 575 .mode_set = radeon_legacy_tmds_int_mode_set,
591 .commit = radeon_legacy_tmds_int_commit, 576 .commit = radeon_legacy_tmds_int_commit,
@@ -597,17 +582,6 @@ static const struct drm_encoder_funcs radeon_legacy_tmds_int_enc_funcs = {
597 .destroy = radeon_enc_destroy, 582 .destroy = radeon_enc_destroy,
598}; 583};
599 584
600static bool radeon_legacy_tmds_ext_mode_fixup(struct drm_encoder *encoder,
601 struct drm_display_mode *mode,
602 struct drm_display_mode *adjusted_mode)
603{
604 /* set the active encoder to connector routing */
605 radeon_encoder_set_active_device(encoder);
606 drm_mode_set_crtcinfo(adjusted_mode, 0);
607
608 return true;
609}
610
611static void radeon_legacy_tmds_ext_dpms(struct drm_encoder *encoder, int mode) 585static void radeon_legacy_tmds_ext_dpms(struct drm_encoder *encoder, int mode)
612{ 586{
613 struct drm_device *dev = encoder->dev; 587 struct drm_device *dev = encoder->dev;
@@ -742,7 +716,7 @@ static void radeon_ext_tmds_enc_destroy(struct drm_encoder *encoder)
742 716
743static const struct drm_encoder_helper_funcs radeon_legacy_tmds_ext_helper_funcs = { 717static const struct drm_encoder_helper_funcs radeon_legacy_tmds_ext_helper_funcs = {
744 .dpms = radeon_legacy_tmds_ext_dpms, 718 .dpms = radeon_legacy_tmds_ext_dpms,
745 .mode_fixup = radeon_legacy_tmds_ext_mode_fixup, 719 .mode_fixup = radeon_legacy_mode_fixup,
746 .prepare = radeon_legacy_tmds_ext_prepare, 720 .prepare = radeon_legacy_tmds_ext_prepare,
747 .mode_set = radeon_legacy_tmds_ext_mode_set, 721 .mode_set = radeon_legacy_tmds_ext_mode_set,
748 .commit = radeon_legacy_tmds_ext_commit, 722 .commit = radeon_legacy_tmds_ext_commit,
@@ -754,17 +728,6 @@ static const struct drm_encoder_funcs radeon_legacy_tmds_ext_enc_funcs = {
754 .destroy = radeon_ext_tmds_enc_destroy, 728 .destroy = radeon_ext_tmds_enc_destroy,
755}; 729};
756 730
757static bool radeon_legacy_tv_dac_mode_fixup(struct drm_encoder *encoder,
758 struct drm_display_mode *mode,
759 struct drm_display_mode *adjusted_mode)
760{
761 /* set the active encoder to connector routing */
762 radeon_encoder_set_active_device(encoder);
763 drm_mode_set_crtcinfo(adjusted_mode, 0);
764
765 return true;
766}
767
768static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode) 731static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode)
769{ 732{
770 struct drm_device *dev = encoder->dev; 733 struct drm_device *dev = encoder->dev;
@@ -1281,7 +1244,7 @@ static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder
1281 1244
1282static const struct drm_encoder_helper_funcs radeon_legacy_tv_dac_helper_funcs = { 1245static const struct drm_encoder_helper_funcs radeon_legacy_tv_dac_helper_funcs = {
1283 .dpms = radeon_legacy_tv_dac_dpms, 1246 .dpms = radeon_legacy_tv_dac_dpms,
1284 .mode_fixup = radeon_legacy_tv_dac_mode_fixup, 1247 .mode_fixup = radeon_legacy_mode_fixup,
1285 .prepare = radeon_legacy_tv_dac_prepare, 1248 .prepare = radeon_legacy_tv_dac_prepare,
1286 .mode_set = radeon_legacy_tv_dac_mode_set, 1249 .mode_set = radeon_legacy_tv_dac_mode_set,
1287 .commit = radeon_legacy_tv_dac_commit, 1250 .commit = radeon_legacy_tv_dac_commit,