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>
This commit is contained in:
parent
2b470ab075
commit
c867df7043
1 changed files with 16 additions and 2 deletions
|
@ -1377,10 +1377,24 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
|
||||||
|
|
||||||
quirks = edid_get_quirks(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(connector, edid, quirks);
|
||||||
num_modes += add_detailed_info_eedid(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))
|
if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
|
||||||
edid_fixup_preferred(connector, quirks);
|
edid_fixup_preferred(connector, quirks);
|
||||||
|
|
Loading…
Reference in a new issue