diff -up xf86-video-intel-2.10.0/src/drmmode_display.cda xf86-video-intel-2.10.0/src/drmmode_display.c
--- xf86-video-intel-2.10.0/src/drmmode_display.cda 2010-01-13 18:45:02.000000000 +1000
+++ xf86-video-intel-2.10.0/src/drmmode_display.c 2010-01-13 18:46:22.000000000 +1000
@@ -1419,7 +1419,7 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
{
xf86CrtcConfigPtr xf86_config;
drmmode_ptr drmmode;
- int i;
+ int i, lvds = -1;
drmmode = xnfalloc(sizeof *drmmode);
drmmode->fd = fd;
@@ -1441,9 +1441,22 @@ Bool drmmode_pre_init(ScrnInfoPtr scrn,
drmmode->mode_res->max_height);
for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
drmmode_crtc_init(scrn, drmmode, i);
+
+ /* do LVDS first */
+ for (i = 0; i < drmmode->mode_res->count_connectors; i++) {
+ drmModeConnectorPtr koutput =
+ drmModeGetConnector(drmmode->fd,
+ drmmode->mode_res->connectors[i]);
+ if (koutput->connector_type == DRM_MODE_CONNECTOR_LVDS) {
+ drmmode_output_init(scrn, drmmode, i);
+ lvds = i;
+ }
+ drmModeFreeConnector(koutput);
+ }
for (i = 0; i < drmmode->mode_res->count_connectors; i++)
- drmmode_output_init(scrn, drmmode, i);
+ if (i != lvds)
+ drmmode_output_init(scrn, drmmode, i);
xf86InitialConfiguration(scrn, TRUE);