Commit d5dd96cb280993a6096b42ab082f9cfd9c7ae0bd
Committed by
Eric Anholt
1 parent
9d0498a2bf
Exists in
master
and in
7 other branches
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>
Showing 1 changed file with 12 additions and 11 deletions Side-by-side Diff
drivers/gpu/drm/i915/intel_crt.c
... | ... | @@ -160,20 +160,21 @@ |
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; | |
176 | 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); | |
177 | + | |
177 | 178 | adpa |= (ADPA_CRT_HOTPLUG_PERIOD_128 | |
178 | 179 | ADPA_CRT_HOTPLUG_WARMUP_10MS | |
179 | 180 | ADPA_CRT_HOTPLUG_SAMPLE_4S | |
... | ... | @@ -189,7 +190,7 @@ |
189 | 190 | 1000, 1)) |
190 | 191 | DRM_ERROR("timed out waiting for FORCE_TRIGGER"); |
191 | 192 | |
192 | - if (HAS_PCH_CPT(dev)) { | |
193 | + if (turn_off_dac) { | |
193 | 194 | I915_WRITE(PCH_ADPA, temp); |
194 | 195 | (void)I915_READ(PCH_ADPA); |
195 | 196 | } |