drm/edid: convert drm_detect_hdmi_monitor() to use cea db iter
authorJani Nikula <jani.nikula@intel.com>
Tue, 3 May 2022 09:23:56 +0000 (12:23 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 5 May 2022 17:28:13 +0000 (20:28 +0300)
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
drivers/gpu/drm/drm_edid.c

index 1ea2727..ca594d5 100644 (file)
@@ -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);