Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6536a3a6 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/radeon: update mode_valid testing for DP



When we have a passive adapter validate the clocks
against the HMDI/DVI limits.

Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5c868229
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -1549,6 +1549,8 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
static int radeon_dp_mode_valid(struct drm_connector *connector,
				  struct drm_display_mode *mode)
{
	struct drm_device *dev = connector->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
	struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;

@@ -1579,16 +1581,25 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
					return MODE_PANEL;
			}
		}
		return MODE_OK;
	} else {
		if ((radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
		    (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
		    (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) {
			return radeon_dp_mode_valid_helper(connector, mode);
		else
			return MODE_OK;
		} else {
			if (ASIC_IS_DCE6(rdev) && drm_detect_hdmi_monitor(radeon_connector->edid)) {
				/* HDMI 1.3+ supports max clock of 340 Mhz */
				if (mode->clock > 340000)
					return MODE_CLOCK_HIGH;
			} else {
				if (mode->clock > 165000)
					return MODE_CLOCK_HIGH;
			}
		}
	}

	return MODE_OK;
}

static const struct drm_connector_helper_funcs radeon_dp_connector_helper_funcs = {
	.get_modes = radeon_dp_get_modes,
	.mode_valid = radeon_dp_mode_valid,