summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2014-02-13 03:53:16 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2014-02-13 03:53:16 +0000
commitf064eeb2568b9a5d36899271596c4da366f8d2ab (patch)
treec6b14101ecf68a2c721e5c5cdabfe438f79249b1 /sys/dev
parentd219a021f02063b756f7ccdf10455fc33bc48b40 (diff)
drm/i915: prefer VBT modes for SVDO-LVDS over EDID
From Daniel Vetter 795de6db7c0397315b083c6dbf57cecd2c6ad098 in ubuntu 3.8 c3456fb3e4712d0448592af3c5d644c9472cd3c1 in mainline linux
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/drm/i915/intel_sdvo.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/pci/drm/i915/intel_sdvo.c b/sys/dev/pci/drm/i915/intel_sdvo.c
index e72cef53f92..a4faff94267 100644
--- a/sys/dev/pci/drm/i915/intel_sdvo.c
+++ b/sys/dev/pci/drm/i915/intel_sdvo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: intel_sdvo.c,v 1.14 2014/02/13 03:49:00 jsg Exp $ */
+/* $OpenBSD: intel_sdvo.c,v 1.15 2014/02/13 03:53:15 jsg Exp $ */
/*
* Copyright 2006 Dave Airlie <airlied@linux.ie>
* Copyright © 2006-2007 Intel Corporation
@@ -1772,10 +1772,13 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
* arranged in priority order.
*/
intel_ddc_get_modes(connector, &intel_sdvo->ddc);
- if (list_empty(&connector->probed_modes) == false)
- goto end;
- /* Fetch modes from VBT */
+ /*
+ * Fetch modes from VBT. For SDVO prefer the VBT mode since some
+ * SDVO->LVDS transcoders can't cope with the EDID mode. Since
+ * drm_mode_probed_add adds the mode at the head of the list we add it
+ * last.
+ */
if (dev_priv->sdvo_lvds_vbt_mode != NULL) {
newmode = drm_mode_duplicate(connector->dev,
dev_priv->sdvo_lvds_vbt_mode);
@@ -1787,7 +1790,6 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
}
}
-end:
list_for_each_entry(newmode, &connector->probed_modes, head) {
if (newmode->type & DRM_MODE_TYPE_PREFERRED) {
intel_sdvo->sdvo_lvds_fixed_mode =