linux/drivers/gpu/drm/i915
Daniel Vetter aaa377302b drm/i915/crt: Do not rely upon the HPD presence pin
VGA hotplug detection "works" by measuring the resistance across
certain pins. A lot of kvm switches fumble this and wire up cheap
resistors with the wrong resistance or don't bother at all.

To accomodate these, also try to detect a connected monitor by trying
to grab the edid. Contrary to !HAS_HOTPLUG platforms we don't bother
with an actual load-detection cycle when the output is life - that
would be actual work to implement because things moved around. This is
the big difference to Chris Wilson's original approach:

commit 9e612a008f
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu May 31 13:08:53 2012 +0100

    drm/i915/crt: Do not rely upon the HPD presence pin

This blew up on Linus' machine because it errornously detected a vga
screen (without and edid and hence only the default modes), leading to
it's prompt removal:

commit 8f53369b75
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Jun 8 14:53:06 2012 -0700

    Revert "drm/i915/crt: Do not rely upon the HPD presence pin"

Some digging around in Bspec shows the reason why load detect doesn't work on
newer chips - the legacy VGA load detect bit isn't wired up any longer:

Public Snb Bspec, Vol3 Part1, 1.1.1 ST00 Input Status 0, bit4:

"RGB Comparator / Sense. This bit is here for compatibility and will
always return one. Monitor detection must be done be done through the
programming of registers in the MMIO space.
0 = Below threshold
1 = Above threshold"

v2: Add a comment in the code that load detect on hotplug capable
machines is broken and pimp the commit message with a quote of Bspec
to show why.

Reported-and-tested-by: Matthieu LAVIE <boiteamadmax@hotmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50501
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-06-16 15:30:32 +02:00
..
dvo_ch7xxx.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ch7017.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ivch.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_sil164.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_tfp410.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: add ccid to error state 2012-06-14 17:36:19 +02:00
i915_dma.c drm/i915/context: create & destroy ioctls 2012-06-14 17:36:20 +02:00
i915_drv.c drm/i915: reset the GPU on context fini 2012-06-14 17:36:21 +02:00
i915_drv.h drm/i915: reset the GPU on context fini 2012-06-14 17:36:21 +02:00
i915_gem_context.c drm/i915: reset the GPU on context fini 2012-06-14 17:36:21 +02:00
i915_gem_debug.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
i915_gem_dmabuf.c i915: add dma-buf vmap support for exporting vmapped buffer 2012-05-31 14:13:57 +01:00
i915_gem_evict.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_gem_execbuffer.c drm/i915/context: switch contexts with execbuf2 2012-06-14 17:36:21 +02:00
i915_gem_gtt.c i915: add dmabuf/prime buffer sharing support. 2012-05-23 10:47:10 +01:00
i915_gem_stolen.c drm/i915: Split the stolen handling for GEM out of i915_dma.c 2012-05-03 11:18:11 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_gem.c drm/i915: switch to default context on idle 2012-06-14 17:36:20 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c drm/i915: add ccid to error state 2012-06-14 17:36:19 +02:00
i915_reg.h drm/i915: PIPE_CONTROL_TLB_INVALIDATE 2012-06-14 17:36:18 +02:00
i915_suspend.c drm/i915: gen6_enable_rps() wants to be called after ring initialisation 2012-05-19 22:38:29 +02:00
i915_sysfs.c drm/i915: simplify sysfs setup code 2012-06-01 10:00:57 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h drm/i915: improve i915_wait_request_begin trace 2012-05-25 09:55:15 +02:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_bios.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_bios.h drm/i915: VBT Parser cleanup for eDP block 2012-01-13 08:37:44 -08:00
intel_crt.c drm/i915/crt: Do not rely upon the HPD presence pin 2012-06-16 15:30:32 +02:00
intel_ddi.c drm/i915: add set_infoframes to struct intel_hdmi 2012-05-30 21:36:58 +02:00
intel_display.c drm/i915: ignore pipe select bit when checking for LVDS register initialization 2012-06-13 21:05:06 +02:00
intel_dp.c drm/i915: don't chnage the original mode in dp_mode_fixup 2012-06-04 21:29:47 +02:00
intel_drv.h drm/i915: Switch off FBC when disabling the primary plane when obscured 2012-06-13 20:10:00 +02:00
intel_dvo.c drm/i915/intel_i2c: refactor using intel_gmbus_get_adapter 2012-03-28 14:40:44 +02:00
intel_fb.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
intel_hdmi.c drm/i915: ensure HDMI port is disabled inside set_infoframes 2012-06-12 19:19:52 +02:00
intel_i2c.c drm/i915: be more careful when returning -ENXIO in gmbus transfer 2012-05-21 21:04:21 +02:00
intel_lvds.c drm/i915: allow pipe A for lvds on gen4 2012-06-12 19:28:40 +02:00
intel_modes.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: s/i915_wait_request/i915_wait_seqno/g 2012-05-25 14:18:42 +02:00
intel_panel.c drm/i915: properly enable the blc controller on the right pipe 2012-06-12 19:27:58 +02:00
intel_pm.c drm/i915: Switch off FBC when disabling the primary plane when obscured 2012-06-13 20:10:00 +02:00
intel_ringbuffer.c drm/i915: possibly invalidate TLB before context switch 2012-06-14 17:36:19 +02:00
intel_ringbuffer.h drm/i915: possibly invalidate TLB before context switch 2012-06-14 17:36:19 +02:00
intel_sdvo_regs.h drm/i915: properly handle interlaced bit for sdvo dtd conversion 2012-05-24 17:53:52 +02:00
intel_sdvo.c Merge remote-tracking branch 'airlied/drm-prime-vmap' into drm-intel-next-queued 2012-06-01 10:52:54 +02:00
intel_sprite.c drm/i915: Switch off FBC when disabling the primary plane when obscured 2012-06-13 20:10:00 +02:00
intel_tv.c drm/i915: Adding TV Out Missing modes. 2012-05-24 17:54:08 +02:00
Makefile drm/i915: preliminary context support 2012-06-14 17:36:16 +02:00