drm/edid: fix parsing of 3D modes from HDMI VSDB
authorjsg <jsg@openbsd.org>
Mon, 27 Mar 2023 04:31:12 +0000 (04:31 +0000)
committerjsg <jsg@openbsd.org>
Mon, 27 Mar 2023 04:31:12 +0000 (04:31 +0000)
From Jani Nikula
f0f427f3858fda994fe26aacdb7a51815995f035 in linux-6.1.y/6.1.16
72794d16bd535a984e6653a18f5862405b49b5f9 in mainline linux

sys/dev/pci/drm/drm_edid.c

index 4179940..5e3dd29 100644 (file)
@@ -5123,13 +5123,12 @@ static int add_cea_modes(struct drm_connector *connector,
 {
        const struct cea_db *db;
        struct cea_db_iter iter;
+       const u8 *hdmi = NULL, *video = NULL;
+       u8 hdmi_len = 0, video_len = 0;
        int modes = 0;
 
        cea_db_iter_edid_begin(drm_edid, &iter);
        cea_db_iter_for_each(db, &iter) {
-               const u8 *hdmi = NULL, *video = NULL;
-               u8 hdmi_len = 0, video_len = 0;
-
                if (cea_db_tag(db) == CTA_DB_VIDEO) {
                        video = cea_db_data(db);
                        video_len = cea_db_payload_len(db);
@@ -5145,18 +5144,17 @@ static int add_cea_modes(struct drm_connector *connector,
                        modes += do_y420vdb_modes(connector, vdb420,
                                                  cea_db_payload_len(db) - 1);
                }
-
-               /*
-                * We parse the HDMI VSDB after having added the cea modes as we
-                * will be patching their flags when the sink supports stereo
-                * 3D.
-                */
-               if (hdmi)
-                       modes += do_hdmi_vsdb_modes(connector, hdmi, hdmi_len,
-                                                   video, video_len);
        }
        cea_db_iter_end(&iter);
 
+       /*
+        * We parse the HDMI VSDB after having added the cea modes as we will be
+        * patching their flags when the sink supports stereo 3D.
+        */
+       if (hdmi)
+               modes += do_hdmi_vsdb_modes(connector, hdmi, hdmi_len,
+                                           video, video_len);
+
        return modes;
 }