• Daniel Vetter's avatar
    drm/i915/crt: Do not rely upon the HPD presence pin · aaa37730
    Daniel Vetter authored
    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 9e612a00
    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 8f53369b
    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: default avatarMatthieu LAVIE <boiteamadmax@hotmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50501Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    aaa37730
intel_crt.c 17.8 KB