linux/drivers/gpu/drm/i915
Zhao Yakui a2565377a5 drm/i915: Update LVDS connector status when receiving ACPI LID event
Dirk reports that nothing is displayed on LVDS when using ubuntu 9.1 after
close/reopen the LID. And I also reproduce this issue on another laptop.
After some tests and debug, it seems that it is related with that the
LVDS status is not updated in time in course of suspend/resume.

Now the LID state is used to check whether the LVDS is connected or
disconnected. And when the LID is closed, it means that the LVDS is
disconnected. When it is reopened, it means that the LVDS is connected.
At the same time on some distributions the LID event is also used to put
the system into suspend state. When the LID is closed, the system will enter
the suspend state. When the LID is reopened, the system will be resumed.

In such case when the LID is closed, user-space script will receive the LID
notification event and  detect the LVDS as disconnected. Then the system will
enter the suspended state. When the LID is reopened, the system will be
resumed. As the LVDS status is not updated in course of resume, it will cause
that the LVDS connector is marked as unused and disabled. After the resume is
finished,user-space script will try to configure the display mode for LVDS.
But unfortunately as the LVDS status is not updated in time and it is still
marked as disconnected, the LVDS and its corresponding CRTC will be disabled
again in the function of drm_helper_disable_unused_functions after changing
mode for LVDS.

So we had better check and update the status of LVDS connector after receiving
the LID notication event. Then after the system is resumed from suspended
state, we can set the display mode for LVDS correctly.

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reported-by:  Dirk Hohndel <hohndel@infradead.org>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
CC: stable@kernel.org
Signed-off-by: Eric Anholt <eric@anholt.net>
2009-12-16 13:23:38 -08:00
..
dvo_ch7xxx.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_ch7017.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_ivch.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_sil164.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo_tfp410.c drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. 2009-11-05 14:47:12 -08:00
dvo.h drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
i915_debugfs.c drm/i915: In the debugfs interface, unmap our address instead of the page's. 2009-12-15 12:11:26 -08:00
i915_dma.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
i915_drv.c drm/i915: implement new pm ops for i915 2009-12-16 09:41:32 -08:00
i915_drv.h drm/i915: Update LVDS connector status when receiving ACPI LID event 2009-12-16 13:23:38 -08:00
i915_gem_debug.c drm/i915: Catch up to obj_priv->page_list rename in disabled debug code. 2009-06-22 20:19:39 -07:00
i915_gem_tiling.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
i915_gem.c drm/i915: fix order of fence release wrt flushing 2009-12-16 09:18:37 -08:00
i915_ioc32.c
i915_irq.c Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-10 15:44:19 +10:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_opregion.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
i915_reg.h drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
i915_suspend.c Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-10 15:44:19 +10:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h drm/i915: Enable irq to trace batch buffer completion. 2009-09-29 03:15:25 +01:00
intel_bios.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_bios.h drm/i915: parse child device from VBT 2009-11-30 16:36:53 -08:00
intel_crt.c Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-08 14:03:47 +10:00
intel_display.c Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-10 15:44:19 +10:00
intel_dp.c Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-08 14:03:47 +10:00
intel_drv.h drm/i915: restore render clock gating on resume 2009-12-08 06:32:51 -08:00
intel_dvo.c drm/i915: Set crtc/clone mask in different output devices 2009-08-24 17:01:33 -07:00
intel_fb.c Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-12-10 21:56:47 -08:00
intel_hdmi.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_i2c.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_lvds.c drm/i915: Update LVDS connector status when receiving ACPI LID event 2009-12-16 13:23:38 -08:00
intel_modes.c drm/i915: Change I2C api to pass around i2c_adapters 2009-06-18 15:53:57 -07:00
intel_overlay.c drm/i915: Fix product names and #defines 2009-12-07 14:55:56 -08:00
intel_sdvo_regs.h drm/i915: enable sdvo lvds scaling function. 2009-07-01 11:44:45 -07:00
intel_sdvo.c Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2009-12-10 21:56:47 -08:00
intel_tv.c drm/i915: Declare the new VBT parsing functions as static 2009-12-01 23:27:20 -08:00
Makefile Merge remote branch 'anholt/drm-intel-next' into drm-linus 2009-12-08 14:03:47 +10:00