diff options
author | Dave Airlie <airlied@redhat.com> | 2010-05-07 01:02:30 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-05-18 03:40:22 -0400 |
commit | 1d42bbc8f7f9ce4d852692ef7aa336b133b0830a (patch) | |
tree | a0ea2d17508104ab681c829f0552e7f13512c8e2 /drivers/gpu/drm/drm_edid.c | |
parent | eb1f8e4f3be898df808e2dfc131099f5831d491d (diff) |
drm/fbdev: fix cloning on fbcon
Simple cloning rules compared to server:
(a) single crtc
(b) > 1 connector active
(c) check command line mode
(d) try and find 1024x768 DMT mode if no command line.
(e) fail to clone
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_edid.c')
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 0acb83a63727..dfd4f3677f3b 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -658,8 +658,8 @@ static struct drm_display_mode drm_dmt_modes[] = { | |||
658 | static const int drm_num_dmt_modes = | 658 | static const int drm_num_dmt_modes = |
659 | sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode); | 659 | sizeof(drm_dmt_modes) / sizeof(struct drm_display_mode); |
660 | 660 | ||
661 | static struct drm_display_mode *drm_find_dmt(struct drm_device *dev, | 661 | struct drm_display_mode *drm_mode_find_dmt(struct drm_device *dev, |
662 | int hsize, int vsize, int fresh) | 662 | int hsize, int vsize, int fresh) |
663 | { | 663 | { |
664 | int i; | 664 | int i; |
665 | struct drm_display_mode *ptr, *mode; | 665 | struct drm_display_mode *ptr, *mode; |
@@ -677,6 +677,7 @@ static struct drm_display_mode *drm_find_dmt(struct drm_device *dev, | |||
677 | } | 677 | } |
678 | return mode; | 678 | return mode; |
679 | } | 679 | } |
680 | EXPORT_SYMBOL(drm_mode_find_dmt); | ||
680 | 681 | ||
681 | typedef void detailed_cb(struct detailed_timing *timing, void *closure); | 682 | typedef void detailed_cb(struct detailed_timing *timing, void *closure); |
682 | 683 | ||
@@ -866,7 +867,7 @@ drm_mode_std(struct drm_connector *connector, struct edid *edid, | |||
866 | } | 867 | } |
867 | 868 | ||
868 | /* check whether it can be found in default mode table */ | 869 | /* check whether it can be found in default mode table */ |
869 | mode = drm_find_dmt(dev, hsize, vsize, vrefresh_rate); | 870 | mode = drm_mode_find_dmt(dev, hsize, vsize, vrefresh_rate); |
870 | if (mode) | 871 | if (mode) |
871 | return mode; | 872 | return mode; |
872 | 873 | ||
@@ -1386,11 +1387,11 @@ drm_est3_modes(struct drm_connector *connector, struct detailed_timing *timing) | |||
1386 | if (m >= num_est3_modes) | 1387 | if (m >= num_est3_modes) |
1387 | break; | 1388 | break; |
1388 | if (est[i] & (1 << j)) { | 1389 | if (est[i] & (1 << j)) { |
1389 | mode = drm_find_dmt(connector->dev, | 1390 | mode = drm_mode_find_dmt(connector->dev, |
1390 | est3_modes[m].w, | 1391 | est3_modes[m].w, |
1391 | est3_modes[m].h, | 1392 | est3_modes[m].h, |
1392 | est3_modes[m].r | 1393 | est3_modes[m].r |
1393 | /*, est3_modes[m].rb */); | 1394 | /*, est3_modes[m].rb */); |
1394 | if (mode) { | 1395 | if (mode) { |
1395 | drm_mode_probed_add(connector, mode); | 1396 | drm_mode_probed_add(connector, mode); |
1396 | modes++; | 1397 | modes++; |