From ee494c641c305199a78db0732966dbfa67ab69d4 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 17 Apr 2010 14:38:09 +0000 Subject: [PATCH] i915: Stop trying to use ACPI lid status to determine LVDS connection (Closes: #577724) svn path=/dists/sid/linux-2.6/; revision=15516 --- debian/changelog | 2 + ...ying-to-use-ACPI-lid-status-to-deter.patch | 100 ++++++++++++++++++ debian/patches/series/12 | 1 + 3 files changed, 103 insertions(+) create mode 100644 debian/patches/bugfix/all/drm-i915-Stop-trying-to-use-ACPI-lid-status-to-deter.patch diff --git a/debian/changelog b/debian/changelog index 1c58512bb..791bc12e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,8 @@ linux-2.6 (2.6.32-12) UNRELEASED; urgency=low conversion - Use vol_id if available since the version of blkid in lenny does not support the output format we need (Closes: #576608) + * i915: Stop trying to use ACPI lid status to determine LVDS connection + (Closes: #577724) [ maximilian attems] * Ignore ABI breakage due to libata switch. diff --git a/debian/patches/bugfix/all/drm-i915-Stop-trying-to-use-ACPI-lid-status-to-deter.patch b/debian/patches/bugfix/all/drm-i915-Stop-trying-to-use-ACPI-lid-status-to-deter.patch new file mode 100644 index 000000000..3283d2f55 --- /dev/null +++ b/debian/patches/bugfix/all/drm-i915-Stop-trying-to-use-ACPI-lid-status-to-deter.patch @@ -0,0 +1,100 @@ +From: Eric Anholt +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 +Acked-by: Jesse Barnes +[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; + } + diff --git a/debian/patches/series/12 b/debian/patches/series/12 index 13c6940b8..c3b97ef3a 100644 --- a/debian/patches/series/12 +++ b/debian/patches/series/12 @@ -4,3 +4,4 @@ + bugfix/all/phylib-fix-typo-in-bcm6xx-PHY-driver-table.patch + bugfix/all/ACPI-EC-Allow-multibyte-access-to-EC.patch + features/arm/dns323-rev-a1-gpio-request.patch ++ bugfix/all/drm-i915-Stop-trying-to-use-ACPI-lid-status-to-deter.patch