OSDN Git Service

drm/vc4: hdmi: Actually check for the connector status in hotplug
authorMaxime Ripard <maxime@cerno.tech>
Tue, 14 Sep 2021 10:17:24 +0000 (12:17 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Tue, 28 Sep 2021 10:29:13 +0000 (12:29 +0200)
commitdaf4e7d7b9122fdc65e6cbd70ae70bb56289af71
tree3e6539020fec90969b89e53908c2b55c7887fae1
parent0464ed1a79b818d5e3eda1ac3c23a057ac0cc7c3
drm/vc4: hdmi: Actually check for the connector status in hotplug

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: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20210914101724.266570-3-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_hdmi.c