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

Commit 15549517 authored by Chris Park's avatar Chris Park Committed by Greg Kroah-Hartman
Browse files

drm/amd/display: Disconnect non-DP with no EDID



[ Upstream commit 080039273b126eeb0185a61c045893a25dbc046e ]

[Why]
Active DP dongles return no EDID when dongle
is connected, but VGA display is taken out.
Current driver behavior does not remove the
active display when this happens, and this is
a gap between dongle DTP and dongle behavior.

[How]
For active DP dongles and non-DP scenario,
disconnect sink on detection when no EDID
is read due to timeout.

Signed-off-by: default avatarChris Park <Chris.Park@amd.com>
Reviewed-by: default avatarNicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Acked-by: default avatarStylon Wang <stylon.wang@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 66988dc4
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -768,6 +768,24 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
			    dc_is_dvi_signal(link->connector_signal)) {
				if (prev_sink != NULL)
					dc_sink_release(prev_sink);
				link_disconnect_sink(link);

				return false;
			}
			/*
			 * Abort detection for DP connectors if we have
			 * no EDID and connector is active converter
			 * as there are no display downstream
			 *
			 */
			if (dc_is_dp_sst_signal(link->connector_signal) &&
				(link->dpcd_caps.dongle_type ==
						DISPLAY_DONGLE_DP_VGA_CONVERTER ||
				link->dpcd_caps.dongle_type ==
						DISPLAY_DONGLE_DP_DVI_CONVERTER)) {
				if (prev_sink)
					dc_sink_release(prev_sink);
				link_disconnect_sink(link);

				return false;
			}