Commit c345533d authored by Wenjing Liu's avatar Wenjing Liu Committed by Wen Zhiwei
Browse files

drm/amd/display: use preferred link settings for dp signal only

stable inclusion
from stable-v6.6.50
commit 67cf14c04ff0ea5c246f80ea3a044c2afb93c99d
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAYKL6

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=67cf14c04ff0ea5c246f80ea3a044c2afb93c99d



--------------------------------

[ Upstream commit abf34ca465f5cd182b07701d3f3d369c0fc04723 ]

[why]
We set preferred link settings for virtual signal. However we don't support
virtual signal for UHBR link rate. If preferred is set to UHBR link rate, we
will allow virtual signal with UHBR link rate which causes system crashes.

Reviewed-by: default avatarDillon Varone <dillon.varone@amd.com>
Acked-by: default avatarZaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: default avatarWenjing Liu <wenjing.liu@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>
Signed-off-by: default avatarWen Zhiwei <wenzhiwei@kylinos.cn>
parent 04b1230b
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -908,21 +908,17 @@ bool link_decide_link_settings(struct dc_stream_state *stream,

	memset(link_setting, 0, sizeof(*link_setting));

	if (dc_is_dp_signal(stream->signal)  &&
			link->preferred_link_setting.lane_count != LANE_COUNT_UNKNOWN &&
			link->preferred_link_setting.link_rate != LINK_RATE_UNKNOWN) {
		/* if preferred is specified through AMDDP, use it, if it's enough
		 * to drive the mode
		 */
	if (link->preferred_link_setting.lane_count !=
			LANE_COUNT_UNKNOWN &&
			link->preferred_link_setting.link_rate !=
					LINK_RATE_UNKNOWN) {
		*link_setting = link->preferred_link_setting;
		return true;
	}

	} else if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
		/* MST doesn't perform link training for now
		 * TODO: add MST specific link training routine
		 */
	if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
		decide_mst_link_settings(link, link_setting);
	} else if (link->connector_signal == SIGNAL_TYPE_EDP) {
		/* enable edp link optimization for DSC eDP case */