drm/edid: Make sure the CEA mode arrays have the correct amount of modes
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 13 Dec 2019 17:43:48 +0000 (19:43 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 16 Dec 2019 15:20:41 +0000 (17:20 +0200)
We depend on a specific relationship between the VIC number and the
index in the CEA mode arrays. Assert that the arrays have the expected
size to make sure we've not accidentally left holes in them.

v2: Pimp the BUILD_BUG_ON()s
v3: Fix typos (Manasi)

Cc: Hans Verkuil <hansverk@cisco.com>
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: Thomas Anderson <thomasanderson@google.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191213174348.27261-5-ville.syrjala@linux.intel.com
drivers/gpu/drm/drm_edid.c

index 8bc69da..ec5b881 100644 (file)
@@ -3213,6 +3213,9 @@ static u8 *drm_find_cea_extension(const struct edid *edid)
 
 static const struct drm_display_mode *cea_mode_for_vic(u8 vic)
 {
+       BUILD_BUG_ON(1 + ARRAY_SIZE(edid_cea_modes_1) - 1 != 127);
+       BUILD_BUG_ON(193 + ARRAY_SIZE(edid_cea_modes_193) - 1 != 219);
+
        if (vic >= 1 && vic < 1 + ARRAY_SIZE(edid_cea_modes_1))
                return &edid_cea_modes_1[vic - 1];
        if (vic >= 193 && vic < 193 + ARRAY_SIZE(edid_cea_modes_193))