[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#577724: xserver-xorg-video-intel: Fail to start when laptop's LID closed



On 2010-04-15 09:30 +0200, Brice Goglin wrote:

> Frank Lin PIAT wrote:
>> On Thu, 2010-04-15 at 02:54 +0200, Cyril Brulebois wrote:
>>   
>>> Frank Lin PIAT <fpiat@klabs.be> (14/04/2010):
>>>     
>>>> I have an anoying problem when I close my laptop lid during the
>>>> computer startup (i.e between grub and Xorg initialisation): Xorg
>>>> fails to start.
>>>>
>>>> Restarting gdm with the laptop lid open works.
>>>>       
>>> What do you expect it to do?
>>>     
>>
>> Some magic to detect that it's a laptop, which lid is closed [but
>> present] ;-)
>>   
>
> This might have changed between 2.6.33 and 2.6.34. The intel guys
> apparently dropped some detection code that detects the lid status.
>
> At least on my laptop, booting with lid closed and DVI plugged gives me
> both outputs enabled with 2.6.34 while lid would be off with 2.6.33.

For the record that is likely the following change, introduced in
2.6.34-rc3, which also fixes
https://bugzilla.kernel.org/show_bug.cgi?id=15205:


commit 6e6c822868f113dabe3c33bdd91e883cc28fa11b
Author: Eric Anholt <eric@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@anholt.net>
    Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>


diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 14e516f..2b3fa7a 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -607,53 +607,6 @@ static void intel_lvds_mode_set(struct drm_encoder *encoder,
 	I915_WRITE(PFIT_CONTROL, lvds_priv->pfit_control);
 }
 
-/* Some lid devices report incorrect lid status, assume they're connected */
-static const struct dmi_system_id bad_lid_status[] = {
-	{
-		.ident = "Compaq nx9020",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-			DMI_MATCH(DMI_BOARD_NAME, "3084"),
-		},
-	},
-	{
-		.ident = "Samsung SX20S",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Samsung Electronics"),
-			DMI_MATCH(DMI_BOARD_NAME, "SX20S"),
-		},
-	},
-	{
-		.ident = "Aspire One",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire one"),
-		},
-	},
-	{
-		.ident = "Aspire 1810T",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1810T"),
-		},
-	},
-	{
-		.ident = "PC-81005",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "MALATA"),
-			DMI_MATCH(DMI_PRODUCT_NAME, "PC-81005"),
-		},
-	},
-	{
-		.ident = "Clevo M5x0N",
-		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "CLEVO Co."),
-			DMI_MATCH(DMI_BOARD_NAME, "M5x0N"),
-		},
-	},
-	{ }
-};
-
 /**
  * Detect the LVDS connection.
  *
@@ -669,12 +622,9 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect
 	/* ACPI lid methods were generally unreliable in this generation, so
 	 * don't even bother.
 	 */
-	if (IS_GEN2(dev))
+	if (IS_GEN2(dev) || IS_GEN3(dev))
 		return connector_status_connected;
 
-	if (!dmi_check_system(bad_lid_status) && !acpi_lid_open())
-		status = connector_status_disconnected;
-
 	return status;
 }
 




Reply to: