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

Commit 2a0b4d85 authored by Martin Tsai's avatar Martin Tsai Committed by Harry Wentland
Browse files

drm/amd/display: To prevent detecting new sink from spurious HPD

parent bd21a37d
Loading
Loading
Loading
Loading
+34 −14
Original line number Diff line number Diff line
@@ -565,8 +565,6 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
			link->local_sink)
		return true;

	link_disconnect_sink(link);

	if (new_connection_type != dc_connection_none) {
		link->type = new_connection_type;

@@ -651,16 +649,24 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
		sink_init_data.link = link;
		sink_init_data.sink_signal = sink_caps.signal;

		if (link->local_sink)	{
			sink = link->local_sink;
		} else {
			link_disconnect_sink(link);

			sink_init_data.link = link;
			sink_init_data.sink_signal = sink_caps.signal;

			sink = dc_sink_create(&sink_init_data);
			if (!sink) {
				DC_ERROR("Failed to create sink!\n");
				return false;
			}

			sink->dongle_max_pix_clk = sink_caps.max_hdmi_pixel_clock;
			sink->converter_disable_audio = converter_disable_audio;

			link->local_sink = sink;
		}

		edid_status = dm_helpers_read_local_edid(
				link->ctx,
@@ -752,9 +758,23 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
			memset(link->mst_stream_alloc_table.stream_allocations, 0, sizeof(link->mst_stream_alloc_table.stream_allocations));
		}

		if (link->local_sink) {
			sink = link->local_sink;
			edid_status = dm_helpers_read_local_edid(
						link->ctx,
						link,
						sink);
			if (edid_status != EDID_OK) {
				link_disconnect_sink(link);
				link->type = dc_connection_none;
				sink_caps.signal = SIGNAL_TYPE_NONE;
			}
		} else {
			link_disconnect_sink(link);
			link->type = dc_connection_none;
			sink_caps.signal = SIGNAL_TYPE_NONE;
		}
	}

	LINK_INFO("link=%d, dc_sink_in=%p is now %s\n",
		link->link_index, sink,