diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2013-10-11 10:01:08 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-11-06 13:36:18 +1000 |
commit | 3cf70dafd7bbbc91df0a9ecb081d46f9f3d867f6 (patch) | |
tree | 09dcee3dfa36377179a11e23ffbf4099e1d30bdd | |
parent | 23c453a4af187e06d3d16649f1f3f2d16c132f83 (diff) | |
download | linux-stable-3cf70dafd7bbbc91df0a9ecb081d46f9f3d867f6.tar.gz linux-stable-3cf70dafd7bbbc91df0a9ecb081d46f9f3d867f6.tar.bz2 linux-stable-3cf70dafd7bbbc91df0a9ecb081d46f9f3d867f6.zip |
drm: add drm_set_preferred_mode
New helper function to set the preferred video mode. Can be called
after drm_add_modes_noedid if you don't want the largest supported
video mode be used by default.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 13 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 01275e6bf638..2f325bcd0708 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -3482,6 +3482,19 @@ int drm_add_modes_noedid(struct drm_connector *connector, } EXPORT_SYMBOL(drm_add_modes_noedid); +void drm_set_preferred_mode(struct drm_connector *connector, + int hpref, int vpref) +{ + struct drm_display_mode *mode; + + list_for_each_entry(mode, &connector->probed_modes, head) { + if (drm_mode_width(mode) == hpref && + drm_mode_height(mode) == vpref) + mode->type |= DRM_MODE_TYPE_PREFERRED; + } +} +EXPORT_SYMBOL(drm_set_preferred_mode); + /** * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe with * data from a DRM display mode diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index d3a91ade1d37..f32c5cd51f41 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1118,6 +1118,8 @@ extern struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev, int GTF_2C, int GTF_K, int GTF_2J); extern int drm_add_modes_noedid(struct drm_connector *connector, int hdisplay, int vdisplay); +extern void drm_set_preferred_mode(struct drm_connector *connector, + int hpref, int vpref); extern int drm_edid_header_is_valid(const u8 *raw_edid); extern bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid); |