[Intel-gfx] External display

Chris Wilson chris at chris-wilson.co.uk
Fri Jan 14 13:51:13 CET 2011


On Fri, 14 Jan 2011 13:38:08 +0100, Christoph Lukas <christoph.lukas at gmx.net> wrote:
> Hi,
> 
> I am using a Dell E6410 notebook running Ubuntu. Most of the time I am
> running this notebook in a docking station with closed lid and with an
> external (DVI) monitor attached to the dock.
> 
> Running different kernels I see different behaviour regarding the
> display configuration after boot.
> 
> Booting a 2.6.32 based kernel the internal display is turned off, the
> external display is turned on and running at it's native resolution of
> 1920x1200. 
> This is what I would expect.

Once upon a time we trusted the lid status and reported the internal
screen as disconnected when the lid was closed. We were beset by bugs
reporting broken lid status and the LVDS not working. So we gave up.
Usually between the BIOS and userspace responding to lid notification
events, the LVDS is turned off when the lid is closed.

See commit 6e6c822868f113dabe3c33bdd91e883cc28fa11b
Author: Eric Anholt <eric at anholt.net>
Date:   Wed Mar 17 13:48:06 2010 -0700

    drm/i915: Stop trying to use ACPI lid status to determine LVDS connection.
    
    I've been getting more and more quirk reports about this.  It seems
    clear at this point that other OSes are not using this for determining
    whether the integrated panel should be turned on, and it is not
    reliable for doing so.  Better to light up an unintended panel than to
    not light up the only usable output on the system.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Acked-by: Jesse Barnes <jbarnes at virtuousgeek.org>

You may want to try:

diff --git a/drivers/gpu/drm/i915/intel_lvds.c
b/drivers/gpu/drm/i915/intel_lvds
index 9795eb5..45b1fe4 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -474,11 +474,9 @@ intel_lvds_detect(struct drm_connector *connector, bool for
        struct drm_device *dev = connector->dev;
        enum drm_connector_status status = connector_status_connected;
 
-       /* ACPI lid methods were generally unreliable in this generation, so
-        * don't even bother.
-        */
-       if (IS_GEN2(dev) || IS_GEN3(dev))
-               return connector_status_connected;
+       /* ACPI lid methods were generally unreliable, so don't even bother. */
+       if (INTEL_INFO(dev)->gen >= 5 && !acpi_lid_open())
+               status = connector_status_disconnected;
 
        return status;
 }

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list