Commit d46e422f authored by Timur Kristóf's avatar Timur Kristóf Committed by Alex Deucher
Browse files

drm/amd/display: Cleanup uses of the analog flag



In the detect_link_and_local_sink() function, do not modify the
EDID capabilities of the display based on the connector. Instead,
respect the analog flag better and when the analog flag is set,
check that the connector indeed supports analog displays.

Suggested-by: default avatarRay Wu <Ray.Wu@amd.com>
Signed-off-by: default avatarTimur Kristóf <timur.kristof@gmail.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Link: https://lore.kernel.org/r/20251113163348.137315-3-timur.kristof@gmail.com


Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b9f55e04
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -8820,8 +8820,14 @@ static void amdgpu_dm_connector_add_freesync_modes(struct drm_connector *connect
	if (!(amdgpu_freesync_vid_mode && drm_edid))
		return;

	if (!amdgpu_dm_connector->dc_sink || amdgpu_dm_connector->dc_sink->edid_caps.analog ||
		!dc_supports_vrr(amdgpu_dm_connector->dc_sink->ctx->dce_version))
	if (!amdgpu_dm_connector->dc_sink || !amdgpu_dm_connector->dc_link)
		return;

	if (!dc_supports_vrr(amdgpu_dm_connector->dc_sink->ctx->dce_version))
		return;

	if (dc_connector_supports_analog(amdgpu_dm_connector->dc_link->link_id.id) &&
	    amdgpu_dm_connector->dc_sink->edid_caps.analog)
		return;

	if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
@@ -8848,7 +8854,10 @@ static int amdgpu_dm_connector_get_modes(struct drm_connector *connector)
			amdgpu_dm_connector->num_modes +=
				drm_add_modes_noedid(connector, 1920, 1080);

		if (amdgpu_dm_connector->dc_sink && amdgpu_dm_connector->dc_sink->edid_caps.analog) {
		if (amdgpu_dm_connector->dc_sink &&
		    amdgpu_dm_connector->dc_link &&
		    amdgpu_dm_connector->dc_sink->edid_caps.analog &&
		    dc_connector_supports_analog(amdgpu_dm_connector->dc_link->link_id.id)) {
			/* Analog monitor connected by DAC load detection.
			 * Add common modes. It will be up to the user to select one that works.
			 */
+0 −2
Original line number Diff line number Diff line
@@ -1224,8 +1224,6 @@ static bool detect_link_and_local_sink(struct dc_link *link,
			break;
		}

		sink->edid_caps.analog &= dc_connector_supports_analog(link->link_id.id);

		// Check if edid is the same
		if ((prev_sink) &&
		    (edid_status == EDID_THE_SAME || edid_status == EDID_OK))