summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2010-01-04 17:53:06 -0500
committerDave Airlie <airlied@redhat.com>2010-01-07 13:17:48 +1000
commit69da301589b579f9619475e30cc449df9193410c (patch)
treef2a63491fd039411d019cd3b5a4a11452ad3f53b
parente6be8d9d17bd44061116f601fe2609b3ace7aa69 (diff)
drm/edid: Skip empty CVT codepoints
Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/drm_edid.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 5c9f79877cbf..7d6ac22f5b2d 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -911,11 +911,15 @@ static int drm_cvt_modes(struct drm_connector *connector,
struct drm_device *dev = connector->dev;
struct cvt_timing *cvt;
const int rates[] = { 60, 85, 75, 60, 50 };
+ const u8 empty[3] = { 0, 0, 0 };
for (i = 0; i < 4; i++) {
int uninitialized_var(width), height;
cvt = &(timing->data.other_data.data.cvt[i]);
+ if (!memcmp(cvt->code, empty, 3))
+ continue;
+
height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 8) + 1) * 2;
switch (cvt->code[1] & 0xc0) {
case 0x00: