diff -up xf86-video-intel-2.8.0/src/drmmode_display.c.jx xf86-video-intel-2.8.0/src/drmmode_display.c
--- xf86-video-intel-2.8.0/src/drmmode_display.c.jx 2009-07-28 14:10:36.000000000 -0400
+++ xf86-video-intel-2.8.0/src/drmmode_display.c 2009-07-28 14:20:10.000000000 -0400
@@ -1131,7 +1131,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
{
xf86CrtcConfigPtr xf86_config;
drmmode_ptr drmmode;
- int i;
+ int i, lvds = -1;
drmmode = xnfalloc(sizeof *drmmode);
drmmode->fd = fd;
@@ -1153,8 +1153,21 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn,
for (i = 0; i < drmmode->mode_res->count_crtcs; i++)
drmmode_crtc_init(pScrn, 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(pScrn, drmmode, i);
+ lvds = i;
+ }
+ drmModeFreeConnector(koutput);
+ }
+
for (i = 0; i < drmmode->mode_res->count_connectors; i++)
- drmmode_output_init(pScrn, drmmode, i);
+ if (i != lvds)
+ drmmode_output_init(pScrn, drmmode, i);
xf86InitialConfiguration(pScrn, TRUE);