Commit 4ce08703 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/edid: convert drm_detect_hdmi_monitor() to use cea db iter



Iterate through all CTA data blocks, not just the first CTA extension.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/b867e7b628189d2f8fa7eac5b9aa701892724711.1651569697.git.jani.nikula@intel.com
parent b07debc2
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -5131,27 +5131,24 @@ EXPORT_SYMBOL(drm_av_sync_delay);
 */
bool drm_detect_hdmi_monitor(const struct edid *edid)
{
	const u8 *edid_ext;
	int i;
	int start_offset, end_offset;

	edid_ext = drm_find_cea_extension(edid);
	if (!edid_ext)
		return false;

	if (cea_db_offsets(edid_ext, &start_offset, &end_offset))
		return false;
	const struct cea_db *db;
	struct cea_db_iter iter;
	bool hdmi = false;

	/*
	 * Because HDMI identifier is in Vendor Specific Block,
	 * search it from all data blocks of CEA extension.
	 */
	for_each_cea_db(edid_ext, i, start_offset, end_offset) {
		if (cea_db_is_hdmi_vsdb(&edid_ext[i]))
			return true;
	cea_db_iter_edid_begin(edid, &iter);
	cea_db_iter_for_each(db, &iter) {
		if (cea_db_is_hdmi_vsdb(db)) {
			hdmi = true;
			break;
		}
	}
	cea_db_iter_end(&iter);

	return false;
	return hdmi;
}
EXPORT_SYMBOL(drm_detect_hdmi_monitor);