• Daniel Vetter's avatar
    drm: handle HPD and polled connectors separately · 816da85a
    Daniel Vetter authored
    Instead of reusing the polling code for hpd handling, split them up.
    This has a few consequences:
    - Don't touch HPD capable connectors in the poll loop.
    - Only touch HPD capable connectors in drm_helper_hpd_irq_event.
    - We could run the HPD handling directly (because all callers already
      use their own work item), but for easier bisect that happens in it's
      own patch.
    
    The ultimate goal is that drivers grow some smarts about which
    connectors have received a hotplug event and only call the detect code
    of that connector. But that's a second step.
    
    v2: s/hdp/hpd/, noticed by Adam Jackson. I can't type.
    
    v3: Split out the work item removal as requested by Dave Airlie. This
    results in a temporary mode_config.hpd_irq_work item to keep things
    the same.
    
    v4: In the hpd_irq_event handler don't bail out if other bits than HPD
    are set. This is useful where e.g. hpd is unreliably, but mostly
    works. Drivers can then set both HPD and POLL flags, and users get the
    best of both worlds: Quick hotplug feedback if the hpd works, but
    still reliable detection with the polling. The poll loop already works
    the same, and doesn't bail if HPD is set.
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    816da85a
drm_crtc_helper.c 29.9 KB