aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r--drivers/gpu/drm/radeon/atombios_dp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c
index 79e8ebc0530..b5628ce1228 100644
--- a/drivers/gpu/drm/radeon/atombios_dp.c
+++ b/drivers/gpu/drm/radeon/atombios_dp.c
@@ -553,6 +553,7 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
553{ 553{
554 struct drm_device *dev = encoder->dev; 554 struct drm_device *dev = encoder->dev;
555 struct radeon_device *rdev = dev->dev_private; 555 struct radeon_device *rdev = dev->dev_private;
556 struct radeon_connector *radeon_connector = to_radeon_connector(connector);
556 int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; 557 int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE;
557 558
558 if (!ASIC_IS_DCE4(rdev)) 559 if (!ASIC_IS_DCE4(rdev))
@@ -560,10 +561,20 @@ static void radeon_dp_set_panel_mode(struct drm_encoder *encoder,
560 561
561 if (radeon_connector_encoder_is_dp_bridge(connector)) 562 if (radeon_connector_encoder_is_dp_bridge(connector))
562 panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE; 563 panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;
564 else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
565 u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);
566 if (tmp & 1)
567 panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;
568 }
563 569
564 atombios_dig_encoder_setup(encoder, 570 atombios_dig_encoder_setup(encoder,
565 ATOM_ENCODER_CMD_SETUP_PANEL_MODE, 571 ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
566 panel_mode); 572 panel_mode);
573
574 if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) &&
575 (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) {
576 radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1);
577 }
567} 578}
568 579
569void radeon_dp_set_link_config(struct drm_connector *connector, 580void radeon_dp_set_link_config(struct drm_connector *connector,