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

drm/amd/display: Add analog bit to edid_caps (v2)



The new analog bit will be used with DVI-I connectors.

DVI-I connectors can connect to both digital and analog monitors
and this bit will help distinguish between those.

v2:
Sanitize analog bit based on connector type.

Signed-off-by: default avatarTimur Kristóf <timur.kristof@gmail.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent dfc74e37
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
	edid_caps->serial_number = edid_buf->serial;
	edid_caps->manufacture_week = edid_buf->mfg_week;
	edid_caps->manufacture_year = edid_buf->mfg_year;
	edid_caps->analog = !(edid_buf->input & DRM_EDID_INPUT_DIGITAL);

	drm_edid_get_monitor_name(edid_buf,
				  edid_caps->display_name,
+5 −0
Original line number Diff line number Diff line
@@ -185,6 +185,10 @@ struct dc_panel_patch {
	unsigned int wait_after_dpcd_poweroff_ms;
};

/**
 * struct dc_edid_caps - Capabilities read from EDID.
 * @analog: Whether the monitor is analog. Used by DVI-I handling.
 */
struct dc_edid_caps {
	/* sink identification */
	uint16_t manufacturer_id;
@@ -213,6 +217,7 @@ struct dc_edid_caps {
	bool hdr_supported;
	bool rr_capable;
	bool scdc_present;
	bool analog;

	struct dc_panel_patch panel_patch;
};
+2 −0
Original line number Diff line number Diff line
@@ -1107,6 +1107,8 @@ 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))
+7 −0
Original line number Diff line number Diff line
@@ -310,4 +310,11 @@ static inline bool dal_graphics_object_id_equal(
	}
	return false;
}

static inline bool dc_connector_supports_analog(const enum connector_id conn)
{
	return conn == CONNECTOR_ID_VGA ||
		conn == CONNECTOR_ID_SINGLE_LINK_DVII ||
		conn == CONNECTOR_ID_DUAL_LINK_DVII;
}
#endif