From: Ville Syrjälä <ville.syrj...@linux.intel.com>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but
the VBT says different. Ignore the VBT for 830M since it seems such
old machines would generally have a VGA connector.

This is a regression caused by:
 commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
 Author: Jesse Barnes <jbar...@virtuousgeek.org>
 Date:   Fri Apr 4 16:12:07 2014 -0700

    drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

v2: Move the check into intel_crt_init() (Daniel)

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 5a045d3..5104e9f 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
        { }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+       struct drm_i915_private *dev_priv = dev->dev_private;
+
+       /* no hardware support whatsoever */
+       if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+               return false;
+
+       /* Skip machines without VGA that falsely report hotplug events */
+       if (dmi_check_system(intel_no_crt))
+               return false;
+
+       /* Fujitsu-Siemens Lifebook S6010 VBT lies */
+       if (IS_I830(dev))
+               return true;
+
+       return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
        struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
        struct intel_connector *intel_connector;
        struct drm_i915_private *dev_priv = dev->dev_private;
 
-       /* Skip machines without VGA that falsely report hotplug events */
-       if (dmi_check_system(intel_no_crt))
+       if (!has_crt_support(dev))
                return;
 
        crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index b5cbb28..1060caa 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
        intel_lvds_init(dev);
 
-       if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && 
dev_priv->vbt.int_crt_support)
-               intel_crt_init(dev);
+       intel_crt_init(dev);
 
        if (HAS_DDI(dev)) {
                int found;
-- 
1.8.5.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to