diff options
author | Adam Jackson <ajax@redhat.com> | 2010-03-29 23:43:21 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-04-06 02:40:18 +0200 |
commit | c867df7043b738da4f4d358d7039c243a29b4272 (patch) | |
tree | 13a4219137fd02603f814749e77234c825233dc9 /drivers/gpu | |
parent | drm/edid: Remove a redundant check (diff) | |
download | linux-c867df7043b738da4f4d358d7039c243a29b4272.tar.xz linux-c867df7043b738da4f4d358d7039c243a29b4272.zip |
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>
Diffstat (limited to 'drivers/gpu')
-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) quirks = edid_get_quirks(edid); - num_modes += add_established_modes(connector, edid); - num_modes += add_standard_modes(connector, edid); + /* + * EDID spec says modes should be preferred in this order: + * - preferred detailed mode + * - other detailed modes from base block + * - detailed modes from extension blocks + * - CVT 3-byte code modes + * - standard timing codes + * - established timing codes + * - modes inferred from GTF or CVT range information + * + * We don't quite implement this yet, but we're close. + * + * XXX order for additional mode types in extension blocks? + */ num_modes += add_detailed_info(connector, edid, quirks); num_modes += add_detailed_info_eedid(connector, edid, quirks); + num_modes += add_standard_modes(connector, edid); + num_modes += add_established_modes(connector, edid); if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) edid_fixup_preferred(connector, quirks); |