diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2013-10-11 04:01:08 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-11-05 22:36:18 -0500 |
commit | 3cf70dafd7bbbc91df0a9ecb081d46f9f3d867f6 (patch) | |
tree | 09dcee3dfa36377179a11e23ffbf4099e1d30bdd | |
parent | 23c453a4af187e06d3d16649f1f3f2d16c132f83 (diff) |
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, | |||
3482 | } | 3482 | } |
3483 | EXPORT_SYMBOL(drm_add_modes_noedid); | 3483 | EXPORT_SYMBOL(drm_add_modes_noedid); |
3484 | 3484 | ||
3485 | void drm_set_preferred_mode(struct drm_connector *connector, | ||
3486 | int hpref, int vpref) | ||
3487 | { | ||
3488 | struct drm_display_mode *mode; | ||
3489 | |||
3490 | list_for_each_entry(mode, &connector->probed_modes, head) { | ||
3491 | if (drm_mode_width(mode) == hpref && | ||
3492 | drm_mode_height(mode) == vpref) | ||
3493 | mode->type |= DRM_MODE_TYPE_PREFERRED; | ||
3494 | } | ||
3495 | } | ||
3496 | EXPORT_SYMBOL(drm_set_preferred_mode); | ||
3497 | |||
3485 | /** | 3498 | /** |
3486 | * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe with | 3499 | * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe with |
3487 | * data from a DRM display mode | 3500 | * 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, | |||
1118 | int GTF_2C, int GTF_K, int GTF_2J); | 1118 | int GTF_2C, int GTF_K, int GTF_2J); |
1119 | extern int drm_add_modes_noedid(struct drm_connector *connector, | 1119 | extern int drm_add_modes_noedid(struct drm_connector *connector, |
1120 | int hdisplay, int vdisplay); | 1120 | int hdisplay, int vdisplay); |
1121 | extern void drm_set_preferred_mode(struct drm_connector *connector, | ||
1122 | int hpref, int vpref); | ||
1121 | 1123 | ||
1122 | extern int drm_edid_header_is_valid(const u8 *raw_edid); | 1124 | extern int drm_edid_header_is_valid(const u8 *raw_edid); |
1123 | extern bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid); | 1125 | extern bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid); |