aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2013-02-15 10:36:27 -0500
committerDave Airlie <airlied@redhat.com>2013-02-19 17:44:22 -0500
commit196e077dc165a307efbd9e7569f81bbdbcf18f65 (patch)
tree167eba82b3f1711012d6706199ac91fd1080e081
parent8fcb6c4748822f8f594536e47b9b0701b6c33e7a (diff)
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>
-rw-r--r--drivers/gpu/drm/drm_edid.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index e1aca7b53987..67aa0dd68250 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -2054,7 +2054,8 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
2054 num_modes += add_cvt_modes(connector, edid); 2054 num_modes += add_cvt_modes(connector, edid);
2055 num_modes += add_standard_modes(connector, edid); 2055 num_modes += add_standard_modes(connector, edid);
2056 num_modes += add_established_modes(connector, edid); 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 num_modes += add_cea_modes(connector, edid); 2059 num_modes += add_cea_modes(connector, edid);
2059 2060
2060 if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) 2061 if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))