drm/edid: Fix preferred mode parse for EDID 1.4
authorAdam Jackson <ajax@redhat.com>
Mon, 29 Mar 2010 21:43:25 +0000 (21:43 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 6 Apr 2010 00:40:21 +0000 (10:40 +1000)
In 1.4, the first detailed mode is always the preferred mode.  The bit
that used to mean that, now means "this mode is the physical size in
pixels".

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_edid.c

index 9aa65b289d0174347c503d8a4fd18d0c50eef91f..2e1298cf576f99040de5cb3b958dcfd033d84328 100644 (file)
@@ -1295,7 +1295,10 @@ static int add_detailed_info(struct drm_connector *connector,
 
        for (i = 0; i < EDID_DETAILED_TIMINGS; i++) {
                struct detailed_timing *timing = &edid->detailed_timings[i];
-               int preferred = (i == 0) && (edid->features & DRM_EDID_FEATURE_PREFERRED_TIMING);
+               int preferred = (i == 0);
+
+               if (preferred && edid->version == 1 && edid->revision < 4)
+                       preferred = (edid->features & DRM_EDID_FEATURE_PREFERRED_TIMING);
 
                /* In 1.0, only timings are allowed */
                if (!timing->pixel_clock && edid->version == 1 &&