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: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/b867e7b628189d2f8fa7eac5b9aa701892724711.1651569697.git.jani.nikula@intel.com
This commit is contained in:
parent
b07debc2a8
commit
4ce08703a8
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user