i915: disable DAC on Ironlake also when doing CRT load detection.

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 <airlied@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>

authored by Dave Airlie and committed by Eric Anholt d5dd96cb 9d0498a2

+12 -11
+12 -11
drivers/gpu/drm/i915/intel_crt.c
··· 160 160 struct drm_i915_private *dev_priv = dev->dev_private; 161 161 u32 adpa, temp; 162 162 bool ret; 163 + bool turn_off_dac = false; 163 164 164 165 temp = adpa = I915_READ(PCH_ADPA); 165 166 166 - if (HAS_PCH_CPT(dev)) { 167 - /* Disable DAC before force detect */ 168 - I915_WRITE(PCH_ADPA, adpa & ~ADPA_DAC_ENABLE); 169 - (void)I915_READ(PCH_ADPA); 170 - } else { 171 - adpa &= ~ADPA_CRT_HOTPLUG_MASK; 172 - /* disable HPD first */ 173 - I915_WRITE(PCH_ADPA, adpa); 174 - (void)I915_READ(PCH_ADPA); 175 - } 167 + if (HAS_PCH_SPLIT(dev)) 168 + turn_off_dac = true; 169 + 170 + adpa &= ~ADPA_CRT_HOTPLUG_MASK; 171 + if (turn_off_dac) 172 + adpa &= ~ADPA_DAC_ENABLE; 173 + 174 + /* disable HPD first */ 175 + I915_WRITE(PCH_ADPA, adpa); 176 + (void)I915_READ(PCH_ADPA); 176 177 177 178 adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 | 178 179 ADPA_CRT_HOTPLUG_WARMUP_10MS | ··· 190 189 1000, 1)) 191 190 DRM_ERROR("timed out waiting for FORCE_TRIGGER"); 192 191 193 - if (HAS_PCH_CPT(dev)) { 192 + if (turn_off_dac) { 194 193 I915_WRITE(PCH_ADPA, temp); 195 194 (void)I915_READ(PCH_ADPA); 196 195 }