101 lines
2.9 KiB
Diff
101 lines
2.9 KiB
Diff
From: Eric Anholt <eric@anholt.net>
|
|
Date: Wed, 17 Mar 2010 13:48:06 -0700
|
|
Subject: [PATCH] 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>
|
|
[bwh: Backport to drm-2.6.33]
|
|
|
|
--- a/drivers/gpu/drm/i915/i915_drv.h
|
|
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
|
@@ -1045,6 +1045,13 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
|
|
#define IS_I9XX(dev) (INTEL_INFO(dev)->is_i9xx)
|
|
#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile)
|
|
|
|
+#define IS_GEN3(dev) (IS_I915G(dev) || \
|
|
+ IS_I915GM(dev) || \
|
|
+ IS_I945G(dev) || \
|
|
+ IS_I945GM(dev) || \
|
|
+ IS_G33(dev) || \
|
|
+ IS_PINEVIEW(dev))
|
|
+
|
|
#define I915_NEED_GFX_HWS(dev) (INTEL_INFO(dev)->need_gfx_hws)
|
|
|
|
/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte
|
|
--- a/drivers/gpu/drm/i915/intel_lvds.c
|
|
+++ b/drivers/gpu/drm/i915/intel_lvds.c
|
|
@@ -599,53 +599,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.
|
|
*
|
|
@@ -661,12 +614,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_I8XX(dev))
|
|
+ if (IS_I8XX(dev) || IS_GEN3(dev))
|
|
return connector_status_connected;
|
|
|
|
- if (!dmi_check_system(bad_lid_status) && !acpi_lid_open())
|
|
- status = connector_status_disconnected;
|
|
-
|
|
return status;
|
|
}
|
|
|