• Maxime Ripard's avatar
    drm/vc4: hdmi: Actually check for the connector status in hotplug · daf4e7d7
    Maxime Ripard authored
    The drm_helper_hpd_irq_event() documentation states that this function
    is "useful for drivers which can't or don't track hotplug interrupts for
    each connector." and that "Drivers which support hotplug interrupts for
    each connector individually and which have a more fine-grained detect
    logic should bypass this code and directly call
    drm_kms_helper_hotplug_event()". This is thus what we ended-up doing.
    
    However, what this actually means, and is further explained in the
    drm_kms_helper_hotplug_event() documentation, is that
    drm_kms_helper_hotplug_event() should be called by drivers that can
    track the connection status change, and if it has changed we should call
    that function.
    
    This underlying expectation we failed to provide is that the caller of
    drm_kms_helper_hotplug_event() should call drm_helper_probe_detect() to
    probe the new status of the connector.
    
    Since we didn't do it, it meant that even though we were sending the
    notification to user-space and the DRM clients that something changed we
    never probed or updated our internal connector status ourselves.
    
    This went mostly unnoticed since the detect callback usually doesn't
    have any side-effect. Also, if we were using the DRM fbdev emulation
    (which is a DRM client), or any user-space application that can deal
    with hotplug events, chances are they would react to the hotplug event
    by probing the connector status eventually.
    
    However, now that we have to enable the scrambler in detect() if it was
    enabled it has a side effect, and an application such as Kodi or
    modetest doesn't deal with hotplug events. This resulted with a black
    screen when Kodi or modetest was running when a screen was disconnected
    and then reconnected, or switched off and on.
    Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210914101724.266570-3-maxime@cerno.tech
    daf4e7d7
vc4_hdmi.c 69.3 KB