From: Dave Airlie <[email protected]>

Like on Sandybridge, disabling the DAC here when doing CRT load detect
avoids forever hangs waiting on the hardware.

test procedure on HP 2740p:
boot with no VGA plugged in, start X,
plug in VGA monitor (1280x1024)
chvt 3
machine hangs waiting forever.

Signed-off-by: Dave Airlie <[email protected]>
---
 drivers/gpu/drm/i915/intel_crt.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index ee0732b..2a3b59b 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -160,19 +160,20 @@ static bool intel_ironlake_crt_detect_hotplug(struct 
drm_connector *connector)
        struct drm_i915_private *dev_priv = dev->dev_private;
        u32 adpa, temp;
        bool ret;
+       bool turn_off_dac = false;
 
        temp = adpa = I915_READ(PCH_ADPA);
 
-       if (HAS_PCH_CPT(dev)) {
-               /* Disable DAC before force detect */
-               I915_WRITE(PCH_ADPA, adpa & ~ADPA_DAC_ENABLE);
-               (void)I915_READ(PCH_ADPA);
-       } else {
-               adpa &= ~ADPA_CRT_HOTPLUG_MASK;
-               /* disable HPD first */
-               I915_WRITE(PCH_ADPA, adpa);
-               (void)I915_READ(PCH_ADPA);
-       }
+       if (HAS_PCH_SPLIT(dev))
+               turn_off_dac = true;
+
+       adpa &= ~ADPA_CRT_HOTPLUG_MASK;
+       if (turn_off_dac)
+               adpa &= ~ADPA_DAC_ENABLE;
+
+       /* disable HPD first */
+       I915_WRITE(PCH_ADPA, adpa);
+       (void)I915_READ(PCH_ADPA);
 
        adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 |
                        ADPA_CRT_HOTPLUG_WARMUP_10MS |
@@ -188,7 +189,7 @@ static bool intel_ironlake_crt_detect_hotplug(struct 
drm_connector *connector)
        while ((I915_READ(PCH_ADPA) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) != 0)
                ;
 
-       if (HAS_PCH_CPT(dev)) {
+       if (turn_off_dac) {
                I915_WRITE(PCH_ADPA, temp);
                (void)I915_READ(PCH_ADPA);
        }
-- 
1.7.1

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to