diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2012-03-23 14:44:47 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-03-26 04:53:12 -0400 |
commit | 017d213f649c6775e4a4349e50a5631a4e4c7308 (patch) | |
tree | a07fe71740f6c9901ee43a54c4f2e5855866dece /drivers/gpu | |
parent | 59365671464539dc695bbf4d4bf37aabfd8604f2 (diff) |
drm/radeon/kms/atom: force bpc to 8 for now
Using the bpc (bits per color) specified by the monitor
can cause problems in some cases. Until we get a better
handle on how to deal with those cases, just use a bpc of 8.
Reported-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_crtc.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_dp.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_encoders.c | 4 |
3 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 083b3eada001..b5ff1f7b6f7e 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
@@ -588,8 +588,8 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc, | |||
588 | if (encoder->crtc == crtc) { | 588 | if (encoder->crtc == crtc) { |
589 | radeon_encoder = to_radeon_encoder(encoder); | 589 | radeon_encoder = to_radeon_encoder(encoder); |
590 | connector = radeon_get_connector_for_encoder(encoder); | 590 | connector = radeon_get_connector_for_encoder(encoder); |
591 | if (connector && connector->display_info.bpc) | 591 | /* if (connector && connector->display_info.bpc) |
592 | bpc = connector->display_info.bpc; | 592 | bpc = connector->display_info.bpc; */ |
593 | encoder_mode = atombios_get_encoder_mode(encoder); | 593 | encoder_mode = atombios_get_encoder_mode(encoder); |
594 | is_duallink = radeon_dig_monitor_is_duallink(encoder, mode->clock); | 594 | is_duallink = radeon_dig_monitor_is_duallink(encoder, mode->clock); |
595 | if ((radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT)) || | 595 | if ((radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT)) || |
@@ -965,7 +965,9 @@ static void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode | |||
965 | struct radeon_connector_atom_dig *dig_connector = | 965 | struct radeon_connector_atom_dig *dig_connector = |
966 | radeon_connector->con_priv; | 966 | radeon_connector->con_priv; |
967 | int dp_clock; | 967 | int dp_clock; |
968 | bpc = connector->display_info.bpc; | 968 | |
969 | /* if (connector->display_info.bpc) | ||
970 | bpc = connector->display_info.bpc; */ | ||
969 | 971 | ||
970 | switch (encoder_mode) { | 972 | switch (encoder_mode) { |
971 | case ATOM_ENCODER_MODE_DP_MST: | 973 | case ATOM_ENCODER_MODE_DP_MST: |
diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c index 6c62be226804..c57d85664e77 100644 --- a/drivers/gpu/drm/radeon/atombios_dp.c +++ b/drivers/gpu/drm/radeon/atombios_dp.c | |||
@@ -405,10 +405,13 @@ static void dp_get_adjust_train(u8 link_status[DP_LINK_STATUS_SIZE], | |||
405 | /* get bpc from the EDID */ | 405 | /* get bpc from the EDID */ |
406 | static int convert_bpc_to_bpp(int bpc) | 406 | static int convert_bpc_to_bpp(int bpc) |
407 | { | 407 | { |
408 | #if 0 | ||
408 | if (bpc == 0) | 409 | if (bpc == 0) |
409 | return 24; | 410 | return 24; |
410 | else | 411 | else |
411 | return bpc * 3; | 412 | return bpc * 3; |
413 | #endif | ||
414 | return 24; | ||
412 | } | 415 | } |
413 | 416 | ||
414 | /* get the max pix clock supported by the link rate and lane num */ | 417 | /* get the max pix clock supported by the link rate and lane num */ |
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index 468b874336f9..e607c4d7dd98 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c | |||
@@ -541,7 +541,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo | |||
541 | dp_clock = dig_connector->dp_clock; | 541 | dp_clock = dig_connector->dp_clock; |
542 | dp_lane_count = dig_connector->dp_lane_count; | 542 | dp_lane_count = dig_connector->dp_lane_count; |
543 | hpd_id = radeon_connector->hpd.hpd; | 543 | hpd_id = radeon_connector->hpd.hpd; |
544 | bpc = connector->display_info.bpc; | 544 | /* bpc = connector->display_info.bpc; */ |
545 | } | 545 | } |
546 | 546 | ||
547 | /* no dig encoder assigned */ | 547 | /* no dig encoder assigned */ |
@@ -1159,7 +1159,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder, | |||
1159 | dp_lane_count = dig_connector->dp_lane_count; | 1159 | dp_lane_count = dig_connector->dp_lane_count; |
1160 | connector_object_id = | 1160 | connector_object_id = |
1161 | (radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; | 1161 | (radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; |
1162 | bpc = connector->display_info.bpc; | 1162 | /* bpc = connector->display_info.bpc; */ |
1163 | } | 1163 | } |
1164 | 1164 | ||
1165 | memset(&args, 0, sizeof(args)); | 1165 | memset(&args, 0, sizeof(args)); |