• Daniel Vetter's avatar
    drm/i915: Fixup hpd irq register setup ordering · 20afbda2
    Daniel Vetter authored
    For GMCH platforms we set up the hpd irq registers in the irq
    postinstall hook. But since we only enable the irq sources we actually
    need in PORT_HOTPLUG_EN/STATUS, taking dev_priv->hotplug_supported_mask
    into account, no hpd interrupt sources is enabled since
    
    commit 52d7eced
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Sat Dec 1 21:03:22 2012 +0100
    
        drm/i915: reorder setup sequence to have irqs for output setup
    
    Wrongly set-up interrupts also lead to broken hw-based load-detection
    on at least GM45, resulting in ghost VGA/TV-out outputs.
    
    To fix this, delay the hotplug register setup until after all outputs
    are set up, by moving it into a new dev_priv->display.hpd_irq_callback.
    We might also move the PCH_SPLIT platforms to such a setup eventually.
    
    Another funny part is that we need to delay the fbdev initial config
    probing until after the hpd regs are setup, for otherwise it'll detect
    ghost outputs. But we can only enable the hpd interrupt handling
    itself (and the output polling) _after_ that initial scan, due to
    massive locking brain-damage in the fbdev setup code. Add a big
    comment to explain this cute little dragon lair.
    
    v2: Encapsulate all the fbdev handling by wrapping the move call into
    intel_fbdev_initial_config in intel_fb.c. Requested by Chris Wilson.
    
    v3: Applied bikeshed from Jesse Barnes.
    
    v4: Imre Deak noticed that we also need to call intel_hpd_init after
    the drm_irqinstall calls in the gpu reset and resume paths - otherwise
    hotplug will be broken. Also improve the comment a bit about why
    hpd_init needs to be called before we set up the initial fbdev config.
    
    Bugzilla: Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54943Reported-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> (v3)
    Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    20afbda2
i915_drv.c 37.4 KB