diff options
author | Adam Jackson <ajax@redhat.com> | 2010-03-29 17:43:21 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-04-05 20:40:18 -0400 |
commit | c867df7043b738da4f4d358d7039c243a29b4272 (patch) | |
tree | 13a4219137fd02603f814749e77234c825233dc9 | |
parent | 2b470ab075b30aaeeab29d67b8f1f111096a5fbe (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.c | 18 |
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); |