Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: don't add inferred modes for monitors that don't support them

If bit 0 of the features byte (0x18) is set to 0, then, according to
the EDID spec, "the display is non-continuous frequency (multi-mode)
and is only specified to accept the video timing formats that are
listed in Base EDID and certain Extension Blocks".

For more information, please see the EDID spec, check the notes of the
table that explains the "Feature Support" byte (18h) and also the
notes on the tables of the section that explains "Display Range Limits
& Additional Timing Description Definition (tag #FDh)".

Cc: stable@vger.kernel.org
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45729
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by

Paulo Zanoni and committed by
Dave Airlie
196e077d 8fcb6c47

+2 -1
+2 -1
drivers/gpu/drm/drm_edid.c
··· 2054 2054 num_modes += add_cvt_modes(connector, edid); 2055 2055 num_modes += add_standard_modes(connector, edid); 2056 2056 num_modes += add_established_modes(connector, edid); 2057 - num_modes += add_inferred_modes(connector, edid); 2057 + if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) 2058 + num_modes += add_inferred_modes(connector, edid); 2058 2059 num_modes += add_cea_modes(connector, edid); 2059 2060 2060 2061 if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))