aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2010-03-29 17:43:21 -0400
committerDave Airlie <airlied@redhat.com>2010-04-05 20:40:18 -0400
commitc867df7043b738da4f4d358d7039c243a29b4272 (patch)
tree13a4219137fd02603f814749e77234c825233dc9
parent2b470ab075b30aaeeab29d67b8f1f111096a5fbe (diff)
drm/edid: Reshuffle mode list construction to closer match the spec
Also, document what the spec says to do. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--drivers/gpu/drm/drm_edid.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 9c4717ff5f71..858fedc33d9b 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1377,10 +1377,24 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
1377 1377
1378 quirks = edid_get_quirks(edid); 1378 quirks = edid_get_quirks(edid);
1379 1379
1380 num_modes += add_established_modes(connector, edid); 1380 /*
1381 num_modes += add_standard_modes(connector, edid); 1381 * EDID spec says modes should be preferred in this order:
1382 * - preferred detailed mode
1383 * - other detailed modes from base block
1384 * - detailed modes from extension blocks
1385 * - CVT 3-byte code modes
1386 * - standard timing codes
1387 * - established timing codes
1388 * - modes inferred from GTF or CVT range information
1389 *
1390 * We don't quite implement this yet, but we're close.
1391 *
1392 * XXX order for additional mode types in extension blocks?
1393 */
1382 num_modes += add_detailed_info(connector, edid, quirks); 1394 num_modes += add_detailed_info(connector, edid, quirks);
1383 num_modes += add_detailed_info_eedid(connector, edid, quirks); 1395 num_modes += add_detailed_info_eedid(connector, edid, quirks);
1396 num_modes += add_standard_modes(connector, edid);
1397 num_modes += add_established_modes(connector, edid);
1384 1398
1385 if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) 1399 if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
1386 edid_fixup_preferred(connector, quirks); 1400 edid_fixup_preferred(connector, quirks);