diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 933c5c39654d..cfb2c8f88890 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
| @@ -1549,6 +1549,8 @@ out: | |||
| 1549 | static int radeon_dp_mode_valid(struct drm_connector *connector, | 1549 | static int radeon_dp_mode_valid(struct drm_connector *connector, |
| 1550 | struct drm_display_mode *mode) | 1550 | struct drm_display_mode *mode) |
| 1551 | { | 1551 | { |
| 1552 | struct drm_device *dev = connector->dev; | ||
| 1553 | struct radeon_device *rdev = dev->dev_private; | ||
| 1552 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); | 1554 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
| 1553 | struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; | 1555 | struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; |
| 1554 | 1556 | ||
| @@ -1579,14 +1581,23 @@ static int radeon_dp_mode_valid(struct drm_connector *connector, | |||
| 1579 | return MODE_PANEL; | 1581 | return MODE_PANEL; |
| 1580 | } | 1582 | } |
| 1581 | } | 1583 | } |
| 1582 | return MODE_OK; | ||
| 1583 | } else { | 1584 | } else { |
| 1584 | if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || | 1585 | if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || |
| 1585 | (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) | 1586 | (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { |
| 1586 | return radeon_dp_mode_valid_helper(connector, mode); | 1587 | return radeon_dp_mode_valid_helper(connector, mode); |
| 1587 | else | 1588 | } else { |
| 1588 | return MODE_OK; | 1589 | if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector->edid)) { |
| 1590 | /* HDMI 1.3+ supports max clock of 340 Mhz */ | ||
| 1591 | if (mode->clock > 340000) | ||
| 1592 | return MODE_CLOCK_HIGH; | ||
| 1593 | } else { | ||
| 1594 | if (mode->clock > 165000) | ||
| 1595 | return MODE_CLOCK_HIGH; | ||
| 1596 | } | ||
| 1597 | } | ||
| 1589 | } | 1598 | } |
| 1599 | |||
| 1600 | return MODE_OK; | ||
| 1590 | } | 1601 | } |
| 1591 | 1602 | ||
| 1592 | static const struct drm_connector_helper_funcs radeon_dp_connector_helper_funcs = { | 1603 | static const struct drm_connector_helper_funcs radeon_dp_connector_helper_funcs = { |
