Blob Blame History Raw
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);